yomitokuでレシートOCR

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で抽出した結果と変わらないため
レシートによってできないものもある

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です