iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Software Development

學 Python 到底可以幹麻勒?系列 第 12

( Day 12 ) 圖片轉文字 ( OCR 圖片字元辨識 )

  • 分享至 

  • xImage
  •  

OCR ( Optical Character Recognition ) 就是所謂的字元辨識,可以將圖片的內容轉換成可編輯的文字,這篇文章會介紹使用 Python 的 Pillow 第三方函式庫,搭配 tesseract 函式庫與程式,實作開啟圖片並辨識圖片內的文字,並將其轉換成字串。

教學原文參考:圖片轉文字 ( OCR 圖片字元辨識 )

本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )

Python 教學 - 圖片轉文字 ( OCR 圖片字元辨識 )

安裝 Pillow 和 tesseract 函式庫

輸入下列指令安裝 Pillow,根據個人環境使用 pip 或 pip3,如果使用 Colab 或 Anaconda Jupyter,已經內建 Pillow 函式庫。

!pip install Pillow

輸入下列指令安裝 tesseract,根據個人環境使用 pip 或 pip3。

!pip install pytesseract

如果是 Colab 安裝後,需要點擊 RESTART RUNTIME 按鈕。

Python 教學 - 圖片轉文字 ( OCR 圖片字元辨識 )

安裝 tesseract 程式

雖然安裝了 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」額外下載語系包:

下載後,將語系包放到對應的資料夾內:

  • Windows

    前往 C:\Program Files (x86)\Tesseract-OCR\tessdata 資料夾

  • Mac

    使用終端機的指令前往「/usr/local/Cellar/tesseract/5.1.0/share/tessdata」( 版本根據個人環境而異,本篇教學撰寫時版本為 5.1.0 ),進入後輸入「open .」開啟資料夾 ( 因為該資料夾在 Mac 中屬於隱藏檔案,要使用指令開啟 ),將語系包複製貼上。

    Python 教學 - 圖片轉文字 ( OCR 圖片字元辨識 )

  • Google Colab

    開啟左側資料夾選單,點擊「上一層」的按鈕。

    Python 教學 - 圖片轉文字 ( OCR 圖片字元辨識 )

    選擇「usr > share」。

    Python 教學 - 圖片轉文字 ( OCR 圖片字元辨識 )

    選擇「tesseract-ocr > 4.00 > tessdata」,點擊滑鼠右鍵,上傳語系包 ( 注意,關閉 Colab 之後,會自動將上傳或安裝的資料刪除,再次開啟需要重複一次安裝步驟 )。

    Python 教學 - 圖片轉文字 ( OCR 圖片字元辨識 )

辨識圖片中的文字

安裝完成後,就可以使用 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)

Python 教學 - 圖片轉文字 ( OCR 圖片字元辨識 )

如果是使用中文語言包,還可以辨識出中英文夾雜的句子。

範例圖片:下載

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)

Python 教學 - 圖片轉文字 ( OCR 圖片字元辨識 )

小結

雖然現在很多線上平台都可以免費轉換文字 ( 例如 Google Drive 內建圖片轉文字的功能 ),但如果學會使用 Python 進行,將可以搭配其他套件,做出更多方便的應用。

更多 Python 教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我已經寫了超過 400 篇 Python 的教學,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 11 ) 讀取與修改圖片 Exif
下一篇
( Day 13 ) 讀取聲音資訊、輸出聲音
系列文
學 Python 到底可以幹麻勒?41
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言