Python+TesseractによるOCR(光学文字認識)

概要

  • M1 Macにて、OCR処理を行うための環境構築およびPythonでの使用例を示す
  • OCR処理のバックエンドはTesseractを使用
  • OCR処理のラッパーはpytesseractを使用
    • 他にも、pyocrなどがあるが、pytesseractのほうがGoogle検索結果件数が多かったので、採用

環境

インストール手順

①tesseractのインストール

$ brew install tesseract

②pytesseractのインストール

$ conda install pytesseract

③pytesseractの日本語パッケージを追加

  • いろいろやり方があるようだが、ここでは個別でパッケージをダウンロードする方法とする
    • ダウンロード元:https://packages.ubuntu.com/focal/tesseract-ocr-jpn (githubのものより、こちらの方が精度がよいらしい)
    • 「tesseract-langソースパッケージをダウンロード」より、「tesseract-lang_4.00~git30-7274cfa.orig.tar.xz」をダウンロード
  • ダウンロードしたファイルを解凍し、「jpn.traineddata」「jpn_vert.traineddata」を取得
  • 以下コマンドを用いて、tesseractの学習済みモデルのディレクトリを探す
$ brew list tesseract

   (例:/opt/homebrew/Cellar/tesseract/5.2.0/share/tessdata/に保存されている)

  • このディレクトリに、先ほどの日本語パッケージ2ファイルをコピー
  • 以下コマンドで、「jpn」「jpn_vert」が表示されることを確認
$ tesseract --list-langs

※補足1:以下コマンドではFomulaeがないためエラーとなる

$ brew install tesseract-ocr-jpn

※補足2:以下コマンドでインストールできるようだが、容量が大きそう(約600MB?、日本語だけなら数MBでよいが…)

$ brew install tesseract-lang

Pythonでの動作例

import pytesseract
from PIL import Image
INPUT_IMG = r'test.png'
img = Image.open(INPUT_IMG)
result = pytesseract.image_to_string(image=img,lang='jpn')
print(result)