はじめに
PDFまたは画像を無料のAIでOCRするPythonコードを作ったので共有します。
なお、この投稿のソースおよび参考情報は https://github.com/katsu-yoshimu/AI_OCR/ をご確認ください。
機能概要
入力ファイルで指定したPDFファイルまたは画像ファイルをAI(gemini-2.0-flash-exp)でOCRして出力ファイルに出力する。
環境構築
前提:ローカルPCに git、ptyhon3.12 がインストール済 & Gemini APIキー 取得済
-
ローカルPCにリポジトリのクーロン作成:
git clone https://github.com/katsu-yoshimu/AI_OCR.git
-
ローカルPCに仮想完了作成と仮想環境アクティベート:
cd AI_OCR python -m venv .venv .venv\Scripts\activate
-
ローカルPCに必要なPythonパッケージをインストール:
python -m pip install --upgrade pip pip install -r requirements.txt
-
Gemini APIキー値を環境変数に設定:
コマンドプロンプトset GEMINI_API_KEY=(ここは取得したAPIキー値で置き換えてください)
PowerShell$Env:GEMINI_API_KEY = "(ここは取得したAPIキー値で置き換えてください)"
実行
-
Pythonスクリプト実行
python ai_ocr.py -infile サンプル.bmp -outfile サンプル.xlsx
「ai_ocr.py」の使い方は「-h」でご確認ください。
使い方の表示例(.venv) c:\work\AI_OCR>python ai_ocr.py -h usage: ai_ocr.py [-h] -infile INFILE [-outfile OUTFILE] [-outfiletype OUTFILETYPE] PDF/画像ファイルをOCRして出力します。 options: -h, --help show this help message and exit -infile INFILE 入力ファイル (PDFまたは画像) -outfile OUTFILE 出力ファイル (省略時は標準出力) -outfiletype OUTFILETYPE 出力ファイル形式 (txt, md, csv, html, xlsx) (省略時は出力ファイルの拡張子)
注意事項
- Gemini API 追加利用規約の『プライベート情報、機密情報、または個人情報を送信 しないでください。』が許容できるか?
- 使いどころに注意。AIは実行のときどきでOCRの答えが揺れるっぽい。PDFは単純にテキスト抽出した方が正確性は高い
- 無料枠なので1分間に15回。1日に1500回の実行上限がある
- xlsx出力する際に、サフィックス「.temp.md」をつけた中間ファイルを作成する。AIが直接xlsxを作成しないため、AIでマークダウン形式のテキストを作って、それを元にxlsx出力する。xlsx出力とmd出力の結果が不一致となることがあるため、その確認が目的
補足:作成経緯
PDF の OOR を検討していた。
ChatGPT APIは有料、Gemini APIは無料のため、Gemini APIを選択した。DeepSeekは出始めだったので選考外とした。
Gemini はチャット形式で、画像を入力可能。だたし、PDFは入力できない。
Vertex AI Studio はチャット形式で、PDFを入力可能。無料っぽいけど、クレジットカードの登録が必要だったので断念した。
ChatGPT はチャット形式で、PDF を入力可能。現状無料で利用できる範囲では PDF の中の画像は OCR してくれないっぽい。
ついでに python コードも AI に作ってもらったが、完全に動作するものにならず、自分でデバックした。部分的な改善も AI でやった。最後に、AI にコードレビューした。
参考リンク
-
実行する AI | スクエニ ITエンジニア ブログ - 実行時の警告について確認しておく)
同様なウォーニングエラーが発生しました。requirements.txtに
grpcio==1.60.1
を追加してエラーを解消しました。ありがとうございました。 -
Qiita 【完全無料】Gemini APIチュートリアル(所要時間10分) - APIキーの取得
Gemini APIキーの取得方法を参考にさせていただきました。ありがとうございました。
-
Gemini API によるドキュメント処理機能の詳細 - ローカルに保存されている
PDF公式サイトです。PDFをプロンプトに設定するコードを参考にさせていただきました。ありがとうございました。
-
公式サイトです。pythonコードの作成&コードレビューをしていただきました。ありがとうございました。
-
公式サイトです。PDFファイルのOCRを試しました。pythonコードの作成をしていただきました。ありがとうございました。
-
公式サイトです。pythonコードの作成&コードレビューをしていただきました。ありがとうございました。