获取图片文字

如何使用python获取图片文字呢?

关注公众号【轻松学编程】了解更多…

1、通过python的第三方库pytesseract获取

通过pip install pytesseract导入。

1.1、安装tesseract-ocr

先在官网 下载对应操作系统的tesseract-ocr ,比如我现在在windows系统下,就下载exe文件安装,可点击这里下载,下载后运行exe后选择一个目录安装,这个目录需要记住,后面中需要用到,比如我的目录为D:\ruanjian\Tesseract-OCR

1.2 下载训练好的语言包

地址 ,这里想提取图片中的中文字,于是下载chi_sim.traineddata,下载到上面安装tesseract-ocr目录中的文件夹tessdata中,如图:

1.3 代码

import pytesseract
from PIL import Image # 打开一张图片
image = Image.open(r'images\82-望岳.png')
pytesseract.pytesseract.tesseract_cmd = r'D:\ruanjian\Tesseract-OCR\tesseract.exe'
tessdata_dir_config = r'--tessdata-dir "D:\ruanjian\Tesseract-OCR\tessdata"'
# 提取中文,如果是提取英文,则先下载语言包,然后设置以下参数lang='eng'即可。
code = pytesseract.image_to_string(image, lang='chi_sim', config=tessdata_dir_config) print(code)

比如我需要提取以下图片文字:

处理结果:

这种方式优点就是可以无限次运行,只要配置好电脑环境就可以,缺点就是不能混语言。比如图片中夹杂中文与英文,提取效果就不是很好。

2、使用百度接口

先到百度智能云 创建一个应用获取APP_ID、API_KEY、SECRET_KEY

然后下载python的SDK,下载后使用pip install aip-python-sdk-2.2.15.zip安装

import base64
import requests
import time
import ast
from aip import AipOcr # https://console.bce.baidu.com/ai/#/ai/ocr/overview/index
""" 你的 APPID AK SK """
APP_ID = '你的'
API_KEY = '你的'
SECRET_KEY = '你的'
# 百度api客户端
CLIENT = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 请求头
HEADERS = {
'Content-Type': 'application/x-www-form-urlencoded'
}
# 获取令牌的url
URL = 'https://aip.baidubce.com/oauth/2.0/token'
ACCESS_TOKEN = None
# 用于记录获取令牌的开始时间
SRART_TIME = time.time() def get_file_content(filePath):
# 获取文件内容
with open(filePath, 'rb') as fp:
return fp.read() def get_access_token():
# 获取令牌
global ACCESS_TOKEN, SRART_TIME, URL
response = requests.post(URL,
{'grant_type': 'client_credentials', 'client_id': API_KEY, 'client_secret': SECRET_KEY})
ACCESS_TOKEN = ast.literal_eval(response.content.decode('utf-8'))['access_token']
SRART_TIME = time.time() def req_url(image):
# 调用百度AI接口获取图像识别后的内容,调用接口次数为每日5万次
global ACCESS_TOKEN, SRART_TIME, HEADERS if not ACCESS_TOKEN or (time.time() - SRART_TIME > 7000):
get_access_token()
response = requests.post('https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=%s' % ACCESS_TOKEN,
{'image': image}, headers=HEADERS)
return response.content.decode('utf-8') if __name__ == '__main__':
# 图片内容
image = get_file_content(r'image\望岳.png')
# 获取分析结果
ret = req_url(base64.b64encode(image).decode())
# 字符串转字典
ret = ast.literal_eval(ret)
if 'words_result' in ret:
for words in ret['words_result']:
print(words['words'])

输出:

使用场景

可以利用这些图片识别给名片分类、获取图片上的关键信息、车牌识别等。

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。

也可加我微信【1257309054】,拉你进群,大家一起交流学习。
如果文章对您有帮助,请我喝杯咖啡吧!

公众号

156789.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xtX2lzX2Rj,size_16,color_FFFFFF,t_70)

关注我,我们一起成长~~

最新文章

  1. EntityFramework之DetectChanges's Secrets(三)(我为EF正名)
  2. 原生态ajax
  3. Angular2 管道
  4. C# 非托管内存使用时的注意事项
  5. C++中引用(&)的用法和应用实例
  6. C#拼音转换,将简体中文转换成拼音
  7. 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数。
  8. git设置对比工具
  9. caldera
  10. (转)C#模拟键盘鼠标事件
  11. Js 中json简单处理
  12. 嵌套iframe中的HTML的文档解析类型
  13. Linux命令记录。
  14. PHP编程中10个最常见的错误
  15. spring boot application properties配置详解
  16. Tuxedo学习门户网站
  17. 添加MySql Metat Database 信息
  18. BZOJ 2055: 80人环游世界 [上下界费用流]
  19. 常用的CSS框架
  20. [HNOI 2015]菜肴制作

热门文章

  1. 动态代理:jdk动态代理和cglib动态代理
  2. 【django】本地开发media用户上传文件访问路径找不到
  3. 关于对象的行为、数组、继承和类的高级概念(Java)
  4. matlab中imread 从图形文件读取图像
  5. matlab中set设置图形属性
  6. STM32F103C8T6-CubeMx串口收发程序详细设计与测试(2)——程序规划、代码编写及测试
  7. maven下载依赖包下载失败
  8. centos7 samba安装教程
  9. js 为什么0.1+0.2不等于0.3
  10. 如何从0到1的构建一款Java数据生成器-第一章