📜

日本語に特化したOCRとレイアウト解析パッケージ「YomiToku」をM2 Pro Mac miniで動かしてみた

2024/11/28に公開

はじめに

YomiTokuは、日本語に特化したOCR およびレイアウト解析をしてくれるPythonのパッケージです。文書内の文字起こしを行うだけでなく、文書のレイアウト構造や図表の解析機能など、文書画像を解析するため機能があります。パッケージ開発者のKotaro.Kinoshita氏による紹介記事も参照してみてください。
日本語に特化したOCR、文書画像解析Pythonパッケージ「YomiToku」を公開しました

この記事では、YomiTokuをM2 ProのMac miniで一通り動かしてみた内容をまとめます。

パッケージのインストール

GitHubにあるように、pipでインストールすることができます。また、PyTorchは2.5.0をインストールします。

pip install yomitoku torch==2.5.0

今回試したコード

今回は公式のドキュメントにもあるDocument Analyzerを使うときのサンプルコードとほぼ同じようなコードで動かしてみました。Apple Silicon Macで動かしているので、PyTorchのデバイス指定を"cuda"ではなく"mps"に変更しています。
実際に使用したコードはGitHubにあります。: Shakshi3104/ymtk-supplementary

import cv2

from yomitoku import DocumentAnalyzer
from yomitoku.data.functions import load_image, load_pdf

pdf_filepath = f"document.pdf"

image = load_pdf(pdf_filepath)
analyzer = DocumentAnalyzer(
    configs={},
    visualize=True,
    device='mps'
)

results, ocr_vis, layout_vis = analyzer(image[0])


# to image
cv2.imwrite(f"document_ocr.jpg", ocr_vis)
cv2.imwrite(f"document_layout.jpg", layout_vis)

試してみた結果

今回はレイアウトが複雑な以下の2つの文書のあるページで試してみました。

無印良品のカタログ

まず、OCRの結果を見てみます。ほぼ完璧に文字を認識できているような印象です。
プラスドライバーが必要な商品を表すアイコンを文字として認識しているところもありますが、型番や価格などのカタログで読み取りたい情報は読み取ることができていると思います。

次に、レイアウト解析の結果を見てみます。レイアウト解析は図や段落の位置、読む順番などを示してくれています。こちらもほぼレイアウト解析がうまくできていると思います。ただ、QRコードや注釈などに引っ張られて、順番の解析がうまくいってないところもあります。ここら辺はメタ的な情報がないと解析できないような気がしますね。

プラレールのカタログ

こちらもまずはOCRの結果を見てみます。こちらは凡例や商品名、価格はほぼ完璧に文字を認識できている印象ですが、商品の番号がうまく認識されていないようです。これは、元の文書の解像度が少し低いからだと思われます。

レイアウトの解析もほぼうまくできていると思います。ただ、こちらも順番の解析は難しそうな印象です。

解析にかかる時間

初回の実行時はモデルのダウンロードがあるので時間がかかりますが、以降は1ページのドキュメントで45秒から1分くらいでOCRとレイアウト解析が実行されていました。
デバイスを"mps"に指定していますが、アクティビティモニタで確認できるCPUとGPUの使用履歴を見てみると、CPUの高性能コアで動作しているように見えます。

今回使用しているMac miniのスペックは以下の通りです。

  • Apple M2 Pro
    • CPU: E-core: 4 / P-core: 8
    • GPU: 19-core
    • Nerual Engine: 16-core
  • RAM: 32GB

おわりに

日本語特化のOCRとレイアウト解析パッケージ「YomiToku」をM2 ProのMac miniで動かしてみました。日本語に特化していることもあり、かなり正確に文字を認識できていると思いました。また、Apple Silicon Macの場合、CPUだけでもそこまで時間がかからず解析できる印象を受けました。他のツールや他のタイプの文書も検証してみたいと思います。

Discussion