python集成pytesseract库实现图片文字OCR识别过程

一、概述

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

注意:安装时候选择并勾选中文语言包

python集成pytesseract库实现图片文字OCR识别过程_第1张图片

2、安装完成后,添加到环境变量PATH中,我的安装路径是:E:\devInsFolder\python\tesseract-ocr-w64

令行窗口输入:tesseract -v ,查看是否安装成功

 python集成pytesseract库实现图片文字OCR识别过程_第2张图片

 查看支持的语言

如果安装过程中忘记勾选语言,导致默认不会识别中文,此时需要手动下载语言包,放到目录E:\devInsFolder\python\tesseract-ocr-w64\tessdata

 python集成pytesseract库实现图片文字OCR识别过程_第3张图片

语言包下载地址:Traineddata Files for Version 4.00 + | tessdoc

python集成pytesseract库实现图片文字OCR识别过程_第4张图片

 3、安装pytesseract

 Python tesseract:GitHub - madmaze/pytesseract: A Python wrapper for Google Tesseract

pip安装pytesseract

另外需要安装一下Pillow库,用于图像处理

 

注意:python集成pytesseract后,需要再python Lib 下pytesseract库安装目录修改指定安装的识别tesseract_cmd的exe目录

 

 python集成pytesseract库实现图片文字OCR识别过程_第5张图片

环境准备完毕。 

三、实例

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、图像有噪音的话需要高斯滤波处理

你可能感兴趣的:(小白学习python之路,计算机视觉,人工智能,opencv,python,开发语言)