document-extraction について
ServiceNow Document Intelligenceで、文書から構造化フィールドを抽出するパイプラインを設定するスキルです。テンプレートや項目マッピング、信頼度に応じた確認、検証と修正を扱います。
主な機能
- 01文書抽出テンプレートを設定
- 02抽出項目をテーブル列にマッピング
- 03抽出リクエストを送信・監視
- 04信頼度と検証結果を確認
- 05結果を修正して対象レコードに反映
活用シーン
- 01請求書の一括処理
- 02契約メタデータの抽出
- 03フォームをServiceNowレコードとしてデジタル化
- 04信頼度の低い抽出項目の確認
MCP 対応
ServiceNow MCP ツールでテンプレート、マッピング、抽出リクエスト、結果を管理し、対象レコードを作成または更新します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill document-extractionインストール後、Claude Code で/document-extractionを入力して読み込まれたか確認します。
詳細
ドキュメント抽出
概要
このスキルでは、ServiceNow Document Intelligence を使用してドキュメントから構造化データを抽出するための体系的なアプローチを提供します。次のことができます。
- ドキュメントの種類(請求書、契約書、フォーム、発注書)ごとに、
sn_doc_templateで抽出テンプレートを設定および管理する sn_doc_intelligence_extractionパイプラインを通じて、ドキュメントを抽出に送信するsn_doc_intelligence_field_mapでフィールドマッピングを定義し、抽出したデータを ServiceNow のテーブルフィールドに対応付けるsn_doc_intelligence_extraction_resultから抽出結果を確認および検証する- データ品質を確保し、信頼度の低い抽出結果にフラグを付けるための検証ルールを設定する
- 抽出の失敗に対処し、精度を向上させるためにモデルを再トレーニングする
使用する場面: 大量のドキュメントを処理する必要がある場合(請求書の一括処理、契約メタデータの抽出、フォームのデジタル化)、ドキュメントからの手動データ入力にミスが起こりやすい、または時間がかかる場合、新しいドキュメント処理パイプラインを設定する場合に使用します。
必要なプラグイン: com.sn_doc_intelligence
前提条件
- ロール:
sn_doc_intelligence_admin、sn_doc_intelligence_user、またはadmin - アクセス権:
sn_doc_intelligence_extraction、sn_doc_template、sn_doc_intelligence_field_map、およびsys_attachmentテーブルへの読み取り/書き込みアクセス - 知識: 処理するドキュメントの種類、そのフィールドレイアウト、抽出データの格納先となる ServiceNow テーブルについての理解
- プラグイン: Document Intelligence(
com.sn_doc_intelligence)が有効化されている必要があります - ドキュメント: ソースドキュメントはサポート対象の形式(PDF、PNG、JPG、TIFF)である必要があります
手順
ステップ 1:利用可能な抽出テンプレートを確認する
インスタンスに設定済みのドキュメント抽出テンプレートを確認します。
MCP を使用する場合(Claude Code/Desktop):
Tool: SN-Query-Table
Parameters:
table_name: sn_doc_template
query: active=true
fields: sys_id,name,description,document_type,target_table,state,extraction_model,confidence_threshold,field_count
limit: 50
order_by: name
REST API を使用する場合:
GET /api/now/table/sn_doc_template?sysparm_query=active=true^ORDERBYname&sysparm_fields=sys_id,name,description,document_type,target_table,state,extraction_model,confidence_threshold,field_count&sysparm_limit=50&sysparm_display_value=true
一般的なテンプレートの種類:
| ドキュメントの種類 | 対象テーブル | 用途 |
|---|---|---|
| 請求書 | sn_proc_invoice | 買掛金請求書の処理 |
| 発注書 | proc_po | 発注書のデータ入力 |
| 契約書 | ast_contract | 契約メタデータの抽出 |
| W-9/税務フォーム | core_company | ベンダーの税務情報 |
| 身分証明書 | sys_user | 本人確認 |
| 保険証明書 | ast_contract | COI の追跡 |
| 作業指示書 | wm_order | フィールドサービスのドキュメント |
ステップ 2:抽出テンプレートを作成または設定する
ドキュメントの種類に対応するテンプレートがない場合は、作成します。
MCP を使用する場合:
Tool: SN-Create-Record
Parameters:
table_name: sn_doc_template
fields:
name: "Vendor Invoice Template"
description: "Extracts header and line-item data from vendor invoices for accounts payable processing"
document_type: invoice
target_table: sn_proc_invoice
confidence_threshold: 0.85
active: true
state: draft
REST API を使用する場合:
POST /api/now/table/sn_doc_template
Content-Type: application/json
{
"name": "Vendor Invoice Template",
"description": "Extracts header and line-item data from vendor invoices",
"document_type": "invoice",
"target_table": "sn_proc_invoice",
"confidence_threshold": "0.85",
"active": "true",
"state": "draft"
}
ステップ 3:フィールドマッピングを定義する
各抽出テンプレートについて、ドキュメントのフィールドを ServiceNow のテーブル列に対応付けます。
MCP を使用する場合:
Tool: SN-Create-Record
Parameters:
table_name: sn_doc_intelligence_field_map
fields:
template: [template_sys_id]
source_field: "Invoice Number"
target_table: sn_proc_invoice
target_field: number
field_type: string
required: true
validation_regex: "^INV-[0-9]{4,10}$"
order: 100
フィールドマッピングごとに繰り返します。
| ソースフィールド(ドキュメント) | 対象フィールド(テーブル) | 種類 | 必須 | 検証 |
|---|---|---|---|---|
| 請求書番号 | number | 文字列 | はい | パターン一致 |
| 請求日 | invoice_date | 日付 | はい | 有効な日付 |
| 支払期日 | due_date | 日付 | はい | 請求日より後 |
| ベンダー名 | vendor | 参照 | はい | core_company と一致 |
| 発注書番号 | po_number | 文字列 | いいえ | proc_po と一致 |
| 小計 | subtotal | 通貨 | はい | 正の数 |
| 税額 | tax | 通貨 | いいえ | 0 以上 |
| 合計金額 | invoice_amount | 通貨 | はい | subtotal + tax |
| 明細の説明 | line_items.description | 文字列 | はい | 空でない |
| 明細の数量 | line_items.quantity | 整数 | はい | 正の整数 |
| 明細の単価 | line_items.unit_price | 通貨 | はい | 正の数 |
REST API を使用する場合:
POST /api/now/table/sn_doc_intelligence_field_map
Content-Type: application/json
{
"template": "[template_sys_id]",
"source_field": "Invoice Number",
"target_table": "sn_proc_invoice",
"target_field": "number",
"field_type": "string",
"required": "true",
"validation_regex": "^INV-[0-9]{4,10}$",
"order": "100"
}
ステップ 4:ドキュメントを抽出に送信する
パイプラインを通じてドキュメントを処理する抽出リクエストを作成します。
MCP を使用する場合:
Tool: SN-Create-Record
Parameters:
table_name: sn_doc_intelligence_extraction
fields:
template: [template_sys_id]
source_document: [attachment_sys_id]
document_type: invoice
state: submitted
priority: 3
requested_by: [user_sys_id]
short_description: "Extract data from vendor invoice INV-2026-0456"
REST API を使用する場合:
POST /api/now/table/sn_doc_intelligence_extraction
Content-Type: application/json
{
"template": "[template_sys_id]",
"source_document": "[attachment_sys_id]",
"document_type": "invoice",
"state": "submitted",
"priority": "3",
"requested_by": "[user_sys_id]",
"short_description": "Extract data from vendor invoice INV-2026-0456"
}
一括処理する場合は、複数のドキュメントを送信します。
# Iterate over attachments and create extraction records
for attachment_id in [list_of_attachment_sys_ids]; do
curl -X POST "https://[instance].service-now.com/api/now/table/sn_doc_intelligence_extraction" \
-H "Content-Type: application/json" \
-d "{\"template\":\"[template_sys_id]\",\"source_document\":\"$attachment_id\",\"document_type\":\"invoice\",\"state\":\"submitted\"}"
done
ステップ 5:抽出の進行状況を監視する
送信した抽出リクエストのステータスを追跡します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sn_doc_intelligence_extraction
query: state=submitted^ORstate=processing^ORstate=review
fields: sys_id,number,short_description,state,template,document_type,source_document,confidence_score,sys_created_on,error_message
limit: 50
order_by: sys_created_on
REST API を使用する場合:
GET /api/now/table/sn_doc_intelligence_extraction?sysparm_query=state=submitted^ORstate=processing^ORstate=review^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,number,short_description,state,template,document_type,source_document,confidence_score,sys_created_on,error_message&sysparm_limit=50&sysparm_display_value=true
ステップ 6:抽出結果を確認する
抽出されたデータと、各フィールドの信頼度スコアを確認します。
MCP を使用する場合:
Tool: SN-Query-Table
Parameters:
table_name: sn_doc_intelligence_extraction_result
query: extraction=[extraction_sys_id]
fields: sys_id,field_name,extracted_value,confidence_score,validation_status,mapped_field,needs_review
limit: 100
order_by: order
REST API を使用する場合:
GET /api/now/table/sn_doc_intelligence_extraction_result?sysparm_query=extraction=[extraction_sys_id]^ORDERBYorder&sysparm_fields=sys_id,field_name,extracted_value,confidence_score,validation_status,mapped_field,needs_review&sysparm_limit=100&sysparm_display_value=true
しきい値に基づいて結果を評価します。
| 信頼度レベル | 必要な対応 |
|---|---|
| >= 0.95 | 自動承認。レビュー不要 |
| 0.85 - 0.94 | スポットチェックを行って承認 |
| 0.70 - 0.84 | 手動レビューが必要 |
| < 0.70 | 再抽出または手動入力のためにフラグを設定 |
ステップ 7:抽出データを検証して修正する
レビューが必要なフィールドについて、抽出結果を更新します。
MCP を使用する場合:
Tool: SN-Update-Record
Parameters:
table_name: sn_doc_intelligence_extraction_result
sys_id: [result_sys_id]
data:
extracted_value: "INV-2026-0456"
validation_status: validated
needs_review: false
reviewer_notes: "Corrected invoice number; OCR misread '0' as 'O'"
REST API を使用する場合:
PATCH /api/now/table/sn_doc_intelligence_extraction_result/[result_sys_id]
Content-Type: application/json
{
"extracted_value": "INV-2026-0456",
"validation_status": "validated",
"needs_review": "false",
"reviewer_notes": "Corrected invoice number; OCR misread '0' as 'O'"
}
ステップ 8:抽出を完了し、対象レコードにデータを入力する
すべてのフィールドの検証が完了したら、抽出を完了としてマークし、対象レコードを作成または更新します。
MCP を使用する場合:
Tool: SN-Update-Record
Parameters:
table_name: sn_doc_intelligence_extraction
sys_id: [extraction_sys_id]
data:
state: completed
work_notes: "Extraction validated. 12/14 fields auto-accepted (>95% confidence). 2 fields manually corrected. Target record created in sn_proc_invoice."
抽出データを使って対象レコードを作成します。
Tool: SN-Create-Record
Parameters:
table_name: sn_proc_invoice
fields:
number: "INV-2026-0456"
vendor: [vendor_sys_id]
invoice_date: "2026-03-15"
due_date: "2026-04-14"
invoice_amount: "15750.00"
po_number: "PO0012345"
state: pending
source: document_intelligence
work_notes: "Record created via Document Intelligence extraction [extraction_number]"
REST API を使用する場合:
PATCH /api/now/table/sn_doc_intelligence_extraction/[extraction_sys_id]
Content-Type: application/json
{
"state": "completed",
"work_notes": "Extraction validated. Target record created."
}
ツールの使用方法
MCP ツールのリファレンス
| ツール | 使用する場面 |
|---|---|
SN-Natural-Language-Search | 説明を基に抽出レコードまたはテンプレートを検索する |
SN-Query-Table | テンプレート、抽出、結果、フィールドマッピングを照会する |
SN-Get-Record | 特定の抽出レコードまたはテンプレートレコードを取得する |
SN-Create-Record | テンプレート、フィールドマッピング、抽出リクエストを作成する |
SN-Update-Record | 抽出ステータスの更新、結果の検証、データの修正を行う |
SN-Add-Work-Notes | 抽出結果と処理メモを記録する |
REST API リファレンス
| エンドポイント | メソッド | 用途 |
|---|---|---|
/api/now/table/sn_doc_template | GET/POST | 抽出テンプレートを照会または作成する |
/api/now/table/sn_doc_intelligence_field_map | GET/POST | フィールドマッピングを照会または作成する |
/api/now/table/sn_doc_intelligence_extraction | GET/POST/PATCH | 抽出リクエストを管理する |
/api/now/table/sn_doc_intelligence_extraction_result | GET/PATCH | 抽出結果を確認して修正する |
/api/now/table/sys_attachment | GET | ドキュメント添付ファイルを照会する |
/api/now/attachment/{sys_id}/file | GET | ソースドキュメントをダウンロードする |
ベストプラクティス
- ドキュメントの種類ごとにテンプレートを用意する: ドキュメント形式ごとに個別のテンプレートを作成します。大量の請求書を処理する場合、すべての請求書に単一のテンプレートを使うより、取引先ごとのテンプレートを使うほうが適切です
- 適切なしきい値を設定する: 信頼度しきい値を 0.85 に設定して開始し、エラー率に基づいて調整します。しきい値を下げると処理量は増えますが、手動レビューがより多く必要になります
- トレーニングデータ: 抽出精度を最適化するため、テンプレートごとに少なくとも 20~30 件のサンプルドキュメントを用意します
- 検証ルール: 正規表現パターン、参照ルックアップ、フィールド間の検証(例:合計 = 小計 + 税)を使って、抽出エラーを自動的に検出します
- バッチ処理: インスタンスへのパフォーマンス影響を避けるため、ピーク時間外にドキュメントをバッチで送信します
- 精度を監視する: 抽出精度の指標を継続的に追跡します。精度が 90% を下回った場合はモデルを再トレーニングします
- 例外を処理する: 抽出に失敗したドキュメントについては、
sn_doc_intelligence_taskに抽出タスクを作成し、データ入力担当者に割り当てます - 安全に取り扱う: ドキュメント添付ファイルがデータ保持ポリシーに準拠していることを確認します。処理後は一時的な抽出データを削除します
トラブルシューティング
「抽出テンプレートが見つかりません」
原因: テンプレートが無効になっているか、ドキュメントの種類が一致していません
解決策: sn_doc_template を active=true で照会して、利用可能なテンプレートを確認します。document_type フィールドが送信内容と一致していることを確認します。
「すべてのフィールドの信頼度スコアが低い」
原因: ドキュメントの品質が低い(解像度が低い、スキャンが傾いている、手書き文字がある)、またはテンプレートが一致していません
解決策: ドキュメントの解像度を確認してください(OCR には最低 300 DPI が必要です)。ドキュメントがテンプレートで想定されているレイアウトと一致することを確認してください。標準外の形式の場合は、新しいテンプレートの作成を検討してください。
「フィールドマッピングの検証に失敗する」
原因: 抽出された値が検証用正規表現または対象フィールドの型と一致していません
解決策: sn_doc_intelligence_field_map の検証ルールを確認してください。正当な差異(ベンダーごとに請求書番号の形式が異なる場合など)に対応できるよう、正規表現を更新してください。
「抽出が処理中の状態から進まない」
原因: Document Intelligence エンジンのタイムアウト、または処理キューの滞留です
解決策: sn_doc_intelligence_extraction レコードでエラーメッセージを確認してください。Document Intelligence エンジンが稼働していることを確認します。Document Intelligence > Dashboard に移動してください。必要に応じて、抽出を再送信してください。
「抽出レコードが重複している」
原因: 同じドキュメントが複数回送信されています
解決策: 送信する前に、sn_doc_intelligence_extraction を source_document=[attachment_sys_id]^state!=failed でクエリし、既存の抽出がないか確認してください。
例
例 1:請求書データの抽出
入力: ServiceNow にアップロードされた Acme Corp の PDF 請求書
プロセス:
- テンプレートを特定します:「Vendor Invoice Template」(sys_id: abc123)
- 添付ファイルへの参照を指定して抽出を送信します
- 結果:14 個のフィールドを抽出、平均信頼度は 0.92
- しきい値未満のフィールドは 2 個:PO Number(0.78)、Line Description(0.81)
- 手動レビューで PO Number が正しいことを確認し、Line Description を修正します
sn_proc_invoiceに対象の請求書レコードを作成します
例 2:契約メタデータの抽出
入力: 法務レビュー用の署名済み MSA PDF
プロセス:
Tool: SN-Create-Record
Parameters:
table_name: sn_doc_intelligence_extraction
fields:
template: [contract_template_sys_id]
source_document: [attachment_sys_id]
document_type: contract
state: submitted
short_description: "Extract metadata from Acme Corp MSA"
抽出されるフィールド: 契約当事者、発効日、契約期間、総額、準拠法、自動更新フラグ、通知期間です。ast_contract レコードに自動的に入力されます。
例 3:税務フォームの一括処理
入力: ベンダー登録用にアップロードされた 50 件の W-9 フォーム
プロセス:
- 未処理の W-9 添付ファイルをすべてクエリします
- W-9 テンプレートを使用して一括抽出を送信します
- 進行状況を監視します:47 件は正常に抽出され、3 件は手動レビューが必要です(手書きの記入)
- 抽出された TIN、正式名称、住所を使用して、
core_companyにベンダーレコードを作成します - 3 件の例外を
sn_doc_intelligence_task経由でデータ入力チームに振り分けます
一括処理のステータスを確認するクエリ:
Tool: SN-Query-Table
Parameters:
table_name: sn_doc_intelligence_extraction
query: template=[w9_template_sys_id]^sys_created_on>=2026-03-19
fields: sys_id,number,state,confidence_score,error_message
limit: 50
関連スキル
document/smart-documents- ドキュメントテンプレート、バージョン管理、自動生成を管理しますlegal/contract-analysis- 抽出された契約データを分析し、リスクと条項を確認しますlegal/contract-obligation-extraction- 契約ドキュメントから義務を抽出しますprocurement/invoice-management- 抽出された請求書データを買掛金ワークフローで処理しますdevelopment/data-import- 抽出データを ServiceNow テーブルに一括インポートします