-
2021-01-29 07:40:18
环境
Python3
Python3的pillow、pytesseract包
可使用pip install pillow、pip install pytesseract命令安装
或者通过pycharm进行安装
识别引擎tesseract-ocr ,下载地址
代码
#-*- coding:utf-8 -*-
import pytesseract
from PIL import Image
# 使用pytesseract对英文进行识别,lang参数可省略
print(pytesseract.image_to_string(Image.open('textEng.png',lang='eng')))
# 使用pytesseract对中文(含英文,但识别率降低)进行识别
print(pytesseract.image_to_string(Image.open('textCh.png'), lang='chi_sim'))
该提取文字的功能对英文识别率还是可以的,但对中文稍差强人意,不过还是比手打的要方便。
报错及解决
1. FileNotFoundError:[WinError 2]系统找不到指定文件。
解决方法:
搜索文件pytesseract.py,找到如下代码,将tesseract_cmd的值修改为全路径(tesseract文件的全路径,该文件在Tesseract-OCR下)。如下:
tesseract_cmd = 'tesseract'
改为
tesseract_cmd = 'E:\Python36\Tesseract-OCR\\tesseract'
2.pytesseract.pytesseract.TesseractError: (1, ‘Error opening data file ··· ··· Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your “tessdata” directory. Failed loading language \’chi_sim\’ Tesseract couldn\’t load any languages! Could not initialize tesseract.’)
解决办法:
1. 检查是否将TESSDATA_PREFIX添加到系统变量里,若没有,在系统变量(注意不是环境变量)里新建变量名TESSDATA_PREFIX,变量值为E:\Python37\Tesseract-OCR\(此处填你的Tesseract-OCR文件路径)。
2. 检查“Tesseract-OCR\tessdata”路径下是否存在chi_sim.traineddata(若是报错是无法加载eng则查看是否存在相应文件),若没有,下载chi_sim.traineddata文件,并放置在“Tesseract-OCR\tessdata”路径下。
3. 若还没有解决:
打开文件pytesseract.py,找到image_to_string,在上面一行指定config的参数为tessdata文件的路径,如下:
tessdata_dir_config = '--tessdata-dir "E:\Python37\Tesseract-OCR\\tessdata"'
def image_to_string(image,
lang=None,
config='',
nice=0,
boxes=False,
output_type=Output.STRING):
3.permission denied:[WinError 5] 拒绝访问
解决方法:
Tesseract-OCR默认安装在”C:\Program Files (x86)”下,访问该路径需要administrator权限。修改Tesseract-OCR安装路径并更改tesseract_cmd的值即可。
更多相关内容 -
python实现图片文字提取,准确率高达99%,强无敌!!!
2020-07-11 00:10:24为了统一回答大家的问题,今天我又使用百度API实现了一个从图片中提取文字和识别身份证的功能,详细描述实现过程,有收获的小伙伴记得收藏、转发分享哦。 百度AI开放平台 百度AI开放平台网址:...上次我使用的百度AI开放平台的API接口实现图片的转化,后来有许多小伙伴都私信问我,怎么获取百度AI平台的AK和SK。为了统一回答大家的问题,今天我又使用百度API实现了一个从图片中提取文字和识别身份证的功能,详细描述实现过程,有收获的小伙伴记得收藏、转发分享哦。
百度AI开放平台
百度AI开放平台网址:https://login.bce.baidu.com/
首先我们需要注册一个账号,注册登录之后我们选择文字识别
菜鸟小白的平台因为已经创建了一个应用了,首次登录应该是没有应用的,点击创建应用就好了
后面输入创建的应用名称,从创建页面上看API支持的功能很多,什么文字识别、身份证识别、银行卡识别和驾驶证识别等等,另外如果需要其他类型的功能(如图片效果增强等)也可以直接勾选上。
下面我们不需要选择文字识别包名,填写一个应用描述点击创建就OK了。
创建完成之后我们就可以看到我们需要的AK(API Key)和SK(Secret Key)了。
思路分析
可以看到百度AI开放平台是有提供API文档和举例代码的。写程序之前需要先看看我们的要使用的接口是什么格式,是否需要身份认证。百度AI开放就是需要使用AK和SK去和平台做一个鉴权操作,获取一个access token,然后我们再拿着这个access token去请求接口,完成我们今天需要完成的文字识别和身份证识别功能。
鉴权函数
从分析来看,我们首先需要去获取一个access token,用于后续的请求合法性鉴别。查看平台的接口文档,我们的编码如下,这个其实在我们之前的图片处理程序中也是一样的。
文档地址:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu百度AI开放平台鉴权函数
def get_access_token(): url = 'https://aip.baidubce.com/oauth/2.0/token' data = { 'grant_type': 'client_credentials', # 固定值 'client_id': 'eFGwDIb*******HucbnPr', # 在开放平台注册后所建应用的API Key 'client_secret': 'XPxWT2L********PFVCKS6PVih' # 所建应用的Secret Key } res = requests.post(url, data=data) res = res.json() print(res) access_token = res['access_token'] return access_token
文字识别函数
鉴权函数写好之后,我们就可以拿着获取到的access token去向平台接口发起请求,识别图片中的文字了。从平台文档上看通用文字识别的url为
https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic
平台的API文档地址:https://cloud.baidu.com/doc/OCR/s/1k3h7y3db#通用文字识别 def general_word(): #通用文字识别接口url general_word_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic" #获取执行路径 # path = os.getcwd() # 二进制方式打开图片文件 f = open('5.jpg', 'rb') img = base64.b64encode(f.read()) print(img) params = {"image":img, "language_type":"CHN_ENG"} access_token = get_access_token() request_url = general_word_url + "?access_token=" + access_token print(request_url) headers = {'content-type': 'application/x-www-form-urlencoded'} response = requests.post(request_url, data=params, headers=headers) # print(response) # res = response.json() if response: res = response.json()["words_result"] print(res) file_name = "菜鸟小白.txt" with open(file_name, 'w', encoding='utf-8') as f: for j in res: print(j["words"]) f.write(j["words"]+"\n")
当我们判断返回值存在内容时,我们将json格式的返回值,写入“菜鸟小白.txt”文档中。
身份证识别函数
我们写完了文字识别之后,其实写身份证识别和其它证件的识别就都是一样的方式了调用了。
#身份证识别 def idcard(): idcard_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard" # 二进制方式打开图片文件 f = open('4.jpg', 'rb') img = base64.b64encode(f.read()) params = {"id_card_side":"front","image":img} access_token = get_access_token() request_url = idcard_url + "?access_token=" + access_token print(request_url) headers = {'content-type': 'application/x-www-form-urlencoded'} response = requests.post(request_url, data=params, headers=headers) if response: res = response.json()["words_result"] file_name = "菜鸟小白的学习分享.txt" with open(file_name, 'w', encoding='utf-8') as f: f.write("住址:"+res["住址"]["words"]+"\n") f.write("出生日期:" + res["出生"]["words"] + "\n") f.write("姓名:" + res["姓名"]["words"] + "\n") f.write("公民身份号码:" + res["公民身份号码"]["words"] + "\n") f.write("性别:" + res["性别"]["words"] + "\n") f.write("民族:" + res["民族"]["words"] + "\n")
主函数
最后我们写一个主函数调用不同的功能函数就好了。
if __name__ == '__main__': idcard() general_word()
实现效果
这样我们的目标就完成了,我们来看看实现效果吧。首先我们看看文字识别的效果。
原始图片:
最终识别出来的效果
最终我们的识别仅将“API”识别为“AP”,少了一个字符“I”,正确率高达99%以上,一个字——强。
我们再来看看身份证的识别效果,原始图片如下(网络百度图片,如有侵权请联系作者删除):
经过我们的程序识别后,所有信息都正确识别出来了(其中身份证号码应该是因为假身份证号码识别规则不通过所有为空白了,菜鸟小白自己的身份证是完成识别出来的),正确率高达100%。
源码获取
老规矩,还是公众号回复“文字识别”即可获取源码。
粉丝福利
关注公众号“菜鸟小白的学习分享”,回复“粉丝福利”就可以参与抽奖,赢得腾讯视频会员月卡一张哦~
好了,今天分享结束了。如果你也认同菜鸟小白的学习分享的话,那就给菜鸟小白一个关注、在看、点赞+赞赏吧,你们的支持,是我持续不断的动力。非常感谢大家的支持,我们明天再会~
推荐阅读:
通过server酱实现定时推送天气情况,再不用担心你的糊涂蛋女友忘带伞了~~
想做一个天气推送程序,却被和风天气API的示例代码调试得快吐了
媳妇儿让我给她找一个PDF转word免费工具,找了半天我决定给她写一个出来-
媳妇儿喜欢玩某音中的动漫特效,那我就用python做一个图片转化软件。
关注微信公众号——菜鸟小白的学习分享
妈妈再也不用担心我找不到路了
一个人的学习——孤单
一群人的学习——幸福 -
Python3实现获取图片文字里中文的方法分析
2020-09-19 20:33:09主要介绍了Python3实现获取图片文字里中文的方法,结合实例形式分析了Python基于文字识别引擎tesseract-ocr针对图片里中文识别的相关操作技巧与操作注意事项,需要的朋友可以参考下 -
python图片提取文字
2022-02-28 22:02:59文章目录一、前期准备二、代码 一、前期准备 需要先下载 tesseract-ocr-w...可以提取视频中的文本,其他的一般。 二、代码 注释代码如下: """ 增加图片处理库PIL pip install Pillow 增加OCR识别库 pip install pyte
一、前期准备
需要先下载 tesseract-ocr-w64-setup-v5.0.1.20220118 ,官网下载即可,尽量用最新的版本,旧版本识别率很低并且解压后不能自动下载相关内容。解压后路径需要替换下文C:\Program Files\Tesseract-OCR\tesseract.exe。可以提取视频中的文本,其他的一般。
二、代码
注释代码如下:
""" 增加图片处理库PIL pip install Pillow 增加OCR识别库 pip install pytesseract """ #图库引用 from PIL import Image #识别库引用 import pytesseract as pt #图形界面引用 import tkinter as tk #路径引用 import tkinter.filedialog as filedialog #方法 class Application(tk.Tk): def __init__(self): super().__init__() self.title("图片文本提取") # r"" 的作用是去除转义字符 pt.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe" #路径变量 self.img_path = tk.StringVar() #布局 self.frame = tk.Frame(self) self.frame.pack(padx=10, pady=10) #标签 self.lbl_file = tk.Label(self.frame, text="图像") self.lbl_file.grid(row=0, column=0) #输入框布局 self.txt_file = tk.Entry(self.frame, width=60, textvariable=self.img_path) self.txt_file.grid(row=0, column=1, sticky=tk.W) #button形式以及布局 self.btn_file = tk.Button(self.frame, text="选择", command=self.sel_img_file) self.btn_file.grid(row=0, column=1, sticky=tk.E) #同上 self.lbl_txt = tk.Label(self.frame, text="文本") self.lbl_txt.grid(row=1, column=0) self.txt_exract = tk.Text(self.frame) self.txt_exract.grid(row=1, column=1) self.btn_extract = tk.Button(self.frame, text="提取文本", command=self.extract_text) self.btn_extract.grid(row=2, column=1, sticky=tk.W+tk.E) def sel_img_file(self): self.img_path.set(filedialog.askopenfilename(title="选择图片", initialdir=".")) def extract_text(self): if self.img_path: img = Image.open(self.img_path.get()) text = pt.image_to_string(img, lang="chi_sim") self.txt_exract.delete(1.0, tk.END) self.txt_exract.insert(tk.END, text) if __name__ == "__main__": app = Application() app.mainloop()
-
python识别图像并提取文字的实现方法
2020-12-25 14:51:12python图像识别一般基础到的就是tesseract了,在爬虫中处理验证码广泛使用。 安装 安装教程网上大都差不多,Windows下确实比较麻烦,涉及到各种路径、环境变量甚至与linux不同的路径分隔符,所以这里的安装是基于... -
Python实现图片中文字提取(OCR)
2020-02-25 20:45:09用Python提取图片中的文字,用到的工具包有PIL,pytesseract,tesseract-ocr 注意: 库的安装相对麻烦一点,一般都是不能直接安装成功的,这里总结了安装过程中的一些坑给大家参考。 (1)首先是PIL库安装,有的电脑...用Python提取图片中的文字,用到的工具包有PIL,pytesseract,tesseract-ocr
注意:
库的安装相对麻烦一点,一般都是不能直接安装成功的,这里总结了安装过程中的一些坑给大家参考。
(1)首先是PIL库安装,有的电脑可以直接从PYCHARM库里直接导入,但是大部分的电脑是安装不了的,可以采取两种方式一种是用pip install PIL这种方式一般比较慢,还有一种方法就是在PYCHARM库里面直接安装pillow-PIL安装成功后就不会报错了。
(2)然后就是pytesseract库的安装,在pycharm库里面可以直接搜索到然后安装。这两个库安装完成后运行代码还是会报错:‘tesseract is not installed or it’s not in your path’,原因是没有找到 Tesseract-OCR\tesseract.exe 的位置,需要先下载tesseract.exe具体安装参考:下载安装链接
安装完成后打开pytesseract源码查找 tesseract_cmd = ‘tesseract’,修改成红色方框里面是刚才安装的目录。
库安装好之后运行代码:from PIL import Image import pytesseract images=Image.open('003.jpg') print(images.size) text=pytesseract.image_to_string(images) print(text)
结果:
如果要提取中文文字还需安装相关的新的库,把下载的中文库放在 Tesseract-OCR 安装目录下的 tessdata 文件夹中。
下载链接:中文库下载
下载完之后运行代码:import pytesseract from PIL import Image im_en = Image.open('003.jpg') im_ch = Image.open('004.jpg') print('========识别字母========') print(pytesseract.image_to_string(im_en), '\n\n') print('========识别中文========') print(pytesseract.image_to_string(im_ch, lang='chi_sim'))
结果:
至此实现了用Python的工具包实现OCR字符提取的功能,包括中文和英文字符的提取,一个简单的小例子啦~~ -
Python调用API对图片中的文字进行提取返回为文本(OCR功能,可复用扩展)
2015-06-16 10:46:30Python写的OCR小程序,代码结构很清晰,学习、取用皆可 -
README_hee77_python文字提取_用python提取图片中文字_图片文字提取_
2021-10-01 04:28:46利用python提取图片中的文字,代码精简,文档齐全 -
python实现图片文字提取,有疑问未解决
2019-04-10 10:24:38在某个微信公众号中偶然看到一个初级python实验:使用python识别并提取图像中的文字,并着手去尝试。 首先下载安装一个开源工具,Tesseract-OCR,在网上下载,我下载的是这个版本:tesseract-ocr-setup-4.0.0-alpha.... -
python 图片文字提取
2022-04-19 10:54:32转载:python怎么读取png(python 图像处理)-天道酬勤-花开半夏 图像处理不是一件简单的工作。 对你来说,一看到某样东西,马上就知道你在看什么很容易。 但是,电脑不是这样工作的。 对你来说太难的任务,比如... -
python 实现文字识别提取
2022-07-09 20:40:07OCR 实现图片文字识别提取 -
提取图片文字,python三行代码足矣!
2021-06-05 14:12:44身处数据爆炸增长的信息时代,各种各样的数据都飞速增长,以图片的形式出现的数据更是数不胜数。有时候,我们想要提取图片中的文字,需要一个一个地敲打键盘输入。但如果你使用python,三行代码足矣! -
python提取图片中的文字
2020-03-17 09:36:56python提取图片中的文字准备工作完整代码错误代码 OCR,全称Optical character recognition,中文译名叫做光学文字识别。它把图像中的字符,转换为机器编码的文本的一种方法。OCR技术在印刷行业应用得非常多,也广泛... -
用python提取图片文字
2020-11-28 09:45:11目前有大量的图片文字提取程序与代码库,今天我将介绍其中一种方便的操作,基于百度的研究。首先,我们需要安装相应的python库 aippip install baidu-aip再导入AipOcr函数并编写图片读取与输出函数from aip import ... -
python读取图片文字-Python3实现获取图片文字里中文的方法分析
2020-11-11 15:15:05本文实例讲述了Python3实现获取图片文字里中文的方法。分享给大家供大家参考,具体如下:一、运行环境(1) win10(2) pycharm(3) python 3.5(4) pillow与pytesseract库安装:pip3 install pillowpip3 install ... -
如何利用Python识别图片中的文字
2020-09-16 19:15:43主要给大家介绍了关于如何利用Python识别图片中文字的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 -
Python图片文字提取
2019-08-11 11:50:01图片信息现在越来越广泛的存在于我们的日常生活中,获取图片内的文字信息也渐渐的成为当今生活中的需求,在学习完Python的基础知识后,本小白以此语言为工具,使用百度提供的图像识别接口来实现简单的图片文字提取... -
python实现生成图片路径和对应标签
2020-12-21 12:21:59/usr/bin/env python import sys import os.path if __name__ == "__main__": #只需要将BASE_PATH修改为你的路径 BASE_PATH='C:\\\\Users\\\\zhang\\Desktop\\\\lfw_test\\\\lfw_test' SEPARATOR=" " fh = open... -
【Python案例】OCR提取图片中的文字
2022-06-20 20:06:57本文实现本地运行图片提取文字功能,安全方便,特别适合对数据安全敏感人员使用。 -
python实现提取图片中文字
2020-11-20 20:54:241首先我贴出代码:from PIL import Imageimport pytesseracttext=pytesseract.image_to_string(Image.open('demo.png'),lang='chi_sim')print(text)2然后给出我的项目目录,以及图片信息,和最后的运行结果3但是就... -
Python提取图片中的文字
2021-07-29 00:43:04Python提取图片中的文字相关依赖库安装OCR工具安装识别代码 相关依赖库安装 pip install PIL pip install pytesseract OCR工具安装 下载链接 修改 pytesseract 源码中的路径,将 tesseract_cmd 的值改为安装... -
docx_python_process:从docx文件中批量提取图片表格内文字
2021-02-11 15:54:02docx_python_process 从docx文件中批量提取图片表格内文字 pip安装: pip install python-docx -
python识别提取图片jpg中指定位置的文字,并修改文件名为改文字
2022-06-07 16:28:12python识别提取图片中指定位置的文字,并修改文件名为改文字,方便批量操修改文件名,其中使用了pyqt5作为程序的界面,识别图片使用了Tesseract-OCR技术,压缩包附带源代码,方便大家学习。