OCR ( Optical Character Recognition ) 就是所謂的字元辨識,可以將圖片的內容轉換成可編輯的文字,這篇文章會介紹使用 Python 的 Pillow 第三方函式庫,搭配 tesseract 函式庫與程式,實作開啟圖片並辨識圖片內的文字,並將其轉換成字串。
教學原文參考:圖片轉文字 ( OCR 圖片字元辨識 )
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
輸入下列指令安裝 Pillow,根據個人環境使用 pip 或 pip3,如果使用 Colab 或 Anaconda Jupyter,已經內建 Pillow 函式庫。
!pip install Pillow
輸入下列指令安裝 tesseract,根據個人環境使用 pip 或 pip3。
!pip install pytesseract
如果是 Colab 安裝後,需要點擊 RESTART RUNTIME 按鈕。
雖然安裝了 pytesseract 函式庫,仍然必須要額外安裝 tesseract 程式,才能具備圖片辨識文字的功能,安裝方式如下:
Windows:
參考 Tesseract installer for Windows 下載 exe 檔案安裝。
Mac:
輸入
brew install tesseract
使用 homebrew 安裝。Google Colab:
參考「連動 Google Drive」文章連動 Google Drive 後,輸入
!sudo apt install tesseract-ocr
安裝 ( 注意,關閉 Colab 之後,會自動將上傳或安裝的資料刪除,再次開啟需要重複一次安裝步驟 )。
tesseract 預設只有支援英文語系,如果要辨識其他語言,必須要前往「tesseract-ocr/tessdata_best」額外下載語系包:
- 繁體中文:chi_tra.traineddata
- 簡體中文:chi_sim.traineddata
- 日文:jpn.traineddata
下載後,將語系包放到對應的資料夾內:
Windows:
前往
C:\Program Files (x86)\Tesseract-OCR\tessdata
資料夾Mac:
使用終端機的指令前往「
/usr/local/Cellar/tesseract/5.1.0/share/tessdata
」( 版本根據個人環境而異,本篇教學撰寫時版本為 5.1.0 ),進入後輸入「open .
」開啟資料夾 ( 因為該資料夾在 Mac 中屬於隱藏檔案,要使用指令開啟 ),將語系包複製貼上。Google Colab
開啟左側資料夾選單,點擊「上一層」的按鈕。
選擇「usr > share」。
選擇「tesseract-ocr > 4.00 > tessdata」,點擊滑鼠右鍵,上傳語系包 ( 注意,關閉 Colab 之後,會自動將上傳或安裝的資料刪除,再次開啟需要重複一次安裝步驟 )。
安裝完成後,就可以使用 Pillow 開啟圖片,透過 pytesseract.image_to_string 將圖片中的文字轉換成真正的文字,lang 可以設定語系,eng 表示英文,chi_tra 繁體中文,chi_sim 簡體中文,下方的程式碼會辨識一張英文字圖片的文字。
範例圖片:下載
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image
import pytesseract
img = Image.open('english.jpg')
text = pytesseract.image_to_string(img, lang='eng')
print(text)
如果是使用中文語言包,還可以辨識出中英文夾雜的句子。
範例圖片:下載
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # Colab 換路徑使用
from PIL import Image
import pytesseract
img = Image.open('chinese.jpg')
text = pytesseract.image_to_string(img, lang='chi_tra')
print(text)
雖然現在很多線上平台都可以免費轉換文字 ( 例如 Google Drive 內建圖片轉文字的功能 ),但如果學會使用 Python 進行,將可以搭配其他套件,做出更多方便的應用。
大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我已經寫了超過 400 篇 Python 的教學,有興趣可以參考下方連結呦~ ^_^