API Reference · Key Extraction v3
Result
ดึงผลเมื่องานเป็น completed เท่านั้น ค่ากับหลักฐานแยกกัน: data ไม่มีพิกัด field_metadata มี status, confidence และ bbox
Get result
GET
https://backend.aksonocr.com/api/v3/key-extract/jobs/{job_id}/result| HTTP | ความหมาย |
|---|---|
| 200 | ผลพร้อมใช้ |
| 409 | result_not_ready — งานยังไม่ completed |
| 410 | result_expired — เลย retention |
| 404 | job_not_found |
Response 200
json
{"job_id": "ext_01JBY7...","client_reference": "invoice-2026-001","needs_review": true,"data": {"invoice_no": "IV-2026-001","vendor": { "name": "Example Co., Ltd.", "tax_id": "0105559999999" },"line_items": [{ "description": "A4 paper", "quantity": 2, "unit_price": 500.0, "amount": 1000.0 }]},"field_metadata": {"/invoice_no": {"status": "verified","confidence": 0.98,"regions": [{ "page": 1, "bbox": [0.684, 0.072, 0.912, 0.104], "text": "IV-2026-001" }]},"/line_items/0/amount": {"status": "verified","confidence": 0.93,"regions": [{ "page": 1, "bbox": [0.811, 0.424, 0.928, 0.452], "text": "1,000.00" }]}},"pages": [{"page": 1,"input_index": 0,"page_in_input": 1,"file_id": "file_01J9...","width": 1240,"height": 1754}],"validation": {"missing_required": [],"below_threshold": ["/payment_schedule/0/due_date"]},"warnings": [],"usage": { "pages_processed": 1, "credits_micros": 0 },"processor": {"pipeline_version": "2026-09-03","ocr_version": "ppocr-th-v3","extractor_version": "key-extract-v3","confidence_version": "field-calibration-v1"},"request_id": "req_01J..."}
ฟิลด์ระดับผล
| ฟิลด์ | ชนิด | รายละเอียด |
|---|---|---|
data | object | ค่าตาม schema — missing scalar = null, ตารางว่าง = [] |
field_metadata | map | คีย์เป็น JSON Pointer ที่ขึ้นต้นด้วย / |
pages | array | ขนาดพิกเซลต่อหน้าสำหรับแปลง bbox |
needs_review | boolean | true ถ้ามี required หายหรือต่ำกว่าเกณฑ์ |
validation.missing_required | string[] | pointer ของฟิลด์ required ที่เป็น null |
validation.below_threshold | string[] | pointer ที่ confidence < review_threshold |
usage.credits_micros | integer | เครดิตเป็นจำนวนเต็ม ไม่ใช้ float |
JSON Pointer
| ชนิด | คีย์ |
|---|---|
| สเกลาร์ | /invoice_no |
| ซ้อนใน object | /vendor/tax_id |
| เซลล์ตาราง | /line_items/0/amount |
| สมาชิกลิสต์สเกลาร์ | /reference_numbers/2 |
มี metadata เฉพาะใบ ไม่มีรายการรวมทั้งตารางหรือทั้งแถว ทุกใบใน data มี entry เสมอ ถ้าไม่พบค่า: status: "not_found", confidence: null, regions: []
field_metadata entry
| ฟิลด์ | ชนิด | รายละเอียด |
|---|---|---|
status | enum | verified | inferred | needs_review | not_found |
confidence | number | null | 0–1 คาลิเบรตแล้ว ไม่ใช่ raw OCR score |
regions | array | ว่างเมื่อ evidence=none หรือ not_found |
regions[].page | integer | หน้าเอกสารรวม เริ่มที่ 1 |
regions[].bbox | number[4] | ดูด้านล่าง |
regions[].text | string? | ข้อความต้นทางของกรอบนั้น |
Bounding box contract
รูปแบบเดียว
[x_min, y_min, x_max, y_max] · float ช่วง 0–1 · มุมบนซ้ายของหน้าต้นฉบับ หลังหมุนตาม EXIF/PDF ก่อน deskew/crop ภายใน| กติกา | รายละเอียด |
|---|---|
| หลาย region | ฟิลด์หนึ่งมีได้หลายกรอบ รวมคนละหน้า |
| แปลงเป็นพิกเซล | x * pages[i].width, y * pages[i].height |
| evidence=none | regions เป็น [] เสมอ แต่ status/confidence ยังมี |
| ที่มา | จากเรขาคณิต OCR/layout ที่ยืนยันกับ span — โมเดลห้าม invent พิกัด |
javascript
function toPixels(bbox, width, height) {const [x1, y1, x2, y2] = bbox;return {x: x1 * width,y: y1 * height,width: (x2 - x1) * width,height: (y2 - y1) * height,};}const meta = result.field_metadata["/invoice_no"];const page = result.pages.find((p) => p.page === meta.regions[0].page);const box = toPixels(meta.regions[0].bbox, page.width, page.height);
status ของฟิลด์
| status | ความหมาย |
|---|---|
verified | ค่ายึดกับ region ต้นทางอย่างน้อยหนึ่งจุด |
inferred | อนุมานจากบริบท ไม่คาดหวัง span ตรงตัว |
needs_review | มีค่าแต่คะแนนหรือ grounding คลุมเครือ |
not_found | ไม่พบ — data ของฟิลด์นั้นเป็น null |
สถานะที่ไม่รู้จักในอนาคตให้ถือเสมือน needs_review
ตัวอย่าง overlay และสูตรสำเร็จอยู่ที่ คู่มือ · การดึงผลลัพธ์