ð āļāļēāļĢāļĢāļđāđāļāļģāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļ (OCR)
āļĒāļīāļāļāļĩāļāđāļāļāļĢāļąāļāļŠāļđāđ API āļāļēāļĢāļĢāļđāđāļāļģāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļ (Passport OCR) āļāļāļ iApp āļāļķāđāļāđāļāđāļāļāļĨāļīāļāļ āļąāļāļāđ AI āļāļĩāđāļāļąāļāļāļēāđāļāļĒ āļāļĢāļīāļĐāļąāļ āđāļāđāļāļāļāđāđāļāļāđāļāđāļĨāļĒāļĩ āļāļģāļāļąāļ API āļāļāļāđāļĢāļēāđāļāđāļĢāļąāļāļāļēāļĢāļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāļāļāļāļģāđāļĨāļ°āļāļķāļāļāđāļāļĄāļđāļĨāļāļēāļāļ āļēāļāļāđāļēāļĒāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļāļāļĩāđāļŠāđāļāļāđāļāļĒāļāļąāļāđāļāļĄāļąāļāļīāļāđāļ§āļĒāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļĨāļ°āļāļ§āļēāļĄāđāļĢāđāļ§āļŠāļđāļ āļĢāļ°āļāļāļāļĩāđāđāļāđāļāļāļēāļĢāļāđāļēāļ Machine Readable Zone (MRZ) āļāļĩāđāļāđāļēāļāļĨāđāļēāļāļāļāļāļŦāļāđāļēāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļ āđāļāļĒāļāļ°āļāļķāļāļāđāļāļĄāļđāļĨāļŠāļģāļāļąāļ āđāļāđāļ āļāļ·āđāļāļāļđāđāļāļ·āļāļŠāļąāļāļāļēāļāļīāļ§āļąāļāđāļāļīāļ āđāļĨāļ°āļāļ·āđāļāđ
āļĨāļāļāđāļāđāđāļāđāļĄ!â
āļāļāļĨāļāļāđāļāđ AI Demo
āđāļāđāļēāļŠāļđāđāļĢāļ°āļāļāļŦāļĢāļ·āļāļŠāļĢāđāļēāļāļāļąāļāļāļĩāļāļĢāļĩāđāļāļ·āđāļāđāļāđāļāļēāļ AI Demo āđāļĨāļ°āļŠāļģāļĢāļ§āļ API āļāļĩāđāļāļĢāļāļāļĨāļąāļāļāļāļāđāļĢāļē
āļĢāļąāļ 50 āđāļāļĢāļāļīāļāļāļĢāļĩ (IC) āđāļĄāļ·āđāļāļŠāļĄāļąāļāļĢāļŠāļĄāļēāļāļīāļ!
āđāļāļĢāđāļĄāļāļąāļāļŦāļĄāļāđāļāļ 31 āļāļąāļāļ§āļēāļāļĄ 2568
āđāļĢāļīāđāļĄāļāđāļāđāļāđāļāļēāļâ
-
āļāđāļāļāļģāļŦāļāļāđāļāļ·āđāļāļāļāđāļ
- āļāļĩāļĒāđ API āļāļēāļ āđāļāđāļāļāļāđāđāļāļāđāļāđāļĨāļĒāļĩ
- āļĢāļđāļāļāđāļēāļĒāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļāļāļĩāđāļŠāđāļāļ (āļŦāļāđāļēāļāđāļāļĄāļđāļĨāļŠāđāļ§āļāļāļąāļ§)
- āļĢāļđāļāđāļāļāđāļāļĨāđāļāļĩāđāļĢāļāļāļĢāļąāļ: JPEG, JPG, PNG, PDF
- āļāļāļēāļāđāļāļĨāđāļŠāļđāļāļŠāļļāļ: 10MB
-
āđāļĢāļīāđāļĄāļāđāļāļāļĒāđāļēāļāļĢāļ§āļāđāļĢāđāļ§
- āļāļĢāļ°āļĄāļ§āļĨāļāļĨāļĢāļ§āļāđāļĢāđāļ§ (1-2 āļ§āļīāļāļēāļāļĩāļāđāļāļ āļēāļ)
- āļāļēāļĢāļāļķāļāļāđāļāļāļ§āļēāļĄāļāđāļ§āļĒāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļŠāļđāļ (95.51%)
- āļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāđāļāļĨāđāļŦāļĨāļēāļĒāļĢāļđāļāđāļāļ
-
āļāļļāļāļŠāļĄāļāļąāļāļīāļŦāļĨāļąāļ
- āļāļķāļāļāđāļāļĄāļđāļĨāļāļēāļ TD3 type MRZ
- āļāļēāļĢāđāļŦāđāļāļ°āđāļāļāđāļĨāļ°āļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāļāļēāļĢāļĢāļđāđāļāļģāļāļąāļ§āļāļąāļāļĐāļĢ (OCR)
- āļāļēāļĢāļāļķāļāļĢāļđāļāļ āļēāļāđāļāļŦāļāđāļēāđāļāļĢāļđāļāđāļāļ base64
- āļĢāļāļāļĢāļąāļāđāļāļāļŠāļēāļĢ PDF āļŦāļĨāļēāļĒāļŦāļāđāļē
- āļāļąāļāļāļēāļĢāļāļąāļāļ āļēāļāļāļĩāđāļŦāļĄāļļāļāđāļĨāļ°āđāļāļĩāļĒāļ
- āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļ·āđāļāļāļāđāļāļāđāļ§āļĒāļāļēāļĢāđāļāđāļāļŠāđāļ§āļāļ āļēāļāļŠāļģāļŦāļĢāļą āļāļ āļēāļāļāļĩāđāđāļāļĩāļĒāļ
- āļĢāļāļāļĢāļąāļāļ āļēāļĐāļēāđāļāļĒāđāļĨāļ°āļ āļēāļĐāļēāļāļąāļāļāļĪāļĐ
-
āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļāļāļīāļāļąāļāļīāļāļēāļĄāļāđāļāļāļģāļŦāļāļ
- āđāļāđāļāđāļāļāļēāļĄ GDPR āđāļĨāļ° PDPA
- āđāļĄāđāļĄāļĩāļāļēāļĢāđāļāđāļāļāđāļāļĄāļđāļĨāļŦāļĨāļąāļāļāļēāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ
āļāļĢāļļāļāļēāđāļāļāļĩāđāļŦāļāđāļē āļāļēāļĢāļāļąāļāļāļēāļĢ API Key āđāļāļ·āđāļāļāļđ API Key āļāļĩāđāļĄāļĩāļāļĒāļđāđ āļŦāļĢāļ·āļāļāļāļĢāļąāļāļāļĩāļĒāđāđāļŦāļĄāđ
āļāļąāļ§āļāļĒāđāļēāļâ
āļŦāļāđāļēāļāđāļāļĄāļđāļĨāļŠāđāļ§āļāļāļąāļ§â

āļāļģāļāļ:â
curl -X POST https://api.iapp.co.th/v3/store/ekyc/passport/v2 \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/passport.jpg"
āļāļēāļĢāļāļāļāļŠāļāļāļ:â
{
"check_composite": "4",
"check_date_of_birth": "4",
"check_expiration_date": "4",
"check_number": "6",
"check_personal_number": "3",
"country": "THA",
"date_of_birth": "930710",
"expiration_date": "250304",
"method": "direct",
"mrz_type": "TD3",
"names": "MATHANIDA",
"nationality": "THA",
"number": "AC1062346",
"personal_number": "0012345678913",
"raw_text": "P<THAPOSHNASWADIWONG<<MATHANIDA<<<<<<<<<<<<<\nAC10623466THA9307104F25030440012345678913<34",
"sex": "F",
"surname": "POSHNASWADIWONG",
"type": "P",
"valid_composite": true,
"valid_date_of_birth": true,
"valid_expiration_date": true,
"valid_number": true,
"valid_personal_number": true,
"valid_score": 100,
"face": "/9j/4AAQSkZJRgABAQAAAQABAAD/..."
}
āļāļģāļāļāļīāļāļēāļĒāļāļīāļĨāļāđāļāļēāļĢāļāļāļāļŠāļāļāļâ
| āļāļīāļĨāļāđ | āļāļģāļāļāļīāļāļēāļĒ | āļĢāļđāļāđāļāļ | āļāļąāļ§āļāļĒāđāļēāļ |
|---|---|---|---|
| check_composite | āđāļĨāļāļāļĢāļ§āļāļŠāļāļāļĢāļ§āļĄāļŠāļģāļŦāļĢāļąāļāđāļāļ§āļāļāđāļĨāļ°āļāļĨāļēāļāļāļāļāđāļāļĢāļ·āđāļāļāļāđāļēāļāļāđāļāļĄāļđāļĨ | āļāļąāļ§āđāļĨāļāđāļāļĩāđāļĒāļ§ | "4" |
| check_date_of_birth | āđāļĨāļāļāļĢāļ§āļāļŠāļāļāļŠāļģāļŦāļĢāļąāļāļāļīāļĨāļāđāļ§āļąāļāđāļāļīāļ | āļāļąāļ§āđāļĨāļāđāļāļĩāđāļĒāļ§ | "4" |
| check_expiration_date | āđāļĨāļāļāļĢāļ§āļāļŠāļāļāļŠāļģāļŦāļĢāļąāļāļ§āļąāļāļŦāļĄāļāļāļēāļĒāļļ | āļāļąāļ§āđāļĨāļāđāļāļĩāđāļĒāļ§ | "4" |
| check_number | āđāļĨāļāļāļĢāļ§āļāļŠāļāļāļŠāļģāļŦāļĢāļąāļāļŦāļĄāļēāļĒāđāļĨāļāđāļāļāļŠāļēāļĢ | āļāļąāļ§āđāļĨāļāđāļāļĩāđāļĒāļ§ | "6" |
| check_personal_number | āđāļĨāļāļāļĢāļ§āļāļŠāļāļāļŠāļģāļŦāļĢāļąāļāļŦāļĄāļēāļĒāđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§ | āļāļąāļ§āđāļĨāļāđāļāļĩāđāļĒāļ§ | "3" |
| country | āļĢāļŦāļąāļŠāļāļĢāļ°āđāļāļĻāļāļĩāđāļāļāļāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļ | 3 āļāļąāļ§āļāļąāļāļĐāļĢ | "THA" |
| date_of_birth | āļ§āļąāļāđāļāļīāļ | YYMMDD | "930710" |
| expiration_date | āļ§āļąāļāļŦāļĄāļāļāļēāļĒāļļāđāļāļāļŠāļēāļĢ | YYMMDD | "250304" |
| method | āļ§āļīāļāļĩāļāļēāļĢāļāđāļēāļāļāļĩāđāđāļāđ | String | "direct" |
| mrz_type | āļāļĢāļ°āđāļ āļāļāļāļāđāļāļāļāļĩāđāļāđāļēāļāļāđāļ§āļĒāđāļāļĢāļ·āđāļāļ (machine readable zone) | String | "TD3" |
| names | āļāļ·āđāļāļāđāļ/āļāļ·āđāļāļāļĨāļēāļ | String | "MATHANIDA" |
| nationality | āļŠāļąāļāļāļēāļāļīāļāļāļāđāļāđāļēāļāļāļ | 3 āļāļąāļ§āļāļąāļāļĐāļĢ | "THA" |
| number | āļŦāļĄāļēāļĒāđāļĨāļāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļ | String | "AC1062346" |
| personal_number | āļŦāļĄāļēāļĒāđāļĨāļāļāļąāļāļĢāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ | String | "0012345678913" |
| raw_text | āļāđāļāļāļ§āļēāļĄ MRZ āļāļīāļāļāļēāļāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļ | String | "P<THAPOSHNASWADIWONG..." |
| sex | āđāļāļĻ | āļāļąāļ§āļāļąāļāļĐāļĢāđāļāļĩāđāļĒāļ§ | "F" |
| surname | āļāļēāļĄāļŠāļāļļāļĨ | String | "POSHNASWADIWONG" |
| type | āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ | String | "P" |
| valid_composite | āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāđāļĨāļāļāļĢāļ§āļāļŠāļāļāļĢāļ§āļĄāļāļāļ MRZ | Boolean | true |
| valid_date_of_birth | āļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāđāļĨāļāļāļĢāļ§āļāļŠāļāļāļ§āļąāļāđāļāļīāļ | Boolean | true |
| valid_expiration_date | āļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāđāļĨāļāļāļĢāļ§āļāļŠāļāļāļ§āļąāļāļŦāļĄāļāļāļēāļĒāļļ | Boolean | true |
| valid_number | āļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāđāļĨāļāļāļĢāļ§āļāļŠāļāļāļŦāļĄāļēāļĒāđāļĨāļāđāļāļāļŠāļēāļĢ | Boolean | true |
| valid_personal_number | āļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāđāļĨāļāļāļĢāļ§āļāļŠāļāļāļŦāļĄāļēāļĒāđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§ | Boolean | true |
| valid_score | āļāļ°āđāļāļāļāļ§āļēāļĄāļāļđāļāļāđāļāļāļĢāļ§āļĄ | Integer 0-100 | 100 |
| face | āļĢāļđāļāļ āļēāļāđāļāļŦāļāđāļē | Base64 string | "/9j/4AAQSkZJRgABA..." |
āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļĨāđ PDFâ
āđāļĄāļ·āđāļāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļāļĨāđ PDF āļĢāļđāļāđāļāļāļāļēāļĢāļāļāļāļŠāļāļāļāļāļ°āđāļāļāļāđāļēāļāļāļąāļāđāļĨāđāļāļāđāļāļĒ:
- āļāļēāļĢāļāļāļāļŠāļāļāļāļāļ°āđāļāđāļ JSON array āļāļĩāđāļĄāļĩāļāļĨāļĨāļąāļāļāđāļŠāļģāļŦāļĢāļąāļāđāļāđāļĨāļ°āļŦāļāđāļē
- āļāļĨāļĨāļąāļāļāđāđāļāđāļĨāļ°āļŦāļāđāļēāļāļ°āļĢāļ§āļĄāļāļķāļ:
page: āļŦāļĄāļēāļĒāđāļĨāļāļŦāļāđāļēinfo: āļāļĢāļ°āļāļāļāļāđāļ§āļĒāļāļīāļĨāļāđāļĄāļēāļāļĢāļāļēāļāļāļąāđāļāļŦāļĄāļāļāļēāļĄāļāļĩāđāđāļŠāļāļāđāļ§āđāļāđāļēāļāļāđāļ
- āļāļīāļĨāļāđ
process_timeāļāļ°āđāļŠāļāļāļĢāļ°āļĒāļ°āđāļ§āļĨāļēāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļąāđāļāļŦāļĄāļ
āđāļāļĢāļāļŠāļĢāđāļēāļāļāļēāļĢāļāļāļāļŠāļāļāļ PDF āļāļąāļ§āļāļĒāđāļēāļ:
[
{
"page": 1,
"info": {
"sex": "F",
"number": "AC1062346",
"expiration_date": "04/03/25",
"raw_text": "P<THAPOSHNASWADIWONG<<MATHANIDA<<<<<<<<<<<<<\nAC10623466THA9307104F25030440012345678913<34",
"personal_number": "0012345678913",
"surname": "POSHNASWADIWONG",
"nationality": "THA",
"date_of_birth": "10/07/93",
"names": "MATHANIDA",
"country": "THA",
"face": "iVBORw0...CYII=",
"inference": "3.888",
"file_name": "1676365480.3823211_thai_passport_page_1.png",
"message": "Success",
"status_code": 200
}
},
{
"process_time": "4.918s"
}
]
āļāļļāļāļŠāļĄāļāļąāļāļīāđāļĨāļ°āļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļâ
āļāļļāļāļŠāļĄāļāļąāļāļīāļŦāļĨāļąāļâ
- āļāļēāļĢāļāļķāļāļāđāļāļāļ§āļēāļĄāļāļēāļ MRZ (Machine Readable Zone)
- āļāļēāļĢāļāļķāļāļĢāļđāļāļ āļēāļāđāļāļŦāļāđāļē
- āļĢāļāļāļĢāļąāļ PDF āļŦāļĨāļēāļĒāļŦāļāđāļē
- āļāļēāļĢāđāļāđāđāļāļāļēāļĢāļ§āļēāļāđāļāļ§āļ āļēāļāļāļąāļāđāļāļĄāļąāļāļī
- āļāļēāļĢāđāļāđāļāļŠāđāļ§āļāļ āļēāļāļŠāļģāļŦāļĢāļąāļāļ āļēāļāļāļĩāđāđāļāļĩāļĒāļ
- āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāđāļ§āļĒāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļŠāļđāļ
āļāļīāļĨāļāđāļāļĩāđāļĢāļāļāļĢāļąāļâ
- āļāļĢāļ°āđāļ āļāđāļāļāļŠāļēāļĢ
- āļāļĢāļ°āđāļāļĻāļāļĩāđāļāļāļ
- āļŦāļĄāļēāļĒāđāļĨāļāđāļāļāļŠāļēāļĢ
- āļāļ·āđāļāļāļđāđāļāļ·āļ
- āļŠāļąāļāļāļēāļāļī
- āļ§āļąāļāđāļāļīāļ
- āđāļāļĻ
- āļ§āļąāļāļŦāļĄāļāļāļēāļĒāļļ
- āļŦāļĄāļēāļĒāđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§
- āļĢāļđāļāļ āļēāļāđāļāļŦāļāđāļē (base64)
- āļāđāļāļāļ§āļēāļĄ MRZ āļāļīāļ
- āļāļ°āđāļāļāļāļ§āļēāļĄāļāļđāļāļāđāļāļ
API Endpointsâ
| Endpoint | Method | āļāļģāļāļāļīāļāļēāļĒ | āļāđāļēāđāļāđāļāđāļēāļĒ |
|---|---|---|---|
/v3/store/ekyc/passport/v2/passport-ocr/v2 (āļĢāļļāđāļāđāļāđāļē) | POST | āļāļēāļĢāļĢāļđāđāļāļģāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļāļāļąāđāļāļŠāļđāļāļāđāļ§āļĒāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģ 95.51% - āļāļķāļāļāđāļāļĄāļđāļĨ MRZ āđāļĨāļ°āļĢāļđāļāļ āļēāļāđāļāļŦāļāđāļē | 0.75 IC āļāđāļāļŦāļāđāļē |
/v3/store/ekyc/passport/v1/passport-ocr (āļĢāļļāđāļāđāļāđāļē) | POST | āļāļēāļĢāļĢāļđāđāļāļģāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļ - āļāļķāļāļāđāļāļĄāļđāļĨ MRZ āđāļĨāļ°āļĢāļđāļāļ āļēāļāđāļāļŦāļāđāļē | 0.75 IC āļāđāļāļŦāļāđāļē |
API Referenceâ
Passport OCR Endpointsâ
1. Passport OCR (Version 1)â
POST /v3/store/ekyc/passport/v1
āļāļģāđāļāļīāļāļāļēāļĢāļĢāļđāđāļāļģāļāļąāļ§āļāļąāļāļĐāļĢ (OCR) āļāļāļŦāļāđāļēāļāđāļāļĄāļđāļĨāļŠāđāļ§āļāļāļąāļ§āļāļāļāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļāđāļĨāļ°āļāļķāļāļāđāļāļĄāļđāļĨ MRZ
2. Passport OCR (Version 2)â
POST /v3/store/ekyc/passport/v2
āđāļ§āļāļĢāđāļāļąāļāļāļĢāļąāļāļāļĢāļļāļāļāļĢāđāļāļĄāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļāļĩāđāđāļāļīāđāļĄāļāļķāđāļ (95.51%) āļāļģāđāļāļīāļāļāļēāļĢāļĢāļđāđāļāļģāļāļąāļ§āļāļąāļāļĐāļĢ (OCR) āļāļāļŦāļāđāļēāļāđāļāļĄāļđāļĨāļŠāđāļ§āļāļāļąāļ§āļāļāļāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļāđāļĨāļ°āļāļķāļāļāđāļāļĄāļđāļĨ MRZ
Request Headersâ
| āļāļ·āđāļ | āļāļĢāļ°āđāļ āļ | āļāļģāđāļāđāļ | āļāļģāļāļāļīāļāļēāļĒ |
|---|---|---|---|
| apikey | string | āđāļāđ | API Key āļāļāļāļāļļāļ |
Request Body (multipart/form-data)â
| āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđ | āļāļĢāļ°āđāļ āļ | āļāļģāđāļāđāļ | āļāļģāļāļāļīāļāļēāļĒ |
|---|---|---|---|
| file | File | āđāļāđ | āđāļāļĨāđāļĢāļđāļāļ āļēāļ (JPG, PNG, PDF) |
| options | String | āđāļĄāđ | āđāļāļīāļāđāļāđāļāļēāļ "segmentation" āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļāļāļĩāđāđāļāļĩāļĒāļ |
āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļâ
Curlâ
curl -X POST https://api.iapp.co.th/v3/store/ekyc/passport/front \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"
Pythonâ
import requests
url = "https://api.iapp.co.th/v3/store/ekyc/passport/v2"
headers = {
"apikey": "YOUR_API_KEY"
}
files = {
"file": open("passport.jpg", "rb")
}
response = requests.post(url, headers=headers, files=files)
print(response.json())
JavaScriptâ
const axios = require("axios")
const FormData = require("form-data")
const fs = require("fs")
let data = new FormData()
data.append("file", fs.createReadStream("passport.jpg"))
let config = {
method: "post",
url: "https://api.iapp.co.th/v3/store/ekyc/passport/v2",
headers: {
apikey: "YOUR_API_KEY",
...data.getHeaders(),
},
data: data,
}
axios(config)
.then((response) => console.log(response.data))
.catch((error) => console.log(error))
PHPâ
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/v3/store/ekyc/passport/v2',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => array(
'apikey: YOUR_API_KEY'
),
CURLOPT_POSTFIELDS => array(
'file'=> new CURLFILE('passport.jpg')
)
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Swiftâ
import Foundation
let url = URL(string: "https://api.iapp.co.th/v3/store/ekyc/passport/v2")!
let boundary = "Boundary-\(UUID().uuidString)"
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
let imageData = try! Data(contentsOf: URL(fileURLWithPath: "passport.jpg"))
var body = Data()
body.append("--\(boundary)\r\n")
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"passport.jpg\"\r\n")
body.append("Content-Type: image/jpeg\r\n\r\n")
body.append(imageData)
body.append("\r\n--\(boundary)--\r\n")
let task = URLSession.shared.uploadTask(with: request, from: body) { data, response, error in
if let data = data {
let json = try? JSONSerialization.jsonObject(with: data)
print(json ?? "")
}
}
task.resume()
Kotlinâ
import okhttp3.*
import java.io.File
val client = OkHttpClient()
val file = File("passport.jpg")
val requestBody = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(
"file",
file.name,
RequestBody.create(MediaType.parse("image/jpeg"), file)
)
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/v3/store/ekyc/passport/v2")
.addHeader("apikey", "YOUR_API_KEY")
.post(requestBody)
.build()
client.newCall(request).execute().use { response ->
println(response.body()?.string())
}
Javaâ
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.file.*;
public class PassportOCR {
public static void main(String[] args) throws IOException {
String boundary = "Boundary-" + System.currentTimeMillis();
URL url = new URL("https://api.iapp.co.th/v3/store/ekyc/passport/v2");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("apikey", "YOUR_API_KEY");
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
try (OutputStream os = conn.getOutputStream()) {
byte[] fileBytes = Files.readAllBytes(Paths.get("passport.jpg"));
os.write(("--" + boundary + "\r\n").getBytes());
os.write(("Content-Disposition: form-data; name=\"file\"; filename=\"passport.jpg\"\r\n").getBytes());
os.write(("Content-Type: image/jpeg\r\n\r\n").getBytes());
os.write(fileBytes);
os.write(("\r\n--" + boundary + "--\r\n").getBytes());
}
try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
}
Dartâ
import 'package:http/http.dart' as http;
import 'dart:io';
Future<void> scanPassport() async {
var url = Uri.parse('https://api.iapp.co.th/v3/store/ekyc/passport/v2');
var request = http.MultipartRequest('POST', url);
request.headers['apikey'] = 'YOUR_API_KEY';
request.files.add(
await http.MultipartFile.fromPath(
'file',
'passport.jpg',
),
);
var response = await request.send();
var responseBody = await response.stream.bytesToString();
print(responseBody);
}
āļāđāļāļāļģāļāļąāļāđāļĨāļ°āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļâ
āļāđāļāļāļģāļāļąāļâ
- āļāļāļēāļāđāļāļĨāđāļŠāļđāļāļŠāļļāļ: 10MB
- āļĢāļđāļāđāļāļāļāļĩāđāļĢāļāļāļĢāļąāļ: JPG, PNG, PDF
- āļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļāļŦāļāļķāđāļāđāļĨāđāļĄāļāđāļāļ āļēāļ
- āļāđāļāļāđāļāđāļ āļēāļāļāļĩāđāļāļąāļāđāļāļāđāļĨāļ°āđāļāļāļąāļŠ
āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļâ
- āļāļĢāļ§āļāļŠāļāļāđāļŦāđāđāļāđāđāļāļ§āđāļēāļĄāļĩāđāļŠāļāļŠāļ§āđāļēāļāđāļāļĩāļĒāļāļāļ
- āļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļāđāļŠāļāļŠāļ°āļāđāļāļāđāļĨāļ°āđāļāļē
- āļ§āļēāļāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļāđāļ§āđāļāļĢāļāļāļĨāļēāļāđāļāļĢāļĄ
- āļ§āļēāļāļŦāļāļąāļāļŠāļ·āļāđāļāļīāļāļāļēāļāđāļŦāđāđāļĢāļĩāļĒāļ
- āđāļāđāļ āļēāļāļāļ§āļēāļĄāļĨāļ°āđāļāļĩāļĒāļāļŠāļđāļ
- āđāļāļīāļāđāļāđāļāļēāļāļāļąāļ§āđāļĨāļ·āļāļ segmentation āļŠāļģāļŦāļĢāļąāļāļ āļēāļāļāļĩāđāđāļāļĩāļĒāļ
