← Back to Open-Source PDF Software

Open-Source PDF Software Capable of Extracting Tables from PDFs

Extract tabular data from PDFs

23 tools

Python

Camelot

CliLibrary

Extracts tables from text-based PDFs (not scanned documents) into pandas DataFrames, exportable to CSV/JSON/Excel/HTML/SQLite, with accuracy/whitespace quality metrics and a CLI. Five parsing strategies: `lattice` (ruled tables), `stream` (whitespace-based), `network`/`hybrid` (text-alignment), and an optional neural `ml` parser (Table Transformer) for hard borderless cases.

Python

cog-marker

Docker

Cog/Replicate-deployable packaging of Marker (see the separate Marker entry), converting PDFs — and EPUB, MOBI, XPS, FB2 — to Markdown via layout analysis and OCR, with table formatting and LaTeX-equation conversion carried over from the underlying Marker engine. Exists as its own entry because it's a distinct deployable artifact (a Cog container image runnable on Replicate's infrastructure) rather than a different tool — the actual conversion logic is Marker's.

Stale
Python

deepdoctection

Library

Apache-2.0 orchestration framework for document AI: combines layout detection and table recognition (via Detectron2/Transformers), OCR (Tesseract, DocTr, or AWS Textract), and document/token classification (LayoutLM family, LiLT, BERT-style models) into configurable pipelines for scanned documents and PDFs.

Python

Docling

CliLibrary

Document-conversion toolkit that parses PDFs (and Office/image formats) into a unified structured representation, with layout analysis, OCR (EasyOCR by default), table structure recognition, and optional vision-language-model image description; exports to Markdown, HTML, or JSON.

Python

Marker

Library

Converts PDFs, images, PPTX, DOCX, XLSX, HTML, and EPUB to Markdown, JSON, HTML, or chunks, preserving reading order: reconstructs tables (heuristics with VLM fallback for complex cases), recognizes math/equations as LaTeX, extracts and saves images, performs multilingual OCR via the Surya VLM, strips headers/footers/artifacts, and can optionally use an LLM to improve accuracy.

Python

MinerU

CliLibraryServerWeb App

Converts PDF, DOCX, PPTX, XLSX, images, and web pages into Markdown or JSON: strips headers/footers/page numbers while preserving structure, converts formulas to LaTeX and tables to HTML, OCRs scanned/garbled PDFs in 109 languages, handles single/multi-column and complex layouts (incl. cross-page table merging), and extracts images with captions. Offers CLI, FastAPI, and Gradio WebUI, plus Python/Go/TypeScript SDKs; builds on PDF-Extract-Kit's models.

Python

PDF Craft

Library

Converts scanned-book PDFs to Markdown or EPUB using OCR (DeepSeek OCR locally, or DeepSeek/Baidu vendor backends), recognizing complex structure including tables and formulas; extracts body text while filtering headers/footers, preserves footnotes/images/assets, auto-generates an EPUB table of contents (optionally LLM-enhanced), and offers configurable table (HTML/image) and formula (MathML/SVG/image) rendering. Runs fully offline as of v1.0.0.

Python

PDF-Extract-Kit

Library

Model toolbox for extracting content from complex PDFs: layout detection (images/tables/text/titles/formulas), formula detection and LaTeX recognition, OCR with text location, and table recognition to LaTeX/HTML/Markdown. Provides the underlying models that MinerU builds its PDF-to-Markdown application on top of.

JavaScript

pdf-parse

Library

Cross-platform TypeScript/JavaScript module extracting text, embedded images, tables, and document metadata/outline from PDFs, plus rendering pages to PNG screenshots — a broader capability set than most JS PDF-parsing libraries, which typically stop at plain text. A complete rewrite under new maintainership (mehmet-kozan) since the original gitlab.com/autokent/pdf-parse went unmaintained, actively published through late 2025.

Tested
C++

pdf-text-extraction

Cli

Command-line tool for extracting text and tabular data from PDF files, with table output written directly to CSV for further processing. Built as a focused, single-purpose alternative to heavier PDF libraries for when all that's needed is getting content out of a document, without pulling in a full parsing/rendering engine as a dependency. Written by the same author as the PDF-Writer/HummusJS engine, sharing some of its low-level PDF parsing code.

Python

pdf2docx

CliGuiLibrary

Converts PDF files to DOCX (Word) format, preserving formatting and layout — fonts, positioning, images — rather than dumping plain text into a Word document, and extracts tables as genuine Word tables rather than flattened text. Offers both a CLI and a GUI, covering scripted batch conversion and one-off interactive use. A common need for taking a PDF that needs further editing back into an editable Word document.

Scala

PDFFigures 2.0

Library

Extracts figures, tables, captions, figure names/numbers, section titles, and in-figure text from scholarly (computer science) PDFs, with page location and bounding boxes; renders extracted figures as raster (PNG/JPEG) or vector (SVG/PS/EPS, via pdftocairo) images; supports multi-threaded batch processing and includes debugging visualization tools.

Stale
Java

PDFLayoutTextStripper

Library

Subclass of Apache PDFBox's own `PDFTextStripper` specifically built to preserve a PDF's original layout and spatial positioning when converting it to plain text — where PDFBox's default stripper reflows text into reading order and loses column/table alignment, this one keeps whitespace positioned to match the source layout. Makes it noticeably easier to extract structured data such as tables and form content from the resulting plain text, at the cost of extra leading whitespace in the output.

Tested
Stale
Python

pdfplumber

Library

Extracts text (with layout preservation, tolerance settings, regex search, and word bounding boxes), detects and extracts tables (via ruling-line or text-alignment strategies), and provides low-level access to characters, lines, rectangles, curves, images, annotations, hyperlinks, and form fields, with page cropping/filtering, password-protected PDF support, and visual debugging (page-to-image rendering with overlay annotations, incl. Jupyter display). Does not generate, modify, or OCR PDFs.

Tested
JavaScript

pdfreader

Library

Node.js library that reads text from PDFs and parses tabular data using automatic column detection combined with rule-based parsing rather than a fixed grid layout. Aimed specifically at extracting structured data (tables, forms) from PDFs programmatically, rather than general-purpose text dumping — the rule-based parser lets callers define matching patterns for specific document layouts they expect to process repeatedly.

Python

pdftabextract

Library

Toolkit for extracting tabular data from OCR'd ('sandwich') PDFs already converted to pdf2xml format: splits scanned double pages, detects lines via image processing, corrects page skew/rotation, clusters lines/text into table columns and rows, and exports to pandas DataFrames (CSV, Excel, etc.). Not an OCR tool itself — requires pre-OCR'd input from Tesseract/ABBYY; the authors recommend trying `pdftotext` first.

DepreciatedStale
Python

pydoxtools

Library

Pipeline library for extracting information from unstructured documents with low memory/CPU overhead: PDF table extraction, image analysis with OCR, document question-answering via LLM integration, vector index creation, and support for most common document formats.

Stale
Python

PyMuPDF

BindingsLibrary

Python bindings for MuPDF covering text extraction (plain, rich dictionary with font/size/color/bbox, HTML/XML, raw blocks, table-to-Markdown); embedded image extraction and high-DPI page rendering to Pixmaps; Tesseract-based OCR (100+ languages); reading/writing annotations (highlights, notes, stamps, ink) and redactions (with permanent apply); AcroForm reading and filling; page insert/delete/reorder, merge/split, and metadata editing; PDF creation and Markdown-to-PDF conversion; password protection/RC4/AES encryption; hyperlink and cross-reference handling; and outline/bookmark read-write.

Python

PyMuPDF4LLM

Library

Markdown-conversion layer built on PyMuPDF: converts PDF pages to Markdown while preserving headings, tables (ruled-line or text-position-based detection), and images, specifically tuned for feeding PDF content to LLMs as clean, structured Markdown rather than raw extracted text. A sibling package to base PyMuPDF rather than a separate engine — it reuses PyMuPDF's own C-level parsing and adds the Markdown-shaping layer on top.

Tested
Java

tabula-java

CliLibrary

Table-extraction library (powers the Tabula tool) that pulls tabular data out of PDFs using lattice mode (ruled cell borders) or stream mode (no borders), exporting to CSV, TSV, or JSON; usable as a CLI for batch processing or as a Java API, with support for selective pages, custom extraction areas, and password-protected files.

Tested
R

tabulapdf

BindingsLibrary

R bindings to the Tabula Java library (an R clone of the Tabula CLI) that computationally extracts tables from PDF documents via `extract_tables()`, returning results as R tibbles/data frames. Requires a Java runtime (rJava, OpenJDK 11 recommended).

Go

uniDoc

Library

Comprehensive Go PDF toolkit for reading, writing, and processing PDFs: text/image/table extraction, merging/splitting/rotating/rearranging pages, form creation and filling, encryption/decryption, digital signing, watermarking, and image-to-PDF conversion.

DepreciatedStale
Go

UniPDF

Library

Go PDF library (pure Go): generates reports/invoices with styled text and tables; creates and fills forms; merges, splits, reorders, and rotates pages (incl. N-up layouts); extracts text (with position/formatting), images, and tabular data to CSV; adds/converts images to PDF; removes or adds password protection; validates and applies digital signatures; compresses/optimizes files; adds watermarks; and supports CCITTFax/JBIG2 image decoding.