Skip to main content

Stargazers Commit Activity Last Commit

Ollama OCR Logo

Ollama OCR

A powerful OCR (Optical Character Recognition) package that uses state-of-the-art vision language models through Ollama to extract text from images and PDF. Available both as a Python package and a Streamlit web application.

🌟 Features

Supports PDF and Images (New! 🆕)

  • Multiple Vision Models Support

    • LLaVA 7B: Efficient vision-language model for real-time processing (LLaVa model can generate wrong output sometimes)
    • Llama 3.2 Vision: Advanced model with high accuracy for complex documents
    • Granite3.2-vision: A compact and efficient vision-language model, specifically designed for visual document understanding, enabling automated content extraction from tables, charts, infographics, plots, diagrams, and more.
    • Moondream: Small vision language model designed to run efficiently on edge devices.
  • Multiple Output Formats

    • Markdown: Preserves text formatting with headers and lists
    • Plain Text: Clean, simple text extraction
    • JSON: Structured data format
    • Structured: Tables and organized data
    • Key-Value Pairs: Extracts labeled information
    • Table: Extract all tabular data.
  • Batch Processing

    • Process multiple images in parallel
    • Progress tracking for each image
    • Image preprocessing (resize, normalize, etc.)
  • Custom Prompts

    • Override default prompts with custom instructions for text extraction.

📦 Package Installation

pip install ollama-ocr

🚀 Quick Start

Prerequisites

  1. Install Ollama
  2. Pull the required model:
ollama pull llama3.2-vision:11b
ollama pull granite3.2-vision
ollama pull moondream

Using the Package

Single File Processing

from ollama_ocr import OCRProcessor

# Initialize OCR processor
ocr = OCRProcessor(model_name='llama3.2-vision:11b')  # You can use any vision model available on Ollama
# you can pass your custom ollama api

# Process an image
result = ocr.process_image(
    image_path="path/to/your/image.png", # path to your pdf files "path/to/your/file.pdf"
    format_type="markdown",  # Options: markdown, text, json, structured, key_value
    custom_prompt="Extract all text, focusing on dates and names.", # Optional custom prompt
    language="English" # Specify the language of the text (New! 🆕)
)
print(result)

Batch File

from ollama_ocr import OCRProcessor

# Initialize OCR processor
ocr = OCRProcessor(model_name='llama3.2-vision:11b', max_workers=4)  # max workers for parallel processing

# Process multiple images
# Process multiple images with progress tracking
batch_results = ocr.process_batch(
    input_path="path/to/images/folder",  # Directory or list of image paths
    format_type="markdown",
    recursive=True,  # Search subdirectories
    preprocess=True,  # Enable image preprocessing
    custom_prompt="Extract all text, focusing on dates and names.", # Optional custom prompt
    language="English" # Specify the language of the text (New! 🆕)
)
# Access results
for file_path, text in batch_results['results'].items():
    print(f"\nFile: {file_path}")
    print(f"Extracted Text: {text}")

# View statistics
print("\nProcessing Statistics:")
print(f"Total images: {batch_results['statistics']['total']}")
print(f"Successfully processed: {batch_results['statistics']['successful']}")
print(f"Failed: {batch_results['statistics']['failed']}")

📋 Output Format Details

  1. Markdown Format: The output is a markdown string containing the extracted text from the image.
  2. Text Format: The output is a plain text string containing the extracted text from the image.
  3. JSON Format: The output is a JSON object containing the extracted text from the image.
  4. Structured Format: The output is a structured object containing the extracted text from the image.
  5. Key-Value Format: The output is a dictionary containing the extracted text from the image.

🌐 Streamlit Web Application(supports batch processing)

  • User-Friendly Interface
    • Drag-and-drop file upload
    • Real-time processing
    • Download extracted text
    • Image preview with details
    • Responsive design
    • Language Selection: Specify the language for better OCR accuracy. (New! 🆕)
  1. Clone the repository:
git clone https://github.com/imanoop7/Ollama-OCR.git
cd Ollama-OCR
  1. Install dependencies:
pip install -r requirements.txt
  1. Go to the directory where app.py is located:
cd src/ollama_ocr      
  1. Run the Streamlit app:
streamlit run app.py

Examples Output

Input Image

Input Image

Sample Output

Sample Output Sample Output

📄 License

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

🙏 Acknowledgments

Built with Ollama Powered by Vision Models

Star History

Star History Chart

Metadata

Release files for ollama-ocr 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ollama-ocr 0.1.6
File Size Uploaded
ollama_ocr-0.1.6.tar.gz 13.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ollama-ocr 0.1.6
File Interpreter ABI Platform
ollama_ocr-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 25.9 kB

Release files / ollama_ocr-0.1.6.tar.gz

Download URL ollama_ocr-0.1.6.tar.gz
Size 13.6 kB
Tags Source
SHA-256 checksum
How to use checksums
aaacc1626c62f7da90332f19968d2e846f95ca8005d8b5f4a8e6cfc3673b4913
BLAKE2b-256 checksum
How to use checksums
1cd03b5effc572b473c2487997e9c16d4e2eb2f577b854e3cf0f4cb219f06e35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0

Release files / ollama_ocr-0.1.6-py3-none-any.whl

Download URL ollama_ocr-0.1.6-py3-none-any.whl
Size 12.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
03a13741b1b52dddfe2490c06a2dcfd98264dad2847f1b32032517261705623e
BLAKE2b-256 checksum
How to use checksums
f67e1454188304e97900ac83d47f27b7de726c69708dfc5afbe7573e9c62796e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.0

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

1 release file

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