1. 程式人生 > >Python實現從圖片提取文字

Python實現從圖片提取文字

環境

  1. Python3
  2. Python3的pillow、pytesseract包
    可使用pip install pillow、pip install pytesseract命令安裝
    或者通過pycharm進行安裝
  3. 識別引擎tesseract-ocr ,下載地址

程式碼

#-*- coding:utf-8 -*-  
import pytesseract  
from PIL import Image  

# 使用pytesseract對英文進行識別,lang引數可省略  
print(pytesseract.image_to_string(Image.open('textEng.png'
,lang='eng'))) # 使用pytesseract對中文(含英文,但識別率降低)進行識別 print(pytesseract.image_to_string(Image.open('textCh.png'), lang='chi_sim'))

該提取文字的功能對英文識別率還是可以的,但對中文稍差強人意,不過還是比手打的要方便。

報錯及解決

1. FileNotFoundError:[WinError 2]系統找不到指定檔案。

解決方法:
搜尋檔案pytesseract.py,找到如下程式碼,將tesseract_cmd的值修改為全路徑(tesseract檔案的全路徑,該檔案在Tesseract-OCR下)。如下:

tesseract_cmd = 'tesseract'

改為

tesseract_cmd = 'E:\Python36\Tesseract-OCR\\tesseract'

2.pytesseract.pytesseract.TesseractError: (1, ‘Error opening data file ··· ··· Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your “tessdata” directory. Failed loading language \’chi_sim\’ Tesseract couldn\’t load any languages! Could not initialize tesseract.’)

解決辦法:
1. 檢查是否將TESSDATA_PREFIX新增到系統變數裡,若沒有,在系統變數(注意不是環境變數)裡新建變數名TESSDATA_PREFIX,變數值為E:\Python37\Tesseract-OCR\(此處填你的Tesseract-OCR檔案路徑)。
2. 檢查“Tesseract-OCR\tessdata”路徑下是否存在chi_sim.traineddata(若是報錯是無法載入eng則檢視是否存在相應檔案),若沒有,下載chi_sim.traineddata檔案,並放置在“Tesseract-OCR\tessdata”路徑下。
3. 若還沒有解決:
開啟檔案pytesseract.py,找到image_to_string,在上面一行指定config的引數為tessdata檔案的路徑,如下:

tessdata_dir_config = '--tessdata-dir "E:\Python37\Tesseract-OCR\\tessdata"'
def image_to_string(image,
                    lang=None,
                    config='',
                    nice=0,
                    boxes=False,
                    output_type=Output.STRING):

3.permission denied:[WinError 5] 拒絕訪問

解決方法:
Tesseract-OCR預設安裝在”C:\Program Files (x86)”下,訪問該路徑需要administrator許可權。修改Tesseract-OCR安裝路徑並更改tesseract_cmd的值即可。