美文网首页Python学习自动化测试
Python 使用Tesseract识别图片中的字符

Python 使用Tesseract识别图片中的字符

作者: Kewings | 来源:发表于2019-05-15 15:18 被阅读0次

    环境:Python3, Windows

    首先先得安装Pillow和pytesseract:

    pip install pytesseract
    pip install pillow
    

    之后需要在操作系统里安装Tesseract:

    1. 访问https://github.com/UB-Mannheim/tesseract/wiki
    2. 下载tesseract-ocr-w64-setup-v4.1.0.20190314 (rc1)
    3. 安装下载好的tesseract-ocr-w64-setup-v4.1.0.20190314.exe,安装过程中最好选择Chinese(simplified)语言
    4. 安装完毕后,将tesseract的目录(默认“C:\Program Files\Tesseract-OCR”)加入到系统PATH变量中

    使用Windows CMD确认安装结果:

    C:\Users\xxx>tesseract -v
    tesseract v4.0.0.20190314
     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.2.0
     Found AVX2
     Found AVX
     Found SSE
    
    C:\Users\xxx>tesseract --list-langs
    List of available languages (4):
    chi_sim
    eng
    osd
    script/HanS
    

    tesseract-4.0.0a支持以下psm参数:

    Page segmentation modes:
      0    Orientation and script detection (OSD) only.
      1    Automatic page segmentation with OSD.
      2    Automatic page segmentation, but no OSD, or OCR.
      3    Fully automatic page segmentation, but no OSD. (Default)
      4    Assume a single column of text of variable sizes.
      5    Assume a single uniform block of vertically aligned text.
      6    Assume a single uniform block of text.
      7    Treat the image as a single text line.
      8    Treat the image as a single word.
      9    Treat the image as a single word in a circle.
     10    Treat the image as a single character.
     11    Sparse text. Find as much text as possible in no particular order.
     12    Sparse text with OSD.
     13    Raw line. Treat the image as a single text line,
                            bypassing hacks that are Tesseract-specific.
    

    python3 用法:

    from PIL import Image
    import pytesseract
    
    img = Image.open('shot.png')
    ocr_str = pytesseract.image_to_string(img, lang="eng", config="--psm 7")
    print(ocr_str)
    

    如果图片中是纯数字,可以使用:

    ocr_str = pytesseract.image_to_string(image, lang='eng', \
            config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789')
    

    相关文章

      网友评论

        本文标题:Python 使用Tesseract识别图片中的字符

        本文链接:https://www.haomeiwen.com/subject/iyvpaqtx.html