Skip to main content

Extract structured data from any AI. Fast. Simple. Reliable.

Project description

ai-extract

Extract structured data from any AI response. Fast. Simple. Reliable.

PyPI version Python 3.9+ License: MIT

ai-extract is a fast, lightweight Python library for extracting JSON from AI outputs. It handles markdown fences, surrounding text, and multiple JSON blocks.

Features

  • Fast: Uses orjson for 10x faster JSON parsing
  • Reliable: Multiple extraction strategies with automatic fallback
  • Simple API: One function for most use cases
  • CLI Tool: Quick extraction from command line
  • Zero Config: Works out of the box

Installation

pip install ai-extract

Quick Start

from ai_extract import extract_json

# Extract from messy AI output
text = """
Here's the JSON you requested:
```json
{"name": "John", "age": 30}

Hope this helps! """

data = extract_json(text) print(data) # {'name': 'John', 'age': 30}


## Usage Examples

### Basic Extraction

```python
from ai_extract import extract_json

# Pure JSON
data = extract_json('{"key": "value"}')

# JSON in text
data = extract_json('The result is: {"success": true}')

# JSON in markdown fence
data = extract_json('```json\n{"data": [1,2,3]}\n```')

Multiple JSON Blocks

# Get first JSON (default)
data = extract_json('{"a": 1} and {"b": 2}')
# Returns: {'a': 1}

# Get all JSON blocks
data = extract_json('{"a": 1} and {"b": 2}', strategy="all")
# Returns: [{'a': 1}, {'b': 2}]

Error Handling

from ai_extract import extract_json, ExtractError

# Raise exception (default)
try:
    data = extract_json("no json here")
except ExtractError as e:
    print(f"Error: {e.message}")
    print(f"Type: {e.error_type}")

# Return None instead
data = extract_json("no json here", raise_on_error=False)
# Returns: None

CLI Usage

# From argument
ai-extract '{"key": "value"}'

# From file
ai-extract -f response.txt

# From stdin
echo '{"key": "value"}' | ai-extract

# Pretty print
ai-extract -f response.txt --pretty

# Get all JSON blocks
ai-extract -f response.txt --all

# Show metadata
ai-extract -f response.txt --verbose

API Reference

extract_json(text, *, strategy="first", raise_on_error=True)

Extract JSON from text.

Parameters:

  • text (str): Text containing JSON
  • strategy (str): How to handle multiple JSON blocks
    • "first": Return first valid JSON (default)
    • "all": Return list of all JSON blocks
  • raise_on_error (bool): Raise ExtractError on failure (default: True)

Returns: Parsed JSON data, or list if strategy="all", or None if raise_on_error=False

Extraction Methods

The library tries multiple strategies in order:

  1. Direct Parse - Try parsing entire input as JSON
  2. Markdown Fence - Extract from ```json blocks
  3. Brace Matching - Find balanced {...} or [...]
  4. Heuristic - Pattern matching after "Here's the JSON:" etc.

License

MIT License - see LICENSE for details.

Author

Rahul Vishwakarma (@rvv-karma)

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

ai_extract-0.0.7.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

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

ai_extract-0.0.7-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file ai_extract-0.0.7.tar.gz.

File metadata

  • Download URL: ai_extract-0.0.7.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for ai_extract-0.0.7.tar.gz
Algorithm Hash digest
SHA256 0685c8819dfa2c49a2933f45ff0711b50421be488872f4cbfa99b872d9d9ccdd
MD5 c5b21504eb3ca556ea1acd16183d2a96
BLAKE2b-256 58b5e8c977a6f39767fa1147562169e836950384ab93316dc82db1d82ddbf5ac

See more details on using hashes here.

File details

Details for the file ai_extract-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: ai_extract-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for ai_extract-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 1ed085e1ccd0acd60b579d7cf939eee0617274d84ea6c1fc093b98e901531e8b
MD5 ff90c6ac9738afbc0a5869b41596c549
BLAKE2b-256 207b8969ce54b805d372435af5f093274dde90d61056d44a9e821e6e768bbd38

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