Skip to main content

🊊✏ïļ āļāļēāļĢāļ–āđˆāļēāļĒāļ āļēāļžāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒāļžāļĢāđ‰āļ­āļĄāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™ (ID card with Signature OCR)

🊊✏ïļ āļšāļĢāļīāļāļēāļĢ AI āđāļāļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļˆāļēāļāļĢāļđāļ›āļŠāļģāđ€āļ™āļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™

Version Status

āļĒāļīāļ™āļ”āļĩāļ•āđ‰āļ­āļ™āļĢāļąāļšāļŠāļđāđˆ Photographed Thai National ID Card With Signature Detection API āļœāļĨāļīāļ•āļ āļąāļ“āļ‘āđŒ AI āļ—āļĩāđˆāļžāļąāļ’āļ™āļēāđ‚āļ”āļĒ āļšāļĢāļīāļĐāļąāļ— āđ„āļ­āđāļ­āļžāļžāđŒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩ āļˆāļģāļāļąāļ” API āļ‚āļ­āļ‡āđ€āļĢāļēāļ­āļ­āļāđāļšāļšāļĄāļēāđ€āļžāļ·āđˆāļ­āļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļˆāļēāļāļŠāļģāđ€āļ™āļēāļ āļēāļžāļ–āđˆāļēāļĒāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒ (āļ—āļąāđ‰āļ‡āļŠāļĩāđāļĨāļ°āļ‚āļēāļ§āļ”āļģ) āđāļĨāļ°āļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™ āļĢāļ°āļšāļšāļŠāļēāļĄāļēāļĢāļ–āļĢāļ°āļšāļļāļ•āļģāđāļŦāļ™āđˆāļ‡āļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđƒāļ™āļ āļēāļžāđ„āļ”āđ‰āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđāļĨāļ°āļŠāđˆāļ‡āļ„āļ·āļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āđ€āļŠāđˆāļ™ āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™ āļŠāļ·āđˆāļ­ āļ™āļēāļĄāļŠāļāļļāļĨ āļ§āļąāļ™āđ€āļ”āļ·āļ­āļ™āļ›āļĩāđ€āļāļīāļ” āđāļĨāļ°āļ§āļąāļ™āļŦāļĄāļ”āļ­āļēāļĒāļļ āđƒāļ™āļĢāļđāļ›āđāļšāļš JSON

Try Demo

Visit our API Portal to test the Photographed Thai National ID Card With Signature Detectiont OCR API with your own images.

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

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

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

    • āđ€āļ§āļĨāļēāđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ: 1-3 āļ§āļīāļ™āļēāļ—āļĩāļ•āđˆāļ­āļ āļēāļž
    • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāđāļĨāļ°āļāļēāļĢāļ„āļĢāļ­āļšāļ•āļąāļ”āļšāļąāļ•āļĢāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
    • āļĢāļ­āļ‡āļĢāļąāļšāļ—āļąāđ‰āļ‡āļŠāļģāđ€āļ™āļēāļŠāļĩāđāļĨāļ°āļ‚āļēāļ§āļ”āļģ
  3. āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĨāļąāļ

    • āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ•āđˆāļēāļ‡āđ† āļĢāļ§āļĄāļ–āļķāļ‡:
      • āđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™
      • āļŠāļ·āđˆāļ­āđ€āļ•āđ‡āļĄ (āļ āļēāļĐāļēāđ„āļ—āļĒāđāļĨāļ°āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ)
      • āļ§āļąāļ™āđ€āļ”āļ·āļ­āļ™āļ›āļĩāđ€āļāļīāļ”
      • āļ—āļĩāđˆāļ­āļĒāļđāđˆ
      • āļ§āļąāļ™āļŦāļĄāļ”āļ­āļēāļĒāļļ
    • āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™
    • āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡ JSON āļ—āļĩāđˆāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™
  4. āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāļāļŽāļĢāļ°āđ€āļšāļĩāļĒāļš

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

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

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

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđ„āļ—āļĒāļšāļ™āļāļĢāļ°āļ”āļēāļĐāļ āļēāļžāļ–āđˆāļēāļĒāļžāļĢāđ‰āļ­āļĄāļĨāļēāļĒāđ€āļ‹āđ‡āļ™ (āļ”āđ‰āļēāļ™āļŦāļ™āđ‰āļē)
āļŦāļĄāļēāļĒāđ€āļŦāļ•āļļ

API āļ™āļĩāđ‰āđ„āļ”āđ‰āļĢāļąāļšāļāļēāļĢāļ›āļĢāļąāļšāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļš OCR āļˆāļēāļāļŠāļģāđ€āļ™āļēāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āļ—āļĩāđˆāļžāļīāļĄāļžāđŒ āļŠāļģāļŦāļĢāļąāļš OCR āļˆāļēāļāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āļˆāļĢāļīāļ‡ āđ‚āļ›āļĢāļ”āđƒāļŠāđ‰ Thai National ID Card OCR āđāļ—āļ™

āļ„āļģāļ‚āļ­â€‹

curl -X POST https://api.iapp.co.th/thai-national-id-card-with-signature/front
-H "apikey: YOUR_API_KEY"
-F "file=@/path/to/idcard.jpg"

āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡â€‹

{
"address_district": "āļšāļēāļ‡āļĨāļ°āļĄāļļāļ‡",
"address_full": "XXXXXX XXXXXX āļ•.āļŦāļ™āļ­āļ‡āļ›āļĢāļ·āļ­ āļ­.āļšāļēāļ‡āļĨāļ°āļĄāļļāļ‡ āļˆ.āļŠāļĨāļšāļļāļĢāļĩ",
"address_number": "XXXXXX XXXXXX",
"address_postal_code": "20150",
"address_province": "āļŠāļĨāļšāļļāļĢāļĩ",
"address_subdistrict": "āļ•.āļŦāļ™āļ­āļ‡āļ›āļĢāļ·āļ­",
"date_of_birth": "XX āļĄāļĩ.āļ„. 2500",
"date_of_expire": "XX āļĄāļĩ.āļ„. 2568",
"file_name_id_card": "front.jpg",
"fullname_en": "Mrs. XXXXXX Lopez",
"fullname_th": "āļ™āļēāļ‡ XXXXXX āđ‚āļĨāđ€āļ›āļŠ",
"init_en": "Mrs.",
"init_th": "āļ™āļēāļ‡",
"name_en": "XXXXXX",
"name_th": "XXXXXX",
"national_id": "34117XXXXXX334",
"process_time": 2.1,
"reason_code_api": 200,
"reason_code_id_card": 1,
"reason_code_id_card_national_id": 1,
"reason_code_id_card_signature": 0,
"reason_codename_id_card_signature": 1,
"request_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx",
"surname_en": "Lopez",
"surname_th": "āđ‚āļĨāđ€āļ›āļŠ"
}

āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–​

āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĨāļąāļâ€‹

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

āļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ‚āļ­āļ‡āļ āļēāļžâ€‹

  • āļ‚āļ™āļēāļ”āļšāļąāļ•āļĢāļ‚āļąāđ‰āļ™āļ•āđˆāļģ: āļ„āļ§āļēāļĄāļāļ§āđ‰āļēāļ‡ 600px, āļ„āļ§āļēāļĄāļŠāļđāļ‡ 400px
  • āļ‚āļ™āļēāļ”āđ„āļŸāļĨāđŒāļŠāļđāļ‡āļŠāļļāļ”: 2MB
  • āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļš: JPEG, JPG, PNG, HEIC, HEIF

āļŸāļīāļĨāļ”āđŒāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡â€‹

āļŸāļīāļĨāļ”āđŒāļŠāļ™āļīāļ”āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
address_districtStringāļŠāļ·āđˆāļ­āļ­āļģāđ€āļ āļ­
address_fullStringāļ—āļĩāđˆāļ­āļĒāļđāđˆāļ—āļąāđ‰āļ‡āļŦāļĄāļ”
address_numberStringāļšāđ‰āļēāļ™āđ€āļĨāļ‚āļ—āļĩāđˆ
address_postal_codeStringāļĢāļŦāļąāļŠāđ„āļ›āļĢāļĐāļ“āļĩāļĒāđŒ
address_provinceStringāļŠāļ·āđˆāļ­āļˆāļąāļ‡āļŦāļ§āļąāļ”
address_subdistrictStringāļŠāļ·āđˆāļ­āļ•āļģāļšāļĨ
date_of_birthStringāļ§āļąāļ™āđ€āļ”āļ·āļ­āļ™āļ›āļĩāđ€āļāļīāļ” (āļ āļēāļĐāļēāđ„āļ—āļĒ)
date_of_expireStringāļ§āļąāļ™āļŦāļĄāļ”āļ­āļēāļĒāļļ (āļ āļēāļĐāļēāđ„āļ—āļĒ)
file_name_id_cardStringāļŠāļ·āđˆāļ­āđ„āļŸāļĨāđŒāļ āļēāļž
fullname_enStringāļŠāļ·āđˆāļ­āđāļĨāļ°āļ™āļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ)
fullname_thStringāļŠāļ·āđˆāļ­āđāļĨāļ°āļ™āļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāđ„āļ—āļĒ)
init_enStringāļ„āļģāļ™āļģāļŦāļ™āđ‰āļēāļŠāļ·āđˆāļ­ (āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ)
init_thStringāļ„āļģāļ™āļģāļŦāļ™āđ‰āļēāļŠāļ·āđˆāļ­ (āļ āļēāļĐāļēāđ„āļ—āļĒ)
name_enStringāļŠāļ·āđˆāļ­ (āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ)
name_thStringāļŠāļ·āđˆāļ­ (āļ āļēāļĐāļēāđ„āļ—āļĒ)
national_idStringāđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™
process_timeFloatāđ€āļ§āļĨāļēāđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ (āļ§āļīāļ™āļēāļ—āļĩ)
reason_code_apiIntegerāļĢāļŦāļąāļŠāļŠāļ–āļēāļ™āļ°āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡
reason_code_id_cardInteger0 - āđ„āļĄāđˆāļžāļšāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđƒāļ™āļ āļēāļž, 1 - āļžāļšāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđƒāļ™āļ āļēāļž
reason_code_id_card_national_idInteger0 - āđ„āļĄāđˆāļžāļšāđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™, 1 - āļžāļšāđ€āļĨāļ‚āļ›āļĢāļ°āļˆāļģāļ•āļąāļ§āļ›āļĢāļ°āļŠāļēāļŠāļ™
reason_codename_id_cardIntegerāļĢāļŦāļąāļŠāļ­āļ˜āļīāļšāļēāļĒ reason_code_id_card_national_id. (TODO)
reason_code_id_card_signatureInteger0 - āđ„āļĄāđˆāļžāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļšāļ™āļāļĢāļ°āļ”āļēāļĐ, 1 - āļžāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļšāļ™āļāļĢāļ°āļ”āļēāļĐ
reason_codename_id_card_signatureIntegerāļĢāļŦāļąāļŠāļ­āļ˜āļīāļšāļēāļĒ reason_code_id_card_signature. (TODO)
request_idStringRequest ID āļˆāļēāļ API Gateway
surname_enStringāļ™āļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāļ­āļąāļ‡āļāļĪāļĐ)
surname_thStringāļ™āļēāļĄāļŠāļāļļāļĨ (āļ āļēāļĐāļēāđ„āļ—āļĒ)

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

Python​

import requests

url = "https://api.iapp.co.th/thai-national-id-card-with-signature/front"
api_key = "YOUR_API_KEY"

# āđ€āļ•āļĢāļĩāļĒāļĄāđ„āļŸāļĨāđŒāļ āļēāļž
files = {
'file': ('idcard.jpg', open('path/to/idcard.jpg', 'rb'), 'image/jpeg')
}

# āđ€āļžāļīāđˆāļĄ API key āļĨāļ‡āđƒāļ™āļŠāđˆāļ§āļ™āļŦāļąāļ§
headers = {
'apikey': api_key
}

# āļ—āļģāļāļēāļĢāļĢāđ‰āļ­āļ‡āļ‚āļ­
response = requests.post(url, headers=headers, files=files)

# āļžāļīāļĄāļžāđŒāļœāļĨāļĨāļąāļžāļ˜āđŒ
print(response.json())

JavaScript​

// āđƒāļŠāđ‰ Fetch API
const formData = new FormData();
formData.append('file', fileInput.files[0]);

fetch('https://api.iapp.co.th/thai-national-id-card-with-signature/front', {
method: 'POST',
headers: {
'apikey': 'YOUR_API_KEY'
},
body: formData
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

PHP​

<?php
$curl = curl_init();

$file = new CURLFile('path/to/idcard.jpg', 'image/jpeg', 'idcard.jpg');

curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.iapp.co.th/thai-national-id-card-with-signature/front',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'apikey: YOUR_API_KEY'
],
CURLOPT_POSTFIELDS => [
'file' => $file
]
]);

$response = curl_exec($curl);
curl_close($curl);

echo $response;
?>

Swift​

import Foundation

let url = URL(string: "https://api.iapp.co.th/thai-national-id-card-with-signature/front")!
var request = URLRequest(url: url)
request.httpMethod = "POST"

let boundary = "Boundary-\(UUID().uuidString)"
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
request.setValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")

let imageData = try! Data(contentsOf: URL(fileURLWithPath: "path/to/idcard.jpg"))

var body = Data()
body.append("--\(boundary)\r\n")
body.append("Content-Disposition: form-data; name=\"file\"; filename=\"idcard.jpg\"\r\n")
body.append("Content-Type: image/jpeg\r\n\r\n")
body.append(imageData)
body.append("\r\n--\(boundary)--\r\n")

request.httpBody = body

URLSession.shared.dataTask(with: request) { data, response, error in
if let data = data {
let json = try? JSONSerialization.jsonObject(with: data)
print(json ?? "")
}
}.resume()

Kotlin​

import okhttp3.*

val client = OkHttpClient()

val requestBody = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(
"file",
"idcard.jpg",
File("path/to/idcard.jpg")
.asRequestBody("image/jpeg".toMediaTypeOrNull())
)
.build()

val request = Request.Builder()
.url("https://api.iapp.co.th/thai-national-id-card-with-signature/front")
.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;

public class IDCardAPI {
public static void main(String[] args) throws IOException {
String boundary = "Boundary-" + System.currentTimeMillis();

URL url = new URL("https://api.iapp.co.th/thai-national-id-card-with-signature/front");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
conn.setRequestProperty("apikey", "YOUR_API_KEY");

try (OutputStream os = conn.getOutputStream()) {
File file = new File("path/to/idcard.jpg");
writeMultipartFile(os, "file", file, boundary);

os.write(("--" + boundary + "--\r\n").getBytes());
}

try (BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}

private static void writeMultipartFile(OutputStream os, String name, File file, String boundary)
throws IOException {
os.write(("--" + boundary + "\r\n").getBytes());
os.write(("Content-Disposition: form-data; name=\"" + name + "\"; filename=\"" +
file.getName() + "\"\r\n").getBytes());
os.write("Content-Type: image/jpeg\r\n\r\n".getBytes());

try (FileInputStream fis = new FileInputStream(file)) {
byte[] buffer = new byte[4096];
int length;
while ((length = fis.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
os.write("\r\n".getBytes());
}
}
}

Dart​

import 'package:http/http.dart' as http;

Future<void> uploadIDCard() async {
var url = Uri.parse('https://api.iapp.co.th/thai-national-id-card-with-signature/front');

var request = http.MultipartRequest('POST', url);
request.headers['apikey'] = 'YOUR_API_KEY';

request.files.add(
await http.MultipartFile.fromPath(
'file',
'path/to/idcard.jpg',
),
);

var response = await request.send();
var responseBody = await response.stream.bytesToString();

print(responseBody);
}

āļĢāļŦāļąāļŠāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”​

āļĢāļŦāļąāļŠāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™â€‹

āļĢāļŦāļąāļŠāļŠāļ–āļēāļ™āļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŠāļ–āļēāļ™āļ°āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
1passāļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āđ€āļ™āļ·āđ‰āļ­āļŦāļēāļ—āļĩāđˆāļ­āđˆāļēāļ™āđ„āļ”āđ‰
0manual checkāđ„āļĄāđˆāļĄāļąāđˆāļ™āđƒāļˆāđƒāļ™āđ€āļ™āļ·āđ‰āļ­āļŦāļē āļ•āđ‰āļ­āļ‡āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡

āļĢāļŦāļąāļŠāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™â€‹

āļĢāļŦāļąāļŠāļŠāļ–āļēāļ™āļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŠāļ–āļēāļ™āļ°āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
1passāļžāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļšāļ™āļāļĢāļ°āļ”āļēāļĐ
0manual checkāđ„āļĄāđˆāļžāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™āļŦāļĢāļ·āļ­āļ•āđ‰āļ­āļ‡āļ•āļĢāļ§āļˆāļŠāļ­āļš

āļĢāļŦāļąāļŠāļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡ API​

āļĢāļŦāļąāļŠāļŠāļ–āļēāļ™āļ°āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļŠāļ–āļēāļ™āļ°āļ„āļģāļ­āļ˜āļīāļšāļēāļĒ
200SUCCESSāļĢāđ‰āļ­āļ‡āļ‚āļ­āļŠāļģāđ€āļĢāđ‡āļˆ
404REQUESTED_URL_NOT_FOUNDāđ„āļĄāđˆāļžāļšāđ€āļŠāđ‰āļ™āļ—āļēāļ‡ API
405METHOD_NOT_ALLOWEDāļ§āļīāļ˜āļĩ HTTP āđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡
413IMAGE_FILE_IS_TOO_LARGEāđ„āļŸāļĨāđŒāđ€āļāļīāļ™āļ‚āļĩāļ”āļˆāļģāļāļąāļ” 2MB
414NO_FILE_ATTACHEDāđ„āļĄāđˆāļĄāļĩāđ„āļŸāļĨāđŒāđƒāļ™āļ„āļģāļ‚āļ­
415INVALID_IMAGE_SIZEāļ‚āļ™āļēāļ”āļ āļēāļžāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡
420NO_ID_CARD_FOUNDāđ„āļĄāđˆāļžāļšāļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āđƒāļ™āļ āļēāļž
421IMAGE_ERROR_UNSUPPORTED_FORMATāļĢāļđāļ›āđāļšāļšāļ āļēāļžāđ„āļĄāđˆāļĢāļ­āļ‡āļĢāļąāļšāļŦāļĢāļ·āļ­āđ€āļŠāļĩāļĒāļŦāļēāļĒ
422INVALID_IMAGE_SIZEāđ„āļĄāđˆāļ•āļĢāļ‡āļ•āļēāļĄāļ‚āđ‰āļ­āļāļģāļŦāļ™āļ”āļ‚āļ™āļēāļ”āļ āļēāļž
427LONG_TIME_TO_PROCESSāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļŦāļĄāļ”āđ€āļ§āļĨāļē
428LONG_TIME_TO_REQUESTāļ„āļīāļ§āļŦāļĄāļ”āđ€āļ§āļĨāļē
560SERVER_IS_BUSYāđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒāļĄāļĩāļ āļēāļĢāļ°āļĄāļēāļ āļ•āđ‰āļ­āļ‡āļĨāļ­āļ‡āđƒāļŦāļĄāđˆ
563ID_CARD_API_NOT_SUPPORT_THIS_IMAGEāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ

āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”​

  1. āļ„āļļāļ“āļ āļēāļžāļ‚āļ­āļ‡āļ āļēāļž

    • āļ•āļĢāļ§āļˆāļŠāļ­āļšāđƒāļŦāđ‰āđāļ™āđˆāđƒāļˆāļ§āđˆāļēāļĄāļĩāđāļŠāļ‡āļŠāļ§āđˆāļēāļ‡āđ€āļžāļĩāļĒāļ‡āļžāļ­
    • āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļ āļēāļžāđ€āļšāļĨāļ­
    • āđƒāļŦāđ‰āļšāļąāļ•āļĢāļ›āļĢāļ°āļŠāļēāļŠāļ™āļĄāļ­āļ‡āđ€āļŦāđ‡āļ™āđ„āļ”āđ‰āļŠāļąāļ”āđ€āļˆāļ™
  2. āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ

    • āļ•āļĢāļ§āļˆāļŠāļ­āļšāļĢāļŦāļąāļŠāđ€āļŦāļ•āļļāļœāļĨāđƒāļ™āļāļēāļĢāļ•āļ­āļšāļŠāļ™āļ­āļ‡
    • āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļ”āļķāļ‡āļĄāļē
    • āļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āļ­āļĒāđˆāļēāļ‡āđ€āļŦāļĄāļēāļ°āļŠāļĄ
  3. āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

    • āđ€āļāđ‡āļšāļĢāļąāļāļĐāļē API key āļ­āļĒāđˆāļēāļ‡āļ›āļĨāļ­āļ”āļ āļąāļĒ
    • āļ•āļĢāļ§āļˆāļŠāļ­āļšāđ„āļŸāļĨāđŒāļ­āļīāļ™āļžāļļāļ•
    • āļ›āļāļīāļšāļąāļ•āļīāļ•āļēāļĄāđāļ™āļ§āļ—āļēāļ‡āļāļēāļĢāļ›āļāļ›āđ‰āļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨ

āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđāļĨāļ°āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžâ€‹

āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđ‚āļ”āļĒāļĢāļ§āļĄâ€‹

  • āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđƒāļ™āļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ: 98.13% āđƒāļ™āļĢāļ°āļ”āļąāļšāļ­āļąāļāļ‚āļĢāļ°
  • āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđƒāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™: 96.5%
  • āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģāđ€āļ‰āļžāļēāļ°āļŸāļīāļĨāļ”āđŒāđāļ•āļāļ•āđˆāļēāļ‡āļāļąāļ™āđ„āļ›āļ•āļēāļĄāļ›āļĢāļ°āđ€āļ āļ—āđ€āļ™āļ·āđ‰āļ­āļŦāļē

āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§āđƒāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ​

  • āđ€āļ‰āļĨāļĩāđˆāļĒ: 1-3 āļ§āļīāļ™āļēāļ—āļĩāļ•āđˆāļ­āļ āļēāļž
  • āļ›āļąāļˆāļˆāļąāļĒāļ—āļĩāđˆāļĄāļĩāļœāļĨāļ•āđˆāļ­āļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§:
    • āļ„āļ§āļēāļĄāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ‚āļ­āļ‡āļ āļēāļž
    • āļ‚āļ™āļēāļ”āđ„āļŸāļĨāđŒ
    • āļ āļēāļĢāļ°āļ‚āļ­āļ‡āđ€āļ‹āļīāļĢāđŒāļŸāđ€āļ§āļ­āļĢāđŒ
    • āļŠāļ āļēāļžāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ

āļ›āļąāļˆāļˆāļąāļĒāļ—āļĩāđˆāļĄāļĩāļœāļĨāļ•āđˆāļ­āļ„āļ§āļēāļĄāđāļĄāđˆāļ™āļĒāļģ​

  1. āļ„āļļāļ“āļ āļēāļžāļ‚āļ­āļ‡āļ āļēāļž

    • āļ„āļ§āļēāļĄāļĨāļ°āđ€āļ­āļĩāļĒāļ” (āđāļ™āļ°āļ™āļģāļ‚āļąāđ‰āļ™āļ•āđˆāļģ 300 DPI)
    • āļŠāļ āļēāļžāđāļŠāļ‡
    • āļ„āļ§āļēāļĄāļ„āļĄāļŠāļąāļ”āļ‚āļ­āļ‡āđ‚āļŸāļāļąāļŠ
    • āļ„āļ§āļēāļĄāļ„āļĄāļŠāļąāļ”āļ‚āļ­āļ‡āļŠāļĩ
  2. āļŠāļ āļēāļžāļ‚āļ­āļ‡āđ€āļ­āļāļŠāļēāļĢ

    • āļ„āļ§āļēāļĄāđ€āļŠāļĩāļĒāļŦāļēāļĒāļ—āļēāļ‡āļāļēāļĒāļ āļēāļžāļŦāļĢāļ·āļ­āļāļēāļĢāļŠāļķāļāļŦāļĢāļ­
    • āļāļēāļĢāļŠāļ°āļ—āđ‰āļ­āļ™āđāļŠāļ‡āļŦāļĢāļ·āļ­āđāļŠāļ‡āļˆāđ‰āļē
    • āļ„āļ§āļēāļĄāļŠāļąāļ”āđ€āļˆāļ™āđāļĨāļ°āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāļ­āđˆāļēāļ™āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ
    • āļāļēāļĢāļĄāļ­āļ‡āđ€āļŦāđ‡āļ™āļĨāļēāļĒāđ€āļ‹āđ‡āļ™
  3. āļŠāļ āļēāļžāļāļēāļĢāļˆāļąāļšāļ āļēāļž

    • āļĄāļļāļĄāļāļĨāđ‰āļ­āļ‡
    • āđ€āļŠāļĩāļĒāļ‡āļĢāļšāļāļ§āļ™āļžāļ·āđ‰āļ™āļŦāļĨāļąāļ‡
    • āđ€āļ‡āļē
    • āļ āļēāļžāđ€āļšāļĨāļ­āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļāļēāļĢāđ€āļ„āļĨāļ·āđˆāļ­āļ™āđ„āļŦāļ§

āļ›āļĢāļ°āļ§āļąāļ•āļīāļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡â€‹

āđ€āļ§āļ­āļĢāđŒāļŠāļąāļ™āļ§āļąāļ™āļ—āļĩāđˆāđ€āļœāļĒāđāļžāļĢāđˆāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļŦāļĨāļąāļ
1.02023āļāļēāļĢāđ€āļ›āļīāļ”āļ•āļąāļ§āļ„āļĢāļąāđ‰āļ‡āđāļĢāļāļžāļĢāđ‰āļ­āļĄāļāļēāļĢāļ•āļĢāļ§āļˆāļˆāļąāļšāļĨāļēāļĒāđ€āļ‹āđ‡āļ™