Skip to main content

Document components for the Sayou Data Platform

Project description

sayou-document

PyPI version License Docs

Overview

The Universal Document Parsing Gateway for Sayou Fabric.

sayou-document is a high-fidelity parsing engine that converts diverse document formats (PDF, DOCX, PPTX, XLSX, Images) into a unified, structured Document Object Model (DOM).

Unlike simple text extractors, it preserves the semantic structure of documents—headers, tables, charts, and layout coordinates—making it ideal for RAG applications that require layout awareness.


1. Architecture & Role

The Document engine acts as a normalizer. It accepts raw file bytes and applies the optimal Parser Strategy to output a structured SayouDocument.

graph LR
    File[Raw File] --> Pipeline[Document Pipeline]
    
    subgraph Parsers
        PDF[PDF Parser + OCR]
        Office[Office Parser]
        Img[Image Converter]
    end
    
    Pipeline -->|Type Detection| Parsers
    Parsers --> DOM[Structured DOM]

1.1. Core Features

  • Smart Routing: Automatically detects file types (signatures) and selects the best parser.
  • Hybrid Extraction: Combines native text extraction for digital PDFs with OCR fallback for scanned images.
  • Strict Schema: Outputs a standardized hierarchy (Document > Page > Element) regardless of input format.

2. Supported Formats

sayou-document supports the following file types out-of-the-box.

Format Strategy Key Description
PDF pdf Extracts text, images, and TOC using PyMuPDF. Supports OCR.
Word docx Parses DOCX files, preserving heading levels and lists.
PowerPoint pptx Extracts text frames, speaker notes, and tables from slides.
Excel xlsx Converts sheets into table elements and extracts embedded charts.
Image image Auto-converts JPG/PNG/TIFF to PDF, then applies OCR.

3. Installation

pip install sayou-document

# For OCR support (requires Tesseract installed on OS)
pip install "sayou-document[ocr]"

4. Usage

The DocumentPipeline orchestrates file detection and parsing. It standardizes the input via the process method.

Case A: PDF Parsing (Standard)

Processes a PDF file to extract structured text and layout info.

import os
from sayou.document import DocumentPipeline

file_path = "quarterly_report.pdf"
with open(file_path, "rb") as f:
    file_bytes = f.read()

doc = DocumentPipeline.process(
    data=file_bytes,
    metadata={"filename": os.path.basename(file_path)}
)

# 4. Result
print(f"File: {doc.file_name}, Pages: {doc.page_count}")
print(f"First Element: {doc.pages[0].elements[0].text}")

Case B: Office Documents (Word/Excel)

Parses Office formats while preserving table structures.

from sayou.document import DocumentPipeline

with open("salary_table.xlsx", "rb") as f:
    file_bytes = f.read()

doc = DocumentPipeline.process(
    data=file_bytes,
    metadata={"filename": "salary_table.xlsx"}
)

# Access tables
tables = [e for p in doc.pages for e in p.elements if e.category == "table"]
print(f"Extracted {len(tables)} tables.")

Case C: Image with OCR

Automatically handles image conversion and OCR processing.

from sayou.document import DocumentPipeline

# Initialize with OCR enabled
pipeline = DocumentPipeline(config={"use_ocr": True, "ocr_lang": "eng"})

with open("scanned_receipt.png", "rb") as f:
    file_bytes = f.read()

doc = pipeline.process(
    data=file_bytes,
    metadata={"filename": "scanned_receipt.png"}
)

print(f"OCR Result: {doc.pages[0].elements[0].text}")

5. Configuration Keys

Customize the parsing behavior via the config dictionary.

  • use_ocr: (bool) Enable OCR for scanned pages or images.
  • ocr_lang: (str) Tesseract language code (default: eng+kor).
  • extract_images: (bool) Whether to extract embedded images to disk.
  • table_strategy: (str) fast (text-based) or accurate (vision-based).

6. License

Apache 2.0 License © 2026 Sayouzone

7. Plugin List

Plugin Example Description
Docx Parser
Excel Parser
PPTX Parser
PDF Parser

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

sayou_document-0.5.2.tar.gz (60.5 kB view details)

Uploaded Source

Built Distribution

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

sayou_document-0.5.2-py3-none-any.whl (46.3 kB view details)

Uploaded Python 3

File details

Details for the file sayou_document-0.5.2.tar.gz.

File metadata

  • Download URL: sayou_document-0.5.2.tar.gz
  • Upload date:
  • Size: 60.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sayou_document-0.5.2.tar.gz
Algorithm Hash digest
SHA256 6dab15d8b19843a7349f29c392918f706c0d98dfa99952e5537e79c3a7e44b6c
MD5 4a9416d3451a8f737cebc681a2bba14c
BLAKE2b-256 d3f9486b6c261e15e0ef0e0d12671907d5842fb0016d665c9db829b1416c672d

See more details on using hashes here.

File details

Details for the file sayou_document-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: sayou_document-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 46.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sayou_document-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 607e05c99780f0699449a9f0f61667959d61ae2c94c77cf11948802e99fea37a
MD5 05a7c4cb2875488826fdd332f4bdf2da
BLAKE2b-256 f47324b6a2ecad95f8fa83599bb3bf53966c38476a9220ad6a1b92aa8e247cd8

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