ð āđāļāļ°āļāđāļāļĄāļđāļĨāļāļđāđāļāļ·āļāļāļēāļŠāļāļāļĢāđāļ (Passport OCR)
ð āļāļēāļŠāļāļāļĢāđāļ
āļĒāļīāļāļāļĩāļāđāļāļāļĢāļąāļāļŠāļđāđ iApp Passport OCR API āļāļĨāļīāļāļ āļąāļāļāđ AI āļāļĩāđāļāļąāļāļāļēāđāļāļĒ āļāļĢāļīāļĐāļąāļ āđāļāđāļāļāļāđāđāļāļāđāļāđāļĨāļĒāļĩ āļāļģāļāļąāļ API āļāļāļāđāļĢāļēāđāļāđāļĢāļąāļāļāļēāļĢāļāļāļāđāļāļāļĄāļēāđāļāļ·āđāļāļāļāļāļģāđāļĨāļ°āļāļķāļāļāđāļāļĄāļđāļĨāļāļēāļāļ āļēāļāļāļēāļŠāļāļāļĢāđāļāļāļĩāđāļŠāđāļāļāđāļāļĒāļāļąāļāđāļāļĄāļąāļāļīāļāđāļ§āļĒāļāļ§āļēāļĄāđāļĄāđāļāļĒ āļģāđāļĨāļ°āļāļ§āļēāļĄāđāļĢāđāļ§āļŠāļđāļ āļĢāļ°āļāļāļĄāļļāđāļāđāļāđāļāđāļāļāļĩāđāļāļēāļĢāļāđāļēāļāđāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāđāļēāļāđāļāđāļāđāļ§āļĒāđāļāļĢāļ·āđāļāļ (MRZ) āļāļĩāđāļāđāļēāļāļĨāđāļēāļāļāļāļāļŦāļāđāļēāļāļēāļŠāļāļāļĢāđāļ āđāļāļĒāļāļķāļāļāđāļāļĄāļđāļĨāļŠāļģāļāļąāļ āđāļāđāļ āļāļ·āđāļāļāļđāđāļāļ·āļāļŠāļąāļāļāļēāļāļī āļ§āļąāļāđāļāļīāļ āđāļĨāļ°āļāļ·āđāļāđ
āļāļāļĨāļāļāđāļāđāđāļĨāļĒ!â
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, PDF
- āļāļāļēāļāđāļāļĨāđāļŠāļđāļāļŠāļļāļ: 10MB
-
āđāļĢāļīāđāļĄāļāđāļāļāļĒāđāļēāļāļĢāļ§āļāđāļĢāđāļ§
- āļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĩāđāļĢāļ§āļāđāļĢāđāļ§ (1-2 āļ§āļīāļāļēāļāļĩāļāđāļāļ āļēāļ)
- āļāļēāļĢāļāļķāļāļāđāļāļāļ§āļēāļĄāļāļĩāđāļĄāļĩāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāļŠāļđāļ (95.51%)
- āļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāđāļāļĨāđāļŦāļĨāļēāļĒāļĢāļđāļāđāļāļ
-
āļāļļāļāļŠāļĄāļāļąāļāļīāļŦāļĨāļąāļ
- āļāļķāļāļāđāļāļĄāļđāļĨāļāļēāļ MRZ āļāļāļīāļ TD3
- āļāļēāļĢāđāļŦāđāļāļ°āđāļāļāđāļĨāļ°āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļ OCR
- āļāļēāļĢāļāļķāļāļ āļēāļāđāļāļŦāļāđāļēāđāļāļĢāļđāļāđāļāļ base64
- āļĢāļāļāļĢāļąāļāđāļāļāļŠāļēāļĢ PDF āļŦāļĨāļēāļĒāļŦāļāđāļē
- āļāļąāļāļāļēāļĢāļāļąāļāļ āļēāļāļāļĩāđāļŦāļĄāļļāļāđāļĨāļ°āđāļāļĩāļĒāļ
- āļāļēāļĢāļāļĢāļ°āļĄ āļ§āļĨāļāļĨāļĨāđāļ§āļāļŦāļāđāļēāļāļēāļĢāđāļāđāļāļŠāđāļ§āļāļ āļēāļāļŠāļģāļŦāļĢāļąāļāļ āļēāļāļāļĩāđāđāļāļĩāļĒāļ
- āļĢāļāļāļĢāļąāļāļ āļēāļĐāļēāđāļāļĒāđāļĨāļ°āļ āļēāļĐāļēāļāļąāļāļāļĪāļĐ
-
āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļāļāļīāļāļąāļāļīāļāļēāļĄāļāļāļĢāļ°āđāļāļĩāļĒāļ
- āļāļāļīāļāļąāļāļīāļāļēāļĄ GDPR āđāļĨāļ° PDPA
- āđāļĄāđāļĄāļĩāļāļēāļĢāđāļāđāļāļĢāļąāļāļĐāļēāļāđāļāļĄāļđāļĨāļŦāļĨāļąāļāļāļēāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨ
āļāļĢāļļāļāļēāđāļĒāļĩāđāļĒāļĄāļāļĄ API Portal āđāļāļ·āđāļāļāļđ API key āļāļĩāđāļĄāļĩāļāļĒāļđāđāļāļāļāļāļļāļāļŦāļĢāļ·āļāļāļ API key āđāļŦāļĄāđ
āļāļąāļ§āļāļĒāđāļēāļâ
āļŦāļāđāļēāļĢāļđāļāļāđāļēāļĒâ
āļāļģāļāļ:â
curl -X POST https://api.iapp.co.th/passport-ocr/v2/ocr \
-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 | āļ§āļīāļāļĩāļāļēāļĢāļāđāļēāļāļāļĩāđāđāļāđ | āļāđāļāļāļ§āļēāļĄ | "direct" |
mrz_type | āļāļāļīāļāļāļāļāđāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāļāđāļēāļāđāļāđāļāđāļ§āļĒāđāļāļĢāļ·āđāļāļ | āļāđāļāļāļ§āļēāļĄ | "TD3" |
names | āļāļ·āđāļ/āļāļ·āđāļāļāļĢāļīāļ | āļāđāļāļāļ§āļēāļĄ | "MATHANIDA" |
nationality | āļŠāļąāļāļāļēāļāļīāļāļāļāļāļđāđāļāļ·āļ | 3 āļāļąāļ§āļāļąāļāļĐāļĢ | "THA" |
number | āļŦāļĄāļēāļĒāđāļĨāļāļāļēāļŠāļāļāļĢāđāļ | āļāđāļāļāļ§āļēāļĄ | "AC1062346" |
personal_number | āļŦāļĄāļēāļĒāđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§āļāļĢāļ°āļāļēāļāļ | āļāđāļāļāļ§āļēāļĄ | "0012345678913" |
raw_text | āļāđāļāļāļ§āļēāļĄ MRZ āļāļīāļāļāļēāļāļāļēāļŠāļāļāļĢāđāļ | āļāđāļāļāļ§āļēāļĄ | "P<THAPOSHNASWADIWONG..." |
sex | āđāļāļĻ | āļāļąāļ§āļāļąāļāļĐāļĢāđāļāļĩāļĒāļ§ | "F" |
surname | āļāļēāļĄāļŠāļāļļāļĨ | āļāđāļāļāļ§āļēāļĄ | "POSHNASWADIWONG" |
type | āļāļāļīāļāđāļāļāļŠāļēāļĢ | āļāđāļāļāļ§āļēāļĄ | "P" |
valid_composite | āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļ MRZ āđāļāļĒāļĢāļ§āļĄ | āļāļđāļĨāļĩāļ | true |
valid_date_of_birth | āļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāļāļąāļ§āđāļĨāļāļāļĢāļ§āļāļŠāļāļāļ§āļąāļāđāļāļīāļ | āļāļđāļĨāļĩāļ | true |
valid_expiration_date | āļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāļāļąāļ§āđāļĨāļāļāļĢāļ§āļāļŠāļāļāļ§āļąāļāļŦāļĄāļāļāļēāļĒāļļ | āļāļđāļĨāļĩāļ | true |
valid_number | āļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāļāļąāļ§āđāļĨāļāļāļĢāļ§āļāļŠāļāļāļŦāļĄāļēāļĒāđāļĨāļāđāļāļāļŠāļēāļĢ | āļāļđāļĨāļĩāļ | true |
valid_personal_number | āļāļ§āļēāļĄāļāļđāļāļāđāļāļāļāļāļāļāļąāļ§āđāļĨāļāļāļĢāļ§āļāļŠāļāļāļŦāļĄāļēāļĒāđāļĨāļāļāļĢāļ°āļāļģāļāļąāļ§ | āļāļđāļĨāļĩāļ | true |
valid_score | āļāļ°āđāļāļāļāļ§āļēāļĄāļāļđāļāļāđāļāļāđāļāļĒāļĢāļ§āļĄ | āļāļģāļāļ§āļāđāļāđāļĄ 0-100 | 100 |
face | āļ āļēāļāđāļāļŦāļāđāļēāļāļĩāđāļāļķāļāļāļāļāļĄāļē | āļāđāļāļāļ§āļēāļĄ Base64 | "/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â
āļāļēāļĢāļāļāļāļģāļāļēāļŠāļāļāļĢāđāļâ
POST https://api.iapp.co.th/passport-ocr/v2
āļāļģāđāļāļīāļāļāļēāļĢ OCR āļāļāļŦāļāđāļēāļĢāļđāļāļāđāļēāļĒāļāļēāļŠāļāļāļĢāđāļāđāļĨāļ°āļāļķāļāļāđāļāļĄāļđāļĨ MRZ
āļāļēāļĢāļēāļĄāļīāđāļāļāļĢāđ:
- file (āļāļģāđāļāđāļ): āđāļāļĨāđāļĢāļđāļāļ āļēāļ (JPG, PNG, PDF)
- apikey (āļāļģāđāļāđāļ): API key āļāļāļāļāļļāļ
- options: āđāļāļīāļāđāļāđāļāļēāļ "segmentation" āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļ āļēāļāļāļĩāđāđāļāļĩāļĒāļ
āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļâ
Pythonâ
import requests
url = "https://api.iapp.co.th/passport-ocr/v2/ocr"
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/passport-ocr/v2/ocr",
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/passport-ocr/v2/ocr',
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/passport-ocr/v2/ocr")!
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/passport-ocr/v2/ocr")
.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/passport-ocr/v2/ocr");
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/passport-ocr/v2/ocr');
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
- āļāļēāļŠāļāļāļĢāđāļāļŦāļāļķāđāļāđāļĨāđāļĄāļāđāļāļ āļēāļāļŦāļāļķāđāļāļ āļēāļ
- āļāļģāđāļāđāļāļāđāļāļāđāļāđāļ āļēāļāļāļĩāđāļāļąāļāđāļāļāđāļĨāļ°āđāļāļāļąāļŠ
āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļâ
- āļāļĢāļ§āļāļŠāļāļāđāļŦāđāđāļāđāđāļāļ§āđāļēāļŠāļ āļēāļāđāļŠāļāļŠāļ§āđāļēāļāļāļĩ
- āļŦāļĨāļĩāļāđāļĨāļĩāđāļĒāļāđāļŠāļāļŠāļ°āļāđāļāļāđāļĨāļ°āđāļŠāļāļāđāļē
- āļāļąāļāļ§āļēāļāļāļēāļŠāļāļāļĢāđāļāđāļŦāđāļāļĢāļāļāļĨāļēāļāđāļāļĢāļĄ
- āļ§āļēāļāļāļēāļŠāļāļāļĢāđāļāđāļŦāđāđāļĢāļĩāļĒāļ
- āđāļāđāļ āļēāļāļāļ§āļēāļĄāļĨāļ°āđāļāļĩāļĒāļāļŠāļđāļ
- āđāļāļīāļāđāļāđāļāļēāļāļāļąāļ§āđāļĨāļ·āļāļāļāļēāļĢāđāļāđāļāļŠāđāļ§āļāļŠāļģāļŦāļĢāļąāļāļ āļēāļāļāļĩāđāđāļāļĩāļĒāļ
āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļĨāļ°āļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļâ
āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļāļĒāļĢāļ§āļĄâ
- āđāļ§āļāļĢāđāļāļąāļāļāļąāļāļāļļāļāļąāļ (2.0): 95.51%
- āđāļ§āļāļĢāđāļāļąāļāļāđāļāļāļŦāļāđāļē (1.1): 88.86%
āļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļāļĢāļ°āļāļąāļāļāļīāļĨāļāđ (āđāļ§āļāļĢāđāļāļąāļ 1.1)â
- āļāļ·āđāļ: 81.93%
- āļāļēāļĄāļŠāļāļļāļĨ: 90.26%
- āļŦāļĄāļēāļĒāđāļĨāļāđāļāļāļŠāļēāļĢ: 84.03%
- āļŠāļąāļāļāļēāļāļī: 88.09%
- āļāļēāļĢāļāļĢāļ§āļāļāļąāļāđāļāļŦāļāđāļē: 100%
āļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨâ
- āļ āļēāļāđāļāļĩāļĒāļ§: 1-2 āļ§āļīāļāļēāļāļĩ
- āđāļāļāļŠāļēāļĢ PDF: 2-3 āļ§āļīāļāļēāļāļĩāļāđāļāļŦāļāđāļē
- āđāļ§āļĨāļēāđāļāļīāđāļĄāđāļāļīāļĄāđāļĄāļ·āđāļāđāļāđāļāļēāļĢāđāļāđāļāļŠāđāļ§āļ
āļāļąāļāļāļąāļĒāļāļĩāđāļŠāđāļāļāļĨāļāđāļāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģâ
- āļāļļāļāļ āļēāļāļāļāļāļ āļēāļ
- āļŠāļ āļēāļāđāļŠāļāļŠāļ§āđāļēāļ
- āļāļģāđāļŦāļāđāļāļāļāļāđāļāļāļŠāļēāļĢ
- āļāļ§āļēāļĄāļĨāļ°āđāļāļĩāļĒāļāļāļāļāļ āļēāļ
- āļŠāļ āļēāļāļāļāļāđāļāļāļŠāļēāļĢ
- āļĄāļļāļĄāđāļāļĩāļĒāļāļāļāļāļ āļēāļ
āļāļĢāļ°āļ§āļąāļāļīâ
āđāļ§āļāļĢāđāļāļąāļ 2.0 (āļāļļāļĄāļ āļēāļāļąāļāļāđ 2023)â
- āđāļāļīāđāļĄāļāļ§āļēāļĄāđāļĄāđāļāļĒāļģāđāļāļĒāļĢāļ§āļĄāļāļēāļ 88.86% āđāļāđāļ 95.51%
- āļāļąāļāđāļāļĢāļāđāļāļĢāļ·āđāļāļāļĄāļ·āļ OCR āļāļąāđāļāļŦāļĄāļ
- āđāļāļīāđāļĄāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļĨāđāļ§āļāļŦāļāđāļēāļāļēāļĢāđāļāđāļāļŠāđāļ§āļāļ āļēāļāļŠāļģāļŦāļĢāļąāļāļ āļēāļāļāļĩāđāđāļāļĩāļĒāļ
āđāļ§āļāļĢāđāļāļąāļ 1.1 (āļĄāļāļĢāļēāļāļĄ 2023)â
- āđāļāļīāđāļĄāļāļēāļĢāļāļķāļāđāļāļŦāļāđāļēāđāļāđāļ base64
- āđāļāļīāđāļĄāļāļēāļĢāļĢāļāļāļĢāļąāļāļ āļēāļāļāļĩāđāđāļāļĩāļĒāļāđāļĨāđāļāļāđāļāļĒ
- āđāļāļīāđāļĄāļāļēāļĢāļĢāļāļāļĢāļąāļāđāļāļĨāđ PDF
- āđāļāļīāđāļĄāļāļēāļĢāļĢāļāļāļĢāļąāļ PDF āļŦāļĨāļēāļĒāļŦāļāđāļē
āđāļ§āļāļĢāđāļāļąāļ 1.0 (āļāļļāļĄāļ āļēāļāļąāļāļāđ 2022)â
- āļāļēāļĢāđāļāļīāļāļāļąāļ§āļāļĢāļąāđāļāđāļĢāļ
- āļĢāļāļāļĢāļąāļāļāļēāļŠāļāļāļĢāđāļāļāļāļāļāļļāļāļāļĢāļ°āđāļāļĻāļāļĩāđāđāļāđ MRZ
- āļĢāļāļāļĢāļąāļāļĢāļđāļāđāļāļāđāļāļĨāđāļāļ·āđāļāļāļēāļ (PNG, JPG, JPEG)
āļĢāļēāļāļēâ
āļāļ·āđāļāļāļĢāļīāļāļēāļĢ AI API | Endpoint | IC āļāđāļāļāļģāļāļ | On-Premise |
---|---|---|---|
Passport OCR [v2.0] | passport_ocr_v1 | 0.75 IC/Request | āļāļīāļāļāđāļāđāļĢāļē |
passport_ocr_v2 | 0.75 IC/Request |