Thai National ID Card OCR
Reads the front of a Thai national ID card into its number, names, address and dates, and the back into its laser code, with a confidence per field.
- Price1.25 ICper page
- Measured98.0%
- Capacity5,000 cards/hour
- Served24.3Mcalls
Input

OutputPOST /v3/store/ekyc/thai-national-id-card/front
- id_number
- 3411700830334
- th_name
- นาง บุญยัง โลเปช
- en_name
- Mrs. Bunyang Lopez
- en_dob
- 22 Mar. 1957
- address
- 33/349 หมู่ที่ 7 ต.หนองปรือ อ.บางละมุง จ.ชลบุรี
- province
- ชลบุรี
- detection_score
- 0.979
Every field, under ResponseOther endpoints: /back see Request
Request
multipart/form-data, one face of one card per request. For a photographed photocopy, use Photographed Thai National ID Card With Signature Detection.
Headers
apikeystringrequiredBody
filefilerequiredfieldsstringoptionsstringget_bbox adds each field's box as [x1, y1, x2, y2] with a score; get_image adds each field's crop as Base64; get_original adds the values before auto-correction; not_crop_card and not_rotate_card skip the cropping and the rotation; id_check rejects an ID number that fails its check digit; gray_check rejects a black-and-white image.| Endpoint | Returns | Price |
|---|---|---|
/v3/store/ekyc/thai-national-id-card/front | Every front-side field | 1.25 IC per page |
/v3/store/ekyc/thai-national-id-card/back | The laser code | 0.75 IC per page |
The legacy paths /thai-national-id-card/v3.5/front and /thai-national-id-card/v3.5.1/back answer at the same prices.
Response
The front, as in the panel:
id_numberid_number_statusth_initth_fnameth_lnameth_nameen_initen_fnameen_lnameen_nameth_dobth_issueth_expireen_doben_issueen_expireaddresshouse_novillage_novillagealleylaneroadsub_districtdistrictprovincepostal_codegenderreligionreligion is blank when the card omits itfaceconfidencedetection_scoreerror_messageprocess_timerequest_idThe back returns back_number, the 12-character laser code, with detection_score and process_time.
Status codes
| Code | Meaning |
|---|---|
| 420, 430 | No ID card in the image (front, back) |
| 421, 431 | Unsupported or corrupted image |
| 422, 432 | The image's dimensions are outside the limits |
| 424 | The ID number has 13 digits but fails its check digit, with id_check |
| 425 | The ID number has fewer than 13 digits, with id_check |
| 426, 436 | A black-and-white image, with gray_check |
| 434 | No laser code found on the back |
| 435 | The laser code has fewer than 12 characters, with id_check |
| 413 | The file is too large |
| 427, 428 | Processing or queue timeout |
| 461 | No file attached |
| 560 | The server is busy; retry |
| 563 | The image could not be processed |
Details
Measured
Against human-verified ground truth: 60 real cards, 1,380 field observations. The set is private.
| Measure | Result |
|---|---|
| ID number | 100% |
| Surname in English, titles, gender, religion | 100% |
| Sub-district, district, postal code, province, dates | 100% |
| Full address | 98.3% |
| Full name in Thai | 93.3% |
| All fields | 98.0% |
| Median time | 1.4 s per card, front; 1.3 s, back |
| Sustained throughput | 5,000 cards per hour, production, August 2026 |
Thai full names fell from 96.7% to 93.3% with the August 2026 engine: if you match on the Thai name rather than the number or the address, check its confidence. Method, per-field results and a comparison with a leading cloud OCR service: the benchmark paper (PDF).
Limits
- Capture at 300 dpi or more; 600 dpi and a file under 5 MB are recommended.
- Check
detection_score, and validate the ID number's format on your side.
Data handling
Images are processed in memory and not kept after the response. iApp keeps no copy; consent and notice under PDPA and GDPR remain with you as the data controller. For an on-premise deployment, in which no card leaves your network, contact us.
Changelog
| Version | Date | Changes |
|---|---|---|
| v3.6.0-20260824 | 24 Aug 2026 | English dates (en_dob, en_issue, en_expire) now match the card's print: abbreviated months carry a dot (23 Apr. 1997) and May, printed in full, has none; accept the dotted form when parsing. |
| v3.5.3-20260824 | 24 Aug 2026 | New engine: field-level accuracy 97.8% to 98.0%, largest gains on addresses, province and expiry dates; on-premise deployment. |
| 3.5 | Nov 2022 | New OCR engine, faster; characters correct 98.13%. |
| 3.4 | Jul 2022 | Thai military ranks; 93.25%. |
| 3.0 | Feb 2021 | Accuracy 91.75%. |
| 2.0 | Feb 2020 | The back side; 85%. |
| 1.0 | Nov 2019 | First release; 76%. |