OCR ภาษาไทยสำหรับใบกำกับภาษีและใบเสร็จ
อ่านใบกำกับภาษี ใบเสร็จ และใบวางบิลจากคู่ค้าออกมาเป็น Markdown หรือบล็อกที่มีชนิดข้อมูล แล้วบันทึกลงระบบบัญชีได้โดยไม่ต้องคีย์เอง
ผลลัพธ์ที่ได้กลับมา
# ใบกำกับภาษี / TAX INVOICE
**ผู้ขาย** บริษัท ศตวรรษการค้า จำกัด (สำนักงานใหญ่)
เลขประจำตัวผู้เสียภาษีอากร 0 1055 64078 12 7
| รายการ | จำนวน | หน่วยละ | จำนวนเงิน |
| --- | ---: | ---: | ---: |
| กระดาษถ่ายเอกสาร A4 80 แกรม | ๒๐ | 105.00 | 2,100.00 |
| หมึกพิมพ์ดำ | ๔ | 890.00 | 3,560.00 |
รวมเป็นเงิน 5,660.00
ภาษีมูลค่าเพิ่ม 7% 396.20
**จำนวนเงินรวมทั้งสิ้น 6,056.20**รายการแปดอย่างตามมาตรา 86/4 เรียงตามลำดับการอ่าน โดยบรรทัดภาษีมูลค่าเพิ่มแยกออกจากยอดรวม
heading ร้านกาแฟบ้านสวน
paragraph เลขประจำตัวผู้เสียภาษี 0 9955 12034 55 5
table 3 rows x 3 columns
paragraph รวม 245.00 บาท
paragraph เงินสด 300.00 ทอน 55.00ผลลัพธ์เป็นบล็อกที่มีชนิดข้อมูลแทน Markdown กฎการบันทึกบัญชีจึงอ่านตารางได้โดยไม่ต้องแยกข้อความรอบข้าง
## หน้า 1
ใบแจ้งยอดประจำเดือน มิถุนายน ๒๕๖๙
## หน้า 2
| วันที่ | เลขที่เอกสาร | จำนวนเงิน |
| --- | --- | ---: |
| ๐๓/๐๖/๖๙ | INV-24418 | 12,400.00 |
| ๑๗/๐๖/๖๙ | INV-24506 | 8,150.00 |หนึ่งคำขอรับได้ถึง 50 หน้า และผลลัพธ์ยังแยกตามหน้าเหมือนต้นฉบับ
ผลการอ่านด้านบนเป็นตัวอย่างของรูปแบบผลลัพธ์ ไม่ได้บันทึกมาจากโมเดลจริง หน้า OCR มีผลการอ่านตัวอย่างจริงของโมเดลพร้อมวันที่บันทึกกำกับไว้
วิธีต่อเข้ากับระบบของคุณ
ใบกำกับภาษีของไทยมีรูปแบบที่กฎหมายกำหนดไว้ มาตรา 86/4 แห่งประมวลรัษฎากรกำหนดรายการที่ใบกำกับภาษีแบบเต็มรูปต้องมี ทั้งคำว่าใบกำกับภาษี ชื่อ ที่อยู่ และเลขประจำตัวผู้เสียภาษีของผู้ขาย ชื่อและที่อยู่ของผู้ซื้อ เลขที่เอกสาร รายการสินค้าหรือบริการ จำนวนภาษีมูลค่าเพิ่มที่แยกออกมาให้ชัด และวันที่ออก อีกทั้งต้องจัดทำเป็นภาษาไทย เงินบาท และเลขไทยหรือเลขอารบิก ข้อกำหนดนี้เป็นเรื่องดีสำหรับคนอ่าน แต่เป็นเรื่องยากสำหรับการจับรูปแบบด้วยกฎตายตัว เพราะข้อมูลแปดอย่างเดียวกันนี้อยู่คนละตำแหน่งในแบบฟอร์มของคู่ค้าแต่ละราย และอยู่ในภาษาที่เขียนติดกันโดยไม่เว้นวรรคระหว่างคำ
ส่งเอกสารในรูปแบบที่ได้รับมา
แปลงไฟล์ PDF หรือรูปถ่ายเป็น base64 แล้วส่งได้เลย ระบบอ่านรูปแบบไฟล์จากตัวไบต์ ไฟล์สแกน รูปถ่ายจากมือถือ และ PDF ของคู่ค้าจึงใช้คำขอเดียวกัน รับได้ถึง 50 หน้า และ 10 MB
เลือกรูปแบบผลลัพธ์ที่ระบบบัญชีต้องการ
Markdown ทำให้คนตรวจสอบอ่านเอกสารได้สะดวก ส่วนผลลัพธ์แบบ structured จะคืนบล็อกที่มีชนิดข้อมูล กฎการบันทึกบัญชีจึงอ่านตารางรายการได้โดยไม่ต้องแยกข้อความรอบข้าง
บันทึกข้อมูล และเก็บหน้าเอกสารไว้
เก็บข้อความที่ได้ไว้คู่กับไฟล์ต้นฉบับ การอ่านคิดตามจำนวนหน้า การอ่านซ้ำหลังแก้การจับคู่ฟิลด์จึงมีค่าใช้จ่ายเท่ากับครั้งแรก
สิ่งที่กฎหมายกำหนด และสิ่งที่ไม่ได้กำหนด
1 คำว่า ใบกำกับภาษี ในที่ที่เห็นได้เด่นชัด
2 ชื่อ ที่อยู่ เลขประจำตัวผู้เสียภาษีของผู้ขาย
3 ชื่อและที่อยู่ของผู้ซื้อ
4 เลขที่เอกสาร (และเล่มที่ ถ้ามี)
5 ชื่อ ชนิด ประเภท ปริมาณ และมูลค่า
6 จำนวนภาษีมูลค่าเพิ่ม แยกออกให้ชัดแจ้ง
7 วันเดือนปีที่ออก
8 ข้อความอื่นตามที่อธิบดีกำหนด
ไม่ได้กำหนด: การจัดวาง ลำดับบนหน้ากระดาษ แบบฟอร์ม
ถ้อยคำของป้ายกำกับ ระบบเลขในแต่ละช่องกฎหมายกำหนดว่าใบกำกับภาษีแบบเต็มรูปต้องมีข้อมูลอะไร แต่ปล่อยการออกแบบให้ผู้ขาย การดึงข้อมูลจึงเป็นเรื่องของการอ่าน และต้องอ่านได้กับทุกแบบฟอร์ม ส่วนมาตรา 86/6 รองรับใบกำกับภาษีอย่างย่อที่ใช้ในการขายปลีก
ค่าใช้จ่ายของงานเจ้าหนี้หนึ่งเดือน
| ปริมาณงาน | จำนวนหน้า | ค่าใช้จ่าย |
|---|---|---|
| ใบกำกับภาษีหนึ่งใบ | 1 | $0.0065 |
| หนึ่งคำขอเต็มเพดาน 50 หน้า | 50 | $0.33 |
| ใบกำกับภาษี 2,000 ใบต่อเดือน | ประมาณ $13 | |
คิดค่าบริการตามจำนวนหน้า หน้าละ 6.5 เครดิต ไม่มียอดขั้นต่ำต่อคำขอนอกเหนือจากหนึ่งหน้า ใบเสร็จหน้าเดียวจึงจ่ายเท่าหนึ่งหน้าพอดี
สิ่งที่ได้กลับมา และสิ่งที่ยังเป็นของคุณ
ผลการอ่าน
ทุกบรรทัดที่อ่านออกบนหน้าเอกสาร เรียงตามลำดับเดิมของเอกสาร
รูปแบบผลลัพธ์
Markdown สำหรับคนตรวจ หรือบล็อกที่มีชนิดข้อมูลสำหรับกฎการบันทึกบัญชีที่อยากได้ตารางแยกออกมา
การจับคู่ฟิลด์
การตัดสินว่าบล็อกไหนคือผู้ขายและบล็อกไหนคือยอดรวมเป็นเรื่องของโค้ดคุณ เพราะผังบัญชีของคุณคือที่ที่คำตอบนั้นอยู่
การอ่านหยุดตรงจุดที่ระบบบัญชีของคุณเริ่มต้น จึงไม่มีการจับคู่กับชื่อฟิลด์ของใครอยู่ในนี้เลย
สำหรับนักพัฒนา
หนึ่งคำขอต่อหนึ่งเอกสาร ค่าเริ่มต้นเป็น Markdown ส่วนแบบ structured คืนการอ่านชุดเดียวกันในรูปบล็อกที่มีชนิดข้อมูล
เอกสารอ้างอิง API ฉบับเต็ม# Encode without line wrapping: wrapped base64 breaks the JSON string. DOC=$(base64 < invoice.pdf | tr -d '\n') # --max-time covers a multi-page document; curl defaults to no limit. curl -X POST https://api.paxalabs.com/v1/ocr \ --max-time 300 \ -H "Authorization: Bearer $PAXA_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"document\": \"$DOC\", \"model\": \"paxa-ocr-lite-v1\"}"
DOC=$(base64 < invoice.pdf | tr -d '\n') curl -X POST https://api.paxalabs.com/v1/ocr \ --max-time 300 \ -H "Authorization: Bearer $PAXA_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"document\": \"$DOC\", \"model\": \"paxa-ocr-lite-v1\", \"output\": \"structured\"}"
import base64 import os import requests with open("invoice.pdf", "rb") as file: document = base64.b64encode(file.read()).decode() response = requests.post( "https://api.paxalabs.com/v1/ocr", headers={"Authorization": f"Bearer {os.environ['PAXA_API_KEY']}"}, json={"document": document, "model": "paxa-ocr-lite-v1"}, # A multi-page document can run for minutes; give it room. timeout=300, ) response.raise_for_status() body = response.json() print(body["pages"][0]["markdown"], body["usage"]["credits"], "credits")
เลขไทยกับการเขียนติดกัน คือโจทย์เดียวกันสองชั้น
ใบกำกับภาษีใบหนึ่งอาจเขียนจำนวนสินค้าด้วยเลขไทยและเขียนจำนวนเงินด้วยเลขอารบิกในบรรทัดเดียวกัน เพราะกฎหมายอนุญาตทั้งสองแบบ ภาษาไทยยังเขียนติดกันโดยไม่เว้นวรรคระหว่างคำ ชื่อผู้ขาย ที่อยู่ และคำบรรยายสินค้าจึงมาเป็นสายอักขระยาวชุดเดียวที่คนอ่านภาษาไทยเท่านั้นจะตัดคำได้ถูก ทั้งสองเรื่องเป็นเรื่องปกติสำหรับคนไทย และทั้งสองเรื่องคือจุดที่การจับรูปแบบด้วยเทมเพลตเริ่มเชื่อถือไม่ได้
คำถามที่พบบ่อย
ระบบคืนค่าเป็นฟิลด์ หรือเป็นข้อความ
เป็นข้อความในรูปแบบที่คุณเลือก Markdown จะรักษาโครงสร้างของเอกสารไว้ ส่วนผลลัพธ์แบบ structured คืนบล็อกที่มีชนิดข้อมูล ทั้งหัวข้อ ย่อหน้า รายการ ตาราง และรูปภาพ พร้อมเนื้อหาในฟิลด์ที่ระบุชนิดไว้ การจับคู่บล็อกกับชื่อฟิลด์ในระบบบัญชียังอยู่ในโค้ดของคุณ ซึ่งเป็นที่ที่ผังบัญชีของคุณอยู่
อ่านใบกำกับภาษีไทยได้แม่นแค่ไหน
เราไม่เผยแพร่ตัวเลขความแม่นยำ และจะยังไม่เผยแพร่จนกว่าแล็บจะเผยแพร่ผลการประเมินของตัวเอง ขอแนะนำให้ลองส่งเอกสารจริงของคุณผ่านเพลย์กราวด์หรือเครดิตฟรี แล้วตัดสินจากผลการอ่านเอกสารที่คุณได้รับจริง
ถ่ายรูปด้วยมือถือแล้วส่งได้ไหม
ส่งได้ ไฟล์ PNG JPEG และ WebP นับเป็นหนึ่งหน้าต่อไฟล์ และระบบอ่านรูปแบบไฟล์จากตัวไบต์แทนการประกาศชนิดไฟล์ รูปถ่ายกับไฟล์สแกนจึงใช้คำขอเดียวกัน
อ่านใบกำกับภาษีอย่างย่อได้ไหม
ได้ มาตรา 86/6 รองรับใบกำกับภาษีอย่างย่อที่ใช้ในการขายปลีก ซึ่งมีรายการน้อยกว่าแบบเต็มรูป การอ่านใช้คำขอเดียวกัน สิ่งที่ต่างคือมีข้อมูลกี่รายการจากแปดรายการนั้นอยู่บนหน้าเอกสารให้ค้นหา
ถ้าอ่านไม่สำเร็จ เสียค่าใช้จ่ายไหม
ไม่เสีย ระบบนับจำนวนหน้าก่อนตัดเครดิต และหากผู้ให้บริการประมวลผลล้มเหลวหลังตัดแล้วจะคืนเครดิตอัตโนมัติ ส่วนเอกสารที่อ่านไม่ได้เลยจะถูกปฏิเสธก่อนตัดเครดิต พร้อมรหัสข้อผิดพลาดที่คงที่
เริ่มต้นด้วยเครดิตฟรี
เข้าสู่ระบบด้วย Google, GitHub หรือ Hugging Face แล้วใช้เครดิตฟรี 100 เครดิตกับข้อความของคุณเอง
เอกสารในงานนี้
บทความที่เกี่ยวข้อง