将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。 可以实现OCR 的底层库并不多,目前很多库都是使用共同的几个底层OCR 库,或者是在上面进行定制。
Tesseract 是一个OCR 库,目前由Google 赞助(Google 也是一家以OCR 和机器学习技术闻名于世的公司)。 Tesseract 是目前公认最优秀、最精确的开源OCR 系统。 除了极高的精确度,Tesseract 也具有很高的灵活性。 它可以通过训练识别出任何字体(只要这些字体的风格保持不变就可以),也可以识别出任何Unicode 字符。
Tesseract的安装与使用
Tesseract的Windows安装包下载地址为: http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe ,
下载后双击直接安装即可。
安装完后,需要将Tesseract添加到系统变量中。
在命令行中输入 tesseract -v
检查Tesseract是否安装完成且添加到系统变量中。
Debian / Ubuntu 用户可以通过 apt-get
安装, Debian 10, Debian 11, Ubuntu 22.04, Debian 12 验证通过:
sudo apt install tesseract-ocr tesseract-ocr-chi-sim python3-tesserocr
以下为原来方法:
这一节介绍的库名称为 pytesseract
。
pytesseract是Tesseract关于Python的接口,还需要一个Python的图片处理模块,可以安装pillow。
使用下面命令安装完后,就可以使用Python调用Tesseract了:
pip install pytesseract
import pytesseract
目前使用 python3-tesserocr
。由于其本身在 Debian / Ubuntu 仓储库中,成熟度更高,推荐使用。
另外不管是 python3-tesserocr
还是 pytesseract
,都是对 Tesseract
的封装,
使用上稍有区别,没有实质的不同。
使用下面代码导入模块:
import tesserocr
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) Cell In[2], line 1 ----> 1 import tesserocr ModuleNotFoundError: No module named 'tesserocr'
from PIL import Image
text = tesserocr.image_to_text(Image.open('/data/demo/ocra1.jpg'))
print(text)
test = tesserocr.image_to_text(Image.open('/data/demo/ocrb2.jpg'))
test
识别简体中文
最后是识别简体中文, Windows 系统中需要事先安装简体中文语言包,
下载地址为:https://github.com/tesseract-ocr/tessdata/find/master/chi_sim.traineddata ,
再将 chi_sim.traineddata
放在 C:\Program Files (x86)\Tesseract-OCR\tessdata
目录下。
接下来以图片为例:
输入命令:
tesseract timg.jpg timg.txt -l chi_sim
看一下在 Python 中的使用:
text = tesserocr.image_to_text(
Image.open('/data/demo/ocrc3.jpg'),
lang = 'chi_sim')
识别结果如下: 只识别错了一个字,识别率还是不错的。
print(text)
最后加一句,Tesseract对于彩色图片的识别效果没有黑白图片的效果好。