tesseract 安装及配置
pytesseract 图片识别提取

背景


工作需要,由于不能直接获取某一控件上的数字数据,因此这里尝试 ocr 来识别。
需要识别的是数字数据,且整齐,无模糊遮挡等影响因素。
引入 Tesseract 的 OCR 引擎 (Google's Tesseract-OCR Engine),并结合 pytesseract 库 (Python-tesseract tools) 来完成图片中数字识别提取。

tesseract 安装 (windows)


下载地址

  1. tesseract 下载地址 (win)
  2. 建议下载较新的稳定版本,如tesseract-ocr-w64-setup-v5.0.0.20190526.exe
  3. 下载慢的请走热心网友分享的网盘下载

win 安装

  1. 一路下一步就行了,语言包可以先不用选择,如果选择的话会比较慢(反正我这里比较慢,翻墙也不行)
  2. 建议安装在默认路径下,即 C 盘,避免出现乱七八糟的问题

语言包下载

  1. 下载额外的需要的语言包语言包下载地址,我的需求显然不需要额外的语言包,eng.traineddata(可识别数字及英文) 就够了
  2. 拷贝语言包到tesseract安装路径下的tessdata目录下

环境配置

  1. 添加环境变量,Path变量下添加:C:\Program Files\Tesseract-OCR
  2. 添加环境变量,新建TESSDATA_PREFIX变量,值为C:\Program Files\Tesseract-OCR\tessdata

本地测试


  1. tesseract -v

    > tesseract -v
    tesseract v5.0.0.20190623
    leptonica-1.78.0
    libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
    Found AVX2
    Found AVX
    Found SSE
    
    > tesseract --list-langs
    List of available languages (2):
    eng
    osd
    
  2. 图片识别测试
    tesseract imagename outputfilename [-l lang] [-psm pagesegmode] [configfile…]

    > tesseract test.png test -l eng
    Tesseract Open Source OCR Engine v5.0.0.20190623 with Leptonica
    

    识别出的结果保存在test.txt文件中

  3. 错误处理

    • read_params_file: parameter not found
      在 tesserdata 目录下执行如下命令(请自行替换指定语言包名)

      combine_tessdata -e chi_sim.traineddata chi_sim.config
      
    • 其他
      请自行百度,肯定是哪里没配置好

pytesseract 识别提取


  1. 安装pytesseract: pip install pytesseract

  2. 安装Pillowpip install pillow

    pip list
    Package     Version
    ----------- -------
    Pillow      7.0.0
    pip         20.0.2
    pytesseract 0.3.3
    setuptools  46.0.0
    wheel       0.34.2
    
    # 示例,针对我的情况,识别率接近100%
    import pytesseract
    from PIL import Image
    
    im_test = Image.open('test.png')
    print(pytesseract.image_to_string(im_test).split())
    -------------------------------------------------------------
    ['10150.13', '130.27', '+1.30%']
    

2021.11.22更新,ddddocr
2021.11.23更新,EasyOCR,参考文章Python Easyocr 图片文字识别
pip install easyocr --use-feature=2020-resolver

扩展阅读


  1. pyocr 项目
  2. 基于 Tesseract 的 OCR 识别
  3. Tesseract 4 自行构建支持双引擎的 tessdata 文件
  4. Tesseract command line syntax and other details
  5. Tesseract User Manual