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)

Example 1
Try Demo
electricity-bill sample document
เอกสารตัวอย่าง — คลิกเพื่อขยาย

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

  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)​

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