A document layout pipeline for detecting tables, images, and structured extraction.
Project description
readgrid
readgrid is a Python package for document layout analysis and content extraction.
It lets you upload scanned documents, automatically detect tables and images, manually adjust bounding boxes for all document elements, and extract clean structured output using LLMs.
✨ Features
-
Stage 1 – Upload & Detect
- Upload document images in batch mode.
- Automatically detect tables (red boxes) and images (green boxes).
- Manually draw bounding boxes for columns (blue boxes), headers (orange boxes), and footers (magenta boxes).
- Interactive editor supports multiple boxes per type with add/edit/delete functionality.
-
Stage 2 – Coordinate Testing
- Verify detected regions with side-by-side previews.
- Test either existing detections or custom coordinates.
- Works with all box types (tables, images, columns, headers, footers).
-
Stage 3 – Content Extraction
- Extract structured JSON output with layout-aware reading order.
- Supports multi-column layouts (single, two, three, four columns).
- Replace detected tables with clean HTML
<table>tags. - Insert
[image]placeholders with captions in correct reading order. - Proper header/footer separation from main content.
- Supports LaTeX formatting for mathematical equations.
- Customizable output fields with inclusion/exclusion options.
-
Utility Functions
pretty_print_page_with_image()– inspect extracted results with annotated images.show_comparison_view()– compare annotated vs. reconstructed content with multiple view modes.cleanup_pipeline()– reset all artifacts.editor()– interactive JSON correction with LLM assistance and diff visualization.
🚀 Installation
pip install readgrid
🛠️ Usage
Stage 1: Upload, Detect, and Edit
from readgrid import stage_1
stage_1()
Stage 2: Test Coordinates
from readgrid import stage_2
stage_2(
row_id="ID_1",
box_type="tables",
box_index=0
)
Stage 3: Extract with Gemini
from readgrid import stage_3
stage_3(api_key="YOUR_API_KEY")
✏️ Editor
from readgrid import editor
# Basic usage - will prompt for API key
editor(row_id="ID_1")
# With all options
editor(
row_id="ID_1",
api_key="YOUR_API_KEY",
model="gemini-2.0-flash",
clean=True, # Auto-clean tables, LaTeX, newlines
font_size=12 # Adjust display size
)
Features:
- Currently supports just JSON file types.
- Automatic cleaning of tables, LaTeX formatting, and broken words
- Side-by-side view: original image vs. current JSON
- Conversational interface: "Add newline after Table 1" or "Fix the header"
- Real-time diff view (unified or side-by-side with color coding)
- Undo/reset functionality
- Saves corrections back to
final_outputs/
📦 Requirements
📄 License
MIT License. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file readgrid-0.1.8.tar.gz.
File metadata
- Download URL: readgrid-0.1.8.tar.gz
- Upload date:
- Size: 27.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc159a7b68507ad829deef4c0cbdef8fe79e6355c6495560eeee26c79dc230b8
|
|
| MD5 |
c70c184de697935980185534e323d221
|
|
| BLAKE2b-256 |
feb0235dc950999a137b295580089a41bbbb03d7c704267ab6d36f1f6419e9df
|
File details
Details for the file readgrid-0.1.8-py3-none-any.whl.
File metadata
- Download URL: readgrid-0.1.8-py3-none-any.whl
- Upload date:
- Size: 26.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b8db6edca48286a7b9b2a9cc6405e4959d3bea54a894c612ba77acc38f015c2
|
|
| MD5 |
1b7a446ed1e67c58682e9ddd86a906ad
|
|
| BLAKE2b-256 |
be84c9edaf92244893f5a4eeaffc63cfdf4c2e61d628ae9a0852c98213d3e740
|