YomiTokuは日本語に特化して学習したAI OCRです。Pythonパッケージとして公開されており、インストールすればCLIで簡単にOCR解析が可能です。APIもありますので、Pythonからの操作も可能です。
今回は、Jupyter NotebookのクラウドサービスであるGoogle ColabでYomiTokuを利用する手順を紹介します。今回はA100を使っているので、課金していなくとも高度なAI OCRを利用できます。
Google Colabの使い方
Google Colabでは、Googleアカウントがあれば無料でJupyter Notebookを使うことができます。無料ユーザーでもGPUを利用できますが、高性能なGPUを長時間使う場合には有料プランに移行する必要があります。
ただし、今回のA100であれば、無料ユーザーでも利用できます。YomiTokuは高性能なGPUを必要としませんので、A100で問題ありません。
YomiTokuをGoogle Colabで実行する
では、YomiTokuをGoogle Colabで実行する手順を紹介します。今回はGoogle Driveをマウントして実行します。コンテナ上にアップロードして実行もできますが、接続を解除するとデータが消えてしまうので、Google Driveを使ってデータを保存することをお勧めします。
Google Driveをマウントする
Google Driveは、Google Colabのファイルアイコンをクリックして、Google Driveのマウントをクリックするだけです。これで drive
というディレクトリが作成され、Google Driveのファイルが参照できるようになります。
YomiTokuをインストールする
YomiTokuのインストールは、 pip
コマンドで行います。
!pip install yomitoku
インストール後、セッションを再起動する必要があります。
YomiTokuを実行する
YomiTokuを実行する一番簡単な方法は、 yomitoku
コマンドを使うことです。以下のように実行します。
!yomitoku /content/drive/MyDrive/path/to/dir -o /content/drive/MyDrive/path/to/results -f md
このコマンドで、 /content/drive/MyDrive/path/to/dir
内にある帳票データを解析し、 /content/drive/MyDrive/path/to/results
に結果を保存します。フォーマットはMarkdownです。
他にフォーマットとして、 html
や json
、 csv
が指定できます。
APIを利用する
YomiTokuはAPIも提供しています。APIは、Pythonの中で利用し、既存のシステムやワークフローへ組み込む際に役立つでしょう。
インポートする
まずは、YomiTokuをインポートします。
from yomitoku import DocumentAnalyzer
from yomitoku.data.functions import load_pdf
DocumentAnalyzerを初期化する
DocumentAnalyzerを初期化します。このとき、GPUを使う場合は device="cuda"
を指定します。
analyzer = DocumentAnalyzer(visualize=True, device="cuda")
ドキュメントを読み込む
ドキュメントを読み込みます。PDFファイルを読み込む場合は、 load_pdf
を使います。
imgs = load_pdf("/content/drive/MyDrive/path/to/invoice.pdf")
今回利用したドキュメントは1ページしかないので、 imgs
には1つの要素が入ります。複数ある場合にはループ処理を行ってください。今回は1ページ目を取り出しています。
img = imgs[0]
OCRを実行する
OCR処理を行う analyzer
は非同期処理なので、 await
を使います。
results, ocr_vis, layout_vis = await analyzer.run(img=img)
結果を出力する
解析結果を出力します。今回はHTML出力します。
out_path = "/content/drive/MyDrive/path/to/results/result.html"
html = results.to_html(out_path, img=img)
この時、 html
に結果のHTMLが入ります。そして、解析結果の中に画像を含む場合には、1つ目の引数で指定したパスに対して figures
というディレクトリが作成され、画像が保存されます。
HTMLの内容自体は別途、ファイルに出力します。
open(out_path, "w").write(html)
さらに、解析した結果のレイアウトファイルなども保存できます。この場合、cv2をインポートします。
import cv2
cv2.imwrite(f"/content/drive/MyDrive/path/to/results/result_ocr.jpg", ocr_vis)
cv2.imwrite(f"/content/drive/MyDrive/path/to/results/result_layout.jpg", layout_vis)
これで処理は完成です。
全体のコード
最終的なコードは以下のようになります。
# インストール
!pip install yomitoku
# コマンドでの利用
!yomitoku /content/drive/MyDrive/path/to/dir -o /content/drive/MyDrive/path/to/results -f md
# プログラミングからの利用
from yomitoku import DocumentAnalyzer
from yomitoku.data.functions import load_pdf
analyzer = DocumentAnalyzer(visualize=True, device="cuda")
imgs = load_pdf("/content/drive/MyDrive/path/to/invoice.pdf")
img = imgs[0]
results, ocr_vis, layout_vis = await analyzer.run(img=img)
out_path = "/content/drive/MyDrive/path/to/results/result.html"
html = results.to_html(out_path, img=img)
open(out_path, "w").write(html)
import cv2
cv2.imwrite(f"/content/drive/MyDrive/path/to/results/result_ocr.jpg", ocr_vis)
cv2.imwrite(f"/content/drive/MyDrive/path/to/results/result_layout.jpg", layout_vis)
これで、YomiTokuをGoogle Colabで実行する手順が完了です。ぜひ、試してみてください。
ライセンス
YomiTokuのライセンスはコモンズ証 - 表示 - 非営利 - 継承 4.0 国際 - Creative Commonsです。非商用での個人利用、研究目的においては、ご自由に利用できます。商用目的での利用に関しては、商用ライセンスが必要です。
まとめ
YomiTokuは決して高性能なGPUが必要な訳ではありませんが、CPUでの実行は時間がかかります。macOSのように cuda に対応していない場合も時間がかかります。
そうした時、Google Colabを使うことで、ローカルから実行するかのようにGPUを使ったAI OCRが実現できます。ぜひAI OCRを使って、既存資産のデジタル化や業務効率化を実現してください。