AI Builderで画像注文書を効率化 - カスタムプロンプトでJSONデータ構造化に挑戦

AI Builderの「カスタムプロンプト」を使い、スキャン画像の注文書から必要な情報を抽出し、Power AutomateでExcel連携まで試した事例をご紹介します。

## はじめに

私は以前、業務改善プロジェクトの中でAI Builder ドキュメント処理モデルを使って画像の注文処理の効率化に取り組んでいました。

📺[ビリビリPower Apps同好会 登壇大会＃2「AI Builderで画像の注文処理を効率化」](https://www.youtube.com/watch?v=zTD2xQrEWuw)

改善活動の取り組みは継続しており、現在も画像の注文書などの処理についてご相談をいただきます。ただ、知識や経験不足もあり、帳票のフォーマットによってはドキュメント処理モデルだけでは少々苦しい場面も…。

そこで、今回は **より柔軟な抽出を目指し**、以前より気になっていたAI Builderのカスタムプロンプトに挑戦してみました。

## 📄 注文書フォーマット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/06afd3e2-965e-49eb-aed7-5aceb50c2e15.png)
※画像はサンプルとなり、帳票の形式や記載情報は一部改変しています。

抽出したい箇所は以下の情報となります。

- 発注番号
- 部品番号
- 発注数
- 納期

※抽出したい箇所を示すと赤枠の部分です。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/ed520454-4ac8-4640-8077-a44580d004d4.png" width=70%>

## ❗ 抽出における課題

課題として、
- 情報が**1行おき**に配置されている


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/f520334f-b2cd-443c-aa00-fdb28ef17ee4.png)

- **手書きで修正された日付**が混在している  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/2117b233-4acf-4735-9ff5-91ea39a6bf2a.png)


- スキャン精度により**文字の鮮明度にバラつき**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/1c0678a0-400c-41a7-a8d1-bbce3a3ffce9.png)

という状況でした。

## やりたいこと（処理イメージ）

Power AutomateのフローからPDFファイル取得 → AI Builderによる情報抽出 → JSON出力 → Excelへ書き込みという一連の自動処理フローを構築したい、という目的です。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/39a6ef67-bec2-4949-8fb8-a745dbf7db24.png" width=100%>

## カスタムプロンプトの設定

AI Builder プロンプトから**カスタムプロンプト**を作成。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/38291719-27ae-4d80-90ba-2a0f891ac078.png" width=80%>

以下のような形式で指示を記載しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/ef6d35aa-d454-47bd-95d6-259d281c363a.png)





---
注文書の表の「部品番号」が記載された行から以下の項目を抽出し、JSON形式で出力してください。

■抽出項目  
部品番号  
部品名称  
発注番号  
納期  
発注数量  
発注単価  
発注金額  

■JSONフォーマットサンプル
[
  {
    "部品番号": "P001",
    "部品名称": "ねじ M3×10",
    "発注番号": "P001",
    "納期": "2025/06/14",
    "発注数量": "1500",
    "仕入単価": "2",
    "発注金額": "3000"
  }
]



---

## 🧪 テスト結果①
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/463854e0-2025-4c4d-b67b-0bc70ce2646a.png)

綺麗にテキストが抽出され、JSON形式として出力されています。
ポイントとしては、 **手書きで修正された日付** も修正後の日付で抽出されているところです。

気になるところとしては、出力結果がコードブロック（'''json~'''）で囲まれているところです。

想定では、Power Automateのフロー内でAI Builderの出力を「JSONの解析」に渡し、解析結果をExcelテーブルに書き込みたいのですが…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/84fbd099-2112-4799-ba7c-e2ddca60e530.png)

この状態だとコードブロックが邪魔をして「JSONの解析」アクションでエラーが発生します。

「JSONの解析」前にコードブロック部分を取り除けばいいのですが…。

## 🛠 プロンプト修正

出力を純粋なJSONにするため、プロンプトを「マークダウン形式ではない、純粋なJSON形式で出力」というように修正しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/0c0f36b7-0939-4844-ad23-ae8770b45765.png)

## ✅ テスト結果②（修正後）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2953195/dea74094-20d3-47c9-8aa7-39ce8cb37c78.png)


コードブロックなし！🎉  
Power Automateの実行でも「JSONの解析」アクションを通過し、**Excelテーブルへの行追加も成功！**


## 🆚 ドキュメント処理モデルとの比較

| モデル | 特徴 |
|-------|------|
| ドキュメント処理モデル | テーブル構造に強く、精度も高いが、手書き文字や柔軟なフォーマットには不向きな場面も |
| カスタムプロンプト | 柔軟な指示が可能。曖昧な情報や手書きデータにも対応しやすいが、構文に注意が必要 |

## ✍️ まとめと所感

- カスタムプロンプトは柔軟な抽出が可能で、市民開発者にとってとても心強い味方  
- 「例示の揃え方」や「出力形式の明示」で精度と安定性が向上  
- AI Builderの出力形式には注意（\`\`\`json など）  
- ドキュメント処理モデルと併用することで、用途に応じた柔軟な選択が可能

## 🙏 おわりに
カスタムプロンプトの活用で、AI Builderの可能性がさらに広がることを実感しました。  

なお、今回の注文書フォーマットについてはドキュメント処理モデルでも試しました。
手書き修正の日付部分の文字の崩れはあったものの、テーブル構造については綺麗に取得することができました。

今後も状況に応じてモデルを使い分けて、業務改善に役立てていきたいです。

※この記事は私個人の経験に基づくものであり正確性を保証できません。
　各製品の詳細な情報や最新の情報については公式ドキュメント等をご参照ください。

## 📚 今回の挑戦にあたり参考にした情報

#### Microsoft MVP dai365さんのAI Builder関連記事

https://powerdaaps.hatenablog.com/archive/category/AI%20Builder

#### ビリビリPower Apps同好会のご登壇内容

📺[dai365さんLT登壇 気ままに勉強会 109 生成AI帳票読み取り Power Automate ×AI Builder・Mistral AI・Gemini2.5・GPT-4.1・o4-mini](https://www.youtube.com/watch?v=xOTKTV_o-Z0&t=834s)

※Microsoft MVP ヨウセイさんの「ヨウセイTube」でご視聴いただけます。

いつもありがとうございます:bow: