OCR识别图片和PDF上的文字

pytesseracttesseractpython的一个接口,裹着tesseract的内核pytesseract为python程序加持了OCR的功能。pytesseract能识别的图片类型(jpegpnggifbmptiff……)比直接用tesseract命令行识别的类型(jpegpngtiffz)更多,而且可以将识别出来的内容直接保存到字符串里,tesseract是保存到文本文件里。

在python程序中用pytesseract做图像识别,首先要安装第三方模块pytesseract,安装完毕后在程序中引进。除此外还要安装和引进pillow模块,用来打开图片文件生成图片对象。还有一个第三方模块opencv-python,可用来打开存储关闭预处理图片,很好用,后面会提到:

from PIL import Image
import pytesseract

Windows上如果搜索路径(PATH)里没有tesseract 的路径,可以在程序中特别指定tesseract可执行文件的位置:

pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files (x86)\Tesseract-OCR\tesseract'

Mac上若是用brew安装的tesseract,在终端运行命令:

     brew list tesseract

可以得到tesseract的安装信息。

这里在Mac上没有在python程序中特别指定pytesseract的安装路径。安装完tesseract后,在终端运行tesseract命令行做了图片文件识别,已经确认过可以找得到tesseract

将图片上的文字识别成字符串用函数pytesseract.image_to_string():

print(pytesseract.image_to_string(Image.open('图片所在的路径+文件名')))

Image.open(图片文件)打开图片文件、生成图片对象。

指定要识别的语言(前提是语言包已经拷贝到tessdata目录下,用Tesseract命令行识别图片文字这一节有语言包下载和安装的详细介绍可参见百宝箱tesseract的xiang): 

print(pytesseract.image_to_string(Image.open('example.jpg'), lang='chi_sim'))		# 指定图片上要识别的内容是简体中文

如果出现tessdata的错误,比如”Error open data file……,则在函数中明确指出字库文件的位置:

image = Image.open('example.jpg')
tessdata_dir_config = r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"'
# 用自己的字库文件夹替换掉C:\Program Files (x86)\Tesseract-OCR\tessdata

str = pytesseract.image_to_string(image, lang='chi_sim', config=tessdata_dir_config)
# 指定识别的语言和字库位置,识别结果保存到str中