泰语发票与收据 OCR

把泰国税务发票、收据和供应商账单读取为 Markdown 或类型化块,再把字段记入您的账簿,无需手工录入。

返回结果

供应商开具的税务发票output: "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 条要求的八项内容按阅读顺序排列,增值税一行与合计金额分开。

零售收据output: "structured"
heading   ร้านกาแฟบ้านสวน
paragraph เลขประจำตัวผู้เสียภาษี 0 9955 12034 55 5
table     3 rows x 3 columns
paragraph รวม 245.00 บาท
paragraph เงินสด 300.00 ทอน 55.00

这张收据输出为类型化块。记账规则可以直接读取其中的表格,无需解析周围的文字。

多页对账单output: "markdown" · 50 页
## หน้า 1
ใบแจ้งยอดประจำเดือน มิถุนายน ๒๕๖๙

## หน้า 2
| วันที่ | เลขที่เอกสาร | จำนวนเงิน |
| --- | --- | ---: |
| ๐๓/๐๖/๖๙ | INV-24418 | 12,400.00 |
| ๑๗/๐๖/๖๙ | INV-24506 | 8,150.00 |

一次请求最多可包含 50 页,响应按页逐一返回。

上方的读取结果用于说明响应格式,并非从模型实际采集。OCR 页面提供模型对真实样本的实录读取结果,并注明采集日期。

如何接入您的流程

泰国税务发票的格式由法律规定。《税收法典》第 86/4 条列出了完整税务发票必须载明的事项:“税务发票”字样,卖方的名称、地址和纳税人识别号,买方的名称和地址,以及编号。其后还有所供货物或服务的说明、单独列明的增值税额和开具日期。法律还要求发票使用泰语,以泰铢计价,用泰文数字或阿拉伯数字书写。这对阅读者是好消息,对正则表达式却是坏消息。同样八项事实,在每家供应商的模板上位置各不相同,所用的文字在词与词之间也不留空格。

来源:Revenue Code, s. 86/4(在新标签页中打开)

  1. 按收到时的样子发送文档

    把 PDF 或照片转成 base64 后提交。格式由字节内容识别。扫描件、手机照片和供应商的 PDF 都走同一个调用,上限为 50 页、10 MB。

  2. 选择账簿需要的输出形式

    Markdown 让人工审核时文档依然易读。结构化输出返回类型化块,记账规则因此可以直接读取明细表,无需解析周围的文字。

  3. 字段入账,原件留存

    把返回的文字与原始文件放在一起保存。读取按页计费,修改映射后重新读取,费用与第一次相同。

法律规定了什么,又没有规定什么

第 86/4 条 · 完整税务发票
1  醒目标明 ใบกำกับภาษี 字样
2  卖方名称、地址、纳税人识别号
3  买方名称和地址
4  编号(如有册号,一并载明)
5  品名、种类、数量、价值
6  增值税额,单独列明
7  开具日期
8  主管部门规定的其他事项

未规定:  版式、在页面上的顺序、模板、
          标签措辞、各字段所用的数字体系

法律规定了完整税务发票必须载明哪些事实,设计则交给卖方。因此,字段提取是一个阅读问题,而且这种阅读必须适用于所有模板。第 86/6 条另行规定了零售业使用的简易税务发票。

来源:Revenue Code, s. 86/4(在新标签页中打开)

一个月应付账款的费用

一个月应付账款的费用
工作量页数费用
一张发票1$0.0065
一次请求,达到 50 页上限50$0.33
每月 2,000 张发票约 $13

按页计费,每页 6.5 积分,每次请求最低只按一页计。一页的收据,费用恰好就是一页。

返回什么,哪些仍由您掌握

读取结果

页面上每一行清晰可辨的文字,按文档原有顺序排列。

输出形式

Markdown 适合人工审核,类型化块适合需要单独取出表格的记账规则。

字段映射

哪个块是供应商、哪个块是合计金额,由您的代码决定,因为答案就在您的会计科目表里。

读取止于您的账簿开始之处,因此这里不预设任何一方的字段名映射。

面向开发者

每份文档一次请求,默认输出 Markdown。结构化版本以类型化块返回同样的读取结果。

完整 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\"}"

泰文数字与不留空格,难在同一处

一张税务发票可能在同一行里用泰文数字写数量,用阿拉伯数字写金额,因为法律两者都允许。泰文书写时词与词之间也没有空格。供应商名称、地址和商品描述会连成一串字符送来,只有懂泰语的阅读者才能正确断开。这两点对泰国读者都再平常不过,也正是基于模板匹配的提取方法开始失灵的地方。

常见问题

返回的是字段,还是文字?

是文字,形式由您选择。Markdown 保留文档结构。结构化输出返回类型化块,包括标题、段落、列表、表格和图片,内容放在类型化字段中。把块映射到账簿字段名的工作留在您的代码里,那里才有您的会计科目表。

读取泰国税务发票的准确率如何?

我们不公布准确率数据,在实验室发布评测之前也不会公布。请用控制台或免费积分处理您自己的文档,再对照您实际收到的票据判断读取结果。

用手机拍的照片怎么办?

直接发送。PNG、JPEG 和 WebP 每张按一页读取。格式由字节内容识别,无需声明任何字段。照片和扫描件走同一个调用。

能读取简易税务发票吗?

可以。第 86/6 条规定了零售业使用的简易税务发票,载明的事项少于完整税务发票。读取仍是同一个调用,区别只在于这八项中有几项出现在页面上。

读取失败要付费吗?

不收费。页数在扣费之前读取,扣费之后如果处理失败,费用会自动退还。完全无法读取的文档在扣费前就会被拒绝,并返回固定的错误码。

从免费积分开始

使用 Google、GitHub 或 Hugging Face 登录,即可用 100 一次性免费积分处理您自己的文本。