将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR)。今天我们用到的就是一个OCR 库——Tesseract。
首先要安装Tesseract,除了最基本的pip安装外,还要下载Tesseract-OCR程序。
1.下载所需的python包:pip install Pillow
pip install pytesseract
安装时前面一直next就可以了,直到这一步,在additional language data里勾选Math和Chinese,支持计算和中文:
3.添加环境变量:
添加名为TESSDATA_PREFIX的环境变量,设置为安装目录下的tessdata目录C:\Program Files (x86)\Tesseract-OCR\tessdata (一般默认是这个)
4.修改pytesseract.py:
这个文件在python安装路径的Lib\site-packages\pytesseract文件夹下,将tesseract_cmd修改成tesseract的安装路径,使pytesseract能够调用tesseract。tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tessdata/tesseract.exe'
一般做完上面4步,就能用下面的代码实现简单的文字识别了:
import pytesseract
from PIL import Image
text = pytesseract.image_to_string(Image.open('1.jpg'),lang='chi_sim') # chi_sim是简体中文训练包,如果想识别英文去掉lang选项即可
print(text)
但我在安装Tesseract-OCR的过程中,遇到了download error的问题,导致chi_sim包没有下载成功。因此运行程序后还会报没有配置环境变量的错,这个时候就要手动下载中文训练包了,我找到的下载地址是/liangchan/11126.html,里面不仅有中文,还有几个其他语言的包。
下面是识别结果:
对于这种清晰的印刷体,识别准确率还是挺高的。但如果换成手写文字的话,emmm……别灰心,不是你的字迹丑,真的是这个识别库不行。
即便不是手写的,换一种潦草一点的字体,它就一样识别不准了,比如上网找一个王羲之的字体:
结果是:
由此可见,在Tesseract的眼里,你和王羲之没啥两样。
——我和王羲之谁的书法更漂亮?
——Tesseract:我好像听不懂你在说什么。