見出し画像

【無料枠でOK!】「ただのOCRじゃない。」Geminiの力で、書類から"事実"と"インサイト"を同時に抜き出す「TextExtractor1」をリリース!

その「データ入力」、AIに任せてみませんか?

大量のOffice文書やPDF、画像、そして形式もバラバラ……。
それらを手作業でExcelに打ち込んだり、単純なOCRで読み取って誤変換にイライラしたりしていませんか?

GeminiやNotebookLM、GeminiCLIなら、こんな作業もできるんじゃないか と思いやってみたのですが、今のところ、そのままでは、実用的な作業はできませんでした。 そこで、自分で作ってみました。

それが今回ご紹介する『TextExtractor1』、GeminiのAPIを簡単にビジネスで使えるようにしたツールです。



1 TextExtractor1が解決すること

従来のOCRツールには、こんな不満を感じませんでしたか?

  • 「文字は読み取れるけど、意味までは抽出してくれない」

  • 「一太郎や古いExcel、メール形式 (.msg) に対応してない」

  • 「ファイル内の情報だけでなく、AIの知識を使って補完してほしい」

TextExtractor1は、これらを解決するものです。
…ただ、出来上がったものは、OCRと言うよりは、
雑多なファイルから、ファイルごとに、(抽出項目と生成項目を含む)レコードセットを抽出する(作り出す)ツール” と言った方が端的です。
そして、このツールで自動化できる大量事務は 相当に多いと思います。

(1)最大の特徴:事実と推論の「ハイブリッド抽出」

他のOCRソフトと決定的に違うのは、プロンプト(指示書)ひとつで「資料からそのまま抜き出す(抽出)」こと と、「AIが考えて補完する(生成)」ことを同時にできる点です。

例えば、名刺の山を処理する場合:

  • 【抽出】項目: 会社名、氏名、電話番号(資料の通りに抜き出す)

  • 【生成】項目: その会社の業界動向、所在地から推測される最適な交通手段

とすると、資料に無いことまで、AIがWEB検索RAG検索、あるいは自らの知見を使い「埋めて」くれる(生成)。これがTextExtractor1の真骨頂です。

(2)「なんでも読み込む」圧倒的なファイル対応力

「このファイル、開けないから手入力するしかないか……」と諦める必要はありません。TextExtractor1は、現代のビジネスで使われる主要な形式を網羅しています。

  • 画像・PDFはもちろん….紙の資料もScanSnapなどでPDFにすれば読めます。手書き文字だってGeminiは読めます!

  • Word / Excel / PowerPoint

  • Outlookメール (.msg / .eml)

  • さらには、行政や士業で根強い一太郎 (.jtd) まで

これらすべてを一括で読み込み、一つのデータベース(SQLite)に集約します。

(3)誰でも使えるシンプルな操作性

エンジニアでなくても、直感的に操作できるGUI(画面)を用意しました。

①フォルダを選ぶ(解析したいファイルをガサッと入れるだけ)

②指示書(プロンプト)を選ぶ  ⇒(記載例にならい、日本語で書くだけ)

③実行してCSVで出力(そのままExcelで活用可能)

「WEB検索」や「RAG(独自知識ベース)」との連携も、チェックボックス一つです。…WEBやRAGを使うとその分トークンを消費しますが…

2 Gemini CLIとの違い

GeminiCLIなら同じようなことができるのでは? と思うかもしれません。しかし、実務での「大量処理」と「データ活用」という観点では、(少なくとも現状では)TextExtractor1にアドバンテージがあります。
…GeminiCLIでできるなら作ってません。

(1)「対話」ではなく「一括処理」に特化

GeminiCLIはAIと対話しながら問題を解決する「エンジニアの右腕」です。

一方、TextExtractor1は、100枚、1000枚といった大量のファイルを「無言で一括スキャンして、結果をリスト化する」ことに特化した「工場のライン」のような存在です。

(2)「自由な回答」を「構造化されたデータ」へ

GeminiCLIの回答は時として自由すぎて、後で集計するのが大変なこともあります。

TextExtractor1は、指定した「出力項目」に従って結果を自動でSQLiteデータベースに保存し、最終的にきれいなCSV形式で吐き出します。そのままExcelやBIツールに放り込めるのが強みです。

(3)ファイルを「開く」手間の解消

GeminiCLIで一太郎ファイルやOutlookのメールファイルを解析しようとすると、中身をテキストに変換して渡す手間がかかります。

TextExtractor1は、それら特殊な形式を「そのまま放り込めば中身を解釈する」ように作っています。

3 実務に優しい 節約設計

ただ、APIを使うと「利用料金(トークン消費)」が気になりますよね。
TextExtractor1は、ここにも (無料枠で使えるよう)こだわっています。

画像ではなく「テキスト」で送る
通常、PDFやOffice文書をAIに投げると「画像」として処理され、多くのトークンを消費します。
しかし、TextExtractor1は、送信前にプログラム側でテキスト情報を抽出し、文字データとしてAIに渡します。

これにより、画像として送るよりも大幅にトークンを節約。さらに、gemini-2.5-flash-Liteのような軽量・高速モデルを組み合わせることで、「爆速かつ圧倒的な低コスト」での運用を可能にしています。

※ Gemini 2.5 Flash-Lite の無料枠(Google AI Studio)は、非常に大きいです。Geminiによると、R8.5.5時点の無料枠の主な制限は以下とのこと。

無料枠の制限(目安)
・1分あたりのリクエスト数 (RPM): 約30回
・1日あたりのリクエスト数 (RPD): 1,000回
・1分あたりのトークン数 (TPM): 約100万トークン
・コンテキストウィンドウ: 100万トークン

⇒ この制限を TextExtractor 1の利用シーンに当てはめると、

「1日1,000ファイル」まで無料で処理可能:
名刺や請求書を1日1,000枚データ化しても、API料金は0円です。

・待ち時間が少ない:
1分間に30回リクエストということは、2秒に1ファイルを処理できます。
なお、TextExtractor1には「429エラー(リクエスト過多)が出た場合に自動で30秒待機して再開する」機能があり、放置しても大量ファイルが処理できます。

・大容量の書類もOK:
100万トークンのコンテキストウィンドウがあるので、数百ページのPDFや分厚いマニュアルを丸ごと読み込ませても、トークン切れはほとんど起きません。

4 設定方法(Python利用者向け)

このツールはPythonで書いてます。以下の手順で簡単に動かせます。

(1)必要な環境等

  • Python: 3.10 以上

  • ライブラリ:

    • google-genai: Gemini API(2.5 Flash-Lite等)を呼び出す最新公式SDK。

    • pandas / openpyxl: Excel (.xlsx, .xls) の読み込みとCSV出力用。

    • python-docx: Word (.docx) のテキスト抽出用。

    • python-pptx: PowerPoint (.pptx) のテキスト抽出用。

    • extract-msg: Outlook (.msg) の解析用。

    • olefile: 古いOffice形式や一太郎 (.jtd) のバイナリ構造解析用。

・ Gemini API キー(GEMINI_API_KEY): Google AI Studio (https://aistudio.google.com/) で取得したキーが必要です。無料枠でもOKです。(有料枠もとても低価格です。)

(2)リポジトリをクローン

https://github.com/prgtake/TextExtractor

(3)必要パッケージのインストール

ターミナルやコマンドプロンプトで以下を実行してください。

pip install google-genai pandas openpyxl xlrd python-docx python-pptx extract-msg olefile


(4)起動

python textextractor.py


(※)EXEファイルも配布します

Pythonの準備が面倒な人のために EXEファイルも下記で配布しています。

https://github.com/prgtake/TextExtractor/releases/tag/v1.0.0

※個人開発なので、初回実行時にWindows Defenderの「青い画面(警告)」が出るので、「詳細情報」→「実行」をクリックしてください。

※EXEファイルでも、GeminiAPIのキー(無料枠でもOK)を取得し環境変数(GEMINI_API_KEY)に設定することが必須です。 その方法は下記の記事を参照してください。(Googleへのユーザー登録の一種で難しくありませんので試してください。できることがぐっと広がります。)


5 使い方

・「対象フォルダを選択」:指示ファイルで処理したいファイル群を入れたフォルダを指定します。
・「サブフォルダも含める」:対象フォルダの直下のファイルだけを処理するのか、それともサブフォルダ以下のファイルも全て処理対象にするのかを選択します。
・「指示ファイルを選択」:対象フォルダ内のファイルに対して行いたい処理を記述します。指示文はUTF-8Nで保存することが必要です。
・「書き方ヘルプ」:指示ファイルの書き方のパターンを表示します。下記の例で説明するように、書き方は、とても簡単です。
・「使用モデル」:「抽出」にはそのときのGeminiの最安モデルで十分です。「生成」は、扱う内容によっては、もう少し高いモデルが必要なことがあるかもしれません。
・「WEB検索を使用する」:「生成」する項目がある場合に、最新の知識をWEB検索させたいときにチェックします。
・「RAGを利用する」:「生成」する項目がある場合に、独自の知識等をRAG検索させたいときにチェックします。
・「使うRAGを選択」:RAGの作り方については下記を参照してください。

・「指示ファイルを実行」:以上の条件設定が済んだら、このボタンをクリックします。すると、処理の対象フォルダ内に 指示ファイル名のSQLiteのデータベースファイル(**.db)が作成され、そこに結果が保存されます。VSCodeなどを使っている人は、拡張ライブラリを入れることで、SQLiteの中身を確認できます。
・「DBをCSV出力」:子のボタンをクリックすると、SQLiteに保存された処理結果をCSVで出力できます。


6 このツールの大前提(限界)

このツールは、ファイルごとに処理を行うので、各レコードセットの「抽出」項目が1ファイルの中に含まれていることを前提にしており、「抽出」項目が複数ファイルにまたがるレコードセットについては、正しく処理できませんので、そのことを踏まえた運用が必要です。ご注意ください。

  • 表面の写真(名刺_表.jpg)と裏面の写真(名刺_裏.jpg)が別々のファイルになっている場合。⇒ 表と裏が別々の行として登録されるか、情報の足りない方がエラー(または空欄)になります。

  • ファイル間の名寄せ(マッチング):

    • 例:履歴書.pdf と 職務経歴書.pdf から1人分の情報をまとめて抽出する。⇒ それぞれ独立に処理され、DB上は2行に分かれます。


7 実際の使用例(どんなことに使えるか)

(1)次のような名刺を集めたフォルダを処理してみます。

Geminiで作った架空の名刺です。手書き文字風あり、複数名刺が1ファイルのものあり…うまく読み取れるかな?

(2)今回、指示文は下記です。文字コードはUTF-8Nで作成してください。

※高精度な【生成】のためのコツ (重要)
…Gemini)は「頭の中」だけで複雑な計算や推論を行うと、ミスをしやすくなる性質があります。そこで、
計算の根拠を先に出力させる:
例えば「合計点」を求める場合、必ず「各科目の点数」も出力項目に含め、AIに先に書き出させるようにして、その後に「合計点」を求める指示文を書いてください。 AIは自分が直前に書き出した正確な数値を参照することで、計算精度が劇的に向上します。
例:「国語点数, 数学点数, 5科目合計点」の順で項目を作る。



(3)プログラムを実行すると表示されるダイアログに、下記のように設定し「指示ファイルを実行」ボタンをクリックします。

実行ログ欄に処理状況が表示されます。

(4)処理が終わると下記のメッセージが出力されます。

処理対象フォルダ内にSQLiteのデータベースができてます。

VSCodeなどで中身を見ると、ちゃんと21件が抽出され、生成項目(姓名判断による性格)もしっかり作れていることが確認できます。

「DBをCSV出力」ボタンをクリックすると、CSVで出力されます。

⇒ 今回は架空の名刺が対象なのでやりませんでしたが、
例えば、
・「WEB検索を利用」にチェックを入れ、生成項目として「関心事」を追加。
【生成】項目の説明として、”関心事:WEBで、所属会社名やそこから分かる所属業界、所属部門名、役職を勘案して、現在最大の関心事と思われることを書き出してください。”としたり(営業トークのネタだし)、

・あるいは、RAGに自社の取り扱い商品の情報を入れ、「RAG検索を利用」にチェックを入れ、生成項目として「販促候補」を追加。
【生成】項目の説明として、”販促候補:所属会社名やそこから分かる所属業界、所属部門名、役職を勘案して、RAGで、現在最も販売できる可能性が高いと思われる自社製品名を書き出してください。”としたり (おすすめ商品候補の選定

することもできます。

…どこまで出来るかは、AIの賢さ次第ですが、 単に検索するだけでなく、「資料から【抽出】した氏名や役職」という目の前の事実と、「WEB/RAGから得た外部知識」をAIの頭の中でガッチャンコ(融合)させて回答を作れる点が このツールの特徴です。

…このツールを使うと、例えば、
・生徒50人のテストの回答用紙をScanSnapで1枚のPDFに取り込んでAIに採点させる(テスト採点の自動化) とか
・1000人の紙のアンケート結果をScanSnapで1枚のPDFに取り込んでCSVデータにする(紙のアンケートや資料の集計)   なんてこともできます。(考えれば、できることが山ほどあるような気もしますが…)

※ ただし、Geminiが一度に出力できる文字数には上限があり、1000ページが1つのPDFだと、途中で書き出しが止まる可能性があるので、100ページごとにファイルを作成する とかにしたほうが良い場合もあります。

8 結び:AIを「道具」として使いこなす

AIはチャットで相談するだけのものではありません。
日々の泥臭い「データ化」の作業を自動化するエンジン部品として使い、人間はより創造的な判断に時間を使う。

TextExtractor1 は、そんな新しい働き方をサポートするためのツールです。ぜひ、あなたのデスクの相棒として迎えてみてください。

GeminiAPIは激安なので、企業であれば、有料枠で使っても十分以上に元が取れると思います。



#TextExtractor #Gemini #AI #DX #自動化 #効率化 #OCR


その後、数日で進化しちゃいました。


いいなと思ったら応援しよう!