Pull table data out of a PDF with the rows and columns aligned, not flattened into one column. DocuOCR reads digital and scanned PDFs, keeps the grid, and exports clean Excel, CSV or JSON.
Free Python libraries only read PDFs that already contain text. For scans and messy layouts you need OCR, and this page shows both. Last updated July 2026.
Upload a document to extract
Drop files here or click to upload
Up to 50 files
Uploading...
See the rows and columns come back structured, even from a scan.
Extracting a table from a PDF means detecting the grid, reading each cell, and keeping the rows and columns aligned so the data lands as a real table instead of a wall of text. The right method depends on one question: does the PDF already contain text, or is it a scan? A digital PDF has a text layer, so free Python libraries like Camelot, tabula-py and pdfplumber can pull the table with no OCR. A scanned or photographed PDF is just an image, so those libraries return nothing and you need OCR to read the page first. AI OCR services such as DocuOCR, AWS Textract Tables and Azure Document Intelligence Layout handle scans by recognizing the visual structure of the table, then returning rows and columns you can export to Excel, CSV or JSON. That is why a tool that works on your test file can fail on a scanned one, and why matching the method to the document type matters more than the tool's name.
The most common table-extraction failure is not a jumbled grid, it is an empty result. A developer installs Camelot or tabula-py, runs it on a downloaded bank statement or report, and gets back nothing. The library is not broken. Those tools read the text layer inside a PDF, and a scanned or photographed document has no text layer, only an image of the page. With no characters to parse, they return an empty table.
The fix is to run OCR before extraction. An OCR service reads the characters off the page image, reconstructs the table structure, and hands back rows and columns the same way it would for a native PDF. DocuOCR detects an image-only page automatically and applies OCR, so you send one file type and get one consistent output whether the source was a clean export or a phone photo of a printout.
This is worth checking before you pick a method. If every document you handle is a digital export, the free libraries are excellent and cost nothing. If any of them are scans, faxes or photos, you need OCR in the pipeline, and a service that does both saves you from maintaining two code paths.
The free Python libraries and the OCR services solve different halves of the problem. The dividing line is whether the tool can read a scan. Verified July 2026.
| Tool | Reads scans? | Output | Best for |
|---|---|---|---|
| DocuOCR | Yes (AI OCR) | Excel, CSV, JSON with cells kept in order | Scanned and digital PDFs, messy layouts, one API |
| Camelot (Python) | No, text PDFs only | pandas DataFrame or CSV | Lattice tables with clear gridlines |
| tabula-py (Python) | No, text PDFs only | pandas DataFrame or CSV | Stream tables separated by whitespace |
| pdfplumber (Python) | No, text PDFs only | Python lists and dicts | Custom parsing of digital PDFs |
| AWS Textract Tables | Yes (OCR) | Blocks with row and column indexes | Scanned tables on the AWS stack |
| Azure DI Layout | Yes (OCR) | Tables with structure and spans | Scanned tables on the Azure stack |
| Google Cloud Vision | Yes, but no table grid | Text and bounding boxes only | Raw text, not structured tables |
If you just want a spreadsheet out the other side, converting the PDF to Excel gives you the tables as a clean .xlsx. If you are wiring this into code, the OCR API from Python returns the same table rows as JSON.
Drop in a PDF or image. DocuOCR detects whether the page is digital or scanned.
For a scan it runs OCR; for a digital PDF it reads the text layer directly.
AI finds the table, keeps merged cells and multi-line rows aligned, and orders the columns.
Download the table as Excel, CSV or JSON, or read it back over the API.
Turn multi-page transaction tables into rows for reconciliation and bookkeeping.
Pull line items, quantities and totals into a table your ERP can import.
Extract figures from annual reports and filings for analysis in a spreadsheet or pandas.
Convert supplier price tables into structured rows you can compare and load.
Capture result tables from scanned reports for records and downstream systems.
Read line-item tables off bills of lading and packing lists at volume.
Convert any PDF into a clean spreadsheet, tables intact.
Read tables back as JSON with a few requests calls.
POST a document, get fields and tables as JSON.
How the tools compare for US teams.
Turn statement tables into reconcilable rows.
Per-1,000-page rates across the market.
Upload a PDF with a table, scanned or digital, and DocuOCR returns the rows and columns aligned as Excel, CSV or JSON. Try it free with no signup, then scale per page when you go to volume.