ドキュメント解析の難しさ = 構造化されていないものが多い
- 構造化されてはいないが、見た目で伝えているドキュメントが多数
- ex. 方眼紙、キャンバスとして利用されていエクエル、パワーポイントファイル
- ex. 矢印オブジェクトで構成される業務フロー図
- 図やテーブルデータが画像で貼られている
- PDFファイルだが、画像がPDFとして閉じられているだけ
-> 人間向けに作られているのであれば、外見から解析するアプローチが有効
今日におけるドキュメントの構造化の重要性
RAG パターンが活用されるシーンが増えており、LLMが理解できる構造になっていることが重要です。
Azure AI Document Intelligence layout model について
API経由でPDF、画像、HTML、MSオフィス系ファイルのレイアウト解析してくれる。
以下は公式の解析イメージです。
- 価格
- Layout mdel だと $10 per 1,000 pages なので、コストはそれなり💸💸
- https://azure.microsoft.com/en-us/pricing/details/ai-document-intelligence/
- LangChain plugin もあるらしい
-
Azure AI Document Intelligence は、ドキュメント ローダーの 1 つとして、LangChain と統合されました
- https://python.langchain.com/docs/integrations/document_loaders/azure_document_intelligence/
-
- markdown 変換機能が存在
- マークダウンでの出力のサポート
- 見た目から特定の項目をクエリーする機能がある
- 領収書の請求金額をクエリーするとかできる
- 機能リリースの変遷はここから
注意点
プレビュー機能は利用できるリージョンに制限あり。
無料レベルに様々な機能制限あり。
試してみる
様々な様式を持つドキュメントでどの程度構造化できているか、図を抜き出せているかを試してみる。
API version: 2024-07-31 (Preview)
PDF の認識結果
AI 事業者ガイドライン(第 1.0 版)本編
https://www.meti.go.jp/shingikai/mono_info_service/ai_shakai_jisso/20240419_report.html
https://www.meti.go.jp/shingikai/mono_info_service/ai_shakai_jisso/pdf/20240419_1.pdf
-
- Title が認識できなかったのが残念
-
- table化されているのが良い
-
- パラグラフ分けはまずまず。囲った部分が1つのパラグラフになっていたらよりよかった。
-
- Figure とキャプションが認識されているのが最高。
-
- Figure として認識された範囲の文字も扱えるのが用途に応じて使い分けることができそう。
-
- footnote もok。
-
- フローの図や、テーブルっぽい図が認識されているのが最高。
-
- インデントされた構造だとセクションヘッダーとして認識された。
パワーポイント の認識結果
AI 事業者ガイドライン(第 1.0 版)概要
https://www.meti.go.jp/shingikai/mono_info_service/ai_shakai_jisso/pdf/20240419_2.pdf
-
- Title が認識できなかったのが残念
-
- 情報量が多い中、幸いTitleを認識してくれている
- 箇条書き1つ1つがパラグラフになっているのが残念(まとめてパラグラフにして欲しい)
-
- こちらは図の範囲は少し惜しい
-
- こちらは図の範囲がばっちり
上記2ファイルとそれ以外にも試した結果のまとめ
- 文字認識は間違いがない
- 論文のような形式だと認識が安定する
- 日本語論文より英語論文の方が認識が安定する
- Titleを認識が不安定
- 図の認識範囲が安定している
- 箇条書きがパラグラフにまとまってくれないことが多い
- ドキュメント全体で H2タグのレベル感が揃っていないものがある
- (元文章が揃ってない可能性もある)
- 稀に漢字がfigureやsectionに間違われる
追加実験。 抽出した Figure を ChatGPT に説明させる
図の中に含まれる文字も認識されていましたが、図の内容が伝わる構造になっていた方が良いはずです。Document Intelligence による分析 -> 図の抽出 -> 図をChatGPTに説明させる -> 説明をキャプションや図の説明として分析結果に埋め込む というリレーも考えられます。
以下はAI事業者ガイドラインから抜き出した、図です。ChatGPT 4o に説明させてみました。
中身を上手く説明している出力ができました。
図に添えた場合に、効果があるかもしれません。
結論
全人類 Markdown で構造化したドキュメントを書いてください!
フローやグラフは Mermaid みたいな DSL で書いてください!