Gemini APIを使ってPDFファイルの読み取りができないか・・・
先日Qiitaにて下記の記事を書きましたが、その手軽さに衝撃を受けました。
簡単すぎて本当にいいのか🧐と思うくらいです。
どうせならもっと使いこなしたいな!ということで、今回はPower AutomateからGemini APIを使ってPDF読み取りができないか実験してみました。
今回の対象
Cookbookを中心に見てみると、Vertex AIの資料がすぐに見つかります。
今回はサクっとできる方法が目的ですので、上記ではなく、下記のエンドポイントを使って、PDFの読み取りを試しています。
https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent
こちらのエンドポイントは、API利用までが本当に簡単である魅力があります。
アクセスして、数クリックで無料で試せる・・・衝撃です。
GitHubで事例を見てみる
GitHubにあるCookbookを見てみると、
- PDFをライブラリで画像に変換
- Gemini APIを使用
上記のアプローチをしていると推察されるものが見つかりました。
Power Automateでもひとまず同様のアプローチを試してみましょう!
Power Automateのアクションとコラボレーションする
PDFからファイルに変換するアクションは、プレビュー段階ですがPower Automateにあります。
OneDrive for Businessのコネクタのアクションです。
このファイルに変換するアクションを利用し、PDF、そしてせっかくなのでPowerPointの形式のファイルを織り交ぜて、Gemini APIを使ってみることにしましょう。
サポートされている変換のリストはこちら!
特にJPG
への変換は幅広いファイルの形式がサポートされています
試してみるPower Automateのフロー
複数のファイルを使って、Gemini APIを利用することから、簡単なSharePoint Listsを用意しました。
OneDrive for Businessに格納しているファイル名
です。
SharePointのサイト名
やリスト名
、GeminiのAPIキー
はブラインドしています
フローの流れは
- 複数の項目の取得でSharePoint Listsの値を取得する
- 繰り返し処理
-
OneDrive for Business
内のファイルパスを作成する -
パスによるファイル メタデータの取得で
ファイル識別子
を取得 - ファイルに変換するアクションで画像に変換
- Gemini APIを実行、プロンプトの中で画像をbase64`形式に変換
- 結果をSharePoint Listsに反映
-
上記のアプローチです。
今回はあらかじめ、OneDrive for BusinessにいくつかのPDFファイルを名前を少し変更して格納してみました。
更新後にReadResult
列とStatus
列が更新されるフローです。
-
パスによるファイル メタデータの取得
/フォルダ名/ファイル名
-
ファイルに変換するアクション
-
ID
はパスによるファイル メタデータの取得
にて取得
-
Geminiに渡すプロンプト
HTTP
アクションは下記のとおりです。
項目 | 設定値 |
---|---|
方法 | POST |
URI | https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent |
■ ヘッダー
キー | 値 |
---|---|
Content-Type | application/json |
■ クエリ
キー | 値 |
---|---|
key | {APIキー} |
{
"contents": [
{
"parts": [
{
"text": "添付は画像に変換したPDFファイルです。内容を読み取り、要約してください。"
},
{
"inline_data": {
"mime_type": "image/jpeg",
"data": "@{base64(body('ファイルの変換'))}"
}
}
]
}
]
}
気を付けるのはモデルの指定のみです。
gemini-pro
では対応していません。
結果は!
なんとなく・・・
つかめている感はある・・・
精度は高くはないですが、ざっくりと何のファイルなのかということはつかめそうです🐟✨
Geminiの推論を交えて補完するとマシなのか🧐
課題あり!な印象でした。
ざっくりと内容はつかめるので、画像の分類に使えそうです。また今度SharePointに格納したファイルが何に識別されるのかを実験してみたいと思います。
今回はライトな内容ですが、GeminiでPDFをどうやって読み取るのか、Power Automateで画像に変換するアプローチで試してみました。
Claude 3.5やGPT-4oでも同じようなアプローチができそうですね!
工夫次第でまだまだ活用手法がありそうなので考えていきたいと思います。
本日もお読みいただき、ありがとうございました。