写真等の画像内にある文字をテキストにすることを「文字起こし」と言います。 昔からOCRと言うソフトはありましたが、印刷物しか文字起こししてくれませんでした。 最近は文字認識力が上がってきましたね。 今回は、「Tesseract OCR」及びPythonのpyocrというライブラリを用いて「文字起こし」を試してみました。 いろいろなWebsiteの情報を基に実施しました。
①先ず、「Tesseract OCR」をダウンロードします。手順はこちら → https://qiita.com/henjiganai/items/7a5e871f652b32b41a18
「遷移先のページ」をクリック → https://qiita.com/henjiganai/items/7a5e871f652b32b41a18
「tesseract-ocr-w〇〇-setup-・・・」の32bitあるいは64bitの内、ご使用のパソコンに合わせて選びクリック後、Website記載の手順でインストールしてください。 環境変数の編集を忘れずに追加しておいてください。 これをやらなかったため、OCRを認識されずに時間を費やしてしまいました。
②日本語の訓練データをダウンロードします。 手順はこちら → https://qiita.com/mczkzk/items/393abc70836b9bde2f60
「Tesseract-OCR」のフォルダ内の「tessdata」フォルダ内に保存してください。
③コマンドプロンプトで、「pip install pyocr」及び「pip install PIL」を行い、pythonのライブラリをインストールしてください
④文字が入った画像を「〇〇.png」としてpythonのプログラムが入っているフォルダ内に保存しておきます
⑤pythonのエディタに以下のプログラムを入れてRUNします。
上述の環境変数の追加は以下資料のp.1~2にまとめました。
資料はこちら → OCR
p.3~5 実施例です。 OCR結果1はスマホで撮った本の裏表紙の画像から「文字起こし」した結果です。文字化けありますが、結構上手くできています。 OCR結果2は、プロジェクタで映したパワーポイント資料です。 これも結構読み込んでいます。昔のOCRであれば文字起こしできなかったと思います。 OCR結果3はホワイドボードに書いたものですが、文字起こし不能でした。 OCR4や5もホワイトボードのOCR結果です。 人が書いたものはまだまだ文字起こしは難しいようです。AIで学習すればもう少し精度は上がりそうです。上手くできるようになったら、後日報告します。 これができたら研修生も楽になりますね。
[プログラム例] ○○のところは保存した画像のファイル名を入れてください。 半角アルファベットのファイル名の方が良いと思います。
from PIL import Image
import sys
sys.path.append('/path/to/dir')
import pyocr
import pyocr.builders
tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
langs = tool.get_available_languages()
print("Available languages: %s" % ", ".join(langs))
txt = tool.image_to_string(
Image.open('〇〇.png'),
lang='jpn',
builder=pyocr.builders.TextBuilder()
)
print(txt)