以下是如何使用 Tesseract OCR 來辨識圖像中的文字的教學。
涵蓋了安裝 Tesseract、基本使用方法,以及如何在 Python 中進行整合。
首先,需要安裝 Tesseract OCR 工具。這裡提供針對 Windows、macOS 和 Linux 的安裝步驟。
C:\Program Files\Tesseract-OCR
)。tesseract -v
應顯示 Tesseract 的版本資訊。在 macOS 上可以使用 Homebrew 進行安裝:
brew install tesseract
在 Linux 系統上可以通過 apt
進行安裝:
sudo apt install tesseract-ocr
接下來,我們需要安裝 pytesseract
,這是一個 Python 的介面,用於與 Tesseract 一起使用。
pip install pytesseract
還需要安裝 OpenCV 或 PIL(Pillow) 來讀取圖像文件。這裡我們使用 OpenCV:
pip install opencv-python
現在,假設我們有一個名為 image.png
的圖像文件,我們將使用 Tesseract 來辨識圖像中的文字。
在命令行中,你可以簡單地運行 Tesseract 命令來辨識圖像:
tesseract image.png output
這會將 image.png
中的文字提取出來並儲存到 output.txt
文件中。
如果你想要指定 Tesseract 使用特定語言來進行 OCR,可以使用 -l
參數。例如,指定繁體中文:
tesseract image_1.png output -l chi_tra
這會要求 Tesseract 使用繁體中文語言包來進行文字識別。事先需先下載語言包放到指令資料夾,語言包路徑
看起來對於七這個文字辨識不佳,但螃蟹好棒阿~ 辨識的不錯
接下來,我們將示範如何在 Python 中使用 Tesseract OCR。
import cv2
import pytesseract
# 如果 Tesseract 沒有在系統路徑,指定其安裝路徑
# Windows 上可能需要以下設置:
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# 讀取圖像文件
image = cv2.imread('image.png')
# 使用 Tesseract 辨識圖像中的文字
text = pytesseract.image_to_string(image, lang='chi_tra') # 'chi_tra' 是繁體中文的語言代碼
# 打印辨識出的文字
print(text)
為了提高 Tesseract 的辨識效果,我們可以在進行 OCR 之前對圖像進行預處理。例如,調整對比度、灰度化等。
import cv2
import pytesseract
# 讀取圖像
image = cv2.imread('image.png')
# 將圖像轉為灰度
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 將灰度圖像進行二值化處理(黑白圖像)
_, threshold_image = cv2.threshold(gray_image, 150, 255, cv2.THRESH_BINARY)
# 使用 Tesseract 進行 OCR
text = pytesseract.image_to_string(threshold_image, lang='chi_tra')
# 打印辨識出的文字
print(text)
原因是因為在 CMD 下直接執行 Tesseract 時,它可能自動使用了一些預設的參數或處理方式,而 Python 使用 pytesseract
調用 Tesseract 時,這些參數需要明確指定。
config = '--oem 2 --psm 3'
text = pytesseract.image_to_string(threshold_image, lang='chi_tra', config=config)
Tesseract 的 --oem
參數指定了使用哪種 OCR 引擎模型。具體來說,--oem
參數有以下幾個選項:
0
: 使用傳統的 OCR 引擎 (基於圖像特徵的引擎)。1
: 使用基於 LSTM(長短期記憶網絡)的新 OCR 引擎。2
: 同時使用傳統引擎和 LSTM 引擎,進行混合模式的識別。3
: 僅使用 LSTM 引擎(Tesseract 4.0 以後的預設模式)。使用了--oem 2 才可辨識到 '螃'
如果圖像中包含多種語言的文字,可以讓 Tesseract 同時檢測多種語言。比如你有一個包含英文和繁體中文的文件,你可以同時指定這兩個語言。
text = pytesseract.image_to_string(image, lang='eng+chi_tra')
print(text)
[OpenCV][Python]實測tesseract OCR的Best模型與Fast模型
[OpenCV][Python]實測tesseract OCR縮放到最佳高度可提高辨識率嗎?
[OpenCV][Python]實測tesseract OCR增加間隔可提升辨識率
[OCR][Python]tesseract 辨識模型Fine tune
[OCR][Python]測試tesseract與easyOCR誰比較準跟快