ðŠŠ āļāļēāļĢāļāļāļāļģāļāđāļāļāļ§āļēāļĄ āļāļēāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļāđāļāļĒāļāđāļ§āļĒ (Thai National ID Card OCR)
ðŠŠ āļāļąāļāļĢāļāļĢāļ°āļāļēāļāļāđāļāļĒ
āļĒāļīāļāļāļĩāļāđāļāļāļĢāļąāļāļŠāļđāđ Thai National ID Card OCR API āđāļ§āļāļĢāđāļāļąāļ 3.5 āļāļĨāļīāļāļ āļąāļāļāđ AI āļāļĩāđāļāļąāļāļāļēāđāļāļĒāļāļĢāļīāļĐāļąāļ āđāļāđāļāļāļāđāđāļāļāđāļāđāļĨāļĒāļĩ āļāļģāļāļąāļ API āļāļāļāđāļĢāļēāļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāļāļķāļāļāđāļāļĄāļđāļĨāļāđāļāļāļ§āļēāļĄāļāļēāļāļāđāļēāļāļŦāļāđāļēāđāļĨāļ°āļāđāļēāļāļŦāļĨāļąāļāļāļāļāļ āļēāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļāđāļāļĒāļāđāļ§āļĒāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļĨāļ°āļāļ§āļēāļĄāđāļĢāđāļ§āļŠāļđāļ API āļāļāļāđāļĢāļēāļŠāļāļąāļāļŠāļāļļāļāļĢāļđāļāđāļāļāđāļāļĨāđ JPEG, JPG, PNG, HEIC, HEIF āđāļĨāļ° PDF āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļāđāļāđāļ āļēāļĒāđāļ 1-2 āļ§āļīāļāļēāļāļĩ
āļāļāļĨāļāļāđāļāđāđāļĨāļĒ!â
Example Images (Click to try)

Demo key is limited to 10 requests per day per IP
Click here to get your API key
āđāļĢāļīāđāļĄāļāđāļāđāļāđāļāļēāļâ
-
āļāđāļāļāļģāļŦāļāļāđāļāļ·āđāļāļāļāđāļ
- API key āļāļēāļ āđāļāđāļāļāļāđāđāļāļāđāļāđāļĨāļĒāļĩ
- āļ āļēāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļāđāļāļĒ (āļāđāļēāļāļŦāļāđāļē/āļāđāļēāļāļŦāļĨāļąāļ)
- āļĢāļđāļāđāļāļāđāļāļĨāđāļāļĩāđāļĢāļāļāļĢāļąāļ: JPEG, JPG, PNG, HEIC, HEIF, PDF
- āļāļ āļēāļāđāļāļĨāđāļŠāļđāļāļŠāļļāļ: 10MB
-
āđāļĢāļīāđāļĄāļāđāļāļāļĒāđāļēāļāļĢāļ§āļāđāļĢāđāļ§
- āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĩāđāļĢāļ§āļāđāļĢāđāļ§ (1-2 āļ§āļīāļāļēāļāļĩāļāđāļāļāļąāļāļĢ)
- āļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāļāđāļāļāļ§āļēāļĄāļāļĩāđāđāļĄāđāļāļĒāļģāļŠāļđāļ (98.13% āđāļāļĢāļ°āļāļąāļāļāļąāļāļāļĢāļ°)
- āļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāđāļāļĨāđāļŦāļĨāļēāļĒāļĢāļđāļāđāļāļ
-
āļāļļāļāļŠāļĄāļāļąāļāļīāļŦāļĨāļąāļ
- āļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāđāļēāļāđ āļĢāļ§āļĄāļāļķāļ:
- āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ
- āļāļ·āđāļ-āļāļēāļĄāļŠāļāļļāļĨ (āđāļāļĒāđāļĨāļ°āļāļąāļāļāļĪāļĐ)
- āļ§āļąāļāđāļāļ·āļāļāļāļĩāđāļāļīāļ
- āļĻāļēāļŠāļāļē
- āļāļĩāđāļāļĒāļđāđ
- āļ§āļąāļāļāļĩāđāļāļāļāđāļĨāļ°āļ§āļąāļāļāļĩāđāļŦāļĄāļāļāļēāļĒāļļ
- āļĢāļāļāļĢāļąāļāļāļąāđāļāļāđāļēāļāļŦāļāđāļēāđāļĨāļ°āļāđāļēāļāļŦāļĨāļąāļāļāļāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ
- āļāļąāļ§āđāļĨāļ·āļāļāđāļāļāļēāļĢāļŠāđāļāļāļ·āļāļāđāļāļāļ§āļēāļĄ OCR āļāđāļāļāļāļąāļāđāļĨāļ°āļ āļēāļāļāļĩāđāļāđāļēāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ
- āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāļŠāļāļāļ JSON āļāļĩāđāļĒāļ·āļāļŦāļĒāļļāđāļ
- āļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāđāļēāļāđ āļĢāļ§āļĄāļāļķāļ:
-
āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļāļāļīāļāļąāļāļīāļāļēāļĄāļāļāļŦāļĄāļēāļĒ
- āļāļāļīāļāļąāļāļīāļāļēāļĄ GDPR āđāļĨāļ° PDPA
- āđāļĄāđāļĄāļĩāļāļēāļĢāđāļāđāļāļĢāļąāļāļĐāļēāļāđāļāļĄāļđāļĨāļŦāļĨāļąāļāļāļēāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ
āļāļĢāļļāļāļēāđāļĒāļĩāđāļĒāļĄāļāļĄ API Portal āđāļāļ·āđāļāļāļđ API key āļāļĩāđāļĄāļĩāļāļĒāļđāđāļāļāļāļāļļāļāļŦāļĢāļ·āļāļāļ API key āđāļŦāļĄāđ
āļāļąāļ§āļāļĒāđāļēāļâ
āļāđāļēāļāļŦāļāđāļēâ

āļāļģāļāļ:â
curl -X POST https://api.iapp.co.th/thai-national-id-card/v3.5/front
-H "apikey: YOUR_API_KEY"
-F "file=@/path/to/idcard.jpg"
āļāļēāļĢāļāļāļāļŠāļāļāļ:â
{
"address": "XXXXXX XXXX X āļ.āļŦāļāļāļāļāļĢāļ·āļ āļ.āļāļēāļāļĨāļ°āļĄāļļāļ āļ.āļāļĨāļāļļāļĢāļĩ",
"alley": "",
"detection_score": 0.981011797984441,
"district": "āļāļēāļāļĨāļ°āļĄāļļāļ",
"en_dob": "XX Mar 1957",
"en_expire": "XX Mar 2025",
"en_fname": "XXXXXX",
"en_init": "Mrs.",
"en_issue": "26 Jul 2016",
"en_lname": "Lopez",
"en_name": "Mrs. XXXXXX Lopez",
"error_message": "",
"face": "/9j/4AAQ...UAFFFFAH/9k=", # Base64 of photo's image
"gender": "Female",
"home_address": "XXXXX XXX",
"house_no": "XXXXXX",
"id_number": "34117XXXXXX334",
"id_number_status": 1,
"lane": "",
"postal_code": "20150", # Automatic Retrieve from Database
"process_time": 1.3018648624420166, # Seconds
"province": "āļāļĨāļāļļāļĢāļĩ",
"religion": "",
"request_id": null,
"road": "",
"sub_district": "āļŦāļāļāļāļāļĢāļ·āļ",
"th_dob": "XX āļĄāļĩ.āļ. 2500",
"th_expire": "XX āļĄāļĩ.āļ. 2568",
"th_fname": "XXXXX",
"th_init": "āļāļēāļ",
"th_issue": "XX āļ.āļ. 2559",
"th_lname": "āđāļĨāđāļāļ",
"th_name": "āļāļēāļ XXXXX āđāļĨāđāļāļ",
"village": "",
"village_no": "7"
}
āļāđāļēāļāļŦāļĨāļąāļâ

āļāļģāļāļ:â
curl --location --request POST 'https://api.iapp.co.th/thai-national-id-card/v3.5/back' \
--header 'apikey: {Your API Key}' \
--form 'file=@"path/to/id-card-back.jpg"'
āļāļēāļĢāļāļāļāļŠāļāļāļ:â
{
"back_number": "JT0-1740123-05",
"detection_score": 0.99846746524175,
"process_time": 1.370201416015625
}
āļāļļāļāļŠāļĄāļāļąāļāļīāđāļĨāļ°āļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļâ
āļāļļāļāļŠāļĄāļāļąāļāļīāļŦāļĨāļąāļâ
- āļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨāļāđāļāļāļ§āļēāļĄāļāļĩāđāđāļĄāđāļāļĒāļģāļŠāļđāļ (āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļĢāļ°āļāļąāļāļāļąāļāļāļĢāļ° 98.13%)
- āđāļ§āļĨāļēāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĩāđāļĢāļ§āļāđāļĢāđāļ§ (1-3 āļ§āļīāļāļēāļāļĩāļāđāļāļāļąāļāļĢ)
- āļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāđāļāļĨāđāļŦāļĨāļēāļĒāļĢāļđāļāđāļāļ (JPEG, JPG, PNG, HEIC, HEIF, PDF)
- āļāļēāļĢāļāļĢāļāļāļāļąāļāđāļĨāļ°āļāļēāļĢāļŦāļĄāļļāļāļāļąāļāļĢāđāļāļĒāļāļąāļāđāļāļĄāļąāļāļī
- āļŠāđāļāļāļ·āļāļāļĨāđāļāļāļĨāđāļāļĄāļĢāļāļāđāļĨāļ°āļāļ°āđāļāļāļŠāļģāļŦāļĢāļąāļāđāļāđāļĨāļ°āļāđāļāļāļāđāļāļĄāļđāļĨ
- āļŠāđāļāļāļ·āļāļ āļēāļāļāļąāļāļĢāđāļĨāļ°āļāđāļāļāļāđāļāļĄāļđāļĨāđāļāļĢāļđāļāđāļāļ Base64
- āļŠāđāļāļāļ·āļāļāđāļāļāļ§āļēāļĄ OCR āļāļīāļ
- āļĢāļāļāļĢāļąāļāļāđāļēāļāļŦāļĨāļąāļāļāļāļāļāļąāļāļĢāđāļāļĒāđāļĄāđāļāđāļāļāđāļāđāļāļīāļ
āļāđāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāļĢāļāļāļĢāļąāļâ
āļāđāļēāļāļŦāļāđāļēâ
āļāđāļāļāļāđāļāļĄāļđāļĨ | āļāļāļīāļ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|
address | String | āļāļĩāđāļāļĒāļđāđāļāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
detection_score | float | āļāļ°āđāļāļāļāļēāļĢāļāļĢāļ§āļāļāļąāļāļāļāļāļāđāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļ |
district | String | āļāļ·āđāļāļāļģāđāļ āļāļāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
en_dob | String | āļ§āļąāļāđāļāļ·āļāļāļāļĩāđāļāļīāļ āđāļāđāļāļ āļēāļĐāļēāļāļąāļāļāļĪāļĐ |
en_expire | String | āļ§āļąāļāļŦāļĄāļāļāļēāļĒāļļ āđāļāđāļāļ āļēāļĐāļēāļāļąāļāļāļĪāļĐ |
en_fname | String | āļāļ·āđāļ (āļ āļēāļĐāļēāļāļąāļāļāļĪāļĐ) |
en_init | String | āļāļģāļāļģāļŦāļāđāļēāļāļ·āđāļ (āļ āļēāļĐāļēāļāļąāļāļāļĪāļĐ) |
en_issue | String | āļ§āļąāļāļāļĩāđāļāļāļāļāļąāļāļĢ (āļ āļēāļĐāļēāļāļąāļāļāļĪāļĐ) |
en_lname | String | āļāļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāļāļąāļāļāļĪāļĐ) |
en_name | String | āļāļ·āđāļāđāļĨāļ°āļāļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāļāļąāļāļāļĪāļĐ) |
error_message | String | āļāđāļāļāļ§āļēāļĄāđāļŠāļāļāļāđāļāļāļīāļāļāļĨāļēāļ |
face | String | āļŠāļāļĢāļīāļāļāļąāļāļāļĢāļ° Base64 āļāļĩāđāđāļāļĨāļāļāļēāļāļ āļēāļ |
gender | String | āđāļāļĻ |
home_address | String | āļāļĩāđāļāļĒāļđāđāļāđāļēāļāļāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
id_number | String | āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ |
postal_code | String | āļĢāļŦāļąāļŠāđāļāļĢāļĐāļāļĩāļĒāđ |
process_time | String | āđāļ§āļĨāļēāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ (āļ§āļīāļāļēāļāļĩ) |
province | String | āļāļ·āđāļāļāļąāļāļŦāļ§āļąāļāļāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
religion | String | āļĻāļēāļŠāļāļēāļāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
sub_district | String | āļāļ·āđāļāļāļģāļāļĨāļāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
th_dob | String | āļ§āļąāļāđāļāļ·āļāļāļāļĩāđāļāļīāļ āđāļāđāļāļ āļēāļĐāļēāđāļāļĒ |
th_expire | String | āļ§āļąāļāļŦāļĄāļāļāļēāļĒāļļ āđāļāđāļāļ āļēāļĐāļēāđāļāļĒ |
th_fname | String | āļāļ·āđāļ (āļ āļēāļĐāļēāđāļāļĒ) |
th_init | String | āļāļģāļāļģāļŦāļāđāļēāļāļ·āđāļ (āļ āļēāļĐāļēāđāļāļĒ) |
th_issue | String | āļ§āļąāļāļāļĩāđāļāļāļāļāļąāļāļĢ (āļ āļēāļĐāļēāđāļāļĒ) |
th_lname | String | āļāļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāđāļāļĒ) |
th_name | String | āļāļ·āđāļāđāļĨāļ°āļāļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāđāļāļĒ) |
āļāđāļēāļāļŦāļĨāļąāļâ
āļāđāļāļāļāđāļāļĄāļđāļĨ | āļāļāļīāļ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|
back_number | String | āđāļĨāļāđāļĨāđāļāļāļĢāđāļāđāļēāļāļŦāļĨāļąāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
āļāđāļāļāļāđāļāļĄāļđāļĨāļāļēāļĢāļāļāļāļŠāļāļāļāļāļąāđāļ§āđāļâ
āļāđāļāļāļāđāļāļĄāļđāļĨ | āļāļāļīāļ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|
detection_score | Float | āļāļ°āđāļāļāļāļ§āļēāļĄāļĄāļąāđāļāđāļ (0-1) |
error_message | String | āļāđāļāļāļ§āļēāļĄāđāļŠāļāļāļāđāļāļāļīāļāļāļĨāļēāļāļŦāļēāļāļāļģāļāļāđāļĄāđāļŠāļģāđāļĢāđāļ |
process_time | Float | āđāļ§āļĨāļēāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāđāļāļ§āļīāļāļēāļāļĩ |
āļāđāļāļĄāļđāļĨāļāđāļēāļāļāļīāļ APIâ
āļāļēāļĢāļāļāļāļģāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļāđāļāļĒâ
āļāļļāļāļŠāļīāđāļāļŠāļļāļāļāļĩāđāļāļ°āļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļāđāļāļĒāđāļĨāļ°āļŠāđāļāļāļ·āļāļāđāļāļĄāļđāļĨāļāļĩāđāļāļķāļāļāļāļāļĄāļēāđāļāļĢāļđāļāđāļāļāļāļĩāđāļĄāļĩāđāļāļĢāļāļŠāļĢāđāļēāļ
āļāđāļēāļāļŦāļāđāļēâ
POST https://api.iapp.co.th/thai-national-id-card/v3.5/front
āļŠāđāļ§āļāļŦāļąāļ§āļāļāļāļāļģāļāļâ
āļāļ·āđāļ | āļāļāļīāļ | āļāļģāđāļāđāļ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|---|
apikey | string | āđāļāđ | API key āļāļāļāļāļļāļ |
āđāļāļ·āđāļāļŦāļēāļāļāļāļāļģāļāļ (multipart/form-data)â
āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđ | āļāļāļīāļ | āļāļģāđāļāđāļ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|---|
file | File | āđāļāđ | āļāđāļāļĄāļđāļĨāđāļāļāļēāļĢāļĩāļāļāļāļ āļēāļ (āļāđāļēāļāļŦāļāđāļē) |
fields | String | āđāļĄāđāđāļāđ | āļāļąāļ§āđāļĨāļ·āļāļāđāļāļāļēāļĢāđāļĨāļ·āļāļāļāđāļāļāļāđāļāļĄāļđāļĨāđāļāđāļāļēāļāđāļāļļāļ |
options | String | āđāļĄāđāđāļāđ | āļāļąāļ§āđāļĨāļ·āļāļāđāļāļāļēāļĢāđāļĨāļ·āļāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļĨāļ°āļāļēāļĢāļāļąāđāļāļāđāļēāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ |
āļāđāļēāļāļŦāļĨāļąāļâ
POST https://api.iapp.co.th/thai-national-id-card/v3.5/back
āļŠāđāļ§āļāļŦāļąāļ§āļāļāļāļāļģāļāļâ
āļāļ·āđāļ | āļāļāļīāļ | āļāļģāđāļāđāļ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|---|
apikey | string | āđāļāđ | API key āļāļāļāļāļļāļ |
āđāļāļ·āđāļāļŦāļēāļāļāļāļāļģāļāļ (multipart/form-data)â
āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđ | āļāļāļīāļ | āļāļģāđāļāđāļ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|---|
file | File | āđāļāđ | āļāđāļāļĄāļđāļĨāđāļāļāļēāļĢāļĩāļāļāļāļ āļēāļ (āļāđāļēāļāļŦāļĨāļąāļ) |
options | String | āđāļĄāđāđāļāđ | āļāļąāļ§āđāļĨāļ·āļāļāđāļāļāļēāļĢāđāļĨāļ·āļāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļĨāļ°āļāļēāļĢāļāļąāđāļāļāđāļēāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ |
āļāļąāļ§āđāļĨāļ·āļāļāļāļĩāđāļĄāļĩāļāļĒāļđāđâ
not_crop_card
- āļāđāļēāļĄāļāļēāļĢāļāļĢāļāļāļāļąāļāļāļąāļāļĢnot_rotate_card
- āļāđāļēāļĄāļāļēāļĢāļŦāļĄāļļāļāļāļąāļāđāļāļĄāļąāļāļīget_bbox
- āļŠāđāļāļāļ·āļāļāļīāļāļąāļāļāļĨāđāļāļāļĨāđāļāļĄāļĢāļāļget_image
- āļŠāđāļāļāļ·āļāļ āļēāļāļāļĩāđāļāđāļēāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨget_original
- āļŠāđāļāļāļ·āļāļ āļēāļāļāđāļāļāļāļąāļ
āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāļŠāļāļāļāļŠāļģāļŦāļĢāļąāļāļāļąāļ§āđāļĨāļ·āļāļāļāļĩāđāļĄāļĩāļāļĒāļđāđâ
āđāļĄāļ·āđāļāđāļāđāļāļąāļ§āđāļĨāļ·āļāļāļāļĩāđāļĄāļĩāļāļĒāļđāđ JSON āļāļēāļĢāļāļāļāļŠāļāļāļāļāļ°āļĄāļĩāļāđāļāļāļāđāļāļĄāļđāļĨāđāļāļīāđāļĄāđāļāļīāļĄāļāļēāļĄāļāļąāļ§āđāļĨāļ·āļāļāļāļĩāđāđāļĨāļ·āļāļ:
āļāļēāļĢāļāļāļāļŠāļāļāļāļāđāļ§āļĒāļāļąāļ§āđāļĨāļ·āļāļ get_bboxâ
āļŠāđāļāļāļ·āļāļāļīāļāļąāļāļāļĨāđāļāļāļĨāđāļāļĄāļĢāļāļāļŠāļģāļŦāļĢāļąāļāđāļāđāļĨāļ°āļāđāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāļĢāļ§āļāļāļāđāļāļĢāļđāļāđāļāļ [x1, y1, x2, y2]
āļāļĢāđāļāļĄāļāļ°āđāļāļāļāļ§āļēāļĄāļĄāļąāđāļāđāļ:
{
"bbox": {
"address": [
[[119, 292, 376, 334], 0.991],
[[75, 330, 255, 362], 0.999]
],
"card": [[[0, 0, 713, 462], 0.99]],
"en_dob": [[[370, 235, 526, 266], 0.999]],
"face": [[[544, 218, 708, 407], 0.999]]
// āļāļīāļāļąāļāļāđāļāļāļāđāļāļĄāļđāļĨāļāļ·āđāļāđ...
}
}
āļāļēāļĢāļāļāļāļŠāļāļāļāļāđāļ§āļĒāļāļąāļ§āđāļĨāļ·āļāļ get_imageâ
āļŠāđāļāļāļ·āļāļ āļēāļāļāļĩāđāļāļĢāļāļāļāļąāļāđāļĨāđāļ§āđāļāļĢāļđāļāđāļāļ Base64 āļŠāļģāļŦāļĢāļąāļāđāļāđāļĨāļ°āļāđāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāļĢāļ§āļāļāļ:
{
"image": {
"address": ["/9j/4AAQSk...", "/9j/4AAQSk..."],
"card": ["/9j/4AAQSk..."],
"face": ["/9j/4AAQSk..."],
"id_number": ["/9j/4AAQSk..."]
// āļ āļēāļāļāđāļāļāļāđāļāļĄāļđāļĨāļāļ·āđāļāđ...
}
}
āļāļēāļĢāļāļāļāļŠāļāļāļāļāđāļ§āļĒāļāļąāļ§āđāļĨāļ·āļāļ get_originalâ
āļŠāđāļāļāļ·āļāļāđāļēāļāļąāđāļāđāļāļīāļĄāļāđāļāļāļāļąāđāļāļāļāļāļāļēāļĢāđāļāđāđāļāļāļąāļāđāļāļĄāļąāļāļī (āļāļķāđāļāđāļāļīāļāļāļķāđāļāđāļāļāļąāđāļāļāļāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļŦāļĨāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ) āļāļĩāđāļāļĢāļ§āļāļāļāļāļēāļāļāļąāļāļĢ:
{
"original": {
"address": "XXXXX XXXXX X āļ.āļŦāļāļāļāļāļĢāļ·āļ āļ.āļāļēāļāļĨāļ°āļĄāļļāļ āļ.āļāļĨāļāļļāļĢāļĩ",
"en_dob": "XX Mar. 1957",
"en_expire": "XX Mar. 2025",
"th_name": "āļāļēāļ XXXXXX āđāļĨāđāļāļ"
// āļāđāļēāļāđāļāļāļāđāļāļĄāļđāļĨāļāļąāđāļāđāļāļīāļĄāļāļ·āđāļāđ...
}
}
āļāļēāļĢāļāļāļāļŠāļāļāļāļāļ°āļĢāļ§āļĄāļāđāļāļāļāđāļāļĄāļđāļĨāļĄāļēāļāļĢāļāļēāļ āđāļāđāļ detection_score, error_message āđāļĨāļ° process_time āđāļŠāļĄāļ āđāļĄāđāļ§āđāļēāļāļ°āđāļāđāļāļąāļ§āđāļĨāļ·āļāļāđāļāļāđāļāļēāļĄ
āļĢāļŦāļąāļŠāļāđāļāļāļīāļāļāļĨāļēāļâ
āļāđāļāļāļ§āļēāļĄāđāļŠāļāļāļāđāļāļāļīāļāļāļĨāļēāļāđāļāļāļēāļ°â
āļāđāļēāļāļŦāļāđāļēāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļāđāļāļĒâ
āļĢāļŦāļąāļŠāļŠāļāļēāļāļ° | āļāđāļāļāļ§āļēāļĄāļŠāļāļēāļāļ° | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|
420 | NO_ID_CARD_FOUND | āđāļāļĨāđāļ āļēāļāđāļĄāđāđāļāđāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
421 | IMAGE_ERROR_UNSUPPORTED_FORMAT | āđāļĄāđāļŠāļēāļĄāļēāļĢāļāđāļāđāđāļāļ āļēāļāđāļāđ āļĢāļđāļāđāļāļāđāļāļĨāđāļāļēāļāđāļĄāđāļĢāļāļāļĢāļąāļāļŦāļĢāļ·āļāđāļāļĨāđāđāļŠāļĩāļĒāļŦāļēāļĒ |
422 | INVALID_IMAGE_SIZE | āļāļāļēāļāļāļāļāļ āļēāļāļāļĩāđāļāļąāļāđāļŦāļĨāļāđāļĄāđāļāļĢāļāļāļēāļĄāļāđāļāļāļģāļŦāļāļ |
424 | PLEASE_VERIFY_ID_CARD_NUMBER | āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļāļĄāļĩ 13 āļŦāļĨāļąāļāđāļāđāđāļĄāđāļāļđāļāļāđāļāļ āļĢāļŦāļąāļŠāļāļēāļĢāļāļāļāļŠāļāļāļ 424 āļāļ°āđāļŠāļāļāđāļĄāļ·āđāļāđāļāđāļāļąāļ§āđāļĨāļ·āļāļ id_check |
425 | CANNOT_READ_ID_CARD_NUMBER_CLEARLY | āđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļāļĄāļĩāļāđāļāļĒāļāļ§āđāļē 13 āļŦāļĨāļąāļ āļĢāļŦāļąāļŠāļāļēāļĢāļāļāļāļŠāļāļāļ 425 āļāļ°āđāļŠāļāļāđāļĄāļ·āđāļāđāļāđāļāļąāļ§āđāļĨāļ·āļāļ id_check |
426 | IMAGE_ERROR_UNSUPPORTED_BLACK_WHITE_IMAGE | āđāļāđāļāļąāļ§āđāļĨāļ·āļāļ gray_check āđāļāļ·āđāļāļāļĢāļ§āļāļŠāļāļāļ āļēāļāļāļēāļ§āļāļģāđāļĨāļ°āļ āļēāļāļĢāļ°āļāļąāļāļŠāļĩāđāļāļē |
āļāđāļēāļāļŦāļĨāļąāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļāđāļāļĒâ
āļĢāļŦāļąāļŠāļŠāļāļēāļāļ° | āļāđāļāļāļ§āļēāļĄāļŠāļāļēāļāļ° | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|
430 | NO_ID_CARD_FOUND | āđāļāļĨāđāļ āļēāļāđāļĄāđāđāļāđāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
431 | IMAGE_ERROR_UNSUPPORTED_FORMAT | āđāļĄāđāļŠāļēāļĄāļēāļĢāļāđāļāđāđāļāļ āļēāļāđāļāđ āļĢāļđāļāđāļāļāđāļāļĨāđāļāļēāļāđāļĄāđāļĢāļāļāļĢāļąāļāļŦāļĢāļ·āļāđāļāļĨāđāđāļŠāļĩāļĒāļŦāļēāļĒ |
432 | INVALID_IMAGE_SIZE | āļāļāļēāļāļāļāļāļ āļēāļāļāļĩāđāļāļąāļāđāļŦāļĨāļāđāļĄāđāļāļĢāļāļāļēāļĄāļāđāļāļāļģāļŦāļāļ |
434 | LASER_NUMBER_NOT_FOUND | āļāļĢāļ§āļāđāļĄāđāļāļāđāļĨāļāđāļĨāđāļāļāļĢāđāļāđāļēāļāļŦāļĨāļąāļāļāļąāļāļĢāļāļĢāļ°āļāļēāļāļ |
435 | CANNOT_READ_LASER_NUMBER_CLEARLY | āđāļĨāļāđāļĨāđāļāļāļĢāđāļĄāļĩāļāđāļāļĒāļāļ§āđāļē 12 āļŦāļĨāļąāļ āļĢāļŦāļąāļŠāļāļēāļĢāļāļāļāļŠāļāļāļ 435 āļāļ°āđāļŠāļāļāđāļĄāļ·āđāļāđāļāđāļāļąāļ§āđāļĨāļ·āļāļ id_check |
436 | IMAGE_ERROR_UNSUPPORTED_BLACK_WHITE_IMAGE | āđāļāđāļāļąāļ§āđāļĨāļ·āļāļ gray_check āđāļāļ·āđāļāļāļĢāļ§āļāļŠāļāļāļ āļēāļāļāļēāļ§āļāļģāđāļĨāļ°āļ āļēāļāļĢāļ°āļāļąāļāļŠāļĩāđāļāļē |
āļāđāļāļāļ§āļēāļĄāđāļŠāļāļāļāđāļāļāļīāļāļāļĨāļēāļāļāļąāđāļ§āđāļâ
āļĢāļŦāļąāļŠāļŠāļāļēāļāļ° | āļāđāļāļāļ§āļēāļĄāđāļŠāļāļāļāđāļāļāļīāļāļāļĨāļēāļ | āļāļģāļāļāļīāļāļēāļĒ |
---|---|---|
404 | REQUESTED_URL_NOT_FOUND | āđāļĄāđāļāļāđāļŠāđāļāļāļēāļ API āđāļāļāļģāļāļ |
405 | METHOD_NOT_ALLOWED | āļāļ·āđāļāļ§āļīāļāļĩāļāļēāļĢ (GET, POST) āđāļ URL āđāļĄāđāļāļđāļāļāđāļāļ |
413 | FILE_IS_TOO_LARGE: (āļĄāļēāļāļāļ§āđāļē 2 MB) | āļāļāļēāļāđāļāļĨāđāđāļŦāļāđāđāļāļīāļāđāļ |
427 | LONG_TIME_TO_PROCESS | āđāļāļīāļĢāđāļāđāļ§āļāļĢāđāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļēāļāđāļāļīāļāđāļ |
428 | LONG_TIME_TO_REQUEST | āđāļāļĨāđāļāđāļāļāđāļāļģāļĨāļąāļāļĢ āļāļāļīāļ§āļāļĒāļđāđāļāļēāļāđāļāļīāļāđāļ |
461 | NO_FILE_ATTACHED | āđāļĄāđāļĄāļĩāđāļāļĨāđāđāļāļ |
560 | SERVER_IS_BUSY: (āđāļāļĢāļāļĨāļāļāđāļŦāļĄāđāļāļĩāļāļāļĢāļąāđāļāđāļāļāļĩāļāđāļĄāđāļāļĩāđāļ§āļīāļāļēāļāļĩ) | āđāļāļīāļĢāđāļāđāļ§āļāļĢāđāļāļģāļĨāļąāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļģāļāļāļāļģāļāļ§āļāļĄāļēāļ |
563 | ID_CARD_API_NOT_SUPPORT_THIS_IMAGE | API āļĄāļĩāļāđāļāļāļīāļāļāļĨāļēāļāđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ |
āļĢāļēāļāļēâ
āļāļ·āđāļāļāļĢāļīāļāļēāļĢ AI API | āļāļļāļāļŠāļīāđāļāļŠāļļāļ | IC āļāđāļāļāļģāļāļ | On-Premise |
---|---|---|---|
Thai National ID Card OCR (v3.5) | iapp_thai_national_id_card_ocr_v3.5_back | 0.75 IC/Request | āļāļīāļāļāđāļ |
iapp_thai_national_id_card_ocr_v3.5_front | 1.25 IC/Request |
āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļâ
Pythonâ
import requests
url = "https://api.iapp.co.th/thai-national-id-card/v3.5/front"
payload = {
'options': 'get_bbox,get_image'
}
files = [
('file',('id-card.jpg',open('path/to/id-card.jpg','rb'),'image/jpeg'))
]
headers = {
'apikey': 'YOUR_API_KEY'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
print(response.json())
JavaScriptâ
const axios = require("axios")
const FormData = require("form-data")
const fs = require("fs")
const form = new FormData()
form.append("file", fs.createReadStream("path/to/id-card.jpg"))
form.append("options", "get_bbox,get_image")
const config = {
method: "post",
url: "https://api.iapp.co.th/thai-national-id-card/v3.5/front",
headers: {
apikey: "YOUR_API_KEY",
...form.getHeaders(),
},
data: form,
}
axios(config)
.then((response) => console.log(JSON.stringify(response.data)))
.catch((error) => console.log(error))
PHPâ
<?php
$curl = curl_init();
$post_data = array(
'file'=> new CURLFile('path/to/id-card.jpg'),
'options' => 'get_bbox,get_image'
);
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/thai-national-id-card/v3.5/front',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $post_data,
CURLOPT_HTTPHEADER => array(
'apikey: YOUR_API_KEY'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
Swiftâ
import Foundation
let headers = [
"apikey": "YOUR_API_KEY"
]
let parameters = [
[
"name": "file",
"fileName": "path/to/id-card.jpg"
],
[
"name": "options",
"value": "get_bbox,get_image"
]
]
let boundary = "Boundary-\(UUID().uuidString)"
var body = ""
var error: Error? = nil
for param in parameters {
if let fileName = param["fileName"] {
let fileContent = try? String(contentsOfFile: fileName, encoding: .utf8)
body += "--\(boundary)\r\n"
body += "Content-Disposition:form-data; name=\"\(param["name"] ?? "")\""
body += "; filename=\"\(fileName)\"\r\n"
body += "Content-Type: image/jpeg\r\n\r\n"
body += fileContent ?? ""
} else {
body += "--\(boundary)\r\n"
body += "Content-Disposition:form-data; name=\"\(param["name"] ?? "")\"\r\n\r\n"
body += param["value"] ?? ""
}
}
let postData = body.data(using: .utf8)
var request = URLRequest(url: URL(string: "https://api.iapp.co.th/thai-national-id-card/v3.5/front")!,timeoutInterval: Double.infinity)
request.addValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")
request.httpMethod = "POST"
request.httpBody = postData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}
task.resume()
Kotlinâ
import okhttp3.*
import java.io.File
val client = OkHttpClient()
val mediaType = MediaType.parse("image/jpeg")
val file = File("path/to/id-card.jpg")
val body = MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file", file.name, RequestBody.create(mediaType, file))
.addFormDataPart("options", "get_bbox,get_image")
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/thai-national-id-card/v3.5/front")
.addHeader("apikey", "YOUR_API_KEY")
.post(body)
.build()
client.newCall(request).execute().use { response ->
println(response.body()?.string())
}
Javaâ
import java.io.File;
import okhttp3.*;
public class Main {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("image/jpeg");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file", "id-card.jpg",
RequestBody.create(mediaType, new File("path/to/id-card.jpg")))
.addFormDataPart("options", "get_bbox,get_image")
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/thai-national-id-card/v3.5/front")
.method("POST", body)
.addHeader("apikey", "YOUR_API_KEY")
.build();
try {
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
} catch(Exception e) {
e.printStackTrace();
}
}
}
Dartâ
import 'package:http/http.dart' as http;
void main() async {
var request = http.MultipartRequest('POST',
Uri.parse('https://api.iapp.co.th/thai-national-id-card/v3.5/front'));
request.files.add(await http.MultipartFile.fromPath(
'file', 'path/to/id-card.jpg'));
request.fields['options'] = 'get_bbox,get_image';
request.headers.addAll({
'apikey': 'YOUR_API_KEY'
});
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
} else {
print(response.reasonPhrase);
}
}
āļāđāļāļāļģāļāļąāļāđāļĨāļ°āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļâ
āļāđāļāļāļģāļāļąāļâ
- āļāļāļēāļāđāļāļĨāđāļŠāļđāļāļŠāļļāļ: 10MB
- āļĢāļđāļāđāļāļāļāļĩāđāļĢāļāļāļĢāļąāļ: JPEG, JPG, PNG, HEIC, HEIF, PDF
āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļâ
- āļāļĢāļ§āļāļŠāļāļāđāļŦāđāđāļāđāđāļāļ§āđāļēāļāļļāļāļ āļēāļāļāļāļāļ āļēāļāļāļĩ
- āļāļĢāļ§āļāļŠāļāļ detection_score āđāļāļāļēāļĢāļāļāļāļŠāļāļāļ
- āļāļąāļāļāļēāļĢāļāđāļāļāļ§āļēāļĄāđāļŠāļāļāļāđāļāļāļīāļāļāļĨāļēāļāļāļĒāđāļēāļāđāļŦāļĄāļēāļ°āļŠāļĄ
- āļāļĢāļ§āļāļŠāļāļāļĢāļđāļāđāļāļāđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ
- āļāļīāļāļēāļĢāļāļēāđāļāđāļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđ options āļŠāļģāļŦāļĢāļąāļāļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāđāļāļāļēāļ°
āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļĨāļ°āļāļĢāļ°āļŠāļīāļāļāļīāļ āļē āļâ
āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļāļĒāļĢāļ§āļĄâ
- āļāļ°āđāļāļāļāļēāļĢāļāļĢāļ§āļāļāļąāļāđāļāļĒāļāļąāđāļ§āđāļāļŠāļđāļāļāļ§āđāļē 96%
- āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļāļāļēāļ°āļāđāļāļāļāđāļāļĄāļđāļĨāđāļāļāļāđāļēāļāļāļąāļāđāļ
āļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨâ
- āđāļāļĒāđāļāļĨāļĩāđāļĒ: 1-2 āļ§āļīāļāļēāļāļĩ
- āļāļēāļāđāļāļāļāđāļēāļāļāļąāļāđāļāļāļēāļĄāļāļāļēāļāđāļĨāļ°āļāļļāļāļ āļēāļāļāļāļāļ āļēāļ