power-document-extractor

Power Document Extractor โ€“ universal local document parser for n8n

Package Information

Released: 10 mo ago
Downloads: 25 weeklyย /ย 102 monthly
Latest Version: 0.13.7
Author: ZBlaZe

Documentation

Power Document Extractor for n8n

Power Document Extractor Logo

n8n
npm version
License: Proprietary

๐Ÿ“– Overview

Power Document Extractor is a comprehensive n8n community node for extracting structured content from 17+ document formats, entirely locally on your server. No external APIs, no cloud servicesโ€”just reliable, privacy-focused document parsing.

Perfect for document processing workflows, content analysis, data migration, AI-powered document understanding, and automated information extraction pipelines.

โ˜• Support Development

If you find this node useful, consider supporting its development:

Donation Links:


โœจ Features

  • ๐Ÿ”’ 100% Local Processing - All document parsing happens on your server
  • ๐Ÿ“„ 17+ Supported Formats - PDF, DOCX, DOC, XLSX, XLS, CSV, TXT, RTF, EPUB, FB2, Markdown, HTML, XML, PPT, PPTX, ODS, ODG
  • ๐ŸŽฏ Auto-Detection - Universal Extractor automatically identifies document format
  • ๐Ÿงฉ Structured Output - Extracts content as structured blocks (paragraphs, headings, tables, lists)
  • ๐ŸŽš๏ธ Flexible Detail Levels - Choose between Raw, Basic, or Full structured output
  • ๐Ÿ“Š Rich Metadata - Extracts document metadata (author, title, page count, dates, etc.)
  • โšก LibreOffice Integration - Optional LibreOffice server for legacy formats (DOC, RTF, PPT)

๐Ÿ“ฆ Installation

Via n8n Community Nodes

  1. Go to Settings > Community Nodes in your n8n instance
  2. Click Install and enter: n8n-nodes-power-document-extractor
  3. Click Install

Via npm

npm install n8n-nodes-power-document-extractor

Manual Installation

cd ~/.n8n/nodes
git clone https://github.com/ZBlaZe/n8n-nodes-power-document-extractor.git
cd n8n-nodes-power-document-extractor
npm install
npm run build

๐Ÿš€ Supported Formats

Format Extension Native Support LibreOffice Required Status
PDF .pdf โœ… Yes โŒ No โš ๏ธ Beta
Plain Text .txt โœ… Yes โŒ No โœ… Stable
CSV .csv โœ… Yes โŒ No โœ… Stable
Markdown .md โœ… Yes โŒ No โœ… Stable
HTML .html, .htm โœ… Yes โŒ No โœ… Stable
XML .xml โœ… Yes โŒ No โœ… Stable
Excel .xlsx, .xls โœ… Yes โŒ No โœ… Stable
Word (Modern) .docx โš ๏ธ Partial โœ… Yes (recommended) โš ๏ธ Beta
Word (Legacy) .doc โŒ No โœ… Yes โš ๏ธ Beta
RTF .rtf โŒ No โœ… Yes โš ๏ธ Beta
PowerPoint .ppt, .pptx โŒ No โœ… Yes โš ๏ธ Beta
OpenDocument .ods, .odg โš ๏ธ Partial โœ… Yes (recommended) โš ๏ธ Beta
EPUB .epub โœ… Yes โŒ No โš ๏ธ Beta
FictionBook .fb2 โœ… Yes โŒ No โš ๏ธ Beta

Legend:

  • โœ… Stable - Fully tested and production-ready
  • โš ๏ธ Beta - Functional but may have edge cases
  • ๐Ÿšง In Development - Work in progress

๐ŸŽฎ Usage

Basic Example

  1. Add Power Document Extractor node to your workflow
  2. Connect a node that provides binary file data (e.g., HTTP Request, Read Binary File)
  3. Configure the node:
    • Operation: Universal Extractor (auto-detects format)
    • Binary Property: data (or your binary property name)
    • Structured Level: Full (recommended)

Operations

Universal Extractor (Recommended)

Automatically detects document format and extracts content using the optimal parser.

Format-Specific Extractors

Available for all supported formats if you want explicit control:

  • Extract PDF
  • Extract DOCX
  • Extract XLSX
  • Extract TXT
  • Extract CSV
  • Extract Markdown
  • Extract HTML
  • ... and more

Structured Levels

Choose the level of detail in extracted content:

  • Raw - Single text string with minimal formatting
  • Basic - Paragraphs and basic structure
  • Full - Complete structure with headings, tables, lists, metadata (recommended)

๐Ÿ“ค Output Format

Example Output

{
  "blocks": [
    {
      "type": "heading",
      "level": 1,
      "text": "Annual Report 2024",
      "id": "h-1",
      "page": 1
    },
    {
      "type": "paragraph",
      "text": "This report provides an overview of our company's performance...",
      "id": "p-1",
      "page": 1
    },
    {
      "type": "table",
      "headers": ["Quarter", "Revenue", "Growth"],
      "rows": [
        ["Q1", "$1.2M", "15%"],
        ["Q2", "$1.5M", "25%"],
        ["Q3", "$1.8M", "20%"],
        ["Q4", "$2.1M", "17%"]
      ],
      "id": "table-1",
      "page": 2
    }
  ],
  "metadata": {
    "fileName": "annual_report_2024.pdf",
    "fileSize": 245680,
    "fileType": "pdf",
    "mimeType": "application/pdf",
    "pageCount": 12,
    "author": "John Smith",
    "title": "Annual Report 2024",
    "creationDate": "2024-01-15",
    "modificationDate": "2024-11-20"
  }
}

Block Types

  • paragraph - Text paragraphs
  • heading - Document headings (with level 1-6)
  • table - Tables with headers and rows
  • list - Bulleted or numbered lists
  • image - Image references (planned for future versions)

๐Ÿณ LibreOffice Server Setup (Optional)

For best results with DOC, RTF, PPT, PPTX formats, set up a LibreOffice server using Docker.

Quick Start with Docker

docker run -d \
  --name libreoffice-server \
  -p 33101:2004 \
  ghcr.io/unoconv/unoserver-docker:latest

Configuration in n8n

In the Power Document Extractor node:

  • LibreOffice Server URL: http://localhost:33101 (or your server IP)

Important Notes

  • โš ๏ธ Do not expose LibreOffice port to the internet - it's not secured by default
  • ๐Ÿ”’ Use firewall rules or Docker networks to restrict access
  • ๐Ÿš€ LibreOffice container should run on the same network as n8n for best performance

For detailed setup instructions, see unoserver documentation.


โš™๏ธ Configuration

Node Parameters

Parameter Type Default Description
Operation Select Universal Extractor Extraction method (auto or format-specific)
Binary Property String data Name of the binary property containing the file
Structured Level Select Full Level of detail in output (Raw/Basic/Full)
LibreOffice Server URL String (empty) Optional LibreOffice server URL for legacy formats

๐ŸŽฏ Use Cases

  • ๐Ÿ“Š Data Migration - Extract content from legacy documents for database import
  • ๐Ÿค– AI/LLM Integration - Prepare document content for AI analysis and processing
  • ๐Ÿ” Document Indexing - Build searchable document databases
  • ๐Ÿ“ Content Management - Automated document processing workflows
  • ๐Ÿ“ง Email Attachment Processing - Extract and analyze attachments automatically
  • ๐Ÿ—„๏ธ Archive Digitization - Convert old documents to structured data

โš ๏ธ Known Limitations

  • ๐Ÿ–ผ๏ธ Image Extraction - Not yet supported (planned for v0.10.0)
  • ๐Ÿ”ค Text Encoding - Some legacy documents may have encoding issues
  • ๐Ÿ“„ Complex Layouts - Advanced page layouts may not be fully preserved
  • โฑ๏ธ Large Files - Very large files (>100MB) may take longer to process

Development Status: This node is actively maintained and under continuous improvement. Bug reports and feature requests are welcome!


๐Ÿ—บ๏ธ Roadmap

Version 0.11.0-0.12.0 (Planned)

  • ๐Ÿ–ผ๏ธ Base64 image extraction from documents
  • ๐Ÿ”ค Improved text encoding detection and handling
  • ๐ŸŽจ Better formatting preservation for complex documents

Future Versions

  • ๐Ÿ“Š Advanced table structure detection
  • ๐Ÿ”— Hyperlink extraction
  • ๐Ÿ“ Document annotations and comments
  • ๐ŸŒ Multi-language OCR support
  • โšก Performance optimizations for large files

๐Ÿ› Troubleshooting

Common Issues

"LibreOffice conversion failed"

Solution:

  1. Ensure LibreOffice server is running: docker ps | grep libreoffice
  2. Check URL is correct: http://localhost:33101 (not https://)
  3. Verify server is accessible from n8n container

Text appears garbled or with wrong characters

Possible causes:

  • Legacy encoding in old documents
  • Font substitution issues
  • Temporary workaround: Try using LibreOffice server for conversion

Node execution timeout

For large files:

  • Increase n8n execution timeout in settings
  • Consider splitting large documents
  • Use LibreOffice server for faster processing

Empty output for supported format

Check:

  • File is not password-protected
  • File is not corrupted
  • File contains actual text (not just images)

๐Ÿค Contributing

Contributions are welcome! If you find a bug or have a feature request:

  1. Check existing issues
  2. Create a new issue with detailed description
  3. Submit a pull request with your improvements

๐Ÿ“œ License

Proprietary / All Rights Reserved
This project is closed-source.
The source code is not available for public viewing or modification.


๐Ÿ™ Acknowledgments

Built with:


๐Ÿ“ž Support


Made with โค๏ธ for the n8n community

n8n Community

Discussion