Skip to main content

🊊 API āļŠāļēāļĢāļāļĢāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āđāļĒāļāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ€āļ­āļāļŠāļēāļĢāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ‡āļēāļ™ (JD) āļ”āđ‰āļ§āļĒ AI 🆕

🊊 AI āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļ—āļĩāđˆāļĄāļĩāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āđāļĨāļ°āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ‡āļēāļ™āđƒāļ™āļĢāļđāļ›āđāļšāļš PDF āļŦāļĢāļ·āļ­āļĢāļđāļ›āļ āļēāļžāđ‚āļ”āļĒāđƒāļŠāđ‰ OCR āđāļĨāļ°āđāļšāļšāļˆāļģāļĨāļ­āļ‡āļ āļēāļĐāļēāđ„āļ—āļĒ

Version Status New

āđ‚āļ„āļĢāļ‡āļāļēāļĢāļ™āļĩāđ‰āļĒāļąāļ‡āļĢāļ§āļĄāļ–āļķāļ‡āļŸāļąāļ‡āļāđŒāļŠāļąāļ™āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđ€āļ­āļāļŠāļēāļĢāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ‡āļēāļ™ (JD) (PDF, JPG, PNG) āļšāļĢāļīāļāļēāļĢ iApp OCR āļˆāļ°āļ”āļķāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ”āļīāļšāļˆāļēāļ JD āđāļĨāļ°āđāļšāļšāļˆāļģāļĨāļ­āļ‡ OpenThaiGPT āļˆāļ°āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāđāļ›āļĨāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāļ—āļĩāđˆāļ”āļķāļ‡āļ­āļ­āļāļĄāļēāđ€āļ›āđ‡āļ™āļ‚āđ‰āļ­āļĄāļđāļĨ JSON āļ—āļĩāđˆāļĄāļĩāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡ āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļŠāļģāļ„āļąāļāļ—āļĩāđˆāļ”āļķāļ‡āļ­āļ­āļāļĄāļēāđ„āļ”āđ‰āđāļāđˆ āļŠāļ·āđˆāļ­āļ•āļģāđāļŦāļ™āđˆāļ‡āļ‡āļēāļ™ āļŠāļ·āđˆāļ­āļšāļĢāļīāļĐāļąāļ— āļŠāļ–āļēāļ™āļ—āļĩāđˆāļ•āļąāđ‰āļ‡ āļ„āļ§āļēāļĄāļĢāļąāļšāļœāļīāļ”āļŠāļ­āļš āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™ āđāļĨāļ°āļ—āļąāļāļĐāļ°āļ—āļĩāđˆ AI āđāļ™āļ°āļ™āļģāļ‹āļķāđˆāļ‡āļˆāļģāđ€āļ›āđ‡āļ™āļŠāļģāļŦāļĢāļąāļšāļšāļ—āļšāļēāļ— āļ‚āđ‰āļ­āļĄāļđāļĨāļ™āļĩāđ‰āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļˆāļąāļšāļ„āļđāđˆāļ‡āļēāļ™āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āļāļēāļĢāļŠāļĢāļĢāļŦāļēāļšāļļāļ„āļĨāļēāļāļĢ āļŦāļĢāļ·āļ­āļ āļēāļĢāļāļīāļˆāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļšāļ—āļĢāļąāļžāļĒāļēāļāļĢāļšāļļāļ„āļ„āļĨāļ­āļ·āđˆāļ™āđ†

āļ—āļ”āļĨāļ­āļ‡āđƒāļŠāđ‰āļ‡āļēāļ™ Demo​

Example Images (Click to try)

Example 1

Demo key is limited to 10 requests per day per IP
Click here to get your API key

āļ§āļīāļ˜āļĩāļāļēāļĢāļ‚āļ­ API Key?

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

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

āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡ JD​

JD Example

Request:​

    curl -X POST https://api.iapp.co.th/ocr/jd
-H "apikey: YOUR_API_KEY"
-F "file=@/path/to/sample_jd_2.png"

Response:​

{
"jobTitle": "āļŦāļąāļ§āļŦāļ™āđ‰āļēāļāđˆāļēāļĒāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ (Head of Information Technology)",
"companyName": null,
"location": null,
"salaryRange": null,
"responsibilities": [
"āļāļģāļāļąāļšāļ”āļđāđāļĨāđāļĨāļ°āļ„āļ§āļšāļ„āļļāļĄāļ‡āļēāļ™āļ‚āļ­āļ‡āļœāļđāđ‰āđƒāļ•āđ‰āļšāļąāļ‡āļ„āļąāļšāļšāļąāļāļŠāļēāđƒāļŦāđ‰āđ€āļāļīāļ”āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŠāļđāļ‡āļŠāļļāļ”",
"āļ”āļđāđāļĨ āļ§āļīāļˆāļąāļĒ āđāļĨāļ°āļžāļąāļ’āļ™āļē āļĢāļ°āļšāļšāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāļ‚āļ­āļ‡āļ­āļ‡āļ„āđŒāļāļĢ āļĢāļ§āļĄāļ–āļķāļ‡āļŪāļēāļĢāđŒāļ”āđāļ§āļĢāđŒ āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒ āļĢāļ°āļšāļšāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ āđāļĨāļ°āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāļ­āļ·āđˆāļ™āđ† āļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡",
"āļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļĨāļ°āļ—āļšāļ—āļ§āļ™āļāļēāļĢāļˆāļąāļ”āļ‹āļ·āđ‰āļ­āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āļ­āļļāļ›āļāļĢāļ“āđŒāļ•āđˆāļ­āļžāđˆāļ§āļ‡ āđāļĨāļ°āļ­āļļāļ›āļāļĢāļ“āđŒāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāļ—āļąāđ‰āļ‡āļŦāļĄāļ”",
"āļ”āļđāđāļĨāđāļĨāļ°āļ„āļ§āļšāļ„āļļāļĄāļāļēāļĢāļšāļģāļĢāļļāļ‡āļĢāļąāļāļĐāļēāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āļ­āļļāļ›āļāļĢāļ“āđŒāļ•āđˆāļ­āļžāđˆāļ§āļ‡ āđāļĨāļ°āļ­āļļāļ›āļāļĢāļ“āđŒāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāļ—āļąāđ‰āļ‡āļŦāļĄāļ”",
"āļ”āļđāđāļĨāđāļĨāļ°āļ„āļ§āļšāļ„āļļāļĄāļāļēāļĢāļŠāļģāļĢāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āļžāļąāļ’āļ™āļēāļĢāļ°āļšāļšāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒāļ‚āļ­āļ‡āļ­āļ‡āļ„āđŒāļāļĢ",
"āļĢāļąāļšāļĢāļ­āļ‡āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āļ‚āļ­āļ‡āļšāļļāļ„āļĨāļēāļāļĢāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒāđāļĨāļ°āļĢāļ°āļšāļšāļ•āđˆāļēāļ‡āđ†",
"āļˆāļąāļ”āļ—āļģāļ‡āļšāļ›āļĢāļ°āļĄāļēāļ“āļĢāļēāļĒāļ›āļĩāđāļĨāļ°āđāļœāļ™āļ‡āļēāļ™",
"āļ•āļīāļ”āļ•āļēāļĄāđāļĨāļ°āļžāļąāļ’āļ™āļēāļ āļēāļĢāļāļīāļˆāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļąāļšāļĄāļ­āļšāļŦāļĄāļēāļĒāđƒāļŦāđ‰āļĄāļĩāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž",
"āļ›āļāļīāļšāļąāļ•āļīāļ‡āļēāļ™āļ­āļ·āđˆāļ™āđ† āļ•āļēāļĄāļ—āļĩāđˆāļœāļđāđ‰āļšāļąāļ‡āļ„āļąāļšāļšāļąāļāļŠāļēāļĄāļ­āļšāļŦāļĄāļēāļĒ",
"āđƒāļŦāđ‰āļ„āļ§āļēāļĄāļĢāđˆāļ§āļĄāļĄāļ·āļ­āđƒāļ™āļāļīāļˆāļāļĢāļĢāļĄāđāļĨāļ°āļĢāļ°āļšāļšāļ‚āļ­āļ‡āļšāļĢāļīāļĐāļąāļ—"
],
"qualifications": [
"āļ›āļĢāļīāļāļāļēāļ•āļĢāļĩ/āđ‚āļ—",
"āļŠāļēāļ‚āļēāđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻ āļ§āļīāļĻāļ§āļāļĢāļĢāļĄāļ„āļ­āļĄāļžāļīāļ§āđ€āļ•āļ­āļĢāđŒ āļŦāļĢāļ·āļ­āļŠāļēāļ‚āļēāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡",
"āļĄāļĩāļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ 2 āļ›āļĩ",
"āļ­āļēāļĒāļļ 30 āļ›āļĩāļ‚āļķāđ‰āļ™āđ„āļ›",
"āļĄāļĩāļ„āļ§āļēāļĄāļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāļŠāļđāļ‡āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļ„āļ§āļšāļ„āļļāļĄāļ‡āļēāļ™āđ„āļ”āđ‰",
"āļĄāļĩāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ”āđ‰āļēāļ™āđ€āļ—āļ„āđ‚āļ™āđ‚āļĨāļĒāļĩāļŠāļēāļĢāļŠāļ™āđ€āļ—āļĻāđ€āļ›āđ‡āļ™āļ­āļĒāđˆāļēāļ‡āļ”āļĩ"
],
"possibleSkillAndQualificationsByAI": [
"āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ IT",
"āļŪāļēāļĢāđŒāļ”āđāļ§āļĢāđŒ",
"āļ‹āļ­āļŸāļ•āđŒāđāļ§āļĢāđŒ",
"āļāļēāļĢāļšāļĢāļīāļŦāļēāļĢāļˆāļąāļ”āļāļēāļĢāđ€āļ„āļĢāļ·āļ­āļ‚āđˆāļēāļĒ",
"āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ",
"āļāļēāļĢāļšāļĢāļīāļŦāļēāļĢāļĢāļ°āļšāļš",
"āļāļēāļĢāļˆāļąāļ”āļ‹āļ·āđ‰āļ­",
"āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļāļēāļĢāļšāļģāļĢāļļāļ‡āļĢāļąāļāļĐāļē",
"āļāļēāļĢāļŠāļģāļĢāļ­āļ‡āđāļĨāļ°āļāļđāđ‰āļ„āļ·āļ™āļ‚āđ‰āļ­āļĄāļđāļĨ",
"āļāļēāļĢāļāļķāļāļ­āļšāļĢāļĄ",
"āļāļēāļĢāļˆāļąāļ”āļ—āļģāļ‡āļšāļ›āļĢāļ°āļĄāļēāļ“",
"āļāļēāļĢāđāļāđ‰āļ›āļąāļāļŦāļē",
"āļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļœāļđāđ‰āļ™āļģ",
"āļāļēāļĢāļšāļĢāļīāļŦāļēāļĢāļ—āļĩāļĄ",
"āļ—āļąāļāļĐāļ°āļāļēāļĢāļŠāļ·āđˆāļ­āļŠāļēāļĢ"
]
}

āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī​

  • āļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ‡āļēāļ™: āļ”āļķāļ‡āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļŠāļģāļ„āļąāļāļˆāļēāļ JD āđ€āļŠāđˆāļ™ āļŠāļ·āđˆāļ­āļ•āļģāđāļŦāļ™āđˆāļ‡āļ‡āļēāļ™ āļšāļĢāļīāļĐāļąāļ— āļŠāļ–āļēāļ™āļ—āļĩāđˆāļ•āļąāđ‰āļ‡ āļ„āļ§āļēāļĄāļĢāļąāļšāļœāļīāļ”āļŠāļ­āļš āļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļī āđāļĨāļ°āļ—āļąāļāļĐāļ°āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™āļ—āļĩāđˆ AI āđāļ™āļ°āļ™āļģ
  • āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļĢāļ­āļ‡āļĢāļąāļš: āļĢāļ­āļ‡āļĢāļąāļšāđ„āļŸāļĨāđŒ PDF, JPG, PNG āđāļĨāļ° JPEG

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

Python​

import requests

url = "https://api.iapp.co.th/ocr/jd"

payload = {}
files=[
('file',('sample_jd_2.png',open('sample_jd_2.png','rb'),'application/pdf'))
]
headers = {"apikey": "YOUR_API_KEY"}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

JavaScript​

const axios = require("axios")
const FormData = require("form-data")
const fs = require("fs")

let data = new FormData()
data.append("file", fs.createReadStream("sample_jd_2.png"))

let config = {
method: "post",
maxBodyLength: Infinity,
url: "https://api.iapp.co.th/ocr/jd",
headers: {
apikey: "YOUR_API_KEY",
...data.getHeaders(),
},
data: data,
}

axios
.request(config)
.then((response) => {
console.log(JSON.stringify(response.data))
})
.catch((error) => {
console.log(error)
})

PHP​

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.iapp.co.th/ocr/jd',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => array('file'=> new CURLFILE('sample_jd_2.png')),
CURLOPT_HTTPHEADER => array(
'apikey: YOUR_API_KEY'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


Swift​

let parameters = [
[
"key": "file",
"src": "sample_jd_2.png",
"type": "file"
]] as [[String: Any]]

let boundary = "Boundary-\(UUID().uuidString)"
var body = Data()
var error: Error? = nil
for param in parameters {
if param["disabled"] != nil { continue }
let paramName = param["key"]!
body += Data("--\(boundary)\r\n".utf8)
body += Data("Content-Disposition:form-data; name=\"\(paramName)\"".utf8)
if param["contentType"] != nil {
body += Data("\r\nContent-Type: \(param["contentType"] as! String)".utf8)
}
let paramType = param["type"] as! String
if paramType == "text" {
let paramValue = param["value"] as! String
body += Data("\r\n\r\n\(paramValue)\r\n".utf8)
} else {
let paramSrc = param["src"] as! String
let fileURL = URL(fileURLWithPath: paramSrc)
if let fileContent = try? Data(contentsOf: fileURL) {
body += Data("; filename=\"\(paramSrc)\"\r\n".utf8)
body += Data("Content-Type: \"content-type header\"\r\n".utf8)
body += Data("\r\n".utf8)
body += fileContent
body += Data("\r\n".utf8)
}
}
}
body += Data("--\(boundary)--\r\n".utf8);
let postData = body


var request = URLRequest(url: URL(string: "https://api.iapp.co.th/ocr/jd")!,timeoutInterval: Double.infinity)
request.addValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

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​

val client = OkHttpClient()
val mediaType = "text/plain".toMediaType()
val body = MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","sample_jd_2.png",
File("sample_jd_2.png").asRequestBody("application/octet-stream".toMediaType()))
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/ocr/jd")
.post(body)
.addHeader("apikey", "YOUR_API_KEY")
.build()
val response = client.newCall(request).execute()

Java​

OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
.addFormDataPart("file","sample_jd_2.png",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("sample_jd_2.png")))
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/ocr/jd")
.method("POST", body)
.addHeader("apikey", "YOUR_API_KEY")
.build();
Response response = client.newCall(request).execute();

Dart​

var headers = {
'apikey': 'YOUR_API_KEY'
};
var request = http.MultipartRequest('POST', Uri.parse('https://api.iapp.co.th/ocr/jd'));
request.files.add(await http.MultipartFile.fromPath('file', 'sample_jd_2.png'));
request.headers.addAll(headers);

http.StreamedResponse response = await request.send();

if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}

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

āļŠāļ·āđˆāļ­āļšāļĢāļīāļāļēāļĢ AI APIEndpointIC āļ•āđˆāļ­āļŦāļ™āđ‰āļēOn-Premise
API āļŠāļēāļĢāļāļĢāļ­āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ°āđāļĒāļāļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļēāļāđ€āļ­āļāļŠāļēāļĢāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ‡āļēāļ™ (JD) āļ”āđ‰āļ§āļĒ AIiapp_jd_ocr1 IC/āļŦāļ™āđ‰āļēāļ•āļīāļ”āļ•āđˆāļ­āđ€āļĢāļē