Skip to main content

Parse PDF documents into markdown formatted content using Vision LLMs

Project description

ExtractFlow Parse

License: MIT

🚀 Getting Started

Prerequisites

  • 🐍 Python >= 3.9
  • 🖥️ Ollama (if you want to use local models)
  • 🤖 API Key for OpenAI (OpenAI compatible models) or Google Gemini (if you want to use OpenAI or Google Gemini)

Models Support

ExtractFlow supports various vision language models from different providers:

OpenAI Compatible Models

  • You can use any model that is compatible with OpenAI API.
  • By passing openai_compatible=True, and base_url to the parser, the parser will use the OpenAI API to process the image.

Ollama Models

  • llama3.2-vision:11b
  • llama3.2-vision:70b
  • llava:13b
  • llava:34b

OpenAI Models

  • gpt-4o
  • gpt-4o-mini

Gemini Models

  • gemini-1.5-flash
  • gemini-2.0-flash-exp
  • gemini-1.5-pro

Installation

Install the package using pip (Recommended):

pip install extractflow_parser

Install the optional dependencies for OpenAI or Gemini:

pip install 'extractflow_parser[openai]'
pip install 'extractflow_parser[gemini]'

Setting up Ollama (Optional)

See examples/ollama_setup.md on how to setup Ollama locally.

⌛️ Usage

Basic Example Usage

from extractflow_parser import ExtractFlowParser

# Initialize parser
parser = ExtractFlowParser(
    openai_compatible=True,
    base_url="https://api.fireworks.ai/inference/v1",
    api_key="your_api_key",
    model_name="accounts/fireworks/models/qwen2-vl-72b-instruct",
    temperature=0.2,
    top_p=0.3,
    extraction_complexity=True # Set to True for more detailed extraction
)

# Convert PDF to markdown
pdf_path = "path/to/your/document.pdf"
markdown_pages = parser.convert_pdf(pdf_path)

# Process results
for i, page_content in enumerate(markdown_pages):
    print(f"\n--- Page {i+1} ---\n{page_content}")

PDF Page Configuration

from extractflow_parser import ExtractFlowParser, PDFPageConfig

# Configure PDF processing settings
page_config = PDFPageConfig(
    dpi=400,
    color_space="RGB",
    include_annotations=True,
    preserve_transparency=False
)

# Initialize parser with custom page config
parser = ExtractFlowParser(
    model_name="llama3.2-vision:11b",
    temperature=0.7,
    top_p=0.4,
    extraction_complexity=False,
    page_config=page_config
)

# Convert PDF to markdown
pdf_path = "path/to/your/document.pdf"
markdown_pages = parser.convert_pdf(pdf_path)

OpenAI or Gemini Model Usage

from extractflow_parser import ExtractFlowParser

# Initialize parser with OpenAI model
parser = ExtractFlowParser(
    model_name="gpt-4o",
    api_key="your-openai-api-key", # Get the OpenAI API key from https://platform.openai.com/api-keys
    temperature=0.7,
    top_p=0.4,
    extraction_complexity=True # Set to True for more detailed extraction
)

# Initialize parser with Google Gemini model
parser = ExtractFlowParser(
    model_name="gemini-1.5-flash",
    api_key="your-gemini-api-key", # Get the Gemini API key from https://aistudio.google.com/app/apikey
    temperature=0.7,
    top_p=0.4,
    extraction_complexity=True # Set to True for more detailed extraction
)

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

extractflow_parser-0.1.1.tar.gz (44.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

extractflow_parser-0.1.1-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file extractflow_parser-0.1.1.tar.gz.

File metadata

  • Download URL: extractflow_parser-0.1.1.tar.gz
  • Upload date:
  • Size: 44.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.8

File hashes

Hashes for extractflow_parser-0.1.1.tar.gz
Algorithm Hash digest
SHA256 049021b460121723f6f366a4a4270b18093fc92b407958312f83a5c9d6080b6e
MD5 a95935d0bef91b13d1b1242975309de5
BLAKE2b-256 9ca6bafb8faf1decad3f5a7be90e2b598b26d6c847110024668f7c60ca4410b3

See more details on using hashes here.

File details

Details for the file extractflow_parser-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for extractflow_parser-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f2753ca0b00557bd89810e4a9b2639ef98abd37afeaac917ef8f8f75fcf6e456
MD5 0683976d47dbd36ac51a855f362ce974
BLAKE2b-256 15e8b3ad2826bd93ddae1d03e6729c53606b801b3df6ceb3e1906a9a9e6989fd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page