UpstageのDocument AIモデルを使ってみた
はじめに
Fusicのレオナです。今回は、UpstageのDocumentAIモデルが提供するDocumentParse APIを使い、ドキュメントの前処理の新たな可能性について検証します。特に、RAG(Retrieval-Augmented Generation:検索と生成を組み合わせた手法)において、従来のOCR後の固定サイズチャンキングがもたらす課題を解決できるかどうかを試すことを目的としています。なお、弊社は生成AI分野における包括的な協業を目指し、Upstageと業務提携を結んでおります。詳細はこちらからご覧ください。
既存のRAGの問題点
RAG用のデータベースにドキュメントを保存する際、OCRで抽出したテキストを固定サイズ(例:500文字ごと)に分割するチャンキング手法が一般的に用いられてきました。しかし、この方法では文章や表の構造が途中で切れてしまい、元の文脈やレイアウト情報が失われることが多く、結果として検索精度や回答の正確さに悪影響を及ぼす可能性があります。
そこで、DocumentsParseAPIを利用する理由は、従来の固定サイズチャンキングでは再現できなかった元のレイアウト(段落、表、ヘッダー、フッターなど)をそのままHTML形式で出力する点にあります。これにより、ドキュメントの構造を保った状態でテキストを抽出できるためドキュメントの前処理に有効だと思います
DocumentParse APIとは
ドキュメントを 段落、テーブル、画像などのレイアウト要素を検出し、ドキュメントの構造を保ちながらHTML形式として出力されるAPIになっています。原文はこちら
例:
ドキュメントの要素ごとにDocumentParse AIモデルがラベル付を行った結果がAPIのレスポンスとして返ってきます。
カテゴリー | HTMLタグ |
---|---|
テーブル | <table> .. </table> |
図 | <figure><img> .. </img></figure> |
チャート画像 | <figure><img data-category="chart"> .. </img></figure> |
見出し1 | <h1>... </h1> |
ヘッダー | <header> .. </header> |
フッター | <footer> .. </footer> |
キャプション | <caption> .. </caption> |
パラグラフ | <p data-category="paragraph">..</p> |
数式 | <p data-category="equation">..</p> |
リスト | <p data-category="list">..</p> |
インデックス | <p data-category="index">..</p> |
フッター | <p data-category="footnote"> </p> |
またDocumrnyParseAPIを使う要件として以下になります。
- 対応ファイル形式:
- JPEG、PNG、BMP、PDF、TIFF、HEIC、DOCX、PPTX、XLSX
- 最大ファイルサイズ:
- 50MB
- 最大ページ数:
- 100ページ
- 100ページを超えるファイルは最初の100ページが処理されます。100ページ以上の処理が必要な場合は非同期APIを使用する必要があります。
- 100ページ
- 1ページあたりの最大ピクセル数:
- 100,000,000ピクセル
- 画像以外のファイルは150DPIで画像に変換した後のピクセル数
- 100,000,000ピクセル
- OCR推論でサポートされる文字セット:
- 英数字
- ハングル(韓国語)
- 漢字
またデモ実行のWebページがあり、PDFをアップロードして結果がみれます。
行ったこと
Hugging FaceでMITライセンスの公開されているallganize/RAG-Evaluation-Dataset-JAにある日本語ドキュメントのPDF1部分からDocumentParse APIを使用して結果を見みます。
準備
- Upstage ConsoleからAPIを取得する
- 使用するモデル :
document-parse-250116
実装
import requests
import json
# APIキーとファイルパスの設定
api_key = "up_" # 準備2で取得したAPIキーを貼り付ける
filename = "test.pdf" # PDFが格納されているパス
# APIエンドポイントとヘッダーの設定
url = "https://api.upstage.ai/v1/document-ai/document-parse"
headers = {"Authorization": f"Bearer {api_key}"}
# ファイルとデータの準備
files = {"document": open(filename, "rb")}
data = {"ocr": "force", "base64_encoding": "['table']", "model": "document-parse-250116"}
# APIリクエストの送信
response = requests.post(url, headers=headers, files=files, data=data)
# レスポンスデータの取得
response_data = response.json()
# 'elements' リスト内の各要素から 'base64_encoding' を削除
if 'elements' in response_data:
for element in response_data['elements']:
if 'base64_encoding' in element:
del element['base64_encoding']
# クリーンアップされたレスポンスデータを表示
response_data
結果
テストデータ1
表をHTMLで表示させたもの
分析
- ※や△の記号が正しく抽出されている。
- 背景が青色の箇所も正しく単語が抽出されている。
- オリジナルのPDFと全く同じものが出力されている結果になった。
- 表の構造が乱れることなく出力されている。
APIの結果
トグルで開きます
{'api': '2.0',
'content': {'html': "<h1 id='0' style='font-size:20px'>第 4 章</h1>\n<br><h1 id='1' style='font-size:18px'>ICT市場の動向</h1>\n<table id='2' style='font-size:16px'><tr><td>項目</td><td>年度</td><td>金額</td><td>前年比</td></tr><tr><td>ICT市場規模 (支出額)</td><td>2022</td><td>27.2兆円</td><td>+ 5.2%</td></tr><tr><td>情報通信産業の国内生産 (名目)</td><td>2021</td><td>52.7兆円</td><td>+ 0.8%</td></tr><tr><td>情報化投資</td><td>2021</td><td>15.5兆円</td><td>▲0.4%</td></tr><tr><td>ICT財 · サービスの輸入額 (名目)</td><td>2021</td><td>19.2兆円</td><td>+ 14.6%</td></tr><tr><td>ICT財 · サービスの輸出額 (名目)</td><td>2021</td><td>12兆円</td><td>+ 13.3%</td></tr><tr><td>情報通信産業の研究費</td><td>2021</td><td>3.4兆円</td><td>▲ 1.6%</td></tr><tr><td>情報通信産業の研究者数</td><td>2021</td><td>15.7万人</td><td>▲6.0%</td></tr><tr><td>5G人ロカバー率</td><td>2021</td><td>93.2%</td><td>-</td></tr><tr><td>インターネットトラヒック</td><td>2022</td><td>29.2Tbps</td><td>+ 23.7%</td></tr><tr><td>固定系ブロードバンドの契約数</td><td>2021</td><td>4,383万</td><td>+ 2.7%</td></tr><tr><td>放送事業者全体の売上高</td><td>2021</td><td>3.7兆円</td><td>+ 4.6%</td></tr><tr><td>放送サービス加入者数</td><td>2021</td><td>8161.3万</td><td>▲ 0.2%</td></tr><tr><td>デジタル広告市場規模</td><td>2022</td><td>3.1兆円</td><td>+ 13.7%</td></tr><tr><td>5G対応スマホ出荷台数</td><td>2021</td><td>1,753万台</td><td>+ 67.7%</td></tr><tr><td>5G基地局の市場規模 (出荷額)</td><td>2022</td><td>3,035億円</td><td>+ 6.2%</td></tr><tr><td>動画配信市場規模</td><td>2022</td><td>5,305 億円</td><td>+ 15.0%</td></tr><tr><td>メタバース市場規模 (売上高)</td><td>2022</td><td>1,825億円</td><td>+ 145.3%</td></tr><tr><td>データセンターサービス市場規模</td><td>2022</td><td>2.0兆円</td><td>+ 15.3%</td></tr><tr><td>クラウドサービス市場規模 (売上)</td><td>2022</td><td>2.2兆円</td><td>+ 29.8%</td></tr><tr><td>NICTERでのサイバー攻撃関連の通信数</td><td>2022</td><td>約5,266億</td><td>+ 0.9%</td></tr><tr><td>インターネット利用率 (個人)</td><td>2022</td><td>84.9%</td><td>82.9% ※</td></tr><tr><td>スマートフォン保有率 (個人)</td><td>2022</td><td>77.3%</td><td>74.3% ※</td></tr><tr><td>テレワーク導入率</td><td>2022</td><td>51.7%</td><td>51.9% ※</td></tr><tr><td>IoT · AIの導入状況</td><td>2022</td><td>13.5%</td><td>14.9% ※</td></tr></table>\n<br><h1 id='3' style='font-size:14px'>※前年比増減ではなく前年の割合を記載</h1>",
'markdown': '',
'text': ''},
'elements': [{'category': 'heading1',
'content': {'html': "<h1 id='0' style='font-size:20px'>第 4 章</h1>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.1036, 'y': 0.077},
{'x': 0.25, 'y': 0.077},
{'x': 0.25, 'y': 0.1221},
{'x': 0.1036, 'y': 0.1221}],
'id': 0,
'page': 1},
{'category': 'heading1',
'content': {'html': "<br><h1 id='1' style='font-size:18px'>ICT市場の動向</h1>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.2913, 'y': 0.0845},
{'x': 0.5437, 'y': 0.0845},
{'x': 0.5437, 'y': 0.1163},
{'x': 0.2913, 'y': 0.1163}],
'id': 1,
'page': 1},
{'category': 'table',
'content': {'html': "<table id='2' style='font-size:16px'><tr><td>項目</td><td>年度</td><td>金額</td><td>前年比</td></tr><tr><td>ICT市場規模 (支出額)</td><td>2022</td><td>27.2兆円</td><td>+ 5.2%</td></tr><tr><td>情報通信産業の国内生産 (名目)</td><td>2021</td><td>52.7兆円</td><td>+ 0.8%</td></tr><tr><td>情報化投資</td><td>2021</td><td>15.5兆円</td><td>▲0.4%</td></tr><tr><td>ICT財 · サービスの輸入額 (名目)</td><td>2021</td><td>19.2兆円</td><td>+ 14.6%</td></tr><tr><td>ICT財 · サービスの輸出額 (名目)</td><td>2021</td><td>12兆円</td><td>+ 13.3%</td></tr><tr><td>情報通信産業の研究費</td><td>2021</td><td>3.4兆円</td><td>▲ 1.6%</td></tr><tr><td>情報通信産業の研究者数</td><td>2021</td><td>15.7万人</td><td>▲6.0%</td></tr><tr><td>5G人ロカバー率</td><td>2021</td><td>93.2%</td><td>-</td></tr><tr><td>インターネットトラヒック</td><td>2022</td><td>29.2Tbps</td><td>+ 23.7%</td></tr><tr><td>固定系ブロードバンドの契約数</td><td>2021</td><td>4,383万</td><td>+ 2.7%</td></tr><tr><td>放送事業者全体の売上高</td><td>2021</td><td>3.7兆円</td><td>+ 4.6%</td></tr><tr><td>放送サービス加入者数</td><td>2021</td><td>8161.3万</td><td>▲ 0.2%</td></tr><tr><td>デジタル広告市場規模</td><td>2022</td><td>3.1兆円</td><td>+ 13.7%</td></tr><tr><td>5G対応スマホ出荷台数</td><td>2021</td><td>1,753万台</td><td>+ 67.7%</td></tr><tr><td>5G基地局の市場規模 (出荷額)</td><td>2022</td><td>3,035億円</td><td>+ 6.2%</td></tr><tr><td>動画配信市場規模</td><td>2022</td><td>5,305 億円</td><td>+ 15.0%</td></tr><tr><td>メタバース市場規模 (売上高)</td><td>2022</td><td>1,825億円</td><td>+ 145.3%</td></tr><tr><td>データセンターサービス市場規模</td><td>2022</td><td>2.0兆円</td><td>+ 15.3%</td></tr><tr><td>クラウドサービス市場規模 (売上)</td><td>2022</td><td>2.2兆円</td><td>+ 29.8%</td></tr><tr><td>NICTERでのサイバー攻撃関連の通信数</td><td>2022</td><td>約5,266億</td><td>+ 0.9%</td></tr><tr><td>インターネット利用率 (個人)</td><td>2022</td><td>84.9%</td><td>82.9% ※</td></tr><tr><td>スマートフォン保有率 (個人)</td><td>2022</td><td>77.3%</td><td>74.3% ※</td></tr><tr><td>テレワーク導入率</td><td>2022</td><td>51.7%</td><td>51.9% ※</td></tr><tr><td>IoT · AIの導入状況</td><td>2022</td><td>13.5%</td><td>14.9% ※</td></tr></table>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.1049, 'y': 0.1786},
{'x': 0.8931, 'y': 0.1786},
{'x': 0.8931, 'y': 0.8351},
{'x': 0.1049, 'y': 0.8351}],
'id': 2,
'page': 1},
{'category': 'heading1',
'content': {'html': "<br><h1 id='3' style='font-size:14px'>※前年比増減ではなく前年の割合を記載</h1>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.6332, 'y': 0.8375},
{'x': 0.8932, 'y': 0.8375},
{'x': 0.8932, 'y': 0.8514},
{'x': 0.6332, 'y': 0.8514}],
'id': 3,
'page': 1}],
'model': 'document-parse-250116',
'usage': {'pages': 1}}
テストデータ2
表をHTMLで表示させたもの
分析
- 全角数字や不自然な空白がある。
- 文字化けしている。
- オリジナル: 「開発に必要な行為やイベントが一通り揃った」
- DocumentParse API: 「開発に必要な行為やイベントが一通り�った」
- 「スクラムマスター」の表記揺れがある。
- PDF: 「スクラムマスター」
- DocumentParse API: 「スクラムマスタ」
APIの結果
トグルで開きます
{'api': '2.0',
'content': {'html': "<br><table id='1' style='font-size:20px'><tr><td>用語</td><td>意味</td></tr><tr><td>スクラム</td><td>アジャイル開発の1つとされ、 国内外を問わず、 適用さ れていることが多い開発手法。 本ガイドブックは、 スク ラムを基本としてアジャイル開発を説明する。</td></tr><tr><td>スプリント</td><td>開発に必要な行為やイベントが一通り�った、 スクラム における開発期間を指す。 スクラムでは、 スプリントを 単位として反復して開発する。</td></tr><tr><td>プロダクトオー ナー</td><td>開発する機能の仕様策定に関する議論を主導し、 開発機 能の優先順位や実現方法等に対する意思決定を主体的に 行う役割を指す。 開発する情報システムの価値を最大化 することに責任を負う。</td></tr><tr><td>プロダクトオー ナー支援</td><td>アジャイル開発におけるプロダクトオーナーの振る舞い 並びにシステム開発及びプロジェクト運営に対する職員 の知見を補完する役割を指す。</td></tr><tr><td>スクラムマスタ</td><td>チームが機能するように、 アジャイル開発が前提として いる価値観、 考え方、 実践にあたって必要な振る舞い、 方法についてのレクチャーやコーチングなどを行い、 支 援する役割を指す。</td></tr><tr><td>開発チーム</td><td>本ガイドブックでは、 政府情報システムの開発の現状を 踏まえ、 開発を行う事業者を想定しているが、 発注者 (職員) が開発チームとなる可能性もある。</td></tr><tr><td>アドバイザー</td><td>プロダクトオーナー、 スクラムマスター、 開発チームを 含んだチーム以外の関係者をまとめて指す。 システム開 発における意思決定には関与せず、 チームに対する助 言、 知見の提供、 フィードバック等を行う。</td></tr><tr><td>リリースプラン ニング</td><td>プロジェクトの開発範囲の規模から、 スプリントがいく つ必要かを見立て、 プロジェクト全体の計画を立てるミ ーティングを指す。 本ミーティングはスクラムの規定に はない。</td></tr><tr><td>スプリントプラ ンニング</td><td>スプリントの開始時に実施する。 予めリスト化したプロ ジェクト全体の開発対象機能 (プロダクトバックログ) から、 当該スプリントにおける開発対象機能とするもの を選択して優先順位で並べ替え (スプリントバックロ グ) 、 開発方法などの計画を立てるミーティングを指 す。</td></tr><caption id='0' style='font-size:16px'>表 1 用語の定義</caption></table>\n<footer id='2' style='font-size:14px'>3</footer>",
'markdown': '',
'text': ''},
'elements': [{'category': 'caption',
'content': {'html': "<caption id='0' style='font-size:16px'>表 1 用語の定義</caption>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.4205, 'y': 0.1205},
{'x': 0.598, 'y': 0.1205},
{'x': 0.598, 'y': 0.1377},
{'x': 0.4205, 'y': 0.1377}],
'id': 0,
'page': 1},
{'category': 'table',
'content': {'html': "<br><table id='1' style='font-size:20px'><tr><td>用語</td><td>意味</td></tr><tr><td>スクラム</td><td>アジャイル開発の1つとされ、 国内外を問わず、 適用さ れていることが多い開発手法。 本ガイドブックは、 スク ラムを基本としてアジャイル開発を説明する。</td></tr><tr><td>スプリント</td><td>開発に必要な行為やイベントが一通り�った、 スクラム における開発期間を指す。 スクラムでは、 スプリントを 単位として反復して開発する。</td></tr><tr><td>プロダクトオー ナー</td><td>開発する機能の仕様策定に関する議論を主導し、 開発機 能の優先順位や実現方法等に対する意思決定を主体的に 行う役割を指す。 開発する情報システムの価値を最大化 することに責任を負う。</td></tr><tr><td>プロダクトオー ナー支援</td><td>アジャイル開発におけるプロダクトオーナーの振る舞い 並びにシステム開発及びプロジェクト運営に対する職員 の知見を補完する役割を指す。</td></tr><tr><td>スクラムマスタ</td><td>チームが機能するように、 アジャイル開発が前提として いる価値観、 考え方、 実践にあたって必要な振る舞い、 方法についてのレクチャーやコーチングなどを行い、 支 援する役割を指す。</td></tr><tr><td>開発チーム</td><td>本ガイドブックでは、 政府情報システムの開発の現状を 踏まえ、 開発を行う事業者を想定しているが、 発注者 (職員) が開発チームとなる可能性もある。</td></tr><tr><td>アドバイザー</td><td>プロダクトオーナー、 スクラムマスター、 開発チームを 含んだチーム以外の関係者をまとめて指す。 システム開 発における意思決定には関与せず、 チームに対する助 言、 知見の提供、 フィードバック等を行う。</td></tr><tr><td>リリースプラン ニング</td><td>プロジェクトの開発範囲の規模から、 スプリントがいく つ必要かを見立て、 プロジェクト全体の計画を立てるミ ーティングを指す。 本ミーティングはスクラムの規定に はない。</td></tr><tr><td>スプリントプラ ンニング</td><td>スプリントの開始時に実施する。 予めリスト化したプロ ジェクト全体の開発対象機能 (プロダクトバックログ) から、 当該スプリントにおける開発対象機能とするもの を選択して優先順位で並べ替え (スプリントバックロ グ) 、 開発方法などの計画を立てるミーティングを指 す。</td></tr></table>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.1424, 'y': 0.1369},
{'x': 0.8565, 'y': 0.1369},
{'x': 0.8565, 'y': 0.8955},
{'x': 0.1424, 'y': 0.8955}],
'id': 1,
'page': 1},
{'category': 'footer',
'content': {'html': "<footer id='2' style='font-size:14px'>3</footer>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.5215, 'y': 0.9066},
{'x': 0.5376, 'y': 0.9066},
{'x': 0.5376, 'y': 0.921},
{'x': 0.5215, 'y': 0.921}],
'id': 2,
'page': 1}],
'model': 'document-parse-250116',
'usage': {'pages': 1}}
テストデータ3
表をHTMLで表示させたもの
分析
- 漢字を1部分のみ間違えている
- オリジナル: 「当月の無料通信・通話分が
翌月又は翌々月
の利用分に繰り越せる場合」 - DocumentParse API: 「当月の無料通信・通話分が
盗用又は翌4月
の利用分に繰り越せる場合」
- オリジナル: 「当月の無料通信・通話分が
- 不自然な空白がある
APIの結果
トグルで開きます
{'api': '2.0',
'content': {'html': '<br><table id=\'1\' style=\'font-size:16px\'><tr><td colspan="2">表示事項</td></tr><tr><td rowspan="3">(1) 無料通信・通話分の内容に 係る事項</td><td>無料通信・通話が含まれる料金プランの名称</td></tr><tr><td>無料通信・通話分の額</td></tr><tr><td>無料通信・通話分について、 目安となる通信・通話量を表示する場合に は、 その条件</td></tr><tr><td rowspan="4">(2) 無料通信・通話分の適用に 係る前提条件又は制約条件</td><td>無料通信・通話分の対象となる通信・通話の種類に制約がある場合に は、 その事項</td></tr><tr><td>当月の無料通信・通話分が盗用又は翌4月の利用分に繰り越せる場合 に、 当該繰り越しの対象となる無料通信・通話分の適用に前提条件又は 制約条件がある場合には、 その事項(※)</td></tr><tr><td>無料通信・通話分が第三者の利用分としても充当可能な場合に、 当該充 当可能な海外通信・通話分の適用に前提条件又は制約条件がある場合 には、 その事項(※)</td></tr><tr><td>上記のほか、 無料通信・通話分の適用に係る重要な前提条件又は制約 条件がある場合には、 その事項</td></tr><caption id=\'0\' style=\'font-size:16px\'>別表4 無料通信・通話分に関する事項</caption></table>\n<br><p id=\'2\' data-category=\'paragraph\' style=\'font-size:20px\'>上記※の項目については、 それぞれ無料通信・通話分を繰り越せる旨、 又は第三者の利用分に充当できる旨<br>を表示した場合にのみ、 表示が必要なものとする。</p>\n<footer id=\'3\' style=\'font-size:14px\'>5 2</footer>\n<p id=\'4\' data-category=\'paragraph\' style=\'font-size:18px\'>※別表※に規定した文字サイズ等は最低限のものを示しているものであり、 これら規定に準拠していれ<br>ば景品表示法上問題とならないというものではない。 実際の視認性などは広告毎に判断が必要であり、<br>必要に応じて、 さらに文字サイズを上げる、 文字露出秒数を長くする、 強調表示と打消し表示(注釈)の<br>世界差を小さする「自然表示に対する仕組みのリバン車を上げるようなどにも留意されたい。</p>\n<p id=\'5\' data-category=\'paragraph\' style=\'font-size:18px\'>※強調表示と打消し表示との関係は、 強調表示の請求している内容が商品・サービスの実践を反映して<br>いることが原則であり、 打消し表示は、 強調表示だけでは一般消費者が認識できない例外条件、 制約条<br>件等がある場合に例外的に使用されるべきものである。 したがって、 強調表示と打消し表示とが矛盾す<br>るような場合は、 一般消費者に誤認され、 景品表示法上問題となるおそれがある。 (消費者庁 打消し表<br>示に関する実態調査報告書 平成 29 年7月)</p>\n<footer id=\'6\' style=\'font-size:14px\'>5 8</footer>',
'markdown': '',
'text': ''},
'elements': [{'category': 'caption',
'content': {'html': "<caption id='0' style='font-size:16px'>別表4 無料通信・通話分に関する事項</caption>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.1149, 'y': 0.0708},
{'x': 0.3983, 'y': 0.0708},
{'x': 0.3983, 'y': 0.0851},
{'x': 0.1149, 'y': 0.0851}],
'id': 0,
'page': 1},
{'category': 'table',
'content': {'html': '<br><table id=\'1\' style=\'font-size:16px\'><tr><td colspan="2">表示事項</td></tr><tr><td rowspan="3">(1) 無料通信・通話分の内容に 係る事項</td><td>無料通信・通話が含まれる料金プランの名称</td></tr><tr><td>無料通信・通話分の額</td></tr><tr><td>無料通信・通話分について、 目安となる通信・通話量を表示する場合に は、 その条件</td></tr><tr><td rowspan="4">(2) 無料通信・通話分の適用に 係る前提条件又は制約条件</td><td>無料通信・通話分の対象となる通信・通話の種類に制約がある場合に は、 その事項</td></tr><tr><td>当月の無料通信・通話分が盗用又は翌4月の利用分に繰り越せる場合 に、 当該繰り越しの対象となる無料通信・通話分の適用に前提条件又は 制約条件がある場合には、 その事項(※)</td></tr><tr><td>無料通信・通話分が第三者の利用分としても充当可能な場合に、 当該充 当可能な海外通信・通話分の適用に前提条件又は制約条件がある場合 には、 その事項(※)</td></tr><tr><td>上記のほか、 無料通信・通話分の適用に係る重要な前提条件又は制約 条件がある場合には、 その事項</td></tr></table>',
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.1108, 'y': 0.0887},
{'x': 0.8799, 'y': 0.0887},
{'x': 0.8799, 'y': 0.4255},
{'x': 0.1108, 'y': 0.4255}],
'id': 1,
'page': 1},
{'category': 'paragraph',
'content': {'html': "<br><p id='2' data-category='paragraph' style='font-size:20px'>上記※の項目については、 それぞれ無料通信・通話分を繰り越せる旨、 又は第三者の利用分に充当できる旨<br>を表示した場合にのみ、 表示が必要なものとする。</p>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.1137, 'y': 0.4259},
{'x': 0.8822, 'y': 0.4259},
{'x': 0.8822, 'y': 0.4624},
{'x': 0.1137, 'y': 0.4624}],
'id': 2,
'page': 1},
{'category': 'footer',
'content': {'html': "<footer id='3' style='font-size:14px'>5 2</footer>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.4826, 'y': 0.9437},
{'x': 0.5163, 'y': 0.9437},
{'x': 0.5163, 'y': 0.9577},
{'x': 0.4826, 'y': 0.9577}],
'id': 3,
'page': 1},
{'category': 'paragraph',
'content': {'html': "<p id='4' data-category='paragraph' style='font-size:18px'>※別表※に規定した文字サイズ等は最低限のものを示しているものであり、 これら規定に準拠していれ<br>ば景品表示法上問題とならないというものではない。 実際の視認性などは広告毎に判断が必要であり、<br>必要に応じて、 さらに文字サイズを上げる、 文字露出秒数を長くする、 強調表示と打消し表示(注釈)の<br>世界差を小さする「自然表示に対する仕組みのリバン車を上げるようなどにも留意されたい。</p>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.1134, 'y': 0.0982},
{'x': 0.887, 'y': 0.0982},
{'x': 0.887, 'y': 0.1872},
{'x': 0.1134, 'y': 0.1872}],
'id': 4,
'page': 2},
{'category': 'paragraph',
'content': {'html': "<p id='5' data-category='paragraph' style='font-size:18px'>※強調表示と打消し表示との関係は、 強調表示の請求している内容が商品・サービスの実践を反映して<br>いることが原則であり、 打消し表示は、 強調表示だけでは一般消費者が認識できない例外条件、 制約条<br>件等がある場合に例外的に使用されるべきものである。 したがって、 強調表示と打消し表示とが矛盾す<br>るような場合は、 一般消費者に誤認され、 景品表示法上問題となるおそれがある。 (消費者庁 打消し表<br>示に関する実態調査報告書 平成 29 年7月)</p>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.1125, 'y': 0.217},
{'x': 0.8871, 'y': 0.217},
{'x': 0.8871, 'y': 0.3299},
{'x': 0.1125, 'y': 0.3299}],
'id': 5,
'page': 2},
{'category': 'footer',
'content': {'html': "<footer id='6' style='font-size:14px'>5 8</footer>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.4825, 'y': 0.9438},
{'x': 0.5163, 'y': 0.9438},
{'x': 0.5163, 'y': 0.9577},
{'x': 0.4825, 'y': 0.9577}],
'id': 6,
'page': 2}],
'model': 'document-parse-250116',
'usage': {'pages': 2}}
テストデータ4
表をHTMLで表示させたもの
分析
- 背景がある時でも文字を抽出ができている。
- 赤文字の場合も同様に文字が抽出ができている。
- 文字化けしている
- オリジナル: 「平常温度試験、漏洩電流試験、定格消費電力試験」
- DocumentParse API: 「平常温度試験、 漏�電流試験、 定格消費電力試験」
- 不自然な空白がある
APIの結果
トグルで開きます
{'api': '2.0',
'content': {'html': "<h1 id='0' style='font-size:20px'>予防安全機能について</h1>\n<table id='1' style='font-size:16px'><tr><td>機能</td><td>動作</td><td>使用者との関係</td><td>解釈別表第八で関連する試験</td><td>基本設計</td><td>機能・装置の例</td></tr><tr><td>通常機能</td><td>通常状態で働く</td><td>使用者が設定してもよ い。</td><td>平常温度試験、 漏�電流試験、 定格消費電力試験</td><td>壊れても安全</td><td>機器の性能を発揮する機能 (例えば、 冷蔵庫な ら冷やすといった機能)</td></tr><tr><td>予防安全機能 (通常機能を 兼ねるものを 除く)</td><td>異常状態になる前 に働く。</td><td>使用者が設定できるも のもある。 ただし、 予 防安全機能を遠隔操作 することは誤操作のリ スクも考慮する。</td><td>人体検知センサーによる保護や 遠隔操作の別八要求事項のリス ク低減方法といった手段以外は、 明確な関連試験なし。</td><td>壊れても安全又は使 用者の過信に注意。</td><td>子供等が製品を操作できないようにするための チャイルドロック 消し忘れ防止機能 ソフトウェア (機能安全評価なし) による停止 人体検知センサー</td></tr><tr><td>安全機能</td><td>異常状態で動く。 (通常状態で動作 してはならない)</td><td>使用者は設定できない。</td><td>異常運転試験 (合理的に予見可 能な誤使用等) 、 電子部品の故 障試験</td><td>壊れにくい (信頼性 評価)</td><td>ヒューズ (電流ヒューズ、 温度ヒューズ) バイメタル式保護装置 (過負荷防止、 温度過昇 防止) ソフトウェア (機能安全評価あり) による停止</td></tr></table>\n<p id='2' data-category='paragraph' style='font-size:18px'>IoTガイドラインは、 機器の近くにいる人や機器の周辺への危害を回避する機能として、 予防安全機能を組み込むことを推奨してい<br>る。 このため、 遠隔操作の別八要求事項 (a) に記述されるリスク低減策の一つとして、 予防安全機能を組み込む方法も推奨されてい<br>ると考えられる。 ただし、 予防安全機能については、 IoTガイドラインにおいて、 製造事業者等は、 機器の遠隔操作者に対して、その<br>機能を過信、 誤操作、 誤使用し、 機器に近くにいる使用者などに不意に危害を与えないよう、使用条件、 使用上のリスク · 注意点、 異<br>常通知があった場合に取るべき対応(手元操作の優先、 近くにいる使用者による通信回線切り離し)等、 能動的な行動を促せるよう、 対<br>策が求められていることに留意する必要がある。</p>\n<footer id='3' style='font-size:14px'>14</footer>",
'markdown': '',
'text': ''},
'elements': [{'category': 'heading1',
'content': {'html': "<h1 id='0' style='font-size:20px'>予防安全機能について</h1>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.3323, 'y': 0.1407},
{'x': 0.6662, 'y': 0.1407},
{'x': 0.6662, 'y': 0.1949},
{'x': 0.3323, 'y': 0.1949}],
'id': 0,
'page': 1},
{'category': 'table',
'content': {'html': "<table id='1' style='font-size:16px'><tr><td>機能</td><td>動作</td><td>使用者との関係</td><td>解釈別表第八で関連する試験</td><td>基本設計</td><td>機能・装置の例</td></tr><tr><td>通常機能</td><td>通常状態で働く</td><td>使用者が設定してもよ い。</td><td>平常温度試験、 漏�電流試験、 定格消費電力試験</td><td>壊れても安全</td><td>機器の性能を発揮する機能 (例えば、 冷蔵庫な ら冷やすといった機能)</td></tr><tr><td>予防安全機能 (通常機能を 兼ねるものを 除く)</td><td>異常状態になる前 に働く。</td><td>使用者が設定できるも のもある。 ただし、 予 防安全機能を遠隔操作 することは誤操作のリ スクも考慮する。</td><td>人体検知センサーによる保護や 遠隔操作の別八要求事項のリス ク低減方法といった手段以外は、 明確な関連試験なし。</td><td>壊れても安全又は使 用者の過信に注意。</td><td>子供等が製品を操作できないようにするための チャイルドロック 消し忘れ防止機能 ソフトウェア (機能安全評価なし) による停止 人体検知センサー</td></tr><tr><td>安全機能</td><td>異常状態で動く。 (通常状態で動作 してはならない)</td><td>使用者は設定できない。</td><td>異常運転試験 (合理的に予見可 能な誤使用等) 、 電子部品の故 障試験</td><td>壊れにくい (信頼性 評価)</td><td>ヒューズ (電流ヒューズ、 温度ヒューズ) バイメタル式保護装置 (過負荷防止、 温度過昇 防止) ソフトウェア (機能安全評価あり) による停止</td></tr></table>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.038, 'y': 0.223},
{'x': 0.9583, 'y': 0.223},
{'x': 0.9583, 'y': 0.5739},
{'x': 0.038, 'y': 0.5739}],
'id': 1,
'page': 1},
{'category': 'paragraph',
'content': {'html': "<p id='2' data-category='paragraph' style='font-size:18px'>IoTガイドラインは、 機器の近くにいる人や機器の周辺への危害を回避する機能として、 予防安全機能を組み込むことを推奨してい<br>る。 このため、 遠隔操作の別八要求事項 (a) に記述されるリスク低減策の一つとして、 予防安全機能を組み込む方法も推奨されてい<br>ると考えられる。 ただし、 予防安全機能については、 IoTガイドラインにおいて、 製造事業者等は、 機器の遠隔操作者に対して、その<br>機能を過信、 誤操作、 誤使用し、 機器に近くにいる使用者などに不意に危害を与えないよう、使用条件、 使用上のリスク · 注意点、 異<br>常通知があった場合に取るべき対応(手元操作の優先、 近くにいる使用者による通信回線切り離し)等、 能動的な行動を促せるよう、 対<br>策が求められていることに留意する必要がある。</p>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.0711, 'y': 0.6052},
{'x': 0.9461, 'y': 0.6052},
{'x': 0.9461, 'y': 0.7604},
{'x': 0.0711, 'y': 0.7604}],
'id': 2,
'page': 1},
{'category': 'footer',
'content': {'html': "<footer id='3' style='font-size:14px'>14</footer>",
'markdown': '',
'text': ''},
'coordinates': [{'x': 0.9075, 'y': 0.8505},
{'x': 0.9246, 'y': 0.8505},
{'x': 0.9246, 'y': 0.8705},
{'x': 0.9075, 'y': 0.8705}],
'id': 3,
'page': 1}],
'model': 'document-parse-250116',
'usage': {'pages': 1}}
最後に
日本語はベータ版にも関わらず、文字抽出の精度が高い結果になりました。RAGにおけるドキュメントの前処理において表形式の構造が崩れずに処理ができると思おます。
またAPIの結果を見てみるとPDFドキュメントにあるヘッダーやフッターも検出されているのでドキュメントの処理に除外するやページ番号をメタデータにする等も期待されます。
Discussion