Desktop batch conversion workbench for turning PDF, DOC, DOCX, PPT, and PPTX files into formatted Markdown through the Responses API.
PDF2MD Workbench — Queue-based desktop Markdown conversion for API-driven workflows
Converts PDF and Office documents into cleaned Markdown with a desktop GUI designed for batch processing, retries, caching, model discovery, and release packaging.
Core workflow
- Drag in
PDF,DOC,DOCX,PPT, orPPTXfiles and process them as a queue - Convert Office files to PDF first, then send content through the Responses API
- Review per-file status, progress, stream metrics, errors, and output paths
Desktop experience
- Queue view with retry, cancel, preflight checks, output opening, and config opening
- Built-in model list fetching and test request support for the configured endpoint
- Settings for chunk cache, overwrite strategy, streaming, rendering, and style reference
Packaging
- Windows single-file
.exe - macOS Apple Silicon
.appbundled inside a drag-to-Applications.dmg - GitHub Actions build and tag-driven release publishing
PDF2MD Workbench is a desktop GUI for converting PDF, DOC, DOCX, PPT, and PPTX files into publication-style Markdown through a Responses API endpoint.
It is built for teams who care less about raw document parsing breadth and more about the quality of the final Markdown output: cleaner mathematical formulas, more logically coherent tables, and more controllable long-form restructuring for downstream LLM, RAG, and publishing workflows.
Compared with native local parsers such as MinerU, PDF2MD Workbench is positioned as an API-first output workbench. Its emphasis is not broad offline document understanding, but higher-fidelity final Markdown generation for formula-heavy and logic-sensitive content.
The application uses a two-stage workflow:
- Office files are converted to PDF locally.
- PDF pages and extracted text are sent to the configured Responses API and reassembled into Markdown.
- Support for
PDF,DOC,DOCX,PPT, andPPTXinputs - Queue-based desktop GUI with drag-and-drop and batch processing
- Per-file progress, status, token metrics, retry, and cancellation
- Model catalog fetch from the configured API base URL
- Test request for the selected model before a batch starts
- Chunk cache support for retry and resume workflows
- Output conflict handling with
rename,overwrite, andfailmodes - Optional image auto-cropping for cleaner page renders
- Windows single-file packaging and macOS arm64 DMG packaging
- GitHub Actions builds for Windows and macOS releases
| Platform | Source Run | Release Artifact | Office Conversion Requirement |
|---|---|---|---|
| Windows | Yes | pdf2md-gui.exe |
Microsoft Office or LibreOffice |
| macOS arm64 | Yes | pdf2md-gui-macos-arm64.dmg |
LibreOffice |
| Linux | Yes | No packaged artifact currently | LibreOffice |
Notes:
- PDF input works without Office conversion software.
DOC,DOCX,PPT, andPPTXrequire a local Office-to-PDF backend.- On macOS, the packaged app checks common LibreOffice paths because Finder-launched apps often do not inherit your shell
PATH.
Prebuilt artifacts are published on tagged releases:
- Windows:
pdf2md-gui-windows-x64.zip - macOS Apple Silicon:
pdf2md-gui-macos-arm64.dmg
Download them from the GitHub Releases page.
Install dependencies:
python -m pip install -r requirements.txtLaunch the GUI:
python pdf_to_formatted_markdown_gui.py- Launch the app.
- Enter the API URL and API token.
- Click
Fetch Modelsto load the remote model list. - Click
Test Modelto verify the selected model. - Drag in files or add them through the file picker.
- Run
Preflightif you want a quick environment check. - Start the batch and monitor progress in the queue and log tabs.
Office files are converted locally before they are sent to the API.
- Supported backends: Microsoft Office COM automation or LibreOffice
- LibreOffice download: https://www.libreoffice.org/download/download-libreoffice/
- Common LibreOffice path:
C:\Program Files\LibreOffice\program\soffice.exe
- LibreOffice is required for
DOC,DOCX,PPT, andPPTX - Download from: https://www.libreoffice.org/download/download-libreoffice/
- Homebrew option:
brew install --cask libreoffice- Common paths checked by the app:
/Applications/LibreOffice.app/Contents/MacOS/soffice~/Applications/LibreOffice.app/Contents/MacOS/soffice/opt/homebrew/bin/soffice/usr/local/bin/soffice
If LibreOffice is installed elsewhere, set PDF2MD_SOFFICE_PATH to the full soffice path.
- LibreOffice is required
- Ensure
sofficeis available onPATH, or setPDF2MD_SOFFICE_PATH
.\build_pdf2md_gui.ps1Outputs:
dist/pdf2md-gui.exe
chmod +x ./build_pdf2md_gui_macos_arm.sh
./build_pdf2md_gui_macos_arm.shOutputs:
dist/pdf2md-gui.appdist/pdf2md-gui-macos-arm64.dmg
The DMG contains the .app plus an Applications shortcut for the normal drag-to-install macOS flow.
The repository includes a workflow that builds on:
- pushes to
main - version tags such as
v0.2.3 - manual workflow dispatch
Current CI outputs:
- Windows single-file executable archive
- macOS Apple Silicon DMG
When a tag is pushed, GitHub Actions publishes a GitHub Release automatically.
The app stores settings in pdf2md.config.
Config location:
- Windows source and packaged builds:
%APPDATA%\PDF2MD Workbench\pdf2md.config - macOS source and packaged builds:
~/Library/Application Support/PDF2MD Workbench/pdf2md.config
If an older config exists next to the script or executable, the app migrates it into the user config directory on first launch.
Stored settings include:
- API URL
- API token
- selected model and cached known models
- output directory
- style reference path
- chunk cache directory
- overwrite mode
- render and streaming options
Security note:
- If you save the API key in the GUI, it is stored in plaintext in the config file.
- You can leave the field empty and provide
ARK_API_KEYthrough the environment instead.
ARK_API_KEY: optional API token overridePDF2MD_SOFFICE_PATH: explicit path tosofficewhen it is not discoverable automatically
pdf_to_formatted_markdown_gui.py: desktop GUI applicationpdf_to_formatted_markdown.py: conversion pipeline and API logicpdf2md-gui.spec: PyInstaller specbuild_pdf2md_gui.ps1: Windows build scriptbuild_pdf2md_gui_macos_arm.sh: macOS arm64 build script.github/workflows/build-pdf2md-gui.yml: CI and release workflow
Run Preflight in the GUI and confirm that the app can find Microsoft Office or LibreOffice.
Set PDF2MD_SOFFICE_PATH to the full soffice path if your installation is outside the standard locations.
Check the API URL, token, timeout, and selected model, then use Test Model before starting a full batch.
Set the overwrite strategy to rename or fail in the settings tab.
This project follows the repository's current published license and release terms. If you want GitHub to surface the license explicitly in the repository header, add a top-level LICENSE file and link it here.