python库学习 - pytesseract 识别图片中文字

2020-08-28  本文已影响0人  许忠慧

写在前面:
1、依赖工具 tesseract。

Tesseract的Windows安装包下载地址为:
http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe
中文包下载地址:
https://github.com/tesseract-ocr/tessdata/find/master/chi_sim.traineddata

下载好后需要配置环境变量,将 C:\Program Files (x86)\Tesseract-OCRC:\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
上一篇下一篇

猜你喜欢

热点阅读