Python OCR识别图片
OCR技术是光学字符识别的缩写(Optical Character Recognition),是通过扫描等光学输入方式将各种票据、报刊、书籍、文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的计算机输入技术。可应用于银行票据、大量文字资料、档案卷宗、文案的录入和处理领域。(以上信息来源于百度百科OCR技术)
前几天刚好接到公司两个相关需求需求,一个是资产管理,由于信息化管理的需求,需要识别我们的物料标签;另一个是我们的会员系统,通过图片给的识别码到系统中查找是否存在相应红包、会员信息,从而避免黄牛扰乱我们的红包、会员系统,以前的做法是购买一个外部公司开发的接口(据说是1000元10万次)。基于公司的业务需求,同时也为了实践用技术解决业务上的问题的态度,把实际开发中遇到的问题记录下来,供读者们少走弯路。
一、环境准备
首先我们的操作环境是Windows操作系统(Linux系统可以通过libtesseract方式访问),我们采用的OCR识别软件是Tesseract-OCR,下载并安装Tesseract-OCR软件,安装完成之后需要配置环境变量,配置完成之后通过CMD命令行验证是否配置成功,执行tesseract -v命令查看相应版本,下面是一个CMD控制台下的识别实例。
OCR下载地址:https://digi.bib.uni-mannheim.de/tesseract/
OCR中文下载地址:https://download.csdn.net/download/qq_30273575/81897469
OCR全部语言下载地址:https://download.csdn.net/download/qq_30273575/81898150
如果用代码实现,环境变量一定要配置成C:\Program Files\Tesseract-OCR\tessdata,而不是C:\Program Files\Tesseract-OCR
配置中文语言包
默认情况下Tesseract-OCR是不能识别中文的,需要加载相应的中文语言包,简体中文语言包叫chi_sim.traineddata下载下来之后需要放置到${TESSERACT_HOME}/tessdata目录下,同时把语言包目录路径配置到环境变量当中,新增变量名称为“TESSDATA_PREFIX”。
下图中文件夹添加了英文和中文简体两种包,
语言包下载地址
至此前期的环境准备工作已经完成,读者可以通过CMD命令行的模式使用OCR的基本功能了,接下来是通过Python语言集成进来,毕竟手工操作的效率和扩展性不如程序化实现。
使用命令行转换:tesseract YINWEN.png output -l eng
环境变量要配置成C:\Program Files\Tesseract-OCR\才可以执行,与代码实现不同
YINWEN.png 为图片名,在当前文件夹下C:\Users\jeff.xie\Desktop>
output为文字输出的文件名,如下图所示,默认txt文件,
-l表示Language,这里设置的为 eng,表示为英文
下图所示,可以正常转换文本
中文转换出现乱码,待研究。。。
Python实现
安装依赖包
接下来我们主要实现Python与Tesseract-OCR交互实现程序化图片识别功能。首先我们需要安装Python 图片依赖包,本文中Python涉及到的依赖包主要有两个,一个是PIL(Python Imaging Library),另外一个就是与Tesseract-OCR交互的依赖包pytesseract,通过pip install pytesseract安装相应的包。
安装tesseract orc
下载地址:https://github.com/UB-Mannheim/tesseract/wiki
点击“tesseract-ocr-w64-setup-v4.0.0-beta.1.20180414.exe”
下载安装。注意:安装的时候选中中文包(安装时把所有选项都勾上)。本人安装目录:C:\Program Files\Tesseract-OCR\tessdata
使用命令,查看版本号和支持语言:
cd C:\Program Files\Tesseract-OCR
tesseract -v tesseract --list-langs -v tesseract --list-langs #查看Tesseract-OCR支持语言
配置tesseract运行文件
...\Lib\site-packages\pytesseract\pytesseract.py
找到文件:tesseract_cmd = 'tesseract'
修改为:tesseract_cmd = 'C:\\Program Files\\Tesseract-OCR\\tesseract.exe'
编写相应代码获取图片字符,首先是加载依赖包,读取图片,最终把从图片上读取出的字符写入一个文件保存起来,具体代码如下,两种方式实现:
from PIL import Image import pytesseractimport os,sys sys.path.append(os.getcwd())def read_text(text_path):"""传入文本(jpg、png)的绝对路径,读取文本:param text_path::return: 文本内容"""# 验证码图片转字符串im = Image.open(text_path)# 转化为8bit的黑白图片imgry = im.convert('L')# 二值化,采用阈值分割算法,threshold为分割点threshold = 140table = []for j in range(256):if j < threshold:table.append(0)else:table.append(1)out = imgry.point(table, '1')# 识别文本 testdata_dir_config = '--tessdata-dir "C:\\Program Files\\Tesseract-OCR\\tessdata"'text = pytesseract.image_to_string(out, lang="chi_sim", config=testdata_dir_config)# text = pytesseract.image_to_string(out, lang="chi_sim")return textdef read_pic(text_path):im = Image.open(text_path)text = pytesseract.image_to_string(im, lang="eng")return textif __name__ == '__main__':print(read_text("d://a2//test.png"))print(read_pic("C:/Users/jeff.xie/Desktop/YINWEN.png"))
最后的效果如下:
问题及解决:
读取中文字符的时候有异常输出,如下
Python程序不能对中文进行编码,执行程序前,需要配置中文的环境,如下:
解决pytesseract.pytesseract.TesseractError: (1, ‘Error opening data file C:\Program Files\Tesseract-OCR\tessdata/chi_sim.traineddata Please make sure the TESSDATA_PREFIX environment variable is set to your “tessdata” directory. Failed loading language ‘chi_sim’ Tesseract couldn’t load any languages! Could not initialize tesseract.’)
参考链接: https://www.pythonf.cn/read/167081
path = "img\\text-img.png"
testdata_dir_config = '--tessdata-dir "C:\\Program Files\\Tesseract-OCR\\tessdata"'
textCode = pytesseract.image_to_string(Image.open(path), config=testdata_dir_config, lang='chi_sim')
相关的学习资料:
编程:Python实现图片识别_xiaxianba的博客-CSDN博客_python图片识别
python3 图片文字识别 - shaomine - 博客园
Python OCR识别图片相关推荐
- Python OCR识别图片验证码(二)
操作系统:Windows Python:3.5 欢迎加入学习交流QQ群:657341423 上节讲到验证码的简单识别 但对于一些复杂的验证码,我们需要做一些简单的图片处理才能识别. 例如,我要识别这些 ...
- Python之ocr识别图片并转为excel文件
环境准备 1.开通腾讯文字识别服务 按照官网步骤进行开通:https://cloud.tencent.com/product/generalocr/getting-started 开通 ...
- python—简单数据抓取四(利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站、利用百度云的ocr识别自如租房网价格图片获取到自如网的价格)
学习目标: python学习二十四 -简单数据抓取四 学习内容: 1.利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站 2.利用百度云的ocr识别自如租房网的价格图片,获取到自如网的价格数据 1.利 ...
- python 制定识别图片的某些区域_python批量识别图片指定区域文字内容
Python批量识别图片指定区域文字内容,供大家参考,具体内容如下 简介 对于一张图片,需求识别指定区域的内容 1.截取原始图上的指定图片当做模板 2.根据模板相似度去再原始图片上识别准确坐标 3.根 ...
- 百度云 OCR 识别图片验证码
操作系统:Mac OS Python版本:3.7.2 OCR:百度云 遇到的问题: API测试过程中,遇到API Resopnse 为图片验证码的情况,需要对图片进行识别得到text code,进行断 ...
- Python+Tesseract-OCR识别图片文字并保存到word文档
目录 使用Python+Tesseract-OCR识别图片文字并保存到word文档 安装Tesseract-OCR 配置Tesseract-OCR 通过CMD验证Tesseract-OCR工作 安装p ...
- 在ubuntu20.10系统下实现一键OCR识别图片截图中的内容使之转换为文本可以复制粘贴
目的:因为最近主要使用ubuntu系统,想要将视频中的文字提取出来,实现一键OCR识别图片截图中的内容使之转换为文本可以复制粘贴. 主要思路 利用截图软件gnome-screenshot 进行截取需要 ...
- python人工智能文字识别软件_怎么用Python人工智能识别图片-百度AI文字识别使用方法分享 - Iefans...
如果你是个Python初学者,那么你可以试着做做看这个教程,毕竟编程技能都是在实战中成长的,这篇教程是教你如何用Python来进行人工智能识别图片,可以帮助你解决日常办公时遇到的图片转换文字的问题. ...
- python实现OCR识别图片验证码
用cv2模块读取和显示模块 #导包cv2拓展模块 import cv2#先给窗体起名字 cv2.namedWindow("ShowImage1") cv2.namedWindow( ...
- python ocr识别身份证_不告诉你我用了它配合Python简简单单开发OCR识别,带你识别手写体、印刷体、身份证等N种,附代码!...
一.你心目中的OCR二.成果展示(一)手写体成果展示(一)印刷体成果展示(三)名片识别成果展示(四)身份证(同样是模板)成果展示(五)表格识别成果展示:(六)整题识别成果展示:三.前期准备四.开发过程 ...
最新文章
- spring 数组中随机取几个_别给孩子取这三种名字!截止年末,名字中的这几个字已经烂大街了...
- python初学者代码-Python-为什么Python是初学者的完美选择?
- 决策树和随机森林(上)
- 影驰名人堂送的机器人_玩转GTX 1080Ti名人堂显示屏 影驰全新魔盘使用教程
- 爱奇艺体验Serverless极致扩缩容,资源利用率提升40%
- 从1.5k到18k, 一个程序员的5年成长之路(分享)
- 2019世界大学排名全新出炉!清华北大排名大幅下滑?
- windows下常见php集成环境安装包介绍
- linux关闭防火墙后要重启网络吗,linux 下关闭防火墙方法和单向ping通问题之解决...
- vbr,cbr,abr区别
- win7、win10磁盘分区
- 基于python的证件照_利用python自动生成证件照
- 5G基站君的进化之路 — CU和DU分离
- HTML5作业:实现小米官网静态首页
- 四级英语图表作文真题计算机,英语四级作文真题
- 全网最后一个免费版本,永久可用
- 利用python如何抓取微博评论?
- 移动应用测试与PC端测试区别
- 函数的递归调用(C++)
- 经颅磁刺激后EEG神经网络的大规模变化