MartinAI
August 4, 2026·6 min read

Why utility bills need reasoning, not OCR

OCR reads characters. Utility data needs a system that understands tariffs, meters and the relationships between fields. Here is the difference, and why it matters for billing accuracy.

A utility bill looks simple until you try to automate it. Across a single province you will meet dozens of layouts, each with its own way of expressing account numbers, meter reads, billing periods, rate classes and line-item charges. Traditional OCR pipelines transcribe the pixels, but transcription is not understanding.

The gap between characters and meaning

OCR can tell you a page contains the number 1,240. It cannot tell you whether that is a kWh total, a dollar amount, a meter read or an account fragment, nor whether it is consistent with the billing period above it. Meaning lives in relationships: a usage total should reconcile with meter reads across dates, charges should sum to the total due, and the rate class should match the tariff in force.

Extraction alone is not enough. The value is in a system that questions its own answer before you rely on it.

Reasoning over documents

MartinAI treats a bill as a graph of semantic fields, not a flat block of text. A layout agent detects visual regions, a utility agent matches the format profile, field agents resolve every field in context, and a validation mesh cross-checks the result against expected relationships and the applicable tariff.

  • Perceive visual regions and semantic zones across any layout
  • Resolve fields inside utility- and tariff-specific context
  • Validate totals, dates, units and rate relationships
  • Emit one normalized, provenance-linked intelligence object

The result is not a transcription. It is a structured, trustworthy object your downstream systems can act on. That is the difference between reading a bill and understanding it.