Skip to main content

Extract structured information from documents using AI

Project description

Metaminer

Tests Python 3.8+ License: LGPL v3

A tool for extracting structured information from documents using AI.

Overview

Metaminer allows you to extract structured data from various document formats (PDF, DOCX, TXT, etc.) by asking natural language questions. It uses AI to analyze documents and return structured results in CSV or JSON format.

Installation

pip install metaminer

System Requirements

Metaminer requires pandoc to be installed on your system for document processing:

  • Ubuntu/Debian: sudo apt-get install pandoc
  • macOS: brew install pandoc
  • Windows: Download from pandoc.org

Note: Metaminer uses pandoc for most document formats and PyMuPDF specifically for PDF processing to ensure optimal text extraction.

Usage

Command Line Interface

# Basic usage
metaminer questions.txt documents/

# Process single document
metaminer questions.txt document.pdf

# Save results to file
metaminer questions.txt documents/ --output results.csv

# JSON output format
metaminer questions.txt documents/ --format json --output results.json

# Custom API endpoint
metaminer questions.txt documents/ --base-url http://localhost:8000/api/v1

Python Module

from metaminer import Inquiry, extract_metadata, Config
from metaminer import extract_text, get_supported_extensions
import pandas as pd

# From question file
inquiry = Inquiry.from_file("questions.txt")
df = inquiry.process_documents("documents/")

# Direct questions
inquiry = Inquiry(questions=["Who is the author?", "What is the publication date?"])
df = inquiry.process_documents(["doc1.pdf", "doc2.docx"])

# Single document
result = inquiry.process_document("document.pdf")

# Extract text directly
text = extract_text("document.pdf")

# Get supported file extensions
extensions = get_supported_extensions()

# Use configuration
config = Config()
print(f"Default API endpoint: {config.base_url}")

Question Formats

Text File (.txt)

One question per line:

Who is the author?
What is the publication date?
What is the main topic?

CSV File (.csv)

Structured format with optional field names and data types:

question,field_name,data_type
"Who is the author?",author,str
"What is the publication date?",pub_date,date
"How many pages?",page_count,int

Supported data types:

  • str (default): Text
  • int: Integer numbers
  • float: Decimal numbers
  • bool: True/False values
  • date: Date values

Supported Document Formats

Thanks to pandoc integration and PyMuPDF, metaminer supports:

  • PDF (.pdf)
  • Microsoft Word (.docx, .doc)
  • OpenDocument (.odt)
  • Rich Text Format (.rtf)
  • Plain text (.txt)
  • Markdown (.md)
  • HTML (.html)
  • EPUB (.epub)
  • LaTeX (.tex)

Configuration

API Settings

By default, metaminer connects to a local AI server at http://localhost:5001/api/v1. You can customize this using environment variables or command-line options:

Environment Variables

# API Configuration
export OPENAI_API_KEY=your-api-key
export METAMINER_BASE_URL=http://your-api-server.com/api/v1
export METAMINER_MODEL=gpt-4
export METAMINER_TIMEOUT=60
export METAMINER_MAX_RETRIES=5

# Logging Configuration
export METAMINER_LOG_LEVEL=DEBUG

Command Line

metaminer questions.txt documents/ --base-url http://your-api-server.com/api/v1

Python

from metaminer import Inquiry, Config

# Using configuration
config = Config()
inquiry = Inquiry.from_file("questions.txt", base_url="http://your-api-server.com/api/v1")

# Or set environment variables before creating Inquiry
import os
os.environ["METAMINER_BASE_URL"] = "http://your-api-server.com/api/v1"
inquiry = Inquiry.from_file("questions.txt")

Configuration Defaults

  • Base URL: http://localhost:5001/api/v1
  • Model: gpt-3.5-turbo
  • Timeout: 30 seconds
  • Max Retries: 3
  • Log Level: INFO
  • Max File Size: 50MB

Output Format

Results include the extracted information plus metadata:

author,pub_date,page_count,_document_path,_document_name
"John Doe","2023-01-15",25,"/path/to/doc1.pdf","doc1.pdf"
"Jane Smith","2023-02-20",18,"/path/to/doc2.pdf","doc2.pdf"

Examples

Research Paper Analysis

# questions.txt
Who are the authors?
What is the title?
What journal was this published in?
What is the publication year?
What is the main research question?
What methodology was used?

Invoice Processing

question,field_name,data_type
"What is the invoice number?",invoice_number,str
"What is the total amount?",total_amount,float
"What is the invoice date?",invoice_date,date
"Who is the vendor?",vendor_name,str
"What is the due date?",due_date,date

Legal Document Review

What type of document is this?
Who are the parties involved?
What is the effective date?
What is the termination date?
What are the key obligations?

Development

Running Tests

pip install -e ".[dev]"
pytest

Project Structure

metaminer/
├── __init__.py          # Main exports
├── inquiry.py           # Core Inquiry class
├── document_reader.py   # Document text extraction
├── question_parser.py   # Question file parsing
├── schema_builder.py    # Pydantic schema generation
├── extractor.py         # Metadata extraction utilities
├── config.py           # Configuration management
├── cli.py              # Command-line interface
└── __main__.py         # Module entry point

License

GNU Lesser General Public License v3.0 - see LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

metaminer-0.3.2.tar.gz (34.3 kB view details)

Uploaded Source

Built Distribution

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

metaminer-0.3.2-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

Details for the file metaminer-0.3.2.tar.gz.

File metadata

  • Download URL: metaminer-0.3.2.tar.gz
  • Upload date:
  • Size: 34.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for metaminer-0.3.2.tar.gz
Algorithm Hash digest
SHA256 bf63bcdd2c9340d0031987dbaf6ba66baf67eccc8995c25d769259a4837e87d4
MD5 a449a420f248ac19b6d889d48ddee986
BLAKE2b-256 409c1ec09a17e2a4faa81e6190ba60f02f838f678b1fdbced2bebeeff5aaf2e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for metaminer-0.3.2.tar.gz:

Publisher: publish-to-pypi.yml on travis4dams/metaminer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file metaminer-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: metaminer-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 24.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for metaminer-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 732e1f5bf48636c34ebf12148f6f87c09d7030b344abf392049875ab8d228c0b
MD5 062a853b4fef935b7cef603ed04ba9ab
BLAKE2b-256 008847609ef74a067376d9bba6de5819dbf261b92c1a985e71f7fff1590f2f1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for metaminer-0.3.2-py3-none-any.whl:

Publisher: publish-to-pypi.yml on travis4dams/metaminer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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