---
title: "Parse Module"
description: "Document parsing and text extraction — DocumentParser for standard formats and DoclingParser for complex layouts."
icon: "file-lines"
---
> Universal data parser supporting documents, web content, structured data, emails, code, and media.
---
## DocumentParser
Standard parser for clean, machine-readable documents.
```python
from semantica.parse import DocumentParser
parser = DocumentParser()
parsed = parser.parse("data/report.pdf")
print(parsed.text) # full clean text
print(parsed.metadata) # title, author, date, page_count, etc.
print(parsed.sections) # document structure
```
Supported formats: PDF, DOCX, HTML, TXT, JSON, CSV, PPTX, XLSX.
---
## DoclingParser
Advanced parser for complex layouts using the Docling backend.
```bash
pip install "semantica[docling]"
```
```python
from semantica.parse import DoclingParser
parser = DoclingParser(
extract_tables=True, # structured table extraction
extract_images=True, # image OCR
output_format="markdown", # "markdown" | "html" | "json"
)
parsed = parser.parse("data/annual_report.pdf")
print(parsed.text) # full clean text
print(parsed.tables) # structured table data
print(parsed.sections) # document structure
```
Use DoclingParser for: multi-column PDFs, tables with merged cells, PPTX slides, XLSX spreadsheets, images with OCR, and scanned documents.
---
## OCR Support
```python
parser = DoclingParser(
ocr=True,
ocr_language=["en"],
extract_tables=True,
)
parsed = parser.parse("data/scanned_contract.pdf")
```
---
## Parsed Document Object
```python
@dataclass
class ParsedDocument:
text: str
sections: List[Section]
tables: List[TableData]
metadata: DocumentMetadata
source_id: str
@dataclass
class DocumentMetadata:
title: Optional[str]
author: Optional[str]
created_date: Optional[datetime]
page_count: int
language: Optional[str]
has_tables: bool
has_images: bool
word_count: int
format: str # "pdf" | "docx" | "pptx" | ...
```
---
## Integration with FileIngestor
```python
from semantica.ingest import FileIngestor
from semantica.parse import DoclingParser
ingestor = FileIngestor()
parser = DoclingParser(extract_tables=True)
sources = ingestor.ingest("data/reports/")
for source in sources:
parsed = parser.parse(source)
```
Docling is an optional dependency. If `docling` is not installed, `DoclingParser` raises an `ImportError` with installation instructions. Standard `DocumentParser` is used as the fallback.
---
## See Also
Load files before parsing.
Chunk parsed text for embedding.
Full Docling integration guide.
Extract entities from parsed text.