tabula-py
Simple wrapper for tabula-java, read tables from PDF into DataFrame
What it is and what it does
tabula-py is a Python wrapper around tabula-java that extracts structured table data from PDF files. It reads tables directly into pandas DataFrames, making the extracted data immediately usable for analysis and manipulation. The package also supports batch conversion of PDFs to CSV, TSV, or JSON formats. It depends on pandas, numpy, and distro, and requires a Java 8+ runtime on the system—the Java dependency is the primary installation consideration.
The package is stable and widely used (top 5000 on PyPI with monthly downloads of 5658034), though development is dormant with no releases since 2024-10-17. It supports Python 3.9, 3.10, 3.11, 3.12, and 3.13 and carries no known security vulnerabilities. The MIT license places no restrictions on use.
Use it for:
- Extract financial or statistical tables from PDF reports into DataFrames for analysis.
- Batch convert a directory of PDFs containing tabular data into CSV files for data pipeline ingestion.
- Automate scraping of structured data from archived or published PDF documents.
- Convert PDF-based forms or invoices with table layouts into machine-readable formats.
- Build data collection workflows that read tables from remote PDFs via URL.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Extracts tables from PDF files and converts them into pandas DataFrames, CSV, TSV, or JSON formats using a Java-based backend.
Yes, with conditions. The package is stable, marked Production/Stable, and carries no security vulnerabilities. However, dormant development since 2024-10-17 means new features or breaking-change fixes are unlikely. Install only if you have Java 8+ available on your system and need straightforward PDF table extraction; if you require active development or support for cutting-edge PDF formats, evaluate alternatives or plan for maintenance yourself.
Install
tabula-py on PyPI
pip
pip install tabula-pyuv
uv add tabula-pypoetry
poetry add tabula-pyInstalling tabula-py
Before you install
Low install friction with a pure-Python wheel. Maintenance is dormant with no releases since 2024-10-17, though the repository remains active with a recent commit on 2024-12-05 and 2315 stars. The package is marked Production/Stable and supports current Python versions.
License in practice
MIT license permits unrestricted use, modification, and distribution with minimal restrictions—suitable for both open-source and commercial projects.
Quickstart
pip install tabula-py
import tabula
dfs = tabula.read_pdf("test.pdf", pages='all')
tabula.convert_into("test.pdf", "output.csv", output_format="csv", pages='all')
Requires Java 8 or later installed and available on the system PATH; Python 3.9 or higher.
Verify before relying
- Stability and compatibility of the Java backend with recent Java versions and modern PDF formats.
- Performance characteristics when processing large PDFs or batch operations.
- Accuracy of table detection and extraction for complex or non-standard PDF layouts.
Package facts
| License | The MIT License (MIT) Copyright (c) 2016 Michiaki Ariga Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the… (full text in the JSON record) (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — pandas, numpy, distro |
| Maintenance | dormant — 666 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 5,658,034/month — #2,060 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: tabula_py-2.10.0-py3-none-any.whl
Keywords: data frame, pdf, table
Tags
More General packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
docutilsDocutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
SphinxSphinx generates professional documentation…
permissive · top 1,000 on PyPI
larkLark is a parsing library that builds abstract…
permissive · top 1,000 on PyPI
nltkNLTK is a Python library for natural language…
permissive · top 1,000 on PyPI
humanizeConverts numbers, dates, times, and file sizes…
permissive · top 1,000 on PyPI
camelot-pyExtracts tables from PDFs into pandas…
permissive · top 5,000 on PyPI
tablibTablib converts tabular data between multiple…
permissive · top 5,000 on PyPI
pantabConverts DataFrames to and from Tableau Hyper…
permissive · top 15,000 on PyPI
unPDFExtracts individual characters and metadata…
permissive · top 15,000 on PyPI
aspose-cellsAspose.Cells for Python via Java is a library…
unclear · top 15,000 on PyPI
pdftextExtracts plain text or structured blocks,…
permissive · top 15,000 on PyPI
pdftotextExtracts text from PDF files, including…
permissive · top 15,000 on PyPI
img2tableIdentifies and extracts tables from images and…
permissive · top 15,000 on PyPI
itablesRenders Pandas and Polars DataFrames as…
permissive · top 5,000 on PyPI