Skip to main content

⚡ OCR ใบแจ้งค่าไฟฟ้า

1 ICต่อหน้า
v1.0 เปิดใช้งาน ก.ค. 2026 POST /ocr/v3/electricity-bill/file

ยินดีต้อนรับสู่ OCR ใบแจ้งค่าไฟฟ้า API ซึ่งเป็นส่วนหนึ่งของ iApp Any Documents OCR โดย บริษัท ไอแอพพ์เทคโนโลยี จำกัด แยกข้อมูลการเรียกเก็บเงินจากใบแจ้งค่าไฟฟ้าของการไฟฟ้านครหลวง (MEA) และการไฟฟ้าส่วนภูมิภาค (PEA) รวมถึงการอ่านค่ามิเตอร์ ค่าใช้จ่ายแต่ละรายการ และภาษีมูลค่าเพิ่ม

ทดลองใช้งาน Demo!

ทดลองใช้ AI Demo

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

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

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

Example Images (Click to try)

เริ่มต้นใช้งาน

  1. ข้อกำหนดเบื้องต้น

    • คีย์ API จาก ไอแอพพ์เทคโนโลยี
    • ไฟล์เอกสาร: ใบแจ้งค่าไฟฟ้า
    • รูปแบบไฟล์ที่รองรับ: PDF, JPG, JPEG, PNG, WEBP
    • ขนาดไฟล์สูงสุด: 50MB
  2. เริ่มต้นใช้งานอย่างรวดเร็ว

    • POST เพียงครั้งเดียวด้วย multipart/form-data
    • ผลลัพธ์ JSON ที่มีโครงสร้าง พร้อมคะแนนความมั่นใจของแต่ละฟิลด์
    • แต่ละหน้าอินพุตจะส่งคืนรายการของตัวเองใน docs ดังนั้นจึงสามารถส่งชุดเอกสารได้ในคำขอเดียว
  3. คุณสมบัติหลัก

    • การแยกข้อมูลระดับฟิลด์พร้อมคะแนนความมั่นใจ
    • ผลลัพธ์ภาษาไทยและภาษาอังกฤษผ่าน target_lang
    • ข้อความ OCR ดิบ (raw OCR text) แบบเลือกได้ผ่าน return_ocr
    • รองรับรูปถ่ายและ PDF ที่สแกน
  4. ความปลอดภัยและการปฏิบัติตามข้อกำหนด

    • เป็นไปตาม GDPR และ PDPA
    • ปลายทาง API ที่ปลอดภัย
    • ไม่มีการเก็บข้อมูลหลังการประมวลผล
วิธีรับ API Key?

โปรดไปที่หน้า การจัดการ API Key เพื่อดู API Key ที่มีอยู่ของคุณ หรือขอใหม่

API Endpoints

EndpointMethodคำอธิบายราคา
/ocr/v3/electricity-bill/file
/v3/store/ocr/electricity-bill
POSTแยกข้อมูลการเรียกเก็บเงินจากใบแจ้งค่าไฟฟ้าไทย (MEA / PEA)1 IC ต่อหน้า

ทั้งสองรูปแบบจะเทียบเท่ากัน ไม่มีรูปแบบ base64 สำหรับปลายทางนี้ – รองรับการอัปโหลดไฟล์เท่านั้น

คำขอ (Request)

ส่วนหัวของคำขอ (Request Headers)

Headerค่า (Value)จำเป็น (Required)
apikeyคีย์ API iApp ของคุณใช่

เนื้อหาคำขอ (Request Body) (multipart/form-data)

พารามิเตอร์ (Parameter)ประเภท (Type)ค่าเริ่มต้น (Default)คำอธิบาย (Description)
fileไฟล์ (File) (ซ้ำได้)จำเป็น. ไฟล์เอกสาร. หน้า PDF จะถูกประมวลผลโดยอัตโนมัติ
return_ocrบูลีน (Boolean)falseรวมข้อความ OCR ดิบ (raw OCR text) ในการตอบกลับ
target_langสตริง (String)thภาษาของค่าที่แยกได้: th หรือ en
include_confidenceบูลีน (Boolean)trueรวมคะแนนความมั่นใจต่อฟิลด์ (0.00–1.00)

cURL

curl -X POST "https://api.iapp.co.th/ocr/v3/electricity-bill/file" \
-H "apikey: YOUR_API_KEY" \
-F "file=@/path/to/document.pdf" \
-F "target_lang=th" \
-F "include_confidence=true"

การตอบกลับ (Response)

{
"docs": [
{
"message": "success",
"raw": {},
"processed": {
"provider": "การไฟฟ้านครหลวง",
"customer_name": "นายสมศักดิ์ รักการเรียน",
"customer_address": "12/5 ม.7 ต.ไทรน้อย อ.ไทรน้อย จ.นนทบุรี",
"account_number": "012345678",
"invoice_number": "00962934584",
"tariff_type": "1.2",
"reading_date": "15/08/64",
"last_reading": 6704,
"previous_reading": 6542,
"units_consumed": 162,
"energy_charge": 537.92,
"service_charge": 38.22,
"ft_rate_per_unit": -0.1532,
"ft_charge": -24.82,
"discount": 0.0,
"subtotal_before_vat": 551.32,
"vat_amount": 38.59,
"total_current_bill": 589.91,
"due_date": "31/08/64"
},
"confidence": {
"provider": 0.95,
"customer_name": 0.95,
"customer_address": 0.95,
"account_number": 0.95,
"invoice_number": 0.95,
"tariff_type": 0.95
},
"process_ms": 4120
}
],
"docs_count": 1,
"process_ms": 4300
}

ส่วนหัวการตอบกลับ iapp-input-pages จะรายงานจำนวนหน้าที่มีการเรียกเก็บเงิน

ฟิลด์ที่รองรับ (Supported Fields)

ฟิลด์ (Field)ประเภท (Type)คำอธิบาย (Description)
providerStringหน่วยงานที่ออกเอกสาร เช่น การไฟฟ้านครหลวง
customer_nameStringชื่อลูกค้าของการไฟฟ้า
customer_addressStringที่อยู่ให้บริการ
account_numberStringหมายเลขบัญชีลูกค้า (CA)
invoice_numberStringหมายเลขใบแจ้งหนี้ / ใบกำกับภาษี
tariff_typeStringประเภทอัตราค่าไฟฟ้า เช่น 1.2
reading_dateStringวันที่อ่านค่ามิเตอร์
last_readingNumberค่ามิเตอร์ปัจจุบัน
previous_readingNumberค่ามิเตอร์ก่อนหน้า
units_consumedNumberหน่วยไฟฟ้าที่ใช้ (kWh)
energy_chargeNumberค่าไฟฟ้า (บาท)
service_chargeNumberค่าบริการรายเดือน (บาท)
ft_rate_per_unitNumberอัตราค่า Ft ต่อหน่วย (บาท/หน่วย)
ft_chargeNumberค่า Ft (บาท, อาจติดลบได้)
discountNumberส่วนลด เช่น เงินอุดหนุนจากรัฐ (บาท)
subtotal_before_vatNumberยอดรวมก่อน VAT (บาท)
vat_amountNumberจำนวน VAT (บาท)
total_current_billNumberยอดชำระปัจจุบันทั้งหมด (บาท)
due_dateStringวันที่ครบกำหนดชำระ

การจัดการข้อผิดพลาด (Error Handling)

สถานะ (Status)ความหมาย (Meaning)
400นามสกุลไฟล์ไม่รองรับ หรือไฟล์ใหญ่เกิน 50MB
401apikey ขาดหายไปหรือไม่ถูกต้อง
402ยอดเครดิตไม่เพียงพอ
404ประเภทเอกสารใน URL ไม่รู้จัก
422ไม่ได้แนบไฟล์มาในคำขอ
500ข้อผิดพลาดในการประมวลผล — การตอบกลับจะมีรหัสข้อผิดพลาดเพื่ออ้างอิงถึงฝ่ายสนับสนุน

ตัวอย่างโค้ด (Code Examples)

Python

import requests

url = "https://api.iapp.co.th/ocr/v3/electricity-bill/file"
headers = {"apikey": "YOUR_API_KEY"}
files = {"file": open("document.pdf", "rb")}
data = {"target_lang": "th", "include_confidence": "true"}

response = requests.post(url, headers=headers, files=files, data=data)
result = response.json()
print(result["docs"][0]["processed"])
print(result["docs"][0]["confidence"])

JavaScript

const form = new FormData();
form.append("file", fileInput.files[0]);
form.append("target_lang", "th");
form.append("include_confidence", "true");

const res = await fetch("https://api.iapp.co.th/ocr/v3/electricity-bill/file", {
method: "POST",
headers: { apikey: "YOUR_API_KEY" },
body: form,
});
const result = await res.json();
console.log(result.docs[0].processed);

PHP

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.iapp.co.th/ocr/v3/electricity-bill/file");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["apikey: YOUR_API_KEY"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
"file" => new CURLFile("/path/to/document.pdf"),
"target_lang" => "th",
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;

Java

OkHttpClient client = new OkHttpClient();

RequestBody body = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("file", "document.pdf",
RequestBody.create(new File("/path/to/document.pdf"),
MediaType.parse("application/pdf")))
.addFormDataPart("target_lang", "th")
.build();

Request request = new Request.Builder()
.url("https://api.iapp.co.th/ocr/v3/electricity-bill/file")
.addHeader("apikey", "YOUR_API_KEY")
.post(body)
.build();

try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
}

Swift

let url = URL(string: "https://api.iapp.co.th/ocr/v3/electricity-bill/file")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("YOUR_API_KEY", forHTTPHeaderField: "apikey")

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

var data = Data()
let fileData = try Data(contentsOf: URL(fileURLWithPath: "/path/to/document.pdf"))
data.append("--\(boundary)\r\n".data(using: .utf8)!)
data.append("Content-Disposition: form-data; name=\"file\"; filename=\"document.pdf\"\r\n\r\n".data(using: .utf8)!)
data.append(fileData)
data.append("\r\n--\(boundary)--\r\n".data(using: .utf8)!)

URLSession.shared.uploadTask(with: request, from: data) { responseData, _, _ in
if let responseData, let json = String(data: responseData, encoding: .utf8) {
print(json)
}
}.resume()

Kotlin

val client = OkHttpClient()

val body = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart(
"file", "document.pdf",
File("/path/to/document.pdf").asRequestBody("application/pdf".toMediaType())
)
.addFormDataPart("target_lang", "th")
.build()

val request = Request.Builder()
.url("https://api.iapp.co.th/ocr/v3/electricity-bill/file")
.addHeader("apikey", "YOUR_API_KEY")
.post(body)
.build()

client.newCall(request).execute().use { response ->
println(response.body?.string())
}

Dart

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

final request = http.MultipartRequest(
'POST',
Uri.parse('https://api.iapp.co.th/ocr/v3/electricity-bill/file'),
);
request.headers['apikey'] = 'YOUR_API_KEY';
request.fields['target_lang'] = 'th';
request.files.add(
await http.MultipartFile.fromPath('file', '/path/to/document.pdf'),
);

final response = await request.send();
print(await response.stream.bytesToString());

ข้อจำกัดและแนวทางปฏิบัติที่ดีที่สุด (Limitations & Best Practices)

ข้อจำกัด (Limitations)

  • ขนาดไฟล์สูงสุด 50MB ต่อคำขอ
  • รูปแบบที่รองรับ: PDF, JPG, JPEG, PNG, WEBP
  • ความแม่นยำขึ้นอยู่กับคุณภาพของภาพ — การสแกนที่เสื่อมสภาพอย่างรุนแรง, แสงสะท้อน และลายมือที่เขียนทับค่าที่พิมพ์ จะลดความแม่นยำของข้อมูลระดับฟิลด์
  • การแยกข้อมูลจำกัดเฉพาะฟิลด์ที่ระบุไว้ข้างต้น

แนวทางปฏิบัติที่ดีที่สุด (Best Practices)

  • หากมีไฟล์ PDF ต้นฉบับ ควรใช้ PDF ต้นฉบับแทนรูปถ่าย
  • ถ่ายรูปเอกสารทั้งฉบับในมุมตรงและแสงสม่ำเสมอ
  • ใช้ความละเอียดอย่างน้อย 300 DPI สำหรับการสแกน
  • ตรวจสอบคะแนน confidence ของแต่ละฟิลด์ และส่งต่อค่าที่มีความมั่นใจต่ำไปให้ตรวจสอบด้วยตนเอง
  • ส่งเอกสารหลายฉบับในคำขอเดียว (หากรองรับ) เพื่อลดการส่งไปมา

ความแม่นยำและประสิทธิภาพ (Accuracy & Performance)

ความแม่นยำในการแยกข้อมูลระดับฟิลด์วัดจากชุดข้อมูลประเมิน ChindaOCR-M3 ภายใน — ป้ายกำกับที่ตรวจสอบด้วยภาพซ้ำบนเอกสารไทยจริง รวมถึงรูปถ่ายความละเอียดต่ำและใบแจ้งหนี้บางส่วนที่ถูกลายมือเขียนบัง

ประเภทเอกสาร (Document Type)เอกสาร (Docs)ฟิลด์ (Fields)ความแม่นยำ (Accuracy)
ใบแจ้งค่าไฟฟ้า (Electricity Bill)54597.8%
โดยรวม, ทั้งหกประเภทเอกสาร2514798.6%

การสนับสนุน (Support)

ต้องการความช่วยเหลือ? ติดต่อเรา: