Use case

Data extraction from PDFs that ends the retyping

Automating data extraction from PDFs means getting the numbers, dates, names, and line items already printed on a document into a system that can actually use them — a CRM, a spreadsheet, a ledger — without a person opening the file and typing what they see. It sounds like a narrow problem until you count how much of a business's real data still arrives this way: a signed application, a supplier statement, a scanned intake form, a spreadsheet someone exported to PDF so it would print cleanly. A build that reads these documents and turns them into structured records ends the retyping, and the quiet errors that travel with it.

· Reviewed by Artur Horimoto, Founder & CEO

The job: getting what's already written down into a system that can use it

Every business runs into a version of the same problem: information that already exists, correctly, on a page, and has to exist again inside a system before anyone can act on it. A person opens the file, finds the field, and types it somewhere else — a database, a spreadsheet, a form in another piece of software. Nothing about that step requires judgment. It requires accuracy and patience, applied over and over, to documents that rarely look exactly like the last one.

That's worth separating clearly from a related but different job: deciding whether a document is acceptable, unusual, or worth a second look is a judgment call, and it's covered in AI document review. This page is about the mechanical layer underneath that judgment and underneath almost everything else a business does with paperwork — getting what's printed onto a page into a field a system can actually query, sum, or search.

Automating invoice processing is the most visible version of this problem in most finance functions — a specific document type with its own matching and coding rules layered on top. The extraction underneath it, and underneath a lease application, a claims form, or a supplier statement, works the same way regardless of what the document happens to be called. Get that layer right once and every document type sitting on top of it gets easier.

Getting it wrong has a cost that doesn't show up right away. A transposed digit in a CRM record doesn't announce itself — it sits there quietly until it causes a bounced invoice, a wrong shipping address, or a compliance figure that doesn't reconcile months later. The value of automating this step isn't only speed. It's that a system reads the same field the same way every time, instead of however a tired person reads it on a Friday afternoon.

A PDF is not one kind of file

"It's just a PDF" is where most extraction projects go wrong, because a PDF is a container, not a format, and what's inside it changes everything about how hard the job is.

A born-digital PDF — one generated straight out of accounting software, a CRM, or a word processor — carries an actual text layer underneath what you see. The words on the page are stored as words, in order, and a system can read them directly the same way a browser reads a web page. This is the easy case, and it's worth knowing you're in it, because it changes what a build needs to do.

A scan is a photograph of a page pretending to be a document. There is no text layer — only a picture of ink on paper — so before any field can be extracted, the system needs optical character recognition, commonly shortened to OCR: software that looks at the image and works out which shapes are which letters. A clean scan from a proper scanner, flat and well-lit, reads reliably. A page scanned slightly askew, or faxed and then rescanned by whoever received it, reads less reliably, the same way a person squinting at a blurry photocopy misreads a few characters.

A photo taken on a phone — in a van, on a loading dock, in whatever light happened to be available — is harder again. It carries everything a scan does, plus skew, shadow, glare off a laminated card, a thumb at the edge of the frame, a document that isn't lying flat. OCR still runs, but the honest expectation has to shift: a photographed document in poor conditions produces a document a system reads less confidently than one dropped straight out of a scanner, and a build worth trusting says so rather than treating every source as equally clean.

Then there's the case people don't expect to be a problem at all: a spreadsheet exported to PDF. The data was perfectly structured a minute earlier — real rows, real columns, a formula behind the total. Exporting it to PDF for printing or sharing throws that structure away. What's left is text positioned near other text on a page, with no underlying concept of "this belongs to that row." A system reading it has to reconstruct the table from position alone, which is a genuinely different — and harder — problem than reading the spreadsheet itself would have been.

The manual way vs. the automated way

The manual version looks the same regardless of industry: someone opens each file, finds the fields a checklist or a downstream system needs, and types them in by hand, one document and one field at a time. Judgment about what "close enough" looks like — is that a 3 or an 8, is that stray mark part of the number or not — lives in whoever happens to be doing the typing that day, and drifts as staff change.

An automated build reads each document the moment it arrives, works out which of the categories above it falls into, and extracts the fields a checklist or a downstream system actually needs — with a note attached to how confident it is in each one, not just a value.

Manual Automated
Reading the document Typed by hand from the page or screen Read directly from the text layer, or via OCR when there isn't one
Consistency Depends on who's typing and how many files are left The same fields, read the same way, every time
Tables and line items Copied row by row, easy to mis-align under pressure Reconstructed from position and checked against totals
Confidence Rarely tracked — a typed field looks equally certain either way Attached to every field, so uncertainty is visible instead of hidden
Unclear cases Guessed at, or set aside informally Routed to a person, with the source passage attached

Why format variety is harder than volume

Ask a team that's tried to automate this before what actually broke, and volume is rarely the honest answer. Fifty documents in one format, from one source, laid out the same way every time, is close to a solved problem — a system learns the layout once and reads the rest quickly. Fifty documents spread across fifty different formats is the real problem, and it's the situation almost every business is actually in.

A supplier's invoice, a signed application, a form downloaded from a government portal, and a statement exported from another company's own software all put similar information in different places, under different labels, in a different order. "Total due" on one document is "Balance" on the next and "Amount payable" on a third. One template puts the date top-right, another buries it in a footer. A system built to expect one layout breaks quietly the moment a genuinely different one arrives — not with an error message, but with a field read from the wrong place and reported with total confidence. Building for that variety from the outset, rather than for one clean sample document, is most of what separates a system that keeps working from one that only ever worked in the demo.

Tables are where naive extraction most often fails silently

Ask most extraction tools to read a paragraph and they do a reasonable job. Ask them to read a table and the failure rate climbs sharply, because a table isn't text — it's a grid, and a PDF has no real concept of a grid. What looks like neat rows and columns to a person is, underneath, just words positioned at coordinates on a page. A system has to infer which words belong to which row and which column from spacing and alignment alone.

That inference breaks in ways that don't look like errors. A line item that wraps onto a second line gets read as two separate rows. A column of numbers that's right-aligned in one row and left-aligned in the next, because someone edited the document by hand, confuses which figure belongs to which item. A merged cell spanning two columns gets attributed to the wrong one entirely. None of this throws an error — the system produces a confident, complete-looking table that's quietly wrong in a handful of cells, which is a worse outcome than an obvious failure, because nobody thinks to check it. A build that treats tables as a distinct, harder extraction problem — checking row totals against a stated sum, checking that the number of extracted rows matches what the page actually shows — catches this before it reaches anyone downstream.

How a build actually works

Validation: the part that separates a usable system from a demo

Extracting a field is not the same as extracting a correct field, and the gap between the two is where most naive extraction tools quietly fail. A usable build checks what it extracted before handing it anywhere else: does this amount fall inside a range that's plausible for this document type, do the line items sum to the stated total, does this reference number match a record that already exists in your system. A total that doesn't reconcile, a date that falls outside a sensible range, a reference number with no match anywhere — these get caught and flagged at the extraction step, rather than flowing downstream and surfacing as someone else's problem weeks later. Validation is unglamorous and it's genuinely the difference between a demo that reads one clean sample document well and a system a business can actually run on.

Confidence scoring and the queue for anything uncertain

Every extracted field carries a confidence level, not just a value. A clean field from a born-digital document with an unambiguous label produces high confidence. A field pulled from a skewed scan, a badly lit phone photo, or a table cell the system had to infer from spacing produces lower confidence — and a low-confidence field doesn't get smoothed over and presented as fact. It gets routed to a person, with the source passage or image region attached, so checking it takes seconds rather than requiring someone to re-read the whole document from scratch. That routing decision is human-in-the-loop design in practice: build the system to hand off what it isn't sure of, instead of guessing and hoping nobody checks.

Handwriting: worth being honest about

Handwritten fields are the case where it's most important not to oversell what a system can do. A neatly printed name in a clear box reads reasonably well. A signature, a hurried note in a margin, or a form filled out in cursive under time pressure is genuinely harder, and results vary a lot from one document to the next — sometimes well, sometimes not. The honest approach is to treat handwritten fields as lower-confidence by default and route more of them to a person, rather than promising a level of reliability that shifts depending on whoever's handwriting happens to be on the page that day.

What it connects to

An extraction system earns its keep by reaching the documents you actually receive and landing structured output where your team already works. Typically that means:

  • Wherever documents arrive — an inbox, an upload portal, a shared drive, a scanner's output folder — read as they land rather than batched for a manual sweep later.
  • The system the data is destined for, whether that's a CRM, an accounting platform, or a case management tool, so extracted fields land as real records instead of a spreadsheet someone has to copy across by hand.
  • Whatever holds the rules for what "correct" looks like — expected ranges, reference lists, prior records — so validation has something real to check extracted values against.
  • Wherever a person reviews the uncertain cases, whether that's the source system itself, a shared queue, or an inbox, so a low-confidence field actually gets seen rather than sitting unresolved.

None of this requires replacing what your team already runs. Where a system exposes an API, a build connects to it directly; where an older platform doesn't, there's usually a workable route in through an export or a webhook it already supports. This kind of extraction work sits under the broader knowledge systems practice — the same discipline applied to whatever unstructured input your business is currently reading by hand.

Frequently asked questions

What kinds of PDFs can this actually handle?

Born-digital PDFs with a real text layer, scanned documents that need OCR, and photographed documents like a form shot on a phone. Each is a different level of difficulty, and a build is honest with you about which category your documents fall into and what confidence to expect from each.

Can it read tables and line items, not just single fields?

Yes, though tables are the hardest part of extraction to get right, since a PDF has no real concept of a grid. A build treats tables as their own problem — reconstructing rows and columns from position and checking totals against what the page actually states — rather than assuming table extraction works the same as reading a paragraph.

What happens to handwritten fields?

They're treated as lower-confidence by default and routed to a person more often than typed text. Results on handwriting vary a lot depending on how it was written, and we'd rather flag that honestly than promise a reliability level that shifts document to document.

Does this replace the person currently retyping this data?

It changes what they spend time on — from retyping every field on every document to checking the fields the system flagged as uncertain, with the source passage attached. The final call on a low-confidence field stays with a person.

How long does a build like this take to go live, and what does it cost?

Most extraction builds are in production within weeks, starting with your most common document format before expanding to cover the messier ones. Cost depends on how many document types and formats it needs to handle and which systems it connects to — every engagement gets a clear price agreed before any build work starts.

Bring us the documents your team is currently opening one at a time and retyping into another system, and we'll tell you honestly, in a free 30-minute strategy call, what a build like this would take.

Automate this job

Walk us through how it works today. We will map the build and give you a clear price before anything starts.

Free 30 minutes. No pitch deck. You leave with a plan either way.