一、概述
OCR(Optical character recognition,光学字符识别)是一种将图像中的手写字或者印刷文本转换为机器编码文本的技术,可以将图片,纸质文档中的文本转换为数字形式的文本。
OCR过程一般包括以下步骤:
1、图像预处理
2、文本定位
3、字符分割
4、字符识别
5、后处理
pytesseract是基于Python的OCR工具, 底层使用的是Google的Tesseract-OCR 引擎,支持识别图片中的文字,支持jpeg, png, gif, bmp, tiff等图片格式。本文介绍如何使用pytesseract 实现图片文字识别。
最初由惠普开发,后来Google赞助的开源OCR引擎 tesseract 提供了比较精确的文字识别API,本文将要介绍的Python库Pytesseract就是基于Tesseract-OCR 引擎。
二、步骤
1、下载最新版并安装tesseract-ocr-w64-setup-v5.0.1.20220118
下载地址:Index of /tesseract
注意:安装时候选择并勾选中文语言包
2、安装完成后,添加到环境变量PATH中,我的安装路径是:E:\devInsFolder\python\tesseract-ocr-w64
令行窗口输入:tesseract -v ,查看是否安装成功
查看支持的语言
如果安装过程中忘记勾选语言,导致默认不会识别中文,此时需要手动下载语言包,放到目录E:\devInsFolder\python\tesseract-ocr-w64\tessdata
语言包下载地址:Traineddata Files for Version 4.00 + | tessdoc
3、安装pytesseract
Python tesseract:GitHub - madmaze/pytesseract: A Python wrapper for Google Tesseract
pip安装pytesseract
另外需要安装一下Pillow库,用于图像处理
注意:python集成pytesseract后,需要再python Lib 下pytesseract库安装目录修改指定安装的识别tesseract_cmd的exe目录
环境准备完毕。
三、实例
1、待识别的图片
2、识别结果
2021年9月18日12:08:08
修改无人机默认第一个颜色
调整飞手信息,默认鼠标滑动上再显示
3、代码
# model
# param
# auth:lizhi.guo
# time:2022/5/5 17:16
from PIL import Image
import pytesseract
import cv2
import os
image = cv2.imread("d://opencv.png")
preprocess = 'blur'
# if preprocess == 'blur':
# image = cv2.GaussianBlur(image,(3,3),0)
# if preprocess == 'thresh':
# image = cv2.threshold(image,0,255,cv2.THRESH_BINARY|cv2.THRESH_OTSU)[1]
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
height, width = gray.shape[:2]
size = (int(width*2), int(height*2))
resize=cv2.resize(gray,size)
filename = "{}.png".format(os.getpid())
filename="d://"+filename
cv2.imwrite(filename,resize)
text = pytesseract.image_to_string(resize,lang='chi_sim+eng')
print(text)
#os.remove(filename)
cv2.imshow("image",image)
cv2.imshow("gray",gray)
cv2.waitKey(0)
注意:
识别效果而言:
1、首先转灰度,不转灰度图像识别效果不好
2、其次,看图片大小,如果太小,需要等比例放大
3、图像有噪音的话需要高斯滤波处理