文書を保護
PDFまたはDOCXファイルをアップロードして文書ジョブを実行し、マスキング済みPDF、保護済みテキスト、エンティティをダウンロードします。
ネイティブPII API v2の文書ジョブ
文書ジョブはPDFまたはDOCXファイルを読み取ります。マスキング済みPDF、保護済みテキスト、エンティティを返します。ジョブはバッチの重みでバックグラウンド実行されます。
文書ジョブの流れ
- ファイルをアップロード:
POST /v2/uploads - アップロードIDで文書ジョブを開始:
POST /v2/jobs - 状態がsucceededになるまでジョブを確認:
GET /v2/jobs/{id} - 成果物をダウンロードしてから、ジョブを削除します。
コンテンツタイプが重要です
ファイルのバイト列を送信する形式: application/pdf またはDOCXメディアタイプ。文書の上限は10 MBです。
ファイルをアップロードしてジョブを開始
UPLOAD=$(curl -s https://api.getshinrai.com/v2/uploads -H "Authorization: Bearer $SHINRAI_API_KEY" \
-H "Content-Type: application/pdf" --data-binary @contract.pdf | python3 -c 'import sys, json; print(json.load(sys.stdin)["id"])')
JOB=$(curl -s https://api.getshinrai.com/v2/jobs -H "Authorization: Bearer $SHINRAI_API_KEY" -H "Content-Type: application/json" \
-H "Idempotency-Key: contract-4815" \
-d '{"kind": "document", "inputs": [{"kind": "file", "source": {"upload": "'$UPLOAD'"}, "language": "de"}]}' \
| python3 -c 'import sys, json; print(json.load(sys.stdin)["id"])')応答は202で、ジョブとLocationヘッダーを返します。同じIdempotency-Keyと本文による再試行は同じジョブを返し、再度課金されません。
状態を確認して成果物をダウンロード
curl -s https://api.getshinrai.com/v2/jobs/$JOB -H "Authorization: Bearer $SHINRAI_API_KEY"
curl -s https://api.getshinrai.com/v2/jobs/$JOB/artifacts/protected -H "Authorization: Bearer $SHINRAI_API_KEY" -o contract.redacted.pdf
curl -s https://api.getshinrai.com/v2/jobs/$JOB/artifacts/text -H "Authorization: Bearer $SHINRAI_API_KEY" -o contract.protected.txt
curl -s -X DELETE https://api.getshinrai.com/v2/jobs/$JOB -H "Authorization: Bearer $SHINRAI_API_KEY"ステータスレスポンスで返された成果物URLを使用します。ジョブと成果物には、ジョブを作成したアカウントだけがアクセスできます。
| 成果物 | コンテンツ |
|---|---|
protected | マスキング済みPDF:144 dpiの画像のみのページで、保護対象のエンティティごとに黒い枠があり、テキストレイヤーはありません |
text | 文書の保護済みテキスト |
entities | JSON:抽出テキスト内の位置を持つエンティティ |
mapping | JSON:元の値とその置換値(要求した場合のみ) |
マスキング済みPDFにはテキストレイヤーがありません。保護済みテキストはtext成果物から取得してください。マッピングは値を復元する必要がある場合にのみ要求してください。マッピングには元の値が含まれます。
サービスが保持するもの
- アップロードは、それを読む最後のジョブが終了した時点で削除されます。
- アップロードを
POST /v2/uploads?keep=trueで作成すると24時間保持され、それを読むジョブごとに期間が延長されます。 - ジョブを削除すると、他のジョブが読んでいない限り、保持指定のアップロードも削除されます。
- 結果は24時間保持されます。早く削除するにはジョブを削除してください。
- 他のアカウントはあなたのジョブを読み取れません。404が返されます。
失敗を安全に処理
保護に失敗した場合は、元のファイルを転送しないでください。
| 状態 | 意味 |
|---|---|
415 | ファイルがPDFでもDOCXでもないか、バイト列がメディアタイプと一致しません。 |
413 | ファイルが10,000,000バイトを超えています。 |
402 | 残高のレコード数が不足しています。 |
422 | リクエストが無効です(例:アップロードの有効期限切れ)。 |
429 | アカウントのジョブ用ストレージが上限に達しています。どの上限かは limit_name に示されます。完了したジョブを削除してください。 |
429 | ジョブのキューが満杯です。Retry-Afterヘッダーの時間だけ待ってください。 |
503 | ジョブサービスが利用できないか、そのストレージが満杯です。Retry-Afterヘッダーの時間が過ぎてから再試行してください。 |
- 読み取れない文書があるとジョブは失敗します。その場合、ジョブの状態はfailedになり、エラーコードが付きます。
- エラーが再試行で成功し得ると示す場合にのみ再試行し、Retry-Afterヘッダーの時間だけ待機してください。
料金
文書ジョブの料金は、抽出テキストのレコード数にバッチの重み0.5を掛けたものです。ジョブ開始時に残高が1レコード以上必要です。