Skip to main content

🛂 āđāļāļ°āļ‚āđ‰āļ­āļĄāļđāļĨāļœāļđāđ‰āļ–āļ·āļ­āļžāļēāļŠāļ›āļ­āļĢāđŒāļ• (Passport OCR)

🛂 āļžāļēāļŠāļ›āļ­āļĢāđŒāļ•

Version Status New

āļĒāļīāļ™āļ”āļĩāļ•āđ‰āļ­āļ™āļĢāļąāļšāļŠāļđāđˆ iApp Passport OCR API āļœāļĨāļīāļ•āļ āļąāļ“āļ‘āđŒ AI āļ—āļĩāđˆāļžāļąāļ’āļ™āļēāđ‚āļ”āļĒ āļšāļĢāļīāļĐāļąāļ— āđ„āļ­āđāļ­āļžāļžāđŒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩ āļˆāļģāļāļąāļ” API āļ‚āļ­āļ‡āđ€āļĢāļēāđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ­āļ­āļāđāļšāļšāļĄāļēāđ€āļžāļ·āđˆāļ­āļˆāļ”āļˆāļģāđāļĨāļ°āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāļ āļēāļžāļžāļēāļŠāļ›āļ­āļĢāđŒāļ•āļ—āļĩāđˆāļŠāđāļāļ™āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāļ”āđ‰āļ§āļĒāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđāļĨāļ°āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āļŠāļđāļ‡ āļĢāļ°āļšāļšāļĄāļļāđˆāļ‡āđ€āļ™āđ‰āļ™āđ„āļ›āļ—āļĩāđˆāļāļēāļĢāļ­āđˆāļēāļ™āđ€āļ‚āļ•āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰āļ”āđ‰āļ§āļĒāđ€āļ„āļĢāļ·āđˆāļ­āļ‡ (MRZ) āļ—āļĩāđˆāļ”āđ‰āļēāļ™āļĨāđˆāļēāļ‡āļ‚āļ­āļ‡āļŦāļ™āđ‰āļēāļžāļēāļŠāļ›āļ­āļĢāđŒāļ• āđ‚āļ”āļĒāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļģāļ„āļąāļ āđ€āļŠāđˆāļ™ āļŠāļ·āđˆāļ­āļœāļđāđ‰āļ–āļ·āļ­āļŠāļąāļāļŠāļēāļ•āļī āļ§āļąāļ™āđ€āļāļīāļ” āđāļĨāļ°āļ­āļ·āđˆāļ™āđ†

Try Demo

Visit our API Portal to test the Passport OCR API with your own images.

āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āđƒāļŠāđ‰āļ‡āļēāļ™â€‹

  1. āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āđ€āļšāļ·āđ‰āļ­āļ‡āļ•āđ‰āļ™

    • API key āļˆāļēāļ āđ„āļ­āđāļ­āļžāļžāđŒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩ
    • āļ āļēāļžāļžāļēāļŠāļ›āļ­āļĢāđŒāļ•āļ—āļĩāđˆāļŠāđāļāļ™ (āļŦāļ™āđ‰āļēāļĢāļđāļ›āļ–āđˆāļēāļĒ)
    • āļĢāļđāļ›āđāļšāļšāđ„āļŸāļĨāđŒāļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļš: JPEG, JPG, PNG, PDF
    • āļ‚āļ™āļēāļ”āđ„āļŸāļĨāđŒāļŠāļđāļ‡āļŠāļļāļ”: 10MB
  2. āđ€āļĢāļīāđˆāļĄāļ•āđ‰āļ™āļ­āļĒāđˆāļēāļ‡āļĢāļ§āļ”āđ€āļĢāđ‡āļ§

    • āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ—āļĩāđˆāļĢāļ§āļ”āđ€āļĢāđ‡āļ§ (1-2 āļ§āļīāļ™āļēāļ—āļĩāļ•āđˆāļ­āļ āļēāļž)
    • āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāļŠāļđāļ‡ (95.51%)
    • āļĢāļ­āļ‡āļĢāļąāļšāļĢāļđāļ›āđāļšāļšāđ„āļŸāļĨāđŒāļŦāļĨāļēāļĒāļĢāļđāļ›āđāļšāļš
  3. āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĨāļąāļ

    • āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļ MRZ āļŠāļ™āļīāļ” TD3
    • āļāļēāļĢāđƒāļŦāđ‰āļ„āļ°āđāļ™āļ™āđāļĨāļ°āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡ OCR
    • āļāļēāļĢāļ”āļķāļ‡āļ āļēāļžāđƒāļšāļŦāļ™āđ‰āļēāđƒāļ™āļĢāļđāļ›āđāļšāļš base64
    • āļĢāļ­āļ‡āļĢāļąāļšāđ€āļ­āļāļŠāļēāļĢ PDF āļŦāļĨāļēāļĒāļŦāļ™āđ‰āļē
    • āļˆāļąāļ”āļāļēāļĢāļāļąāļšāļ āļēāļžāļ—āļĩāđˆāļŦāļĄāļļāļ™āđāļĨāļ°āđ€āļ­āļĩāļĒāļ‡
    • āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļĨāđˆāļ§āļ‡āļŦāļ™āđ‰āļēāļāļēāļĢāđāļšāđˆāļ‡āļŠāđˆāļ§āļ™āļ āļēāļžāļŠāļģāļŦāļĢāļąāļšāļ āļēāļžāļ—āļĩāđˆāđ€āļ­āļĩāļĒāļ‡
    • āļĢāļ­āļ‡āļĢāļąāļšāļ āļēāļĐāļēāđ„āļ—āļĒāđāļĨāļ°āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ
  4. āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļāļŽāļĢāļ°āđ€āļšāļĩāļĒāļš

    • āļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄ GDPR āđāļĨāļ° PDPA
    • āđ„āļĄāđˆāļĄāļĩāļāļēāļĢāđ€āļāđ‡āļšāļĢāļąāļāļĐāļēāļ‚āđ‰āļ­āļĄāļđāļĨāļŦāļĨāļąāļ‡āļˆāļēāļāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ
āļ§āļīāļ˜āļĩāļĢāļąāļš API Key?

āļāļĢāļļāļ“āļēāđ€āļĒāļĩāđˆāļĒāļĄāļŠāļĄ API Portal āđ€āļžāļ·āđˆāļ­āļ”āļđ API key āļ—āļĩāđˆāļĄāļĩāļ­āļĒāļđāđˆāļ‚āļ­āļ‡āļ„āļļāļ“āļŦāļĢāļ·āļ­āļ‚āļ­ API key āđƒāļŦāļĄāđˆ

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡â€‹

āļŦāļ™āđ‰āļēāļĢāļđāļ›āļ–āđˆāļēāļĒ​

Example Passport Profile Page

āļ„āļģāļ‚āļ­:​

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-100100
faceāļ āļēāļžāđƒāļšāļŦāļ™āđ‰āļēāļ—āļĩāđˆāļ”āļķāļ‡āļ­āļ­āļāļĄāļēāļ‚āđ‰āļ­āļ„āļ§āļēāļĄ Base64"/9j/4AAQSkZJRgABA..."

āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđ„āļŸāļĨāđŒ PDF​

āđ€āļĄāļ·āđˆāļ­āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđ„āļŸāļĨāđŒ PDF āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļˆāļ°āđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āđ€āļĨāđ‡āļāļ™āđ‰āļ­āļĒ:

  1. āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļˆāļ°āđ€āļ›āđ‡āļ™ JSON array āļ—āļĩāđˆāļĄāļĩāļœāļĨāļĨāļąāļžāļ˜āđŒāļŠāļģāļŦāļĢāļąāļšāđāļ•āđˆāļĨāļ°āļŦāļ™āđ‰āļē
  2. āļœāļĨāļĨāļąāļžāļ˜āđŒāļ‚āļ­āļ‡āđāļ•āđˆāļĨāļ°āļŦāļ™āđ‰āļēāļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒ:
    • page: āļŦāļĄāļēāļĒāđ€āļĨāļ‚āļŦāļ™āđ‰āļē
    • info: āļ›āļĢāļ°āļāļ­āļšāļ”āđ‰āļ§āļĒāļŸāļīāļĨāļ”āđŒāļĄāļēāļ•āļĢāļāļēāļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļ•āļēāļĄāļ—āļĩāđˆāđāļŠāļ”āļ‡āđ„āļ§āđ‰āļ‚āđ‰āļēāļ‡āļ•āđ‰āļ™
  3. āļŸāļīāļĨāļ”āđŒ 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" āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ āļēāļžāļ—āļĩāđˆāđ€āļ­āļĩāļĒāļ‡

āļĢāļēāļ„āļē​

āļŠāļ·āđˆāļ­āļšāļĢāļīāļāļēāļĢ AI APIEndpointIC āļ•āđˆāļ­āļ„āļģāļ‚āļ­On-Premise
Passport OCR [v2.0]passport_ocr_v10.75 IC/Requestāļ•āļīāļ”āļ•āđˆāļ­
passport_ocr_v20.75 IC/Request

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”​

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 APIEndpointIC āļ•āđˆāļ­āļ„āļģāļ‚āļ­On-Premise
Passport OCR [v2.0]passport_ocr_v10.75 IC/Requestāļ•āļīāļ”āļ•āđˆāļ­
passport_ocr_v20.75 IC/Request