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(
    base_url="https://api.openai.com/v1",  # Optional: Custom OpenAI API endpoint
    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.0.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.0-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: extractflow_parser-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 dcba159e361ecbeeea07be52a6e204be0c6951a0407060492eeddc44b5765eec
MD5 b5cbe00b7c017d24958606b5bc354a07
BLAKE2b-256 7469f8362b65e94571a4257f6ec7bca138eeb8856a5f1867d709b73f648cbf86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for extractflow_parser-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2d380a37b46727910f22281774dbb1195f0289f9be260976ba196f62f3a178c8
MD5 416c70cf20a68ea001fb9925ce56c664
BLAKE2b-256 743318060fd14353da2259748c58a1a50f31393c8537f7fa4a5908191bd7bdf0

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