python积累-图片文字识别-基于pytesseract

225 阅读1分钟

写在前面:

1、依赖工具 tesseract。

Tesseract的Windows安装包下载地址

中文包[下载地址]:github.com/tesseract-o…

下载好后需要配置环境变量,将下述两个路径配置到环境变量

C:\Program Files (x86)\Tesseract-OCR
C:\Program Files (x86)\Tesseract-OCR\tessdata

只使用工具进行文字识别的方式 :

tesseract E://figures/other/poems.jpg E://figures/other/poems.txt

命令行中执行上述命令即可将图片识别为文字并保存到 poems.txt 文件中

如果要识别中文,需要将下载好的中文包放到C:\Program Files (x86)\Tesseract-OCR\tessdata路径下,然后执行命令:

tesseract E://figures/other/timg.jpg E://figures/other/timg.txt -l chi_sim

2、使用python库

pip install Pillow  # 一个图片识别库
pip install pytesseract  

如果已经配置过tesseract的本地环境变量则无需再额外配置,一行代码即可 注意: 为了使环境变量生效,需要关闭cmd窗口或是关闭pycharm等ide重新启动

text = pytesseract.image_to_string(Image.open("test.png"),lang='chi_sim')

因为我是做手游测试的,实际测试下来效果并不十分好,对图片进行灰度、二化值处理后稍微好一点点。这里贴一下对应的写法

from PIL import Image
import pytesseract
	# 识别图片中的文字。对图片进行灰度、二化值处理
	def get_picture_str(self, picturePath):
		## 图片灰度处理
		picture = Image.open(picturePath).convert('L')	

		## 二值化,采用阈值分割法,threshold为分割点
		threshold = 200
		table = []
		for j in range(256):
		    if j < threshold:
		        table.append(0)
		    else:
		        table.append(1)
		newPicture = picture.point(table, '1')

		## 保存的时候调整屏幕分辨率为300,有利于 tesseract 识别
		newPicture.save(picturePath, dpi=(300.0,300.0))	

		## 识别
		text=pytesseract.image_to_string(Image.open(picturePath) ,lang='chi_sim')	
		return text