OCR overview

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

Reading a Thai utility bill

A meter block, a charge ladder, and a row of reference numbers that have to survive digit for digit.

A Thai utility bill carries three things at once. It reports a meter reading, it prices that reading through a ladder of charges, and it prints the reference numbers a payment has to quote.

It is also the standard proof of address. Banks, landlords and government offices ask for a recent bill, which puts this document in front of far more systems than the utility's own.

The specimen#

This sheet is typeset from the document's real field list. Every name and figure on it is invented, and none of it comes from anyone's paperwork.

บริษัท ไฟฟ้าตัวอย่าง จำกัด (มหาชน)

๑ ถนนสายหลัก แขวงตัวอย่าง เขตตัวอย่าง กรุงเทพมหานคร ๑๐๐๐๐

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

ELECTRICITY BILL

ใบแจ้งหนี้ ไม่ใช่ใบเสร็จ

ประจำเดือน กรกฎาคม ๒๕๖๙

ชื่อผู้ใช้ไฟฟ้า
นางสาวมณีรัตน์ พงศ์เจริญ
ที่อยู่
๗๗ ซอยลาดพร้าว ๗๑ แขวงลาดพร้าว เขตลาดพร้าว กรุงเทพมหานคร ๑๐๒๓๐
หมายเลขผู้ใช้ไฟฟ้า
0000-0000-0000
หมายเลขเครื่องวัด
MTR-00-000000
ประเภทผู้ใช้
บ้านอยู่อาศัย ๑.๑
ใบแจ้งค่าไฟฟ้า
เลขอ่านครั้งหลังเลขอ่านครั้งก่อนจำนวนหน่วย
๑๒,๘๔๕๑๒,๕๙๗๒๔๘

วันที่จดหน่วย ๒๕ กรกฎาคม ๒๕๖๙กำหนดชำระภายใน ๘ สิงหาคม ๒๕๖๙

ค่าพลังงานไฟฟ้า952.16
ค่าบริการรายเดือน38.22
ค่าไฟฟ้าผันแปร (Ft)48.35
รวมเงินค่าไฟฟ้า1,038.73
ภาษีมูลค่าเพิ่ม 7%72.71
รวมเงินที่ต้องชำระ1,111.44

ชำระเงินได้ที่

เคาน์เตอร์ธนาคาร ตัวแทนรับชำระ และแอปพลิเคชันธนาคาร

Ref.1 000000000000000Ref.2 000000000000

What the model read#

paxa-ocr-lite-v1 · captured Aug 30, 2026 · unedited

The Markdown it returned

# บริษัท ไฟฟ้าตัวอย่าง จำกัด (มหาชน)

๙ ถนนสายหลัก แขวงตัวอย่าง เขตตัวอย่าง กรุงเทพมหานคร ๑๐๐๐๐

# ใบแจ้งค่าไฟฟ้า
ELECTRICITY BILL

ใบแจ้งหนี้ ไม่ใช่ใบเสร็จ

ประจำเดือน กรกฎาคม ๒๕๖๙

ชื่อผู้ใช้ไฟฟ้า | นางสาวมณีรัตน์ พงศ์เจริญ
--- | ---
ที่อยู่ | ๗๗ ซอยลาดพร้าว ๗๑ แขวงลาดพร้าว เขตลาดพร้าว กรุงเทพมหานคร ๑๐๒๓๐
หมายเลขผู้ใช้ไฟฟ้า | 0000-0000-0000
หมายเลขเครื่องวัด | MTR-00-000000
ประเภทผู้ใช้ | บ้านอยู่อาศัย ๑.๑

เลขอ่านครั้งหลัง | เลขอ่านครั้งก่อน | จำนวนหน่วย
--- | --- | ---
๑๒,๘๕๕ | ๑๒,๕๙๗ | ๒๕๘

วันที่จดหน่วย ๒๕ กรกฎาคม ๒๕๖๙ กำหนดชำระภายใน ๘ สิงหาคม ๒๕๖๙

ค่าพลังงานไฟฟ้า | 952.16
--- | ---
ค่าบริการรายเดือน | 38.22
ค่าไฟฟ้าผันแปร (Ft) | 48.35
รวมค่าไฟฟ้า | 1,038.73
ภาษีมูลค่าเพิ่ม 7% | 72.71
รวมเงินที่ต้องชำระ | 1,111.44

ชำระเงินได้ที่
เคาน์เตอร์ธนาคาร ตัวแทนรับชำระ และแอปพลิเคชันธนาคาร

Ref.1 00000000000000 Ref.2 000000000000

The structured blocks, typeset back into a page

  1. headingL1

    บริษัท ไฟฟ้าตัวอย่าง จำกัด (มหาชน)

  2. paragraph

    ๑ ถนนสายหลัก แขวงตัวอย่าง เขตตัวอย่าง กรุงเทพมหานคร ๑๐๐๐๐

  3. headingL1

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

  4. paragraph

    ELECTRICITY BILL

  5. paragraph

    ใบแจ้งหนี้ ไม่ใช่ใบเสร็จ

  6. paragraph

    ประจำเดือน กรกฎาคม ๒๕๖๙

  7. paragraph

    ชื่อผู้ใช้ไฟฟ้า นางสาวมณีรัตน์ พงศ์เจริญ

  8. paragraph

    ที่อยู่ ๗๗ ซอยลาดพร้าว ๗๑ แขวงลาดพร้าว เขตลาดพร้าว กรุงเทพมหานคร ๑๐๒๓๐

  9. paragraph

    หมายเลขผู้ใช้ไฟฟ้า 0000-0000-0000

  10. paragraph

    หมายเลขเครื่องวัด MTR-00-000000

  11. paragraph

    ประเภทผู้ใช้ บ้านอยู่อาศัย ๑.๑

  12. table
    The table the model reconstructed
    เลขอ่านครั้งหลังเลขอ่านครั้งก่อนจำนวนหน่วย
    ๑๒,๘๕๕๑๒,๕๙๗๒๕๘
  13. paragraph

    วันที่จดหน่วย ๒๕ กรกฎาคม ๒๕๖๙ กำหนดชำระภายใน ๘ สิงหาคม ๒๕๖๙

  14. table
    The table the model reconstructed
    ค่าพลังงานไฟฟ้า952.16
    ค่าบริการรายเดือน38.22
    ค่าไฟฟ้าผันแปร (Ft)48.35
    รวมค่าไฟฟ้า1,038.73
    ภาษีมูลค่าเพิ่ม 7%72.71
    รวมเงินที่ต้องชำระ1,111.44
  15. paragraph

    ชำระเงินได้ที่

  16. paragraph

    เคาน์เตอร์ธนาคาร ตัวแทนรับชำระ และแอปพลิเคชันธนาคาร

  17. paragraph

    Ref.1 00000000000000 Ref.2 000000000000

The exact image the model read

What is on this document#

Common commercial shape

ชื่อผู้ใช้ไฟฟ้า
The account holder's name.
ที่อยู่
The service address, and the reason it is asked for.
หมายเลขผู้ใช้ไฟฟ้า
The customer account number.
หมายเลขเครื่องวัด
The meter's own identifier.
เลขอ่านครั้งหลัง และ ครั้งก่อน
Current and previous readings.
จำนวนหน่วย
Units consumed, the difference of the two.
ค่าพลังงานไฟฟ้า
The energy charge.
ค่าไฟฟ้าผันแปร
The variable component, printed as Ft.
รวมเงินที่ต้องชำระ
The amount due.
กำหนดชำระ
The payment deadline.
Ref.1 และ Ref.2
Payment reference numbers, digit exact.

No statute fixes this layout, and providers differ. What every Thai bill carries is a meter block, a charge ladder, and reference numbers for payment.

Why this one is hard to read#

Reference numbers cannot drift
A payment reference is fifteen digits with no checksum a reader can see. One wrong digit routes money to another account, and nothing about the string looks wrong afterwards.
The readings are Thai digits
Meter readings often print in Thai numerals while the money prints in Arabic. Both are numbers, and only one of them looks like one to a reader trained mostly on Latin script.
Three amounts are not the total
The energy charge, the service charge, and Ft each sit above a subtotal, VAT, and the amount due. Six figures in one column, and only the last is what gets paid.

From blocks to fields#

The charge ladder comes back as rows in reading order, which lets you read the last one as the amount due without matching on a label that differs by provider. Reference numbers come back as text. Keep them as strings, because leading zeros are load-bearing and an integer will eat them.

Rate
6.5 credits per page
Per request
50 pages, 10 MB, PDF, PNG, JPEG, WEBP
Free credits
100 credits, about 15 pages

See full pricing

Questions#

Does it work for water bills too?
The shape is the same: a meter block, a charge ladder, and references. Nothing in the reader is specific to electricity, and nothing in it is specific to any provider.
Will the reference numbers come back exactly?
They come back as the text on the page. Store them as strings and compare against the barcode when your flow has one, because a reference is the field where a single digit is the whole failure.
Can I use this for proof of address?
The reading returns the name and service address as text in their blocks. Whether that satisfies a particular verification policy is that policy's question, and this returns the page it will be judged on.

Send it your own documents.

New accounts start with 100 free credits, enough for about 15 pages. Try it on a real file in the playground.