Python 实现 OCR 识别

git 地址

一、安装

macOS 上安装依赖。

brew install tesseract

二、下载训练数据

训练数据的git地址

找到 chi_sim.traineddata 这个文件,下载到本地。

注:用迅雷有加速会比原站快很多。

三、Python 代码

  因为代码识别出来的每个中文之间都有空格,所以用‘’把空格全部替换。但是之后发现,这个处理流程不适合英文识别。

  创建了tessdata目录,存储chi_sim.traineddata文件。

from PIL import Image

import pytesseract

import sys

class Languages:

    CHS = 'chi_sim'

    CHT = 'chi_tra'

    ENG = 'eng'

def img_to_str(image_path, lang=Languages.ENG):

    tessdata_dir_config = r'--tessdata-dir ''./tessdata/'''

    return pytesseract.image_to_string(Image.open(image_path), lang, config=tessdata_dir_config)


def main():

    if ( 2 > len(sys.argv)) :

        print("input png file")

        return -1


    ocr_str = img_to_str(sys.argv[1], lang=Languages.CHS)

    ocr_str_new = ocr_str.replace(' ', '')

    f = open(sys.argv[1]+".txt", "w+")

    f.write(ocr_str_new)

    f.close()

if __name__ == '__main__':

    main()


网上截取的文字样本1

  这个样本错误比较少。文字中的标点符号有全角和半角不一致的问题。

  现年64岁的德国总理默克尔以能干著称。

  自2005年上任以来,她已在总理的岗位上连续工作了14年。在国际金融危机、欧债危机、难民危机等一系列变故中,默克尔带领德国乃至欧洲一路向前,虽有波折,但方寸不乱。


网上截取的文字样本2

  OCR识别这段文字出错就比较多。

  据悉,GalaxyNote10将采用打孔屏幕,后置三摄,下方有激光自动对焦传感器和LED闪光灯;机身尺寸为77.6亮米(宽)x162.5毫米(长)x170.1埕米。

  另外,三星将于美国东部时间8月7日下午4点(北京时间8月8日凌晨4点)在纽约布鲁克林的巴克莱中心正式发布GalaxyNote10手机,让我们拭目以待。

四、总结

  因为部分网站不支持网页另存为文本,所以用 OCR 识别可以代替打字录入。这个 OCR 识别库在使用上非常简单,识别率也在可接受范围之内。

你可能感兴趣的:(Python 实现 OCR 识别)