Python

PyocrとTessractOCRによる画像から文字の抽出をする方法

Python

この記事では、PyocrTessractOCRで画像から文字を抽出する方法を解説します。

悩んでいる人
悩んでいる人
  • 画像から文字を抽出したい
  • とても面倒なドキュメントの単純処理の作業を自動化したい
  • プログミラング初心者でもできる業務効率をあげる便利なPythonの使い方は?

こんな悩みを持っている方におすすめの記事です。

この記事のゴール

  • 画像から文字を抽出方法を習得できる

インストール

Pyocr

以下を入力することでインストール可能です。

pip install pyocr

TessractOCR

Windowsの場合

以下のURLよりダウンロード可能です。

UB-Mannheim/tesseract
Tesseract Open Source OCR Engine (main repository) - UB-Mannheim/tesseract

ご自身のパソコンに合わせてインストールください。

その際、以下二点に✔️をしてください。

  • Japanese script
  • Japanese vertical script

また、以下二点にも✔️を入れてください。

  • Japanese script
  • Japanese vertical

これによって、日本語に対応することができます。

Macの場合

以下のコードでインストール可能です。

brew install tesseract

また、日本語を追加するためには、以下のコードで、tessdataに以下をgitより追加します。

wget https://github.com/tesseract-ocr/tessdata/raw/4.00/jpn.traineddata
mv jpn.traineddata /usr/local/Cellar/tesseract/4.1.0/share/tessdata/
mv jpn_vert.traineddata /usr/local/Cellar/tesseract/4.1.0/share/tessdata/

コード

以下の画像をカレントディレクトリに保存(右クリックから保存)し、以下のコードを実行してみてください。

from PIL import Image
import sys
import pyocr


tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("OCRツールが見つかりませんでした")
    sys.exit(1)
tool = tools[0]
print("use tool :", tool.get_name())

langs = tool.get_available_languages()
print(langs)

txt = tool.image_to_string(Image.open('img.png'), lang="jpn")
txt = txt.replace(' ', '')
print(txt)

実行結果が、以下のように表示されれば成功です。

日本語

OCR

エラーが発生する場合

解説

  • pyocrより、tesseractを呼び出し、tesseractの機能で画像から文字(テキストデータ)を抽出

Pyocrとは?

  • PyOCRはPython用のOCRのラッパーツール

PyOCRはPython用のOCRのラッパーツールです。

ラッパーツールとは、目的のために必要な機能操作をまとめたものを指します。

以下三つのOCRツールをサポートしています。

  • Tesseract
  • Libtesseract
  • Cuneiform

Tesseractとは?

HP(ヒューレット・パッカード)が開発したオープンソースOCRエンジンです。

そのあと、Googleが引き取り公開にいたったという経緯があります。

まとめ

PyocrTessractOCRで画像から文字を抽出する方法を解説しました。

OCRによって、画像データから文字データに変換することを実現できます。

ぜひ業務効率化の方法をより詳細に知りたい方は、以下の記事も参考にしてみてください。

コメント

タイトルとURLをコピーしました