แปลง PDF เป็น JSON ตามโครงสร้างที่คุณกำหนด
การย้ายยอดรวมหรือเลขประจำตัวผู้เสียภาษีจาก PDF เข้าระบบ หมายถึงการไล่หาค่าบนหน้าที่เลย์เอาต์เปลี่ยนไปตามผู้ส่งแต่ละราย
Paxa Document Extraction รับ Schema ของฟิลด์ที่ตั้งชื่อและกำหนดชนิดไว้ แล้วคืนเป็น JSON ที่กรอกค่าจากหน้าเอกสาร แต่ละค่าคือข้อความที่พิมพ์อยู่ ซึ่งอ่านตามชนิดของฟิลด์ หรือเป็น null พร้อมเหตุผล อ่านภาษาไทยเป็นหลัก และอ่านภาษาอื่นได้ด้วย
ใบกำกับภาษีหนึ่งใบ กับ Schema หนึ่งชุด#
ใบกำกับภาษีตัวอย่างจากหน้า OCR กับ Schema ที่ใช้อ่าน และฟิลด์ที่ API คืนให้ ฟิลด์เป็นค่าที่บันทึกจากการเรียกจริงโดยไม่มีการแก้ไข

ใบกำกับภาษีภาษาไทยหนึ่งหน้า จัดพิมพ์ขึ้นเป็นตัวอย่างและส่งไปเป็นไฟล์ PNG
{ "seller": { "name": "บริษัท ศตวรรษการค้า จำกัด", "tax_id": "0105564078127", "address": "๙๙ ถนนพระราม ๙ แขวงห้วยขวาง เขตห้วยขวาง กรุงเทพมหานคร ๑๐๓๑๐" }, "buyer": { "name": "บริษัท กรุณาไทย จำกัด", "tax_id": "0105561045678", "address": "๑๒๓ ซอยสุขุมวิท ๖๓ แขวงคลองตันเหนือ เขตวัฒนา กรุงเทพมหานคร ๑๐๑๑๐" }, "book_number": "001", "invoice_number": "0042", "issue_date": "2026-06-30", "items": [ { "description": "เสื้อโปโลพนักงานปักโลโก้", "quantity": 12, "unit_price": 120, "amount": 1440 }, { "description": "แก้วเซรามิกพิมพ์ลาย", "quantity": 5, "unit_price": 30, "amount": 150 }, { "description": "กล่องบรรจุภัณฑ์", "quantity": 3, "unit_price": 20, "amount": 60 } ], "subtotal": 1650, "vat": 115.5, "total": 1765.5, "total_in_words": 1765.5 }
{ "fields": { "seller": { "type": "object", "fields": { "name": { "type": "string", "required": true }, "tax_id": { "type": "thai_id", "required": true }, "address": { "type": "string" } } }, "buyer": { "type": "object", "fields": { "name": { "type": "string", "required": true }, "tax_id": { "type": "thai_id" }, "address": { "type": "string" } } }, "book_number": { "type": "string" }, "invoice_number": { "type": "string", "required": true }, "issue_date": { "type": "date", "required": true }, "items": { "type": "array", "max_items": 9, "items": { "type": "object", "fields": { "description": { "type": "string", "required": true }, "quantity": { "type": "number" }, "unit_price": { "type": "number" }, "amount": { "type": "number", "required": true } } } }, "subtotal": { "type": "number" }, "vat": { "type": "number", "required": true }, "total": { "type": "number", "required": true }, "total_in_words": { "type": "amount_words" } } }
paxa-doc-extract-v1 · บันทึกเมื่อ 12 ก.ย. 2569
จากไฟล์เป็น JSON#
หนึ่งคำขอต่อเอกสาร ได้ฟิลด์ที่กรอกแล้วในคำตอบเดียว ไม่ต้องคอยถามสถานะงาน
เขียน Schema
ตั้งชื่อแต่ละฟิลด์และกำหนดชนิด เช่น string, number, date หรือชนิดสำหรับเอกสารไทยอย่าง thai_id และ amount_words แล้วตั้ง required ให้ฟิลด์ที่เอกสารทุกฉบับต้องมี
ส่งไฟล์
POST ไปที่ /v1/extract เป็น base64 พร้อม Schema รองรับ PDF, PNG, JPEG และ WebP สูงสุด 20 หน้าและ 10 MiB
อ่านฟิลด์
ฟิลด์กลับมาในโครงสร้างเดียวกับ Schema และ status เป็น complete เมื่อฟิลด์ required ทุกช่องมีค่า ตั้ง include_evidence เป็น true แล้วแต่ละค่าจะมาพร้อมข้อความที่พิมพ์อยู่ซึ่งเป็นที่มาของค่านั้น
Paxa Document Extraction ราคา $13 ต่อ 1,000 หน้า สำหรับ Schema ไม่เกิน 50 ฟิลด์ และ $20 เมื่อเกินกว่านั้น
คำถาม#
รองรับไฟล์อะไรบ้าง
PDF, PNG, JPEG และ WebP สูงสุด 20 หน้าและ 10 MiB ต่อคำขอ ส่งเอกสารหนึ่งฉบับต่อคำขอ ไฟล์ที่รวมหลายฉบับไว้จะได้ฟิลด์กลับมาชุดเดียว
Schema ใหญ่ได้แค่ไหน
ไม่เกิน 100 ฟิลด์ย่อย และไม่เกิน 128 KB เมื่อเขียนเป็น JSON ฟิลด์ย่อยใน Array นับซ้ำตามจำนวนช่องที่ max_items อนุญาต
ถ้าหน้าเอกสารไม่มีค่านั้นจะเป็นอย่างไร
ฟิลด์นั้นกลับมาเป็น null ฟิลด์ required ที่เป็น null จะอยู่ใน missing และทำให้ status เป็น incomplete ส่วนค่าที่พิมพ์อยู่แต่ไม่ผ่านการตรวจตามชนิด เช่น เลขตรวจสอบไม่ถูกต้อง จะเป็น null พร้อมเหตุผลใน unverified
มีชนิดฟิลด์อะไรบ้างสำหรับเอกสารไทย
thai_id อ่านเลขประจำตัว 13 หลักและตรวจเลขตรวจสอบ date อ่านวันที่แบบวันขึ้นก่อน ได้ทั้งพุทธศักราชและคริสต์ศักราช amount_words อ่านจำนวนเงินที่เขียนเป็นตัวอักษร ส่วน province, bank และ insurer จับคู่กับรายชื่อที่มีอยู่ในระบบ
เริ่มต้นด้วยเครดิตฟรี
เข้าสู่ระบบด้วย Google, GitHub หรือ Hugging Face แล้วใช้เครดิตฟรี 100 เครดิตกับข้อความของคุณเอง