mcpField
D
document-extraction

document-extraction

github.com/happy-technologies-llcドキュメント4141 回インストール2 日前に更新
リポジトリ

document-extraction について

ServiceNow Document Intelligenceで、文書から構造化フィールドを抽出するパイプラインを設定するスキルです。テンプレートや項目マッピング、信頼度に応じた確認、検証と修正を扱います。

主な機能

  1. 01文書抽出テンプレートを設定
  2. 02抽出項目をテーブル列にマッピング
  3. 03抽出リクエストを送信・監視
  4. 04信頼度と検証結果を確認
  5. 05結果を修正して対象レコードに反映

活用シーン

  1. 01請求書の一括処理
  2. 02契約メタデータの抽出
  3. 03フォームをServiceNowレコードとしてデジタル化
  4. 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_contractCOI の追跡
作業指示書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_templateGET/POST抽出テンプレートを照会または作成する
/api/now/table/sn_doc_intelligence_field_mapGET/POSTフィールドマッピングを照会または作成する
/api/now/table/sn_doc_intelligence_extractionGET/POST/PATCH抽出リクエストを管理する
/api/now/table/sn_doc_intelligence_extraction_resultGET/PATCH抽出結果を確認して修正する
/api/now/table/sys_attachmentGETドキュメント添付ファイルを照会する
/api/now/attachment/{sys_id}/fileGETソースドキュメントをダウンロードする

ベストプラクティス

  • ドキュメントの種類ごとにテンプレートを用意する: ドキュメント形式ごとに個別のテンプレートを作成します。大量の請求書を処理する場合、すべての請求書に単一のテンプレートを使うより、取引先ごとのテンプレートを使うほうが適切です
  • 適切なしきい値を設定する: 信頼度しきい値を 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 請求書

プロセス:

  1. テンプレートを特定します:「Vendor Invoice Template」(sys_id: abc123)
  2. 添付ファイルへの参照を指定して抽出を送信します
  3. 結果:14 個のフィールドを抽出、平均信頼度は 0.92
  4. しきい値未満のフィールドは 2 個:PO Number(0.78)、Line Description(0.81)
  5. 手動レビューで PO Number が正しいことを確認し、Line Description を修正します
  6. 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 フォーム

プロセス:

  1. 未処理の W-9 添付ファイルをすべてクエリします
  2. W-9 テンプレートを使用して一括抽出を送信します
  3. 進行状況を監視します:47 件は正常に抽出され、3 件は手動レビューが必要です(手書きの記入)
  4. 抽出された TIN、正式名称、住所を使用して、core_company にベンダーレコードを作成します
  5. 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 テーブルに一括インポートします

コメント