← กลับหน้า Integrate · Response Reference ทุก doc_type
สำหรับทีม dev · อ้างอิง DOCTYPE_RESPONSE_REFERENCE.md (regenerate 6/9) และหน้า /schemas
เส้นทาง วิธีเรียก และการยืนยันตัวตนไม่เปลี่ยน (v1 31 เส้น · legacy 5 เส้น เท่าเดิม) · การเปลี่ยนแปลงทั้งหมดอยู่ในคำตอบและเป็นแบบ "เพิ่มเข้า" — key เดิมยังอยู่ครบ · มี 2 พฤติกรรมที่ต้องอ่านให้ดี (ข้อ 4 และ 5)
GET /api/v1/jobs/{id} (และ GET /api/jobs/{id})| key | เดิม | ตอนนี้ |
|---|---|---|
needs_review |
null | true/false ทุกงานที่ done (กติกาเดียวกับ payload ของ webhook) |
review_reasons |
null | รายการเหตุผล (ดูข้อ 2) |
model_used · pages[].ocr_model · extraction._model |
ชื่อโมเดลภายใน | ชื่อกลาง เช่น "AI Gateway OCR" "AI Gateway Local" "AI Gateway Semantic" — อย่าผูกโค้ดกับชื่อโมเดล |
review_reasons (ค่าใหม่)| ค่า | ความหมาย | ควรทำอะไร |
|---|---|---|
extraction_warnings |
มี extraction._warnings อย่างน้อยหนึ่งฟิลด์ (ดูข้อ 4) |
อ่าน _warnings แล้วให้คนตรวจฟิลด์นั้น |
fields_withheld |
มี extraction._rejected — ระบบอ่านได้ค่าที่ไม่น่าเชื่อถือจึงไม่ส่ง (ค่าดิบและเหตุผลอยู่ใน _rejected) |
แสดงให้คนตรวจ |
ocr_runaway |
OCR หน้าใดหน้าหนึ่งอ่านวนซ้ำ (เกิน 20,000 ตัวอักษร) แม้พยายามอ่านซ้ำแล้ว | ข้อความหน้านั้นเชื่อถือไม่ได้ |
ocr_sparse |
เอกสารประเภทข้อความหนักแต่อ่านได้น้อยมากและคุณภาพภาพถูกตัดสินว่า reject | สแกนใหม่ |
ocr_engine_fallback |
หน้านั้นอ่านด้วยเอนจินสำรอง (เอนจินหลักตาย) | คุณภาพอาจต่างจากปกติ |
ocr_cloud_fallback |
หน้านั้นอ่านด้วย OCR บน cloud แทนเอนจินหลัก | คุณภาพอาจต่างจากปกติ |
validation_failed · low_classify_confidence · doc_type_unknown · suspected_hallucination |
เหมือนเดิม |
extraction และ pages[]| key | อยู่ที่ | ความหมาย |
|---|---|---|
_fill |
extraction |
ฟิลด์ที่ว่างจากตัวสกัดหลักแล้วถูกเติมโดย tier เสริม: asked filled[] empties[] dropped_ungrounded[] skipped[] tier ms · ค่าที่เติมทุกตัวต้องปรากฏในข้อความ OCR มิฉะนั้นถูกทิ้ง (dropped_ungrounded) |
_warnings.<field> |
extraction |
คำเตือนต่อฟิลด์ (ข้อ 4) |
_rejected.<field> |
extraction |
ค่าที่ถูกถอนพร้อม value reason note · เหตุผลใหม่: not_in_document (ค่าไม่มีในข้อความ = โมเดลมโน) registration_equals_request (เลขทะเบียนไปซ้ำเลขคำขอ) |
ocr_retry |
pages[] |
หน้านี้ถูกอ่านซ้ำเพราะรอบแรกวนซ้ำ: method (structure_prompt) first_chars second_chars still_runaway |
text_source = "ocr_structure_retry" |
pages[] |
ข้อความหน้านี้มาจากการอ่านซ้ำ (รูปแบบอาจต่างจากปกติเล็กน้อย) |
ocr_engine_fallback |
pages[] |
{from, reason} เมื่อหน้านี้ถูกอ่านด้วยเอนจินสำรอง |
ใช้กับ trade_reg.registration_number · full_fs.company.tax_id · pnd50.tax_id · boj5.company_tid
| ที่อ่านได้ | ค่าที่ส่ง | _warnings.<field>.reason |
ฟิลด์ประกอบ |
|---|---|---|---|
| 13 หลัก ผ่าน check digit | ค่านั้น | ไม่มี | |
| 13 หลัก check digit ไม่ผ่าน แต่พิมพ์อยู่ในเอกสาร | ค่านั้น (ไม่ null แล้ว) | checksum_failed |
<field>_checksum_pass: false |
| 14 หลัก (พิมพ์เกิน) | ค่านั้น | digits_over_13 |
digits, over |
| 12 หลัก (พิมพ์ขาด/อ่านตก) และไม่มีสำเนาที่ครบในเอกสาร | ค่านั้น | digits_under_13 |
digits, under |
| 12 หลักแต่ระบบเติมหลักที่หายด้วย check digit (ภ.ง.ด.50 / บอจ.5) | ค่า 13 หลักที่เติมแล้ว | digit_recovered |
position, digit, value_as_read |
| ใช้สำเนาที่ครบ 13 หลักในเอกสาร แต่จุดอื่นในใบเดียวกันอ่านได้ขาด/เกิน | ค่า 13 หลัก | other_copies_off |
variants[] |
| ค่าที่ไม่มีในข้อความเลย | null |
(อยู่ใน _rejected reason not_in_document) |
ผลต่อโค้ดฝั่งทีม: ถ้ามี validation ว่า "ต้อง 13 หลัก" ให้เปลี่ยนเป็นอ่าน _warnings.<field> ประกอบ ระบบไม่ตัดสินว่าเลขนั้นถูกหรือผิด (นโยบาย: แสดงตามที่เห็น ให้ผู้ใช้ตรวจกับต้นทาง) · note ในทุก warning เป็นภาษาไทยพร้อมแสดงผู้ใช้ได้
_fill) และจากการเลิกถอนค่าที่ check digit ไม่ผ่าน — ทุกกรณีมี _fill หรือ _warnings กำกับ200 พร้อมผลเก่าแทน 202 — เหมือนเดิม (X-Force-Reextract ยังไม่มีผล)trade_reg.issuing_office ตอบเป็นชื่อสำนักงานจริง (เช่น เทศบาลตำบลปะโค) ไม่ใช่ป้าย "สำนักงานทะเบียนพาณิชย์"POST /api/v1/extract (ฟอร์ม file external_id applicant_id และตัวเลือกเดิม) · การยืนยันตัวตน · rate limit (ต่อคีย์และต่อ tenant) · webhook event extract.done (payload มี needs_review/review_reasons มาแต่เดิม — ค่าใหม่ตามข้อ 2) · /api/v1/preflight · /api/v1/compare
{
"status": "done",
"doc_type": "trade_reg",
"needs_review": true,
"review_reasons": ["extraction_warnings"],
"model_used": "AI Gateway OCR",
"extraction": {
"registration_number": "34120000181641",
"_warnings": {
"registration_number": {
"value": "34120000181641", "reason": "digits_over_13", "digits": 14, "over": 1,
"note": "อ่านได้ 14 หลัก เกิน 1 หลักจาก 13 หลักที่เอกสารประเภทนี้ต้องใช้ · แสดงตามที่พิมพ์ โปรดตรวจกับผู้ออกเอกสาร"
}
},
"_fill": {"tier": "t1", "asked": 2, "filled": ["issuing_office"], "empties": ["issuing_office", "business_type"],
"dropped_ungrounded": ["business_type"], "skipped": [], "ms": 3100}
},
"pages": [{"page_num": 1, "ocr_model": "AI Gateway OCR", "ocr_tier": "t3", "text_source": "ocr",
"ocr_engine_fallback": null}]
}