Skip to main content

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)

Source distribution for pyscientificpdfparser 0.2.0
File Size Uploaded
pyscientificpdfparser-0.2.0.tar.gz 19.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyscientificpdfparser 0.2.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page