yomitokuでレシートOCR
pip install yomitoku
でインストール
https://qiita.com/kanzoo/items/9d382fe4ec991a7eacd2
を参考に
VRAMは8GB以内で動作
# HTMLファイルを出力 yomitoku ./images -f html # JSONファイルを出力 yomitoku ./images -f json # Markdownファイルを出力 yomitoku ./images -f md # CSVファイルを出力 yomitoku ./images -f csv
で実行
実行データは
https://template.the-board.jp/invoice_templates/article/invoice_template_001/
を使っている
コマンドを実行すると、最初にモデルをダウンロードします。これは自動的に行われ、初回のみで2回目以降はない
解析を実行し、 results ディレクトリに結果が出力
実行時間はGPUによって異なりますが、 Google ColabのA100で実行した場合は2.5〜3.5秒程度でした。T4 GPUなどにしても高速になる訳ではない
HTMLでは、表部分が table タグで出力
JSONファイルの場合
表になっている部分は table キー以下にあるので、
システム連携する際にはこの部分を利用します。 box は認識された座標
Markdownの場合、表の部分はMarkdownのテーブル形式で出力
CSVの場合、表の部分はCSV形式で出力されます。Excelなどで開いた際にも、レイアウトが維持されているので確認しやすい
コマンドオプション -v を付けると、解析結果を可視化した画像を出力
yomitoku ./images -f html -v
レシートの実例を探した
https://qiita.com/ayoyo/items/033b5d46acc641b91208
にサンクスのレシートで試しているのがあるので
これを使う
! yomitoku 0003.jpg -f json -o results -v --figure
が実行コマンド
とりあえず実践
mkdir receipt cd receipt mv ../PXL_20250531_012457081* .
で実験フォルダに移動
yomitoku PXL_20250531_002845534.jpg -f json -o results -v --figure
で実行
2025-06-10 06:08:32,215 - yomitoku.base - INFO - Initialize TextDetector 2025-06-10 06:08:34,123 - yomitoku.base - WARNING - CUDA is not available. Use CPU instead. 2025-06-10 06:08:34,125 - yomitoku.base - INFO - Initialize TextRecognizer 2025-06-10 06:08:35,802 - yomitoku.base - WARNING - CUDA is not available. Use CPU instead. 2025-06-10 06:08:35,803 - yomitoku.base - INFO - Initialize LayoutParser 2025-06-10 06:08:37,339 - yomitoku.base - WARNING - CUDA is not available. Use CPU instead. 2025-06-10 06:08:37,342 - yomitoku.base - INFO - Initialize TableStructureRecognizer 2025-06-10 06:08:38,195 - yomitoku.base - WARNING - CUDA is not available. Use CPU instead. 2025-06-10 06:08:38,200 - yomitoku.cli.main - INFO - Output directory: results 2025-06-10 06:08:38,200 - yomitoku.cli.main - INFO - Processing file: PXL_20250531_002845534.jpg 2025-06-10 06:08:39,332 - yomitoku.base - INFO - LayoutParser __call__ elapsed_time: 1.0590169429779053 2025-06-10 06:08:39,381 - yomitoku.base - INFO - TableStructureRecognizer __call__ elapsed_time: 0.04888606071472168 2025-06-10 06:08:41,263 - yomitoku.base - INFO - TextDetector __call__ elapsed_time: 2.9893980026245117 2025-06-10 06:08:48,173 - yomitoku.base - INFO - TextRecognizer __call__ elapsed_time: 6.865458965301514 2025-06-10 06:08:48,226 - yomitoku.cli.main - INFO - Output file: results/_PXL_20250531_002845534_p1_ocr.jpg 2025-06-10 06:08:48,256 - yomitoku.cli.main - INFO - Output file: results/_PXL_20250531_002845534_p1_layout.jpg 2025-06-10 06:08:48,259 - yomitoku.cli.main - INFO - Total Processing time: 10.06 sec
結果は resultsフォルダに入っているので
JSONファイルをみると結果が見れる
また、どのように認識しているかを画像で見ることができる
実際に行った結果はgeminiで抽出した結果と変わらないため
レシートによってできないものもある