ð§ū āđāļāļ°āļāđāļāļĄāļđāļĨāļāļēāļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļ / āđāļāđāļāđāļāļŦāļāļĩāđ / āđāļāļ§āļēāļāļāļīāļĨ / āđāļāļāļģāļāļąāļāļ āļēāļĐāļĩ (Thai Receipt OCR) ð
ð§ū āđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļ / āđāļāđāļāđāļāļŦ āļāļĩāđ / āđāļāļ§āļēāļāļāļīāļĨ / āđāļāļāļģāļāļąāļāļ āļēāļĐāļĩ
āļĒāļīāļāļāļĩāļāđāļāļāļĢāļąāļāļŠāļđāđ Thai Receipt OCR API āđāļāļĨāļđāļāļąāļāļāļĩāđāđāļāđāļāļĨāļąāļāļāļāļ AI āļāļĩāđāļāļąāļāļāļēāđāļāļĒ āļāļĢāļīāļĐāļąāļ āđāļāđāļāļāļāđāđāļāļāđāļāđāļĨāļĒāļĩ āļāļģāļāļąāļ āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāļāļēāļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļāđāļĨāļ°āđāļāđāļāđāļāļŦāļāļĩāđāļ āļēāļĐāļēāđāļāļĒ āđāļāļāļŠāļēāļĢāļāļĩāđāļāļ°āļāđāļ§āļĒāđāļŦāđāļāļļāļāļŠāļēāļĄāļēāļĢāļāļāļŠāļēāļāļĢāļ§āļĄāđāļĨāļ°āđāļāđāļāļĢāļīāļāļēāļĢ OCR āļāļāļāđāļĢāļēāđāļāđāļāļĒāđāļēāļāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
āđāļĢāļīāđāļĄāļāđāļāđāļāđāļāļēāļâ
-
āļāđāļāļāļģāļŦāļāļāđāļāļ·āđāļāļāļāđāļ
- API key āļāļēāļ āđāļāđāļāļāļāđāđāļāļāđāļāđāļĨāļĒāļĩ
- āđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļāļ āļēāļĐāļēāđāļāļĒ / āļāļąāļāļāļĪāļĐ āđāļāļĒāđāļāđāļ āļēāļāļāļīāļĄāļāđāļŦāļĢāļ·āļāļ āļēāļāđāļāļĩāļĒāļāļāđāļ§āļĒāļĨāļēāļĒāļĄāļ·āļ
- āļĢāļđāļāđāļāļāđāļāļĨāđāļāļĩāđāļĢāļāļāļĢāļąāļ: JPEG, JPG, PNG, HEIC, HEIF, PDF
- āļāļāļēāļāđāļāļĨāđāļŠāļđāļāļŠāļļāļ: 10MB
-
āđāļĢāļīāđāļĄāļāđāļ āļāļĒāđāļēāļāļĢāļ§āļāđāļĢāđāļ§
- āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĩāđāļĢāļ§āļāđāļĢāđāļ§ (5-10 āļ§āļīāļāļēāļāļĩāļāđāļāđāļāļāļŠāļēāļĢ)
- āļāļēāļĢāļāļķāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļĄāļĩāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļŠāļđāļ
- āļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāđāļāļĨāđāļŦāļĨāļēāļĒāļĢāļđāļāđāļāļ
-
āļāļļāļāļŠāļĄāļāļąāļāļīāļŦāļĨāļąāļ
- āļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāđāļēāļāđ āļĢāļ§āļĄāļāļķāļ:
- āļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāđāļāđāļāđāļāļŦāļāļĩāđ (āļāļĢāļ°āđāļ āļ, ID, āļ§āļąāļāļāļĩāđ, āđāļĨāļāļāļĩāđāļŦāļāļąāļāļŠāļ·āļ)
- āļāđāļāļĄāļđāļĨāļāļđāđāļāļāļāđāļāđāļāđāļāļŦāļāļĩāđ (āļāļ·āđāļ, āļāļĩāđāļāļĒāļđāđ, āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļđāđāđāļŠāļĩāļĒāļ āļēāļĐāļĩ, āļāđāļāļĄāļđāļĨāļāļīāļāļāđāļ)
- āļāđāļāļĄāļđāļĨāļĨāļđāļāļāđāļē (āļāļ·āđāļ, āļāļĩāđāļāļĒāļđāđ, āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļđāđāđāļŠāļĩāļĒāļ āļēāļĐāļĩ, āļāđāļāļĄāļđāļĨāļāļīāļāļāđāļ)
- āļĢāļēāļĒāļāļēāļĢāļŠāļīāļāļāđāļē (āļĢāļŦāļąāļŠāļŠāļīāļāļāđāļē, āļāļ·āđāļ, āļāļģāļāļ§āļ, āļĢāļēāļāļēāļāđāļāļŦāļāđāļ§āļĒ, āļĢāļ§āļĄ)
- āļŠāļĢāļļāļāļāļēāļāļāļēāļĢāđāļāļīāļ (āļĢāļēāļāļēāļĢāļ§āļĄ, āļŠāđāļ§āļāļĨāļ, āļ āļēāļĐāļĩāļĄāļđāļĨāļāđāļēāđāļāļīāđāļĄ, āļĢāļ§āļĄāļāļąāđāļāļŠāļīāđāļ)
- āļĢāļāļāļĢāļąāļāđāļāļāļŠāļēāļĢāļāļąāđāļāđāļāļāļŦāļāđāļēāđāļāļĩāļĒāļ§āđāļĨāļ°āļŦāļĨāļēāļĒāļŦāļāđāļē (PDF)
- āļāļąāļ§āđāļĨāļ·āļāļāđāļāļāļēāļĢāļŠāđāļāļāļ·āļāļāđāļāļāļ§āļēāļĄ OCR āļāđāļāļāļāļąāļāđāļĨāļ°āļ āļēāļāļāļĩāđāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļĨāđāļ§
- āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāļŠāļāļāļ JSON āļāļĩāđāļĒāļ·āļāļŦāļĒāļļāđāļāļāļĢāđāļāļĄāļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļ
- āļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāđāļēāļāđ āļĢāļ§āļĄāļāļķāļ:
-
āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨ āļ°āļāļēāļĢāļāļāļīāļāļąāļāļīāļāļēāļĄāļāļāļĢāļ°āđāļāļĩāļĒāļ
- āļāļāļīāļāļąāļāļīāļāļēāļĄ GDPR āđāļĨāļ° PDPA
- āļāļļāļāļŠāļīāđāļāļŠāļļāļ API āļāļĩāđāļāļĨāļāļāļ āļąāļĒ
- āđāļĄāđāļĄāļĩāļāļēāļĢāđāļāđāļāļĢāļąāļāļĐāļēāļāđāļāļĄāļđāļĨāļŦāļĨāļąāļāļāļēāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ
API āļāļāļāđāļĢāļēāđāļāđāļĢāļąāļāļāļēāļĢāļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāļāļąāļāļāļēāļĢāļāļąāļāļĢāļđāļāđāļāļāđāļĨāļ°āđāļāđāļēāđāļāļĢāļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļāļāđāļēāļāđ āļāļĩāđāđāļāđāļāļąāļāļāļąāđāļ§āđāļāđāļāļāļĢāļ°āđāļāļĻāđāļāļĒ āļāļąāđāļāđāļāđāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļāļāđāļēāļāļĨāļĩāļāđāļāļāļāđāļēāļĒāđ āđāļāļāļāļāļķāļāđāļāļāļģāļāļąāļāļ āļēāļĐāļĩāļāļĒāđāļēāļāđāļāđāļāļāļēāļāļāļēāļĢ āđāļāļāļāļģāļĨāļāļ AI āļŦāļĨāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāđāļĢāļąāļāļāļēāļĢāļāļķāļāļāļāđāļŦāđāđāļāđāļēāđāļāđāļāļĢāļāļŠāļĢāđāļēāļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļāļ āļēāļĐāļēāđāļāļĒāđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļķāļāļāđāļāļĄāļđāļĨāđāļāđāļāļĒāđāļēāļāļāđāļēāđāļāļ·āđāļāļāļ·āļ āđāļĄāđāļāļēāļāđāļāļāļŠāļēāļĢāļāļĩāđāļĄāļĩāđāļŠāļĩāļĒāļāļĢāļāļāļ§āļāļŦāļĢāļ·āļāļŠāđāļāļāđāļĄāđāļāļąāļāđāļāļ
āļāļąāļ§āļāļĒāđāļēāļâ
āļāļĩāđāļāļ·āļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļāļāļąāļ§āļāļĒāđāļēāļāđāļĨāļ°āļāđāļāļĄāļđāļĨāļāļĩāđāļāļķāļāļāļāļāļĄāļē:
āļāļģāļāļ:â
cURL
curl -X POST "https://api.iapp.co.th/ocr/v3/receipt/file" \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/receipt.jpg" \
-F "return_image=false" \
-F "return_ocr=false"
āļāļĢāļļāļāļēāđāļĒāļĩāđāļĒāļĄāļāļĄ iApp AI Portal āđāļāļ·āđāļāļāļđ API key āļāļĩāđāļĄāļĩāļāļĒāļđāđāļāļāļāļāļļāļāļŦāļĢāļ·āļāļāļ API key āđāļŦāļĄāđ
āļāļēāļĢāļāļāļāļŠāļāļāļ:â
{
"message": "success",
"processed": {
"invoiceType": "āđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļ/āđāļāļāļģāļāļąāļāļ āļēāļĐāļĩāļāļĒāđāļēāļāļĒāđāļ",
"invoiceBook": null,
"invoiceID": "4504RC112566/004044",
"invoiceDate": "27/11/2566",
"issuerName": "āļŦāļāļ.āļāļļāļāļĢāļāļāļāļāļāļāļĩ (āļāļĨāļēāļāļĢāļąāļāļāļāļļāļĢāļĩ)",
"issuerTaxID": "0323560000723",
"items": [
{
"itemNo": 1,
"itemName": "āļāļēāđāļāļĩ āļĒāļ§āļāļĄ āļĢāđāļāļ āļāļāļēāļāđāļŦāļāđ",
"itemUnit": 1,
"itemUnitCost": 60.0,
"itemTotalCost": 60.0
}
],
"totalCost": 60.0,
"discount": 0.0,
"totalCostAfterDiscount": 60.0,
"vat": 3.93,
"grandTotal": 60.0
},
"process_ms": 6821
}
āļāļļāļāļŠāļĄāļāļąāļāļīāđāļĨāļ°āļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļâ
āļāļļāļāļŠāļĄāļāļąāļāļīāļŦāļĨāļąāļâ
-
āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļāļŠāļēāļĢ
- āļāļēāļĢāļāļķāļāļāđāļāļāļ§āļēāļĄāđāļĨāļ°āļāļēāļĢāļāļāļāļģāļāđāļāļĄāļđāļĨāļāļĩāđāļĄāļĩāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļŠāļđāļ
- āļĢāļāļāļĢāļąāļāļ āļēāļĐāļēāđāļāļĒ / āļāļąāļāļāļĪāļĐ
- āļĢāļāļāļĢāļąāļāļāļēāļĢāļāļīāļĄāļāđ / āļāļēāļĢāđāļāļĩāļĒāļāļāđāļ§āļĒāļĨāļēāļĒāļĄāļ·āļ
- āđāļ§āļĨāļēāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĩāđāļĢāļ§āļāđāļĢāđāļ§ 5-10 āļ§āļīāļāļēāļāļĩāļāđāļāđāļāļāļŠāļēāļĢ
- āļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāļŦāļĨāļēāļĒāļĢāļđāļāđāļāļ (JPEG, JPG, PNG, HEIC, HEIF, PDF)
- āļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢāļŦāļĨāļēāļĒāļŦāļāđāļē
- āļāļąāļ§āđāļĨāļ·āļāļāđāļāļāļēāļĢāļŠāđāļāļāļ·āļāļāđāļāļāļ§āļēāļĄ OCR āļāđāļāļāļāļąāļāđāļĨāļ°āļ āļēāļāļāļĩāđāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļĨāđāļ§
- āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĩāđāļŠāļāļāļāļĨāđāļāļāļāļąāļ GDPR āđāļĨāļ° PDPA
-
āļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨ
- āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāļŠāļāļāļ JSON āļāļĩāđāļĒāļ·āļāļŦāļĒāļļāđāļāļāļĢāđāļāļĄāļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļ
āļāļīāļĨāļāđāļāļĩāđāļĢāļāļāļĢāļąāļâ
āļāļīāļĨāļāđ | āļāļĢāļ°āđāļ āļ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|
invoiceType | String | āļāļ·āđāļāļŦāļĢāļ·āļāļāļĢāļ°āđāļ āļāļāļāļāđāļāđāļāđāļāļŦāļāļĩāđ |
invoiceBook | String | āđāļĨāļāļāļĩāđāļŦāļāļąāļāļŠāļ·āļāļāļāļāđāļāđāļāđāļāļŦāļāļĩāđ |
invoiceID | String | āđāļĨāļāļāļĩāđāđāļāđāļāđāļāļŦāļāļĩāđ |
invoiceDate | String | āļ§āļąāļāļāļĩāđāļāļāļāđāļāđāļāđāļāļŦāļāļĩāđ |
purchaseOrderID | String | āđāļĨāļāļāļĩāđāđāļāļŠāļąāđāļāļāļ·āđāļāļāļĩāđāđāļāļ·āđāļāļĄāđāļĒāļ |
issuerName | String | āļāļ·āđāļāļāļđāđāļāļāļāđāļāđāļāđāļāļŦāļāļĩāđ |
issuerAddress | String | āļāļĩāđāļāļĒāļđāđāļāļāļāļāļđāđāļāļāļāđāļāđāļāđāļāļŦāļāļĩāđ |
issuerTaxID | String | āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļđāđāđāļŠāļĩāļĒāļ āļēāļĐāļĩāļāļāļāļāļđāđāļāļāļāđāļāđāļāđāļāļŦāļāļĩāđ |
issuerPhone | String | āđāļāļāļĢāđāđāļāļĢāļāļīāļāļāđāļāļāļāļāļāļđāđāļāļāļāđāļāđāļāđāļāļŦāļāļĩāđ |
customerName | String | āļāļ·āđāļāļĨāļđāļāļāđāļē |
customerAddress | String | āļāļĩāđāļāļĒāļđāđāļāļāļāļĨāļđāļāļāđāļē |
customerTaxID | String | āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļđāđāđāļŠāļĩāļĒāļ āļēāļĐāļĩāļāļāļāļĨāļđāļāļāđāļē |
customerPhone | String | āđāļāļāļĢāđāđāļāļĢāļāļīāļāļāđāļāļāļāļāļĨāļđāļāļāđāļē |
items | Array | āļāļēāļĢāđāđāļĢāļĒāđāļāļāļāļĢāļēāļĒāļāļēāļĢāļŠāļīāļāļāđāļēāļāļĢāđāļāļĄāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāđāļēāļāļĨāđāļēāļ |
- itemNo | String | āļĨāļģāļāļąāļāđāļĨāļāļāļĩāđāļŠāļīāļāļāđāļē |
- itemCode | String | āļĢāļŦāļąāļŠāļŠāļīāļāļāđāļē/āļāļĢāļīāļāļēāļĢ |
- itemName | String | āļāļ·āđāļāļŠāļīāļāļāđāļē/āļāļĢāļīāļāļēāļĢ |
- itemUnit | Number | āļāļģāļāļ§āļāļŠāļīāļāļāđāļē |
- itemUnitCost | Number | āļĢāļēāļāļēāļāđāļāļŦāļāđāļ§āļĒ |
- itemTotalCost | Number | āļĢāļēāļāļēāļĢāļ§āļĄāļāļāļāļŠāļīāļāļāđāļē |
totalCost | Number | āļĢāļ§āļĄāļĢāļēāļāļēāļŠāļīāļāļāđāļēāļāļąāđāļāļŦāļĄāļ |
discount | Number | āļāļģāļāļ§āļāļŠāđāļ§āļāļĨāļ (āļāđāļēāļĄāļĩ) |
totalCostAfterDiscount | Number | āļĢāļēāļāļēāļĢāļ§āļĄāļŦāļĨāļąāļāļŦāļąāļāļŠāđāļ§āļāļĨāļ |
vat | Number | āļāļģāļāļ§āļāļ āļēāļĐāļĩāļĄāļđāļĨāļāđāļēāđāļāļīāđāļĄ (7%) |
grandTotal | Number | āļāļģāļāļ§āļāđāļāļīāļāļĢāļ§āļĄāļāļąāđāļāļŦāļĄāļāļĢāļ§āļĄāļ āļēāļĐāļĩāļĄāļđāļĨāļāđāļēāđāļāļīāđāļĄ |
āļŦāļĄāļēāļĒāđāļŦāļāļļ: āļāđāļēāđāļāļīāļāļāļąāđāļāļŦāļĄāļāļāļ°āļāļąāļāđāļĻāļĐāđāļāđāļāļāļĻāļāļīāļĒāļĄāļŠāļāļāļāļģāđāļŦāļāđāļ
āļāđāļāļĄāļđāļĨāļāđāļēāļāļāļīāļ APIâ
āļĒāļīāļāļāļĩāļāđāļāļāļĢāļąāļāļŠāļđāđ Thai Receipt OCR API āđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļąāļāļāļĢāļāļāļĨāļąāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāđāļāļĨāļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļāđāļĨāļ°āđāļāđāļāđāļāļŦāļāļĩāđāļ āļēāļĐāļēāđāļāļĒāđāļāđāļāļāđāļāļĄāļđāļĨ JSON āļāļĩāđāļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļ API āļāļĩāđāđāļāđāđāļāļāđāļāđāļĨāļĒāļĩ OCR āđāļĨāļ° AI āļāļąāđāļāļŠāļđāļāđāļāļ·āđāļāļāļķāļāļāđāļāļĄāļđāļĨāļŠāļģāļāļąāļāļāđāļēāļāđ āđāļāđāļ āļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāđāļāđāļāđāļāļŦāļāļĩāđ āļāđāļāļĄāļđāļĨāļāļđāđāļāļāļāđāļĨāļ°āļĨāļđāļāļāđāļē āļĢāļēāļĒāļāļēāļĢāļŠāļīāļāļāđāļē āđāļĨāļ°āļĒāļāļāļĢāļ§āļĄāļāļēāļāļāļēāļĢāđāļāļīāļ
āļāļēāļĢāļāļāļāļģāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļâ
āļāļļāļāļŠāļīāđāļāļŠāļļāļāļāļĩāđāļāļ°āļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļāļŦāļĢāļ·āļ PDF āđāļĨāļ°āļŠāđāļāļāļ·āļāļāđāļāļĄāļđāļĨāļāļĩāđāļāļķāļāļĄāļēāđāļāļĢāļđāļāđāļāļāļāļĩāđāļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļ
POST https://api.iapp.co.th/ocr/v3/receipt/file
āļŠāđāļ§āļāļŦāļąāļ§āļāļāļāļāļģāļāļâ
āļāļ·āđāļ | āļāļĢāļ°āđāļ āļ | āļāļģāđāļāđāļāļāđāļāļāđāļāđ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|---|
apikey | string | āđāļāđ | API key āļāļāļāļāļļāļ |
āđāļāļ·āđāļāļŦāļēāļāļāļāļāļģāļāļ (multipart/form-data)â
āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđ | āļāļĢāļ°āđāļ āļ | āļāļģāđāļāđāļāļāđāļāļāđāļāđ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|---|
file | file | āđāļāđ | āļ āļēāļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļ (JPEG, PNG) āļŦāļĢāļ·āļāđāļāļāļŠāļēāļĢ PDF |
return_image | boolean | āđāļĄāđāđāļāđ | āļĢāļ§āļĄāļ āļēāļāļāļĩāđāđāļāđāļēāļĢāļŦāļąāļŠ base64 āđāļāļāļēāļĢāļāļāļāļŠāļāļāļ (āļāđāļēāđāļĢāļīāđāļĄāļāđāļ: false) |
return_ocr | boolean | āđāļĄāđāđāļāđ | āļĢāļ§āļĄāļāđāļāļāļ§āļēāļĄ OCR āļāļīāļāđāļāļāļēāļĢāļāļāļāļŠāļāļāļ (āļāđāļēāđāļĢāļīāđāļĄāļāđāļ: false) |
āļĢāļđāļāđāļāļāđāļāļĨāđāļāļĩāđāļĢāļāļāļĢāļąāļâ
- āļĢāļđāļāļ āļēāļ: JPEG, PNG
- āđāļāļāļŠāļēāļĢ: PDF (āļŦāļāđāļēāđāļāļĩāļĒāļ§āļŦāļĢāļ·āļāļŦāļĨāļēāļĒāļŦāļāđāļē)
āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāļŠāļāļāļâ
{
"message": "success",
"raw": {
"image": "string", // Base64 encoded, only if return_image=true
"text": "string" // Only if return_ocr=true
},
"processed": {
"invoiceType": "string",
"invoiceBook": "string",
"invoiceID": "string",
"invoiceDate": "string",
"purchaseOrderID": "string",
"issuerName": "string",
"issuerAddress": "string",
"issuerTaxID": "string",
"issuerPhone": "string",
"customerName": "string",
"customerAddress": "string",
"customerTaxID": "string",
"customerPhone": "string",
"items": [
{
"itemNo": "string",
"itemCode": "string",
"itemName": "string",
"itemUnit": "number",
"itemUnitCost": "number",
"itemTotalCost": "number"
}
],
"totalCost": "number",
"discount": "number",
"totalCostAfterDiscount": "number",
"vat": "number",
"grandTotal": "number"
},
"template": "receipt",
"iapp": "string",
"process_ms": "number"
}
āļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļâ
āļŠāļāļēāļāļ° | āļĢāļŦāļąāļŠ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|
400 | BAD_REQUEST | āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđāļŦāļĢāļ·āļāļĢāļđāļāđāļāļāđāļāļĨāđāđāļĄāđāļāļđāļāļāđāļāļ |
401 | UNAUTHORIZED | API key āđāļĄāđāļāļđāļāļāđāļāļāļŦāļĢāļ·āļāļŦāļēāļĒāđāļ |
404 | NOT_FOUND | āļāļļāļāļŠāļīāđāļāļŠāļļāļāđāļĄāđāļāļđāļāļāđāļāļ |
500 | INTERNAL_SERVER_ERROR | āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļĨāđāļĄāđāļŦāļĨāļ§ |
āļĢāļēāļāļēâ
āļāļ·āđāļāļāļĢāļīāļāļēāļĢ AI API | āļāļļāļāļŠāļīāđāļāļŠāļļāļ | IC āļāđāļāļāļģāļāļ | On-Premise |
---|---|---|---|
Receipt OCR [v1.0] | receipt-ocr | 1 IC/Request | āļāļīāļāļāđāļ |
āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļâ
Pythonâ
import requests
apiKey = 'YOUR_API_KEY'
filePath = '/path/to/receipt.jpg'
url = "https://api.iapp.co.th/ocr/v3/receipt/file"
headers = {'apikey': apiKey}
files = {'file': ('receipt.jpg', open(filePath, 'rb'), 'image/jpeg')}
data = {'return_image': 'false', 'return_ocr': 'false'}
response = requests.post(url, headers=headers, files=files, data=data)
print(response.json())
Javascriptâ
const axios = require("axios")
const FormData = require("form-data")
const fs = require("fs")
const apiKey = "YOUR_API_KEY"
const filePath = "/path/to/receipt.jpg"
const url = "https://api.iapp.co.th/ocr/v3/receipt/file"
const form = new FormData()
form.append("file", fs.createReadStream(filePath))
form.append("return_image", "false")
form.append("return_ocr", "false")
try {
const response = await axios.post(url, form, {
headers: {
...form.getHeaders(),
apikey: apiKey,
},
})
return response.data
} catch (error) {
throw error
}
PHPâ
$url = 'https://api.iapp.co.th/ocr/v3/receipt/file';
$apiKey = 'YOUR_API_KEY';
$filePath = '/path/to/receipt.jpg';
$headers = array(
'apikey: ' . $apiKey
);
$postFields = array(
'file' => new CURLFile($filePath),
'return_image' => 'false',
'return_ocr' => 'false'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Swiftâ
import Foundation
let url = URL(string: "https://api.iapp.co.th/ocr/v3/receipt/file")!
let filePath = "/path/to/receipt.jpg"
let apiKey = "YOUR_API_KEY"
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue(apiKey, forHTTPHeaderField: "apikey")
let boundary = UUID().uuidString
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
var body = Data()
body.append("--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"receipt.jpg\"\r\n".data(using: .utf8)!)
body.append("Content-Type: image/jpeg\r\n\r\n".data(using: .utf8)!)
body.append(try! Data(contentsOf: URL(fileURLWithPath: filePath)))
body.append("\r\n--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"return_image\"\r\n\r\nfalse\r\n".data(using: .utf8)!)
body.append("--\(boundary)\r\n".data(using: .utf8)!)
body.append("Content-Disposition: form-data; name=\"return_ocr\"\r\n\r\nfalse\r\n".data(using: .utf8)!)
body.append("--\(boundary)--\r\n".data(using: .utf8)!)
request.httpBody = body
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print("Error: \(error?.localizedDescription ?? "Unknown error")")
return
}
print(String(data: data, encoding: .utf8)!)
}
task.resume()
Kotlinâ
import okhttp3.*
import java.io.File
val client = OkHttpClient()
val apiKey = "YOUR_API_KEY"
val filePath = "/path/to/receipt.jpg"
val url = "https://api.iapp.co.th/ocr/v3/receipt/file"
val file = File(filePath)
val requestBody = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.name, RequestBody.create(MediaType.parse("image/jpeg"), file))
.addFormDataPart("return_image", "false")
.addFormDataPart("return_ocr", "false")
.build()
val request = Request.Builder()
.url(url)
.post(requestBody)
.addHeader("apikey", apiKey)
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
e.printStackTrace()
}
override fun onResponse(call: Call, response: Response) {
response.use {
if (!response.isSuccessful) throw IOException("Unexpected code $response")
println(response.body()?.string())
}
}
})
Javaâ
import okhttp3.*;
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
String apiKey = "YOUR_API_KEY";
String url = "https://api.iapp.co.th/ocr/v3/receipt/file";
String filePath = "/path/to/receipt.jpg";
File file = new File(filePath);
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/jpeg"), file))
.addFormDataPart("return_image", "false")
.addFormDataPart("return_ocr", "false")
.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.addHeader("apikey", apiKey)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
System.out.println(response.body().string());
}
});
}
}
Dartâ
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;
String url = 'https://api.iapp.co.th/ocr/v3/receipt/file';
String filePath = '/path/to/receipt.jpg';
String apiKey = 'YOUR_API_KEY';
void main() async {
var url = Uri.parse(url);
var request = http.MultipartRequest('POST', url)
..headers['apikey'] = apiKey
..files.add(await http.MultipartFile.fromPath('file', filePath))
..fields['return_image'] = 'false'
..fields['return_ocr'] = 'false';
var response = await request.send();
if (response.statusCode == 200) {
var responseData = await response.stream.bytesToString();
print(responseData);
} else {
print('Error: ${response.statusCode}');
}
}
āļāđāļāļāļģāļāļąāļāđāļĨāļ°āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļâ
āļāđāļāļāļģāļāļąāļâ
- āļāļāļēāļāđāļāļĨāđāļŠāļđāļāļŠāļļāļ: 10MB
- āļ āļēāļĐāļēāļāļĩāđāļĢāļāļāļĢāļąāļ: āļ āļēāļĐāļēāđāļāļĒ
- āđāļāļĨāđ PDF: āļŠāļđāļāļŠāļļāļ 10 āļŦāļāđāļē
- āļāļēāļĢāļāļģāļāļąāļāļāļąāļāļĢāļē: 10 āļāļģāļāļāļāđāļāļ§āļīāļāļēāļāļĩāļāđāļ API key
āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļâ
- āļāļĢāļ§āļāļŠāļāļāđāļŦāđāđāļāđāđāļāļ§āđāļēāļāļļāļāļ āļēāļāļāļāļāļ āļēāļāļāļĩāđāļāļ·āđāļāđāļŦāđāđāļāđāļāļĨāļĨāļąāļāļāđāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļ
- āđāļāđāļĢāļđāļāđāļāļ JPEG āļŦāļĢāļ·āļ PNG āļŠāļģāļŦāļĢāļąāļāļĢāļđāļāļ āļēāļ
- āđāļāđāļāļēāļĢāļāļąāļāļāļēāļĢāļāđāļāļāļīāļāļāļĨāļēāļāļŠāļģāļŦāļĢāļąāļāļāļģāļāļāļāļĩāđāļĨāđāļĄāđāļŦāļĨāļ§
- āđāļāđāļāļāđāļāļĄāļđāļĨāļāļēāļĢāļāļāļāļŠāļāļāļāđāļ§āđāđāļĄāļ·āđāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļāļŠāļēāļĢāđāļāļĩāļĒāļ§āļāļąāļāļŦāļĨāļēāļĒāļāļĢāļąāđāļ
- āļāļąāđāļāļāđāļēāļāļēāļĢāļŦāļĄāļāđāļ§āļĨāļēāļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļāđāļāļĨāđāļāļāļēāļāđāļŦāļāđ
āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļĨāļ°āļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļâ
āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļāļĒāļĢāļ§āļĄâ
āļāļēāļāļāļļāļāļāđāļāļĄāļđāļĨāļĄāļēāļāļĢāļāļēāļāļāļāļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļāļ āļēāļĐāļēāđāļāļĒ 10,000 āđāļ:
āļāļĢāļ°āđāļ āļāļāļīāļĨāļāđ | āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ (%) | āļŦāļĄāļēāļĒāđāļŦāļāļļ |
---|---|---|
āđāļĨāļāļāļĩāđāđāļāđāļāđāļāļŦāļāļĩāđ | 99.2% | āļĢāļ§āļĄāļāļķāļāđāļĨāļāļāļĩāđāđāļāļāļģāļāļąāļāļ āļēāļĐāļĩ |
āļāļģāļāļ§āļāđāļāļīāļ | 99.5% | āļāđāļēāđāļāļīāļāđāļĨāļ°āļĒāļāļāļĢāļ§āļĄ |
āļ§āļąāļāļāļĩāđ | 98.7% | āļĢāļđāļāđāļāļāļ§āļąāļāļāļĩāđāļ āļēāļĐāļēāđāļāļĒāļāđāļēāļāđ |
āļĢāļēāļĒāļāļēāļĢāļŠāļīāļāļāđāļē | 97.8% | āļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļŠāļīāļāļāđāļēāđāļĨāļ°āļĢāļēāļāļē |
āđāļāļĒāļĢāļ§āļĄ | 98.8% | āļāđāļēāđāļāļĨāļĩāđāļĒāļāđāļ§āļāļāđāļģāļŦāļāļąāļ |
āļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨâ
- āđāļ§āļĨāļēāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļĨāļĩāđāļĒ: 5-10 āļ§āļīāļāļēāļāļĩ
- āđāļāļāļĢāđāđāļāđāļāđāļāļĨāđāļāļĩāđ 95: 12 āļ§āļīāļāļēāļāļĩ
- āđāļ§āļĨāļēāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļŠāļđāļāļŠāļļāļ: 15 āļ§āļīāļāļēāļāļĩ
āļāļąāļāļāļąāļĒāļāļĩāđāļĄāļĩāļāļĨāļāđāļāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģâ
-
āļāļļāļāļ āļēāļāļāļāļāļ āļēāļ
- āļāļ§āļēāļĄāļĨāļ°āđāļāļĩāļĒāļ (āđāļāļ°āļāļģāļāļĒāđāļēāļāļāđāļāļĒ 300 DPI)
- āļŠāļ āļēāļāđāļŠāļ
- āļāļ§āļēāļĄāļāļĄāļāļąāļāļāļāļāļ āļēāļ
-
āļŠāļ āļēāļāļāļāļāđāļāļāļŠāļēāļĢ
- āļāļ§āļēāļĄāđāļŠāļĩāļĒāļŦāļēāļĒāļāļēāļāļāļēāļĒāļ āļēāļ
- āļāļēāļĢāļāļĩāļāļāļēāļāļŦāļĢāļ·āļāļāļēāļĢāļŠāļķāļāļŦāļĢāļ
- āļāļēāļĢāđāļāđāđāļāļāđāļ§āļĒāļĨāļēāļĒāļĄāļ·āļ
-
āļĢāļđāļāđāļāļāđāļāđāļŠāļĢāđāļāļĢāļąāļāđāļāļīāļ
- āļĢāļđāļāđāļāļāļĄāļēāļāļĢāļāļēāļ: āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ 99%+
- āđāļāđāļēāđāļāļĢāļāļāļĩāđāđāļĄāđāđāļāđāļāļĄāļēāļāļĢāļāļēāļ: āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ 95%+
- āļāļāļāđāļāļĢāļ°āļāļāļāļāļĩāđāđāļāļĩāļĒāļāļāđāļ§āļĒāļĨāļēāļĒāļĄāļ·āļ: āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ 90%+
āļāļĢāļ°āļ§āļąāļāļīâ
āđāļāļāļāļģāļĨāļāļāļāļāļāđāļĢāļēāđāļāđāļĢāļąāļāļāļēāļĢāļāļķāļāļāļāļāļĒāđāļēāļāļāđāļāđāļāļ·āđāļāļāļāļāļāđāļāļĄāļđāļĨāđāļŦāļĄāđāđāļāļ·āđāļāļāļĢāļąāļāļāļĢāļļāļāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ:
āđāļ§āļāļĢāđāļāļąāļ | āļ§āļąāļāļāļĩāđāļ§āļēāļāļāļģāļŦāļāđāļēāļĒ | āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ | āļāļēāļĢāļāļĢāļąāļāļāļĢāļļāļāļāļĩāđāļŠāļģāļāļąāļ |
---|---|---|---|
3.0 | 2024-12-27 | 96.5% | āđāļ§āļāļĢāđāļāļąāļāļāļ·āđāļāļāļēāļ |