python 技術: 影像圖檔內的 OCR 中英文辨識 搭配 後處理補強輸出結果
輸入
假設輸入的一個圖(照片) 內容也許夾雜英文跟中文
電腦打字版的效果會比較好, 若背景有浮水印,會干擾辨識度(本程式沒有先做去雜訊)
辨識的結果
可以加上一些後處理讓接下來的可處理(閱讀)性 再高一些
例如: 雖是英文字母,但的確不是一般標準的英文單字者(可以藉此過濾掉 中文被辨識成怪怪英文的部分)
例如: 有哪些原文拼錯字 lenth 應該是 length
盡量保留想要留下的字,盡量去掉雜質, 但仍很難達到100%正確
檢查的方法 例如: 保留數字,保留包含標點符號, 保留符合某些特色pattern或者縮寫字
如何安裝tesseract
有點步驟要注意:
https://github.com/UB-Mannheim/tesseract/wiki
先download .exe 然後記清楚 path C:\Program Files\Tesseract-OCR\tesseract.exe 加入環境變數
https://github.com/tesseract-ocr/tessdata 添加繁體中文識別包
download 名稱類似 chi_tra 的兩個包, 在tesseract下面 md 一個小目錄 名為 tessdata 將兩個下載的中文包 放在小目錄內,
新增環境變數共兩個
C:\Program Files\Tesseract-OCR\tessdata
C:\Program Files\Tesseract-OCR\tesseract.exe
#! pip install pillow
#! pip install pytesseract
#! pip install opencv-python
#先準備好語料庫
import nltk
nltk.download(‘words’)
from PIL import Image
import pytesseract
#?????????? 這裡要依照自己存放tesseract.exe的路徑修改以下這條指令
pytesseract.pytesseract.tesseract_cmd = r’C:\Program Files\Tesseract-OCR\tesseract.exe’
#??????????這裡要依照自己存放 image的路徑與名稱
img = Image.open(‘your_input_image.png’)
#假設圖檔放在與本程式工作環境同路徑
text_eng = pytesseract.image_to_string(img, lang=’eng’)
#如果lang寫eng, 掃描中文會成為奇怪的英文,如果不寫 lang, 看起來是類似 english 掃描結果的
text_chi = pytesseract.image_to_string(img, lang=’chi_tra’) #使用中文包所掃描到的英文會局部錯亂(同樣一份圖,單獨使用eng掃描準確度頗高)
print(‘text_eng before 後處理 =’, text_eng)
from nltk.corpus import words
# 這個字典的缺點是 動詞加s會找不到, 例如: writes
import string #in string.punctuation 辨識標點符號
#補強字: 補強標準字典不認識的單字
matches_substring = [ “1”,”2",”3",”4",”5",”6",”7",”8",”9",”0",”JAN”, “FEB”, “MAR”,”APR”,”MAY”,”JUN”,”JUL”,”AUG”,”SEP”,”OCT”,”NOV”,”DEC”,”python”, “def”, “fun”, “lowercase”, “writes”]
list_every_words = text_eng.split()
output_string = ‘’
print(‘output english after 後處理’, output_string)
print(text_chi)