Best OCR API for Tables: Which Document Extraction API Reconstructs Tables Most Accurately
Aug 21, 2026 • 8 min read
PaddleOCR-VL-1.6 leads table reconstruction at 94.76 TEDS. Among commercial APIs, the cheaper Gemini tier beats the expensive one, and asking for a table costs six to twenty times what the text costs.
// Try it now, no signup required
PDF, JPG, PNG, BMP, HEIC, TIFF
Upload a document to extract
Drop files here or click to upload
Up to 50 files
Free plan extracts the first 5 files, the rest unlock when you upgrade
Uploading...
Free on your own files. No credit card, no signup to test.
The short answer: on the current independent leaderboard, PaddleOCR-VL-1.6 reconstructs tables most accurately, scoring 94.76 TEDS, followed by MinerU2.5-Pro at 93.42 and GLM-OCR at 92.83. Among commercial APIs you can simply buy, Gemini 3 Flash leads at 89.29, narrowly ahead of Gemini 3 Pro at 89.15, with GPT-5.2 well back at 82.95 and Mistral OCR last of the group at 76.78. AWS Textract, Azure Document Intelligence and Google Document AI publish no table accuracy figure and appear on no public benchmark, so they cannot be ranked here at all.
Tables are where document extraction tools actually separate. Almost anything can read the characters off a clean page. Putting those characters back into the right row and the right column, across a merged cell and a page break, is the hard part, and it is the part that decides whether a number lands in the right place in your system.
Table accuracy on the current benchmark
These are Table TEDS scores from OmniDocBench v1.7, an Apache-licensed benchmark published at CVPR 2025 and maintained by OpenDataLab. TEDS stands for tree edit distance similarity: it compares the structure of the table you got against the structure of the table that was there, so it penalizes a shifted column far more harshly than a misread character. We pulled these on 21 August 2026.
| Model | Table TEDS | Overall rank | Availability |
|---|---|---|---|
| PaddleOCR-VL-1.6 | 94.76 | 1st | Open weights |
| MinerU2.5-Pro | 93.42 | 2nd | Open weights |
| GLM-OCR | 92.83 | 3rd | Open weights |
| Youtu-Parsing | 92.02 | 7th | Open weights |
| PaddleOCR-VL-1.5 | 91.67 | 4th | Open weights |
| HunyuanOCR | 91.01 | 18th | Open weights |
| Gemini 3 Flash | 89.29 | 14th | Commercial API |
| Gemini 3 Pro | 89.15 | 13th | Commercial API |
| GPT-5.2 | 82.95 | 23rd | Commercial API |
| olmOCR | 83.00 | 26th | Open weights |
| Mistral OCR | 76.78 | 27th | Commercial API |
| Marker | 65.77 | 32nd | Open source |
Two rows in that table are worth stopping on, because they reverse what you would assume from the price list.
The cheaper Gemini model is the better one at tables. Gemini 3 Flash scores 89.29 and Gemini 3 Pro scores 89.15. The gap is small enough that it could reverse on your documents, but the direction still matters: there is no evidence here that paying for the larger model buys you better table structure. If tables are your use case, benchmark the cheap one first.
HunyuanOCR is much better at tables than its overall rank suggests. It sits 18th on the composite score at 89.95 but 6th on tables at 91.01, ahead of both Gemini models. That happens because the composite averages text, tables and formulas, so a model that is weak on running text and strong on grids gets buried. If you are picking a tool for financial statements or lab reports, the composite ranking is the wrong column to sort by. We go through what the composite actually contains on the OCR accuracy comparison.
Asking for a table costs six to ten times more than asking for text
Before the accuracy question there is a billing question that catches teams out, because on every major cloud a table is not a feature flag on the OCR call. It is a different product on a different meter.
| Vendor | Plain text per 1,000 pages | Table extraction per 1,000 pages | Multiple |
|---|---|---|---|
| AWS Textract | $1.50 (DetectDocumentText) | $15.00 (AnalyzeDocument TABLES) | 10.0x |
| Azure Document Intelligence | $1.50 (Read) | $10.00 (Layout) | 6.7x |
| Google Document AI | $1.50 (Enterprise Document OCR) | $30.00 (Form Parser) | 20.0x |
Those are US East rates taken from the vendors' own published price data. Two details save real money. On AWS, LAYOUT is free when you request it together with TABLES, and every multi-feature AnalyzeDocument call is discounted exactly one cent a page against the sum of its parts, so bundling what you need into one call rather than two is worth $10.00 per 1,000 pages. On Azure, the Read model provably cannot return a table at all: its documented response contains pages, paragraphs, lines, words and styles, and no tables collection of any kind. If you are on Read and expecting grids, you are on the wrong meter, not looking at a bug. The full per-vendor breakdown is on our OCR API pricing comparison.
Google is the outlier at twenty times the text rate, which is worth knowing before you prototype on Form Parser and discover the unit economics at volume.
The reconstruction trap that flattens your merged cells
A high benchmark score does not save you from the most common way table extraction goes wrong in production, which happens in your own parsing code rather than in the model.
AWS Textract's documentation states it plainly: the cell block type will always have a row span of 1 and a column span of 1. Real spans do not live on the cells. They live on separate MERGED_CELL blocks hanging off the table's own relationship list. So the obvious loop, walk every CELL block and write it at its row and column index, silently flattens every merged cell in the document and shifts every column to the right of it. The output looks plausible. The totals are wrong. This is the single most common Textract table bug we see described, and it is not a Textract defect, it is a documented model that people skip past.
Three more that bite:
- Headers are marked three incompatible ways. AWS puts COLUMN_HEADER in a cell's EntityTypes array, Azure sets cell.kind to "columnHeader", and Google returns a separate headerRows array outside the cells. Code written against one vendor will treat headers as ordinary data rows on the next.
- Textract turns a table's printed title into cells. An in-table TABLE_TITLE comes back as real cells at row index 1, so a naive dump puts "Q3 Consolidated Revenue" in the first row of your CSV where the column names should be.
- Page-spanning tables usually arrive as several tables. A table that runs across three pages generally comes back as three separate table objects that you have to stitch, with the header repeated or missing. Bedrock Data Automation is the exception we have found, modeling a spanning table as one entity with a page_indices array.
None of this shows up in a TEDS score, because the benchmark evaluates the model's output rather than the code you wrote to consume it. Budget for it. In most projects it is a larger share of the work than choosing the vendor was.
Which one should you actually pick
If you process a high volume of table-heavy documents and have engineers to spare, the open-weight models at the top of the board are genuinely ahead, and the gap on tables is wider than the gap on text. The cost is that you are now hosting a model. We worked through what that actually runs to on self-hosted OCR cost, and the honest summary is that it only pays above a few hundred thousand pages a month.
If you want an API and tables are the point, start with the cheaper Gemini tier and Azure Layout, benchmark both on your own worst documents, and measure the structure rather than the characters. Do not assume the more expensive model is better at grids, because on this data it is not.
If your documents are financial and the numbers have to be right, the deciding factor is not the benchmark at all. It is whether the tool returns a per-value confidence score, so that a suspect figure surfaces for review instead of landing silently in your ledger. Textract, Azure Document Intelligence, Google Document AI and Mistral OCR all return confidence. General chat models do not, which is the practical argument against using one for accounting work regardless of how it scores.
Whichever route you take, the extracted grid is only worth something once it is somewhere you can interrogate. Getting a clean table out of a PDF is step one; the step people underestimate is the one after, where you need to ask the data a question without writing a query by hand, and being able to ask questions of your data in plain English turns a folder of parsed tables into something the finance team will actually use. If your destination is a spreadsheet rather than a database, our PDF to CSV API page covers which vendors emit CSV directly and which make you write the writer, and PDF table extraction covers the mechanics.
How to test this properly on your own tables
Public benchmarks tell you which models are serious. They cannot tell you which one reads your remittance advices, and the difference between a 94 and an 89 on somebody else's test set is smaller than the difference your own document quality will make.
Assemble 50 to 100 pages of your genuinely worst tables: the ones with merged header cells, the ones that run across a page break, the faxed ones, the ones with a footnote row that is not really data. Run every candidate on the same day, because these models change without announcement. Then score the thing that matters, which is not character accuracy but whether each value ended up in the right cell. Count how many tables a person still has to open and fix, and multiply by your loaded hourly cost. That number, not the leaderboard, is the cost of the decision.
You can start that comparison right here: upload one of your difficult tables and look at what comes back, including the confidence scores on individual values.
Extract your documents with DocuOCR
DocuOCR's AI OCR software turns any document into clean, structured data in seconds. No template setup required.
Start free