Docling is a production-grade Python library for converting diverse document formats (PDF, DOCX, PPTX, XLSX, HTML, LaTeX, EPUB, images, audio, video, email, EBCDIC, and more) into a unified, structured `DoclingDocument` representation. It is designed to serve as the document understanding layer for AI workflows, particularly Retrieval-Augmented Generation (RAG), agentic AI, and document extraction pipelines. The system provides a rich Python SDK, a Typer-based CLI (`docling convert`), a service client for remote conversion via `docling-serve`, and an MCP server. It supports multiple output formats including Markdown, JSON, HTML, DocTags, and plain text. Architecturally, Docling employs a modular pipeline system with pluggable backends for each input format and a stage-based processing model. The core pipeline (`StandardPdfPipeline`, `VlmPipeline`, `AsrPipeline`) orchestrates page-level operations (preprocessing, OCR, layout detection, table structure recognition, picture classification, reading order) and document-level enrichments (code/formula extraction, heading hierarchy, picture description). Inference engines are abstracted behind factory patterns supporting ONNX Runtime, HuggingFace Transformers, vLLM, MLX, KServe v2, and remote APIs. The library integrates with over 20 OCR engines and vision-language models, and includes a plugin system for extensibility. Key entry points include the `DocumentConverter` class, the CLI (`docling.cli.main`), and the service client (`docling.service_client`). External dependencies span PDF libraries (pypdfium2, docling-parse), ML frameworks (torch, transformers, onnxruntime), OCR engines (Tesseract, EasyOCR, RapidOCR), and cloud services (KServe, Azure, S3). The codebase is actively maintained with frequent releases, extensive test coverage, and a clear migration path from legacy components.
OfficeCLI is a cross-platform CLI application written in C#/.NET that creates, reads, and mutates OOXML Office documents (Word .docx, Excel .xlsx, PowerPoint .pptx) without requiring Microsoft Office. It is explicitly engineered as an agent-facing tool: every document element is addressable through a uniform path syntax (e.g. /slide[1]/shape[2]), all commands emit structured JSON with error codes and suggestions, and it ships AI-skill files for Claude/Copilot/Cursor/Codex, an MCP server, plus Python and Node SDKs. The core operation model is a batch command language: documents are mutated by replayable JSON items (add/set/remove/get) executed atomically through the CLI or over a named pipe to a resident process. Architecturally the repo is a single .NET binary (embedded runtime) with a CommandBuilder layer, a DocumentHandlerFactory dispatching to three large partial-class handlers (WordHandler, ExcelHandler, PowerPointHandler), and a shared Core layer containing chart-to-SVG rendering, a formula evaluator implementing 350+ Excel functions with statistical distributions, pivot table construction, Mermaid diagram parsing, OOXML theme/table-style resolution, HTML/PNG/SVG preview rendering, and a plugin protocol for foreign-format dump-readers and exporters. Security is taken seriously: SsrfGuard validates remote fetch targets, HyperlinkUriValidator allowlists URI schemes, XmlTextValidator and DocumentLimits guard against decompression bombs and DOM sprawl, and AtomicPackageWriter prevents torn file writes. Quality is strong but carries real maintenance debt. The code demonstrates deep OOXML craftsmanship - schema-order-correct XML insertion, exact EMU unit round-trips, Lanczos-based gamma functions, and curated chart-style galleries. However, handlers are split across dozens of partial-class files that evolved from former god methods, the property API is stringly-typed (props dictionaries parsed per key), examples must be maintained in parallel shell and Python twins, and the tool deliberately tolerates 'UNSUPPORTED props' warnings (exit code 2), which can mask incomplete feature coverage. The best reuse targets are the self-contained Core utilities rather than the format handlers. The project is actively maintained with multi-platform CI publishing to npm and PyPI.
This is the Microsoft Open XML SDK, a production-grade .NET library for reading, writing, creating, and validating Office Open XML documents (Word, Excel, PowerPoint). It provides a strongly-typed DOM (OpenXmlElement hierarchy), LINQ-to-XML integration via generated XName constants, Flat OPC serialization, and a comprehensive validation framework based on the OOXML standard. The architecture combines hand-crafted foundations (OpenXmlElement, OpenXmlPart, OpenXmlPackage, FeatureCollection pattern) with schema-driven source generators that produce hundreds of typed classes, part definitions, and namespace constants from bundled JSON metadata. Key entry points are WordprocessingDocument, SpreadsheetDocument, and PresentationDocument, each with static factory methods (Open, Create, FromFlatOpc). The library is actively maintained by Microsoft, supports Office versions from 2007 through Microsoft365, and includes numerous samples, extensive xUnit tests, and performance benchmarks.
MinerU is a production-grade document parsing engine that converts PDFs, images, and Office documents (DOCX, PPTX, XLSX) into structured Markdown and JSON. It supports multiple backends: a fast pipeline (layout analysis + OCR + formula/table recognition), a high-accuracy hybrid mode combining VLM and OCR, and a pure VLM mode using vLLM/LMDeploy. The system is deployed as a CLI tool, FastAPI service, Gradio web UI, or Docker container, with integrations for RAG frameworks like LangChain, LlamaIndex, and Dify. The codebase is well-architected with clean abstractions for data I/O (file/S3), model initialization (singleton pattern), and output generation (client-side rendering). It handles 109 languages and includes specialized modules for mathematical formula recognition (UniMERNet), table structure recovery (SLANet+/UNet), and office document normalization. While the code is actively maintained and functionally rich, it carries some technical debt from its PaddleOCR heritage (vendored code, eval-based builders) and has a complex optional dependency matrix for hardware accelerators.
This repository contains 'officeParser', a robust Node.js and browser library for parsing 12 office document formats (DOCX, PPTX, XLSX, ODT, ODP, ODS, PDF, RTF, CSV, MD, HTML, EPUB) into a unified abstract syntax tree (AST) and generating high-fidelity output in 9 formats (JSON, text, Markdown, HTML, CSV, RTF, PDF, EPUB, and RAG-focused chunks). It provides a first-class CLI (`npx officeparser`) and a programmatic API (`parseOffice()` → AST → `.to(format, config?)`), with extensive configuration for OCR, chunking strategies, security limits, and format-specific dialects. The architecture follows a strict pipeline: format-specific parsers normalize documents into `OfficeParserAST`, then format-agnostic generators produce the desired output, enabling cross-format conversion and round-trip fidelity. The codebase demonstrates high craftsmanship with reusable utility modules (sanitization, typed error/warning systems, lazy ZIP handling, MathML-to-LaTeX conversion) and a comprehensive test suite covering parser baselines, generator baselines, security injection tests, and exhaustively tested edge cases. It supports browser and Node runtimes via dual CJS/ESM packages and bundled builds, including slim variants that minimize dependencies for browser environments. Key data flows include document metadata extraction, attachment handling (images, charts), OCR via Tesseract.js, PDF generation via Puppeteer, and semantic chunking for LLM ingestion. External dependencies include `pdfjs-dist`, `tesseract.js`, `fflate`, `chart.js`, and `puppeteer` (optional). While the repository is actively maintained with recent commits and CI across multiple Node versions, it shows some technical drift: deprecated API fields remain documented alongside replacements, and large files (e.g., OpenOfficeParser.ts at ~1600 lines) increase maintenance complexity. The builder has addressed past packaging issues (webpack context-module) and maintains sophisticated browser shims. Overall, it is a production-grade document conversion toolkit with exceptional reusability in its core utilities and a clean separation between parsing and generation.
TranslateBooksWithLLMs is a full-stack web application for translating eBooks (EPUB, DOCX, TXT, SRT) using multiple LLM providers (Ollama, OpenAI, Gemini, Mistral, DeepSeek, Poe, OpenRouter, NVIDIA NIM, LiteLLM). The architecture is a Flask server with Socket.IO for real-time progress streaming, a JavaScript SPA frontend with i18n support across 7 locales, and a SQLite-based checkpoint/resume system for interrupted translations. The core pipeline extracts content with HTML/XML placeholder preservation, chunks text using tiktoken-aware splitting, translates via configurable LLM providers with multi-phase fallback (LLM → token alignment → original), and reconstructs the output file. Additional features include glossary management with NER-based term suggestion, style extraction from source text, TTS generation via Edge-TTS and Chatterbox, and a comprehensive benchmark framework for evaluating translation quality across 35+ languages. The codebase demonstrates strong engineering with clean abstractions (adapter pattern for formats, factory pattern for LLM providers, generic orchestrator for translation pipeline), extensive testing (unit, integration, characterization with golden snapshots, e2e), and several genuinely reusable components. Notable patterns include a token-aware chunker with exact reassembly, an API key pool with round-robin rotation on 429 responses, an ordered concurrent executor that preserves chunk ordering, a retry manager with exponential backoff and circuit breaker, and a placeholder system for preserving HTML/XML structure during LLM translation. The benchmark subsystem and prompt optimization tool are supporting features that add research value but are secondary to the core application purpose.
Word-Formatter-Pro is a cross-platform desktop application and CLI tool for automatically formatting Word documents (.docx, .doc, .wps, .txt, .md) into a consistent Chinese government/official document style. It is built with Python, uses Tkinter for the GUI, python-docx for document manipulation, and integrates with WPS/Word COM on Windows or LibreOffice on macOS/Linux for legacy format conversion. The application features intelligent detection of headings (four levels), title/subtitle, figure/table captions, attachments, and can perform conservative symbol normalization, table auto-formatting, and blank line compression for text sources. The architecture is well-separated: a core formatting engine independent of GUI, a CLI interface, a configuration module, and a bundled Agent Skill. The code is actively maintained, with regular version releases and built-in unit tests covering critical logic.
LessAI is a Tauri 2 desktop application for AI-assisted document rewriting. It supports importing documents in plain text, Markdown, LaTeX, DOCX, and PDF formats, segmenting them into rewrite units, and sending them to an OpenAI-compatible LLM for rewriting. The system provides a workbench view with a side-by-side editor and review panel, enabling users to view diff hunks, accept/reject suggestions, and finalize writeback to the original file. For complex formats like DOCX and PDF, a slot-based model preserves locked placeholders (e.g., tables, images, hyperlinks) while allowing editable text regions to be rewritten. The application includes a web demo mode for plain text only, a full settings UI for provider configuration, and an in-app update mechanism. The architecture is a monolith split between a Rust backend (Tauri commands, document adapters, rewrite pipeline) and a React/TypeScript frontend with custom hooks, progressive rendering, and a slot-based structured editor. The codebase is well-structured with extensive unit tests, roundtrip test fixtures, and CI/CD pipelines for cross-platform bundles.
UniOffice is a commercial Go library for reading, writing, and converting Office Open XML (OOXML) documents, including Word (.docx), Excel (.xlsx), and PowerPoint (.pptx) formats. It provides a high-level API for document manipulation, supporting features such as text formatting, tables, images, charts, animations, ActiveX controls, digital ink, and 3D models. The library also includes conversion to PDF via the UniPDF dependency. Architecturally, the library is layered: low-level schema types auto-generated from OOXML schemas handle XML marshalling/unmarshalling and validation; a middle layer of wrapper structs (e.g., Document, Spreadsheet, Presentation) provides a user-friendly interface; and conversion utilities transform documents to PDF. Key entry points include the main module (unioffice.go) for namespace handling and document type detection, common/common.go for core types like DocBase and ContentTypes, and the document/spreadsheet/presentation modules for specific operations. Data flows involve reading a ZIP package, parsing XML into schema types, manipulating via the high-level API, and writing back. The library relies on external dependencies such as unipdf (PDF generation), unichart (chart rendering), unitype (font parsing), and others for encryption and image processing. It requires a license key and uses obfuscated generated code to protect intellectual property. Despite the obfuscation, the library contains several well-designed, reusable components such as a storage abstraction, logger interface, wildcard matching, natural sort, measurement conversions, color parsing, MS-CFB binary format reader/writer, and an Excel number format engine. These components are self-contained and could be extracted for use in other projects.
DocX is a .NET library for creating, editing, and manipulating Word 2007/2013/2016 .docx files without requiring Microsoft Office. It provides a comprehensive API for document generation, including paragraphs, tables, charts, images, hyperlinks, headers/footers, bookmarks, footnotes/endnotes, mail merge, and password protection. The library operates by manipulating Open XML package parts using System.IO.Packaging and LINQ to XML, with a cross-platform drawing abstraction layer (SkiaSharp on .NET5, System.Drawing on .NET Framework). It is the free community edition of Xceed Words for .NET, with many advanced features (PDF conversion, SVG support, digital signatures) stubbed out in the examples and requiring a commercial license. The codebase is well-structured but shows signs of technical drift: it targets .NET Framework 4.0 and .NET 5.0 (both out of support), uses deprecated APIs, and contains large monolithic files (e.g., Document.cs ~3880 lines). Despite these issues, the library is actively maintained (last commit June 2026) and widely used, with a rich set of examples demonstrating real-world usage.
Koodo Reader is a cross-platform ebook reader application supporting a wide range of formats (EPUB, PDF, MOBI, AZW3, TXT, FB2, CBR/CBZ, MD, DOCX, HTML, etc.). It is built as an Electron desktop app with a React/TypeScript frontend and a separate Go HTTP server for OPDS catalog serving and KOReader sync. The application provides a full-featured reading experience including bookmarks, notes, highlights, text-to-speech (with multiple voice engines), translation and dictionary lookup (via built-in and custom plugins), OCR for scanned PDFs, and cloud sync/backup across many providers (WebDAV, S3, OneDrive, Google Drive, Dropbox, etc.). It also includes a library management system with shelves, tags, search, and import from local files, folders, URLs, and OPDS catalogs. The architecture is a monolith with a clear separation between the Electron main process (Node.js) and the renderer (React), plus an optional Go server for network-facing features. The codebase is large and feature-rich but shows signs of technical debt: widespread use of deprecated React lifecycle methods, heavy reliance on opaque minified libraries (kookit-extra), frequent `as any` type casts, and mixed Chinese/English comments. Despite these issues, the application is actively maintained and offers a robust set of features for ebook enthusiasts.