pyScientificPdfParser
A Python package to parse scientific PDF documents into structured Markdown, leveraging modern Document AI models.
Overview
This package provides a pipeline to process scientific PDFs (both born-digital and scanned) and convert them into structured, machine-readable formats like GitHub Flavored Markdown and JSON. It uses a series of state-of-the-art models for layout analysis, table recognition, and optional LLM-based refinement.
Features
- PDF Processing: Handles single files, lists of files, or entire directories.
- OCR: Uses Tesseract for robust text extraction from scanned documents.
- Document Layout Analysis (DLA): Employs models like LayoutLMv3 or DiT to identify page regions (title, text, tables, figures).
- Table Structure Recognition (TSR): Utilizes models like Table Transformer to parse the structure of complex tables.
- Section Segmentation: Logically groups content into IMRaD sections.
- LLM Refinement (Optional): Uses Large Language Models for OCR correction, text flow normalization, and structured data extraction (e.g., references).
- Multiple Output Formats: Generates clean Markdown, structured JSON, and extracts image assets.
Installation
Install the package from PyPI:
# Base installation
pip install pyscientificpdfparser
# To include machine learning models for layout analysis and table recognition
pip install pyscientificpdfparser[ml]
# For full functionality, including LLM-based refinement
pip install pyscientificpdfparser[ml,llm]
Note: This package requires a system-level installation of Tesseract for OCR. Please see the full installation guide for details.
Usage
Command-Line Interface (CLI)
scipdfparser process path/to/your/document.pdf --output-dir ./output
Python API
import pathlib
from pyscientificpdfparser.core import parse_pdf
# Define the path to your PDF and the desired output directory
pdf_path = pathlib.Path("path/to/your/document.pdf")
output_dir = pathlib.Path("path/to/output")
# Create the output directory if it doesn't exist
output_dir.mkdir(parents=True, exist_ok=True)
print(f"Processing {pdf_path.name}...")
# Call the parser
# The 'document' object contains all the parsed data.
document = parse_pdf(
pdf_path=pdf_path,
output_dir=output_dir,
llm_refine=False, # Optional: set to True to enable LLM refinement
)
print("Done.")
print(f"Markdown and assets saved to: {output_dir}")
Development
This project uses poetry for dependency management and pre-commit for code quality.
Initially developed https://github.com/gowthamrao/pyScientificPdfParser/tree/develop
# Install development dependencies
poetry install
# Activate pre-commit hooks
poetry run pre-commit install
Metadata
Release files for pyscientificpdfparser 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyscientificpdfparser-0.2.0.tar.gz | 19.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyscientificpdfparser-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.0 kB
Release files / pyscientificpdfparser-0.2.0.tar.gz
| Download URL | pyscientificpdfparser-0.2.0.tar.gz |
|---|---|
| Size | 19.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aa139f1d43cc7885cc7714b10faadca739b1821477cc11f94599fb254135c547
|
|
BLAKE2b-256 checksum How to use checksums |
6c33a4ce2a2598307b2d74cc50e45f380be5f3efabe4fccc7ea195fe406a1f29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2025.
Transparency logRelease files / pyscientificpdfparser-0.2.0-py3-none-any.whl
| Download URL | pyscientificpdfparser-0.2.0-py3-none-any.whl |
|---|---|
| Size | 23.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c04e320b1595f796da037c7e1a325fc1669fefaabd288da0f219d9b380558b04
|
|
BLAKE2b-256 checksum How to use checksums |
72a1cff1fac8dd7938aacb3a73f66197991e8e531198e00f184bb25386cb7241
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 15, 2025.
Transparency log