Skip to main content

🪪 OCR เอกสารประวัติการทำงาน (CV) และวิเคราะห์ประเมินคุณภาพอัตโนมัติด้วย AI

1 ICต่อหน้า
v2.0 Active🆕 ธ.ค. 2025 POST /v3/store/ocr/curriculum-vitae

API นี้ประมวลผลเอกสาร Curriculum Vitae (CV) (PDF, JPG, PNG) และดึงข้อมูลที่มีโครงสร้าง รวมถึงรายละเอียดส่วนบุคคล ประวัติการศึกษา ประสบการณ์ทำงาน และทักษะต่างๆ

สำหรับผู้หางาน

ต้องการประเมิน CV โดยไม่ต้องเขียนโค้ด? ลองใช้ เครื่องมือประเมิน CV ฟรี - ไม่ต้องใช้ API key รับผลลัพธ์ทันทีพร้อมคะแนนรายส่วน ตรวจสอบ ATS และคำแนะนำในการปรับปรุง

ใหม่ใน v2.0 - การประเมิน CV ด้วย AI

เราได้เพิ่มฟีเจอร์ การประเมิน CV แบบครบวงจรเพื่อช่วยผู้หางานปรับปรุงเรซูเม่:

  • คะแนนรวม (0-100) พร้อมรายละเอียดแต่ละส่วน
  • ตรวจสอบความเข้ากันได้กับ ATS - ให้แน่ใจว่า CV ของคุณผ่านระบบคัดกรองอัตโนมัติ
  • วิเคราะห์จุดแข็งและจุดอ่อน
  • คำแนะนำการปรับปรุงตามลำดับความสำคัญ พร้อมตัวอย่าง
  • คีย์เวิร์ดที่แนะนำ สำหรับการจับคู่งานที่ดีขึ้น
  • แนะนำอุตสาหกรรมที่เหมาะสม

ลองใช้ API Demo

ใช้ demo แบบโต้ตอบนี้เพื่อทดสอบ API เลือก API key อัปโหลดเอกสาร CV และดูผลลัพธ์ JSON ดิบ

ทดลองใช้ AI Demo

เข้าสู่ระบบหรือสร้างบัญชีฟรีเพื่อใช้งาน AI Demo และสำรวจ API ที่ทรงพลังของเรา

รับ 50 เครดิตฟรี (IC) เมื่อสมัครสมาชิก!

โปรโมชันหมดเขต 31 ธันวาคม 2568

Example Images (Click to try)

Example 1
Try Demo

API Endpoints

EndpointMethodคำอธิบายราคา
/v3/store/ocr/curriculum-vitae
/ocr/cv, /ocr/cv-port
POSTดึงข้อมูลที่มีโครงสร้างจาก CV1 IC ต่อหน้า

ตัวอย่างโค้ด

ตัวอย่าง CV

CV Example

Request:

    curl -X POST https://api.iapp.co.th/ocr/cv
-H "apikey: YOUR_API_KEY"
-F "file=@/path/to/sample_cv_2.jpg"

Response:

{
"personalInformation": {
"name": "นางสาวอุไรวรรณ เจียมบุญศรี",
"address": "317 ถ.นครวรรค์ แขวงวัดโสมนัส เขตป้อมปราศัตรูพ่าย กทม. 10100",
"phoneNumbers": ["082-996-5168"],
"email": "uraiwan91790@gmail.com",
"religion": "พุทธ",
"nationality": "ไทย",
"age": "43"
},
"education": [
{
"school": "โรงเรียนราชวินิต มัธยม",
"level": "มัธยมศึกษาปีที่ 6",
"year": "2538-2540"
}
],
"workExperience": [
{
"title": "Recruitment officer",
"company": "Apex medical center",
"startDate": "May 2022",
"endDate": "December 2022",
"roles": ["สรรหาพนักงานตำแหน่ง consultant, beauty therapist, nurse"]
},
{
"title": "Recruitment officer",
"company": "GMI Market",
"startDate": "April 2022",
"endDate": "June 2022",
"roles": ["สรรหาบุคลากร ตำแหน่ง sale เกี่ยวกับการเทรดเดอร์"]
},
{
"title": "Senior recruitment",
"company": "บริษัท รักษาความปลอดภัย RGH",
"startDate": "January 2022",
"endDate": "March 2022",
"roles": ["สรรหาพนักงานตำแหน่ง รปภ.,แม่บ้าน"]
}
],
"skillsAndQualifications": {
"languages": {
"english": "พูด เขียน สื่อสาร ภาษาอังกฤษได้เป็นอย่างดี"
},
"computerSkills": ["สามารถใช้โปรแกนมคอมพิวเตอร์"],
"communicationSkills": []
},
"possibleSkillAndQualificationsByAI": [
"Recruiting",
"Applicant Tracking Systems (ATS)",
"Interviewing",
"Talent Acquisition",
"Onboarding",
"HRIS",
"Performance Management",
"Employee Relations",
"Sales",
"Trading",
"Security",
"Customer Service",
"Teamwork",
"Communication"
],
"additionalInformation": {
"customerServiceSkills": null,
"assessment": null
},
"confidence": {
"personalInformation": 0.95,
"education": 0.9,
"workExperience": 0.9,
"skillsAndQualifications": 0.9,
"possibleSkillAndQualificationsByAI": 0.85,
"additionalInformation": 0.9
}
}

คุณสมบัติ

  • การประมวลผล CV: ดึงข้อมูลที่มีโครงสร้างจาก CV รวมถึงรายละเอียดส่วนบุคคล ประวัติการศึกษา ประสบการณ์ทำงาน ทักษะ และทักษะที่เป็นไปได้ที่ AI แนะนำ

  • การประเมินด้วย AI (ใหม่): ให้การวิเคราะห์ CV อย่างครบถ้วน:

    • คะแนนรวมและคะแนนแยกตามส่วน
    • ตรวจสอบความเข้ากันได้กับ ATS (ระบบคัดกรองผู้สมัครอัตโนมัติ)
    • ระบุจุดแข็งและจุดอ่อน
    • คำแนะนำการปรับปรุงตามลำดับความสำคัญพร้อมตัวอย่าง
    • คีย์เวิร์ดที่แนะนำสำหรับการจับคู่งานที่ดีขึ้น
    • แนะนำอุตสาหกรรมที่เหมาะสม
  • คะแนนความมั่นใจ: แต่ละฟิลด์ที่ดึงข้อมูลจะมีคะแนนความมั่นใจ (0-1) ระบุความน่าเชื่อถือของการดึงข้อมูล

  • รูปแบบที่รองรับ: รับไฟล์ PDF, JPG, PNG และ JPEG

ผลลัพธ์การประเมิน CV

API จะส่งกลับออบเจ็กต์ evaluation พร้อมการวิเคราะห์โดยละเอียด:

หมวดหมู่คะแนน

หมวดหมู่คำอธิบาย
overallคะแนนคุณภาพ CV โดยรวม (0-100)
personalInfoความครบถ้วนของข้อมูลติดต่อ
educationการนำเสนอประวัติการศึกษา
workExperienceประวัติการทำงานพร้อมผลงาน
skillsการจัดระเบียบและความเกี่ยวข้องของทักษะ

ฟิลด์การประเมิน

{
"evaluation": {
"scores": {
"overall": 72,
"personalInfo": { "score": 85, "feedback": "..." },
"education": { "score": 70, "feedback": "..." },
"workExperience": { "score": 65, "feedback": "..." },
"skills": { "score": 75, "feedback": "..." }
},
"experienceLevel": "mid",
"totalYearsOfExperience": 6,
"atsCompatibility": {
"score": 70,
"issues": ["ไม่มีคีย์เวิร์ดเฉพาะงาน", "..."],
"suggestions": ["เพิ่มคีย์เวิร์ดเฉพาะอุตสาหกรรม", "..."]
},
"strengths": ["ความก้าวหน้าในอาชีพที่ชัดเจน", "..."],
"weaknesses": ["ขาดผลงานที่วัดได้", "..."],
"missingSections": ["สรุปประวัติ", "ใบรับรอง", "..."],
"improvements": [
{
"section": "workExperience",
"priority": "high",
"issue": "คำอธิบายงานขาดผลงานที่วัดได้",
"suggestion": "เพิ่มตัวเลขและเปอร์เซ็นต์เฉพาะ",
"example": "นำทีม 8 คน บรรลุเป้าหมายรายไตรมาส 125%"
}
],
"suggestedKeywords": ["การเติบโตของรายได้", "การจัดการ pipeline", "..."],
"industryFitSuggestions": ["การบริหารการขาย", "การพัฒนาธุรกิจ", "..."],
"executiveSummary": "CV นี้นำเสนอผู้เชี่ยวชาญระดับกลาง..."
}
}

ตัวอย่างโค้ด

Curl

curl -X POST https://api.iapp.co.th/v3/store/ocr/curriculum-vitae \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/file.jpg"

Python

import requests

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

payload = {}
files=[
('file',('sample_cv_2.jpg',open('sample_cv_2.jpg','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_cv_2.jpg"))

let config = {
method: "post",
maxBodyLength: Infinity,
url: "https://api.iapp.co.th/ocr/cv",
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/cv',
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_cv_2.jpg')),
CURLOPT_HTTPHEADER => array(
'apikey: YOUR_API_KEY'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;


Swift

let parameters = [
[
"key": "file",
"src": "sample_cv_2.jpg",
"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/cv")!,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_cv_2.jpg",
File("sample_cv_2.jpg").asRequestBody("application/octet-stream".toMediaType()))
.build()
val request = Request.Builder()
.url("https://api.iapp.co.th/ocr/cv")
.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_cv_2.jpg",
RequestBody.create(MediaType.parse("application/octet-stream"),
new File("sample_cv_2.jpg")))
.build();
Request request = new Request.Builder()
.url("https://api.iapp.co.th/ocr/cv")
.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/cv'));
request.files.add(await http.MultipartFile.fromPath('file', 'sample_cv_2.jpg'));
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 ดึงข้อมูล CV ด้วย AI และข้อมูลiapp_cv_ocr1 IC/หน้าติดต่อ