<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Document Processing on SoloSoft</title><link>https://www.solosoft.dev/tags/document-processing/</link><description>Recent content in Document Processing on SoloSoft</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.solosoft.dev/tags/document-processing/index.xml" rel="self" type="application/rss+xml"/><item><title>GPT-PDF: Parse PDFs into Markdown Using Vision LLMs with Just 293 Lines of Code</title><link>https://www.solosoft.dev/post/gptpdf-parser-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://www.solosoft.dev/post/gptpdf-parser-2026/</guid><description>&lt;p&gt;PDF documents are the universal format for sharing information, but they are notoriously difficult for software to parse. Traditional PDF parsers struggle with complex layouts, embedded tables, mathematical notation, and multi-column text. &lt;strong&gt;GPT-PDF&lt;/strong&gt; takes a radically different approach: instead of trying to understand the PDF&amp;rsquo;s internal structure, it lets a vision LLM look at each page as an image and write down what it sees in clean Markdown.&lt;/p&gt;
&lt;p&gt;Created by CosmosShadow, GPT-PDF has gained rapid adoption among researchers, developers, and content teams who need high-quality PDF-to-Markdown conversion without the fragility of traditional parsing pipelines. The approach is so effective that it has become a reference implementation for the emerging pattern of using vision LLMs for document understanding tasks.&lt;/p&gt;</description></item><item><title>Marker: Open-Source PDF to Markdown Conversion with Deep Learning</title><link>https://www.solosoft.dev/post/marker-pdf-conversion-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://www.solosoft.dev/post/marker-pdf-conversion-2026/</guid><description>&lt;p&gt;PDF documents remain one of the most common formats for knowledge distribution, yet they are among the most difficult to process programmatically. Tables split across pages, multi-column layouts, mathematical equations, headers, and footers all conspire to defeat naive extraction tools. &lt;strong&gt;Marker&lt;/strong&gt; tackles this challenge with a deep learning approach that understands document structure the way a human reader does &amp;ndash; by recognizing visual layout patterns, not just following text order.&lt;/p&gt;
&lt;p&gt;Created by the datalab-to team, Marker builds upon recent advances in computer vision and document understanding to produce high-quality Markdown output from PDF inputs. Unlike traditional PDF converters that rely on heuristic rules or positional text extraction, Marker uses neural network models trained on thousands of annotated document pages to understand layout semantics, detect tables and equations, and reconstruct the intended reading order.&lt;/p&gt;</description></item><item><title>OmniParse: Open-Source Universal Data Parsing for GenAI Pipelines</title><link>https://www.solosoft.dev/post/omniparse-data-ingestion-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://www.solosoft.dev/post/omniparse-data-ingestion-2026/</guid><description>&lt;p&gt;Modern GenAI applications consume data in many forms &amp;ndash; PDFs, spreadsheets, images, audio recordings, and video files. Building a RAG pipeline that can ingest all of these formats and produce clean, consistent structured output is a significant engineering challenge. &lt;strong&gt;OmniParse&lt;/strong&gt; solves this problem by providing a universal data ingestion platform that converts any unstructured data into structured Markdown, ready for vector embedding and retrieval.&lt;/p&gt;
&lt;p&gt;Developed by adithya-s-k, OmniParse uses specialized parsing pipelines for each data type, backed by open-weight models that run entirely locally. This means no data leaves your environment, no API calls incur ongoing costs, and no third-party services are involved in processing sensitive documents.&lt;/p&gt;</description></item><item><title>PyMuPDF: High-Performance PDF Processing for Python</title><link>https://www.solosoft.dev/post/pymupdf-pdf-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://www.solosoft.dev/post/pymupdf-pdf-2026/</guid><description>&lt;p&gt;When you need raw speed for PDF processing, PyMuPDF is the performance leader among Python PDF libraries. Built as a Python binding to the C-based MuPDF library from Artifex, PyMuPDF combines Python&amp;rsquo;s ease of use with C-level performance for rendering, extracting, and manipulating PDF documents.&lt;/p&gt;
&lt;p&gt;PyMuPDF processes PDFs 10-100x faster than pure Python alternatives. It renders pages to images in milliseconds, extracts text with precise positioning, manages annotations, and handles forms. Beyond PDF, it also supports XPS, EPUB, MOBI, FB2, and common image formats, making it a versatile document processing engine.&lt;/p&gt;
&lt;h2 id="performance-benchmarks"&gt;Performance Benchmarks&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Operation&lt;/th&gt;
 &lt;th&gt;PyMuPDF&lt;/th&gt;
 &lt;th&gt;pypdf&lt;/th&gt;
 &lt;th&gt;pdfminer&lt;/th&gt;
 &lt;th&gt;Units&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Text extraction (100 pages)&lt;/td&gt;
 &lt;td&gt;0.3&lt;/td&gt;
 &lt;td&gt;4.2&lt;/td&gt;
 &lt;td&gt;8.5&lt;/td&gt;
 &lt;td&gt;seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Page rendering&lt;/td&gt;
 &lt;td&gt;0.05&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;td&gt;seconds per page&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Memory usage&lt;/td&gt;
 &lt;td&gt;45&lt;/td&gt;
 &lt;td&gt;120&lt;/td&gt;
 &lt;td&gt;200&lt;/td&gt;
 &lt;td&gt;MB for 1000 pages&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;PDF merge (50 files)&lt;/td&gt;
 &lt;td&gt;0.8&lt;/td&gt;
 &lt;td&gt;2.1&lt;/td&gt;
 &lt;td&gt;N/A&lt;/td&gt;
 &lt;td&gt;seconds&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="core-capabilities"&gt;Core Capabilities&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Page rendering&lt;/td&gt;
 &lt;td&gt;Convert pages to PNG, JPEG, or Pixmap at any resolution&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Text extraction&lt;/td&gt;
 &lt;td&gt;Get text with positions, fonts, and styles&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Image extraction&lt;/td&gt;
 &lt;td&gt;Extract embedded images in original format&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Annotation management&lt;/td&gt;
 &lt;td&gt;Add, edit, and remove highlights, notes, stamps&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Document conversion&lt;/td&gt;
 &lt;td&gt;Convert between PDF, XPS, EPUB, and images&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="rendering-and-extraction-pipeline"&gt;Rendering and Extraction Pipeline&lt;/h2&gt;

&lt;figure class="mermaid-wrapper not-prose" role="img" aria-label="Mermaid diagram"&gt;
 &lt;div class="mermaid-container"&gt;
 &lt;pre class="mermaid"&gt;flowchart LR
 A[PDF/XPS/EPUB] --&amp;gt; B[MuPDF Core Engine]
 B --&amp;gt; C{Operation}
 C --&amp;gt;|Render| D[Page Pixmap]
 D --&amp;gt; E[Image Output]
 C --&amp;gt;|Extract| F[Text Dictionary]
 F --&amp;gt; G[Structured Text]
 C --&amp;gt;|Annotate| H[Annotation Objects]
 H --&amp;gt; I[Modified Page]
 C --&amp;gt;|Transform| J[Rotate/Scale/Clip]
 J --&amp;gt; I
 I --&amp;gt; K[Save PDF]&lt;/pre&gt;
 &lt;script type="application/mermaid"&gt;flowchart LR
 A[PDF/XPS/EPUB] --&gt; B[MuPDF Core Engine]
 B --&gt; C{Operation}
 C --&gt;|Render| D[Page Pixmap]
 D --&gt; E[Image Output]
 C --&gt;|Extract| F[Text Dictionary]
 F --&gt; G[Structured Text]
 C --&gt;|Annotate| H[Annotation Objects]
 H --&gt; I[Modified Page]
 C --&gt;|Transform| J[Rotate/Scale/Clip]
 J --&gt; I
 I --&gt; K[Save PDF]&lt;/script&gt;
 &lt;/div&gt;
&lt;/figure&gt;&lt;p&gt;The MuPDF core engine parses the document structure and provides high-speed access to every element. Python bindings wrap this into familiar objects like &lt;code&gt;Document&lt;/code&gt;, &lt;code&gt;Page&lt;/code&gt;, and &lt;code&gt;Pixmap&lt;/code&gt; with intuitive methods.&lt;/p&gt;</description></item><item><title>pypdf: Pure Python PDF Toolkit</title><link>https://www.solosoft.dev/post/pypdf-library-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://www.solosoft.dev/post/pypdf-library-2026/</guid><description>&lt;p&gt;When you need to manipulate PDFs in Python without heavy external dependencies, pypdf is the go-to solution. This pure Python library provides comprehensive PDF manipulation capabilities including splitting, merging, cropping, rotating, encrypting, and text extraction, all without requiring any native code or system libraries.&lt;/p&gt;
&lt;p&gt;Pypdf has been the standard Python PDF library for over a decade. It has evolved through multiple major versions and now offers a clean, modern API that is easy to use while being remarkably powerful under the hood. The library parses the PDF specification directly, giving it access to every element in the document structure.&lt;/p&gt;
&lt;h2 id="core-capabilities"&gt;Core Capabilities&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;API&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Page operations&lt;/td&gt;
 &lt;td&gt;Merge, split, rotate, scale, crop&lt;/td&gt;
 &lt;td&gt;PdfWriter + PdfReader&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Metadata&lt;/td&gt;
 &lt;td&gt;Read and write document metadata&lt;/td&gt;
 &lt;td&gt;metadata property&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Encryption&lt;/td&gt;
 &lt;td&gt;PDF password protection and decryption&lt;/td&gt;
 &lt;td&gt;encrypt() / decrypt()&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Text extraction&lt;/td&gt;
 &lt;td&gt;Extract text from pages with layout options&lt;/td&gt;
 &lt;td&gt;extract_text()&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Form filling&lt;/td&gt;
 &lt;td&gt;Fill PDF AcroForm fields&lt;/td&gt;
 &lt;td&gt;update_page_form_field_values()&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="document-processing-flow"&gt;Document Processing Flow&lt;/h2&gt;

&lt;figure class="mermaid-wrapper not-prose" role="img" aria-label="Mermaid diagram"&gt;
 &lt;div class="mermaid-container"&gt;
 &lt;pre class="mermaid"&gt;flowchart LR
 A[Input PDFs] --&amp;gt; B[PdfReader]
 B --&amp;gt; C{Operation Type}
 C --&amp;gt;|Merge| D[PdfWriter.append]
 C --&amp;gt;|Split| E[PdfWriter per page]
 C --&amp;gt;|Transform| F[Page transformation]
 C --&amp;gt;|Extract| G[text_extraction]
 D --&amp;gt; H[PdfWriter]
 E --&amp;gt; H
 F --&amp;gt; H
 G --&amp;gt; H
 H --&amp;gt; I[write() to File]&lt;/pre&gt;
 &lt;script type="application/mermaid"&gt;flowchart LR
 A[Input PDFs] --&gt; B[PdfReader]
 B --&gt; C{Operation Type}
 C --&gt;|Merge| D[PdfWriter.append]
 C --&gt;|Split| E[PdfWriter per page]
 C --&gt;|Transform| F[Page transformation]
 C --&gt;|Extract| G[text_extraction]
 D --&gt; H[PdfWriter]
 E --&gt; H
 F --&gt; H
 G --&gt; H
 H --&gt; I[write() to File]&lt;/script&gt;
 &lt;/div&gt;
&lt;/figure&gt;&lt;p&gt;The workflow centers around PdfReader for input and PdfWriter for output. Pages are read, manipulated, and assembled into a new document. Text extraction bypasses the Writer path and returns strings directly.&lt;/p&gt;</description></item></channel></rss>