--- id: unpdf version: "1.0.0" license: Apache-2.0 license_treatment: permissive maintenance: aging --- # unPDF — Quickly extract text characters and character metadata from pdfs using pdfium. License: permissive · Maintenance: aging · Downloads: 102.0K/mo ## What it is and what it does unPDF is a Python library that extracts text and metadata from PDF files at the character level using PDFium. It returns four table objects—pages, characters, text objects, and fonts—each containing structured data: character positions and bounding boxes, font sizes and names, RGBA color values, and transformation matrices. The library ships with no runtime dependencies and optionally integrates with PyArrow for conversion to pandas or polars DataFrames. The package is designed for developers who need precise, granular access to PDF content rather than simple text extraction. It exposes low-level PDFium data structures directly, making it suitable for document analysis, layout reconstruction, and metadata-driven workflows. Installation requires Python >=3.9 and uses precompiled wheels for common platforms. Use it for: - Extract character positions and bounding boxes for document layout analysis or OCR validation. - Retrieve font metadata and color information to reconstruct visual styling or detect formatting changes. - Convert PDF character data to pandas/polars DataFrames for statistical analysis or data science pipelines. - Build custom text reconstruction logic that preserves spatial relationships and transformation matrices. - Analyze multi-language PDFs by accessing unicode character codes and mapping errors. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Extracts individual characters and metadata from PDF files using PDFium, returning character positions, fonts, colors, and transformation matrices without external dependencies. Yes, if you need character-level PDF metadata and positioning. The zero-dependency design and precompiled wheels make installation straightforward. However, the aging maintenance status (400 days since release) and lack of visible repository activity suggest limited ongoing support—verify stability for production use before committing. ## Install pip install unpdf uv add unpdf poetry add unpdf ## Installing unPDF Before you install: Medium install friction due to compiled wheels for multiple Python versions and platforms (cp310–cp313, macOS/Linux/Windows). Aging maintenance status (400 days since release) suggests limited ongoing support. License in practice: Apache-2.0 permissive license allows commercial and private use with minimal restrictions; attribution required. Quickstart: pip install unpdf from unpdf import extract pages, chars, text_objs, fonts = extract("document.pdf") text = ''.join(chr(c) for c in chars.arrays['char']) print(text) Requires Python >=3.9; PyArrow optional but recommended for data analysis workflows. Verify before relying: - Whether PDFium is bundled in wheels or requires separate system installation. - Performance characteristics on large PDFs or high-volume extraction tasks. - Stability and bug-fix frequency given aging maintenance status. ## Package facts - License: Apache-2.0 (permissive) - Python support: supports_current - Install friction: medium - Maintenance: aging - Downloads: 102.0K/month (top 15,000 on PyPI) - Known vulnerabilities: none known ## Tags pdf text extraction, character-level pdf parsing, pdf metadata extraction, pdf font and color info, pdfium python wrapper, pdf bounding box extraction, pdf character positioning, pdf-extraction, document-analysis [View on SkillFed](https://skillfed.io/packages/unpdf) · [View on PyPI](https://pypi.org/project/unpdf/)