OCR ภาษาไทยสำหรับใบกำกับภาษีและใบเสร็จ
อ่านใบกำกับภาษี ใบเสร็จ และใบวางบิลจากคู่ค้าออกมาเป็น Markdown หรือบล็อกที่มีชนิดข้อมูล แล้วบันทึกลงระบบบัญชีได้โดยไม่ต้องคีย์เอง
ผลลัพธ์ที่ได้กลับมา
# ใบกำกับภาษี / TAX INVOICE
**ผู้ขาย** บริษัท ศตวรรษการค้า จำกัด (สำนักงานใหญ่)
เลขประจำตัวผู้เสียภาษีอากร 0 1055 64078 12 3
| รายการ | จำนวน | หน่วยละ | จำนวนเงิน |
| --- | ---: | ---: | ---: |
| กระดาษถ่ายเอกสาร A4 80 แกรม | ๒๐ | 105.00 | 2,100.00 |
| หมึกพิมพ์ดำ | ๔ | 890.00 | 3,560.00 |
รวมเป็นเงิน 5,660.00
ภาษีมูลค่าเพิ่ม 7% 396.20
**จำนวนเงินรวมทั้งสิ้น 6,056.20**heading ร้านกาแฟบ้านสวน
paragraph เลขประจำตัวผู้เสียภาษี 0 9955 12034 55 1
table 3 rows x 3 columns
paragraph รวม 245.00 บาท
paragraph เงินสด 300.00 ทอน 55.00## หน้า 1
ใบแจ้งยอดประจำเดือน มิถุนายน ๒๕๖๙
## หน้า 2
| วันที่ | เลขที่เอกสาร | จำนวนเงิน |
| --- | --- | ---: |
| ๐๓/๐๖/๖๙ | INV-24418 | 12,400.00 |
| ๑๗/๐๖/๖๙ | INV-24506 | 8,150.00 |ผลการอ่านด้านบนเป็นตัวอย่างของรูปแบบผลลัพธ์ ไม่ใช่คำตอบที่บันทึกมาจริง หน้า OCR มีผลการอ่านตัวอย่างจริงของโมเดลพร้อมวันที่บันทึกกำกับไว้
วิธีต่อเข้ากับระบบของคุณ
ใบกำกับภาษีของไทยไม่ใช่เอกสารที่จะจัดรูปอย่างไรก็ได้ มาตรา 86/4 แห่งประมวลรัษฎากรกำหนดรายการที่ใบกำกับภาษีแบบเต็มรูปต้องมี ทั้งคำว่าใบกำกับภาษี ชื่อ ที่อยู่ และเลขประจำตัวผู้เสียภาษีของผู้ขาย ชื่อและที่อยู่ของผู้ซื้อ เลขที่เอกสาร รายการสินค้าหรือบริการ จำนวนภาษีมูลค่าเพิ่มที่แยกออกมาให้ชัด และวันที่ออก อีกทั้งต้องจัดทำเป็นภาษาไทย เงินบาท และเลขไทยหรือเลขอารบิก ข้อกำหนดนี้เป็นเรื่องดีสำหรับคนอ่าน แต่เป็นเรื่องยากสำหรับการจับรูปแบบด้วยกฎตายตัว เพราะข้อมูลแปดอย่างเดียวกันนี้อยู่คนละตำแหน่งในแบบฟอร์มของคู่ค้าแต่ละราย และอยู่ในภาษาที่เขียนติดกันโดยไม่เว้นวรรคระหว่างคำ
ที่มา:Revenue Code, s. 86/4(opens in a new tab)
- ส่งเอกสารในรูปแบบที่ได้รับมาแปลงไฟล์ PDF หรือรูปถ่ายเป็น base64 แล้วส่งได้เลย ระบบอ่านรูปแบบไฟล์จากตัวไบต์ ไฟล์สแกน รูปถ่ายจากมือถือ และ PDF ของคู่ค้าจึงใช้คำขอเดียวกัน รับได้ถึง 50 หน้า และ 10 MB
- เลือกรูปแบบผลลัพธ์ที่ระบบบัญชีต้องการMarkdown ทำให้คนตรวจสอบอ่านเอกสารได้สะดวก ส่วนผลลัพธ์แบบ structured จะคืนบล็อกที่มีชนิดข้อมูล กฎการบันทึกบัญชีจึงอ่านตารางรายการได้โดยไม่ต้องแยกข้อความรอบข้าง
- บันทึกข้อมูล และเก็บหน้าเอกสารไว้เก็บข้อความที่ได้ไว้คู่กับไฟล์ต้นฉบับ การอ่านคิดตามจำนวนหน้า การอ่านซ้ำหลังแก้การจับคู่ฟิลด์จึงมีค่าใช้จ่ายเท่ากับครั้งแรก
สิ่งที่กฎหมายกำหนด และสิ่งที่ไม่ได้กำหนด
1 คำว่า ใบกำกับภาษี ในที่ที่เห็นได้เด่นชัด
2 ชื่อ ที่อยู่ เลขประจำตัวผู้เสียภาษีของผู้ขาย
3 ชื่อและที่อยู่ของผู้ซื้อ
4 เลขที่เอกสาร (และเล่มที่ ถ้ามี)
5 ชื่อ ชนิด ประเภท ปริมาณ และมูลค่า
6 จำนวนภาษีมูลค่าเพิ่ม แยกออกให้ชัดแจ้ง
7 วันเดือนปีที่ออก
8 ข้อความอื่นตามที่อธิบดีกำหนด
ไม่ได้กำหนด: การจัดวาง ลำดับบนหน้ากระดาษ แบบฟอร์ม
ถ้อยคำของป้ายกำกับ ระบบเลขในแต่ละช่องกฎหมายกำหนดว่าใบกำกับภาษีแบบเต็มรูปต้องมีข้อมูลอะไร แต่ปล่อยการออกแบบให้ผู้ขาย การดึงข้อมูลจึงเป็นเรื่องของการอ่าน ไม่ใช่การจับรูปแบบ ส่วนมาตรา 86/6 รองรับใบกำกับภาษีอย่างย่อที่ใช้ในการขายปลีก
ค่าใช้จ่ายของงานเจ้าหนี้หนึ่งเดือน
| ปริมาณงาน | จำนวนหน้า | เครดิต |
|---|---|---|
| ใบกำกับภาษีหนึ่งใบ | 1 | 6.5 |
| หนึ่งคำขอเต็มเพดาน 50 หน้า | 50 | 325 |
| ใบกำกับภาษี 2,000 ใบต่อเดือน | 13,000 เครดิต | |
คิดค่าบริการตามจำนวนหน้า หน้าละ 6.5 เครดิต ไม่มียอดขั้นต่ำต่อคำขอนอกเหนือจากหนึ่งหน้า ใบเสร็จหน้าเดียวจึงจ่ายเท่าหนึ่งหน้าพอดี
สิ่งที่ได้กลับมา และสิ่งที่ยังเป็นของคุณ
- ผลการอ่าน
- ทุกบรรทัดที่อ่านออกบนหน้าเอกสาร เรียงตามลำดับเดิมของเอกสาร
- รูปแบบผลลัพธ์
- Markdown สำหรับคนตรวจ หรือบล็อกที่มีชนิดข้อมูลสำหรับกฎการบันทึกบัญชีที่อยากได้ตารางแยกออกมา
- การจับคู่ฟิลด์
- การตัดสินว่าบล็อกไหนคือผู้ขายและบล็อกไหนคือยอดรวมเป็นเรื่องของโค้ดคุณ เพราะผังบัญชีของคุณคือที่ที่คำตอบนั้นอยู่
การอ่านหยุดตรงจุดที่ระบบบัญชีของคุณเริ่มต้น จึงไม่มีการจับคู่กับชื่อฟิลด์ของใครอยู่ในนี้เลย
สำหรับนักพัฒนา
หนึ่งคำขอต่อหนึ่งเอกสาร ค่าเริ่มต้นเป็น Markdown ส่วนแบบ structured คืนการอ่านชุดเดียวกันในรูปบล็อกที่มีชนิดข้อมูล
# 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 เครดิตกับข้อความของคุณเอง