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 largest JSON
data = extract_json('{"a": 1} and {"b": 2, "c": 3}', strategy="largest")
# Returns: {'b': 2, 'c': 3}

# 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

Get Extraction Metadata

from ai_extract import extract_json_with_metadata

result = extract_json_with_metadata('```json\n{"key": "value"}\n```')

print(result.success)        # True
print(result.data)           # {'key': 'value'}
print(result.method)         # ExtractionMethod.MARKDOWN_FENCE

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)
    • "largest": Return largest JSON structure
    • "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

extract_json_with_metadata(text, *, strategy="first")

Extract JSON with detailed metadata.

Returns: ExtractResult with fields:

  • success (bool): Whether extraction succeeded
  • data (Any): Parsed JSON data
  • raw_json (str): Raw JSON string before parsing
  • method (ExtractionMethod): How JSON was found
  • candidates_found (int): Number of JSON candidates found
  • error (ExtractError): Error details if failed

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.5.tar.gz (18.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.5-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ai_extract-0.0.5.tar.gz
  • Upload date:
  • Size: 18.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.5.tar.gz
Algorithm Hash digest
SHA256 f7afcd2133a4fe0971d31d288bf507777ceffa698263ef060149c9e97011dd4c
MD5 c904c77120e0e1e7679ea2d167024f9c
BLAKE2b-256 51f110703bc4debc8af6173622e481f6de1cc2014d7f8a21a47a71e5678df69d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ai_extract-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 11.3 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 95210dc0b62afa5347d4c779a704d0f0b849309fbeee71e7fd229cab31e3a24b
MD5 c3f12d1a6e007a54e9918d768d7b7d61
BLAKE2b-256 67a418c8faca1dfc0fdb9362652a8f21cfb0691b0f3cf7c9acf4971722318b22

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