You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue gathers long-standing feature requests that aren't currently on an active development path, so they live in one place and can drive a discussion about the roadmap.
Please read this first: where I've quoted a position below (often "won't do because…"), that's my current position and reasoning — not a permanent no. Several of these are clustered requests where many people have asked for the same thing, which is exactly the kind of signal that can change priorities. Comments, use cases, and especially pull requests are welcome. If you came here from your own closed/redirected issue, this is the place to make the case.
A recurring principle that shapes a lot of these decisions: OCRmyPDF is biased toward large, unattended, archival batch jobs. A feature that's "right 98–99% of the time" is often unacceptable at that volume, because a 1–2% per-page error rate silently corrupts documents nobody reviews. That bar is why several otherwise-reasonable features below are held back.
1. Page-count-changing features (blank-page removal, splitting, cropping)
A strong, multi-requester cluster — and one I'm currently not pursuing, because anything that adds/removes/reorders pages is high-risk for unattended batches (a misfire deletes real content).
Option to remove blank pages #12 — Remove blank pages (many +1s; several proposed heuristics: inkcov, leptonica pixel ratio, --remove-empty-pages)
Feature request: crop empty margins #96 — Crop empty margins / fit to page — "Every now and then I come back to this ticket… It's not so difficult to do on its own, but… I don't have a good idea how to integrate it with the rest of the functionality."
Splitting documents based on “SEPARATOR-PAGES” #510 — Split documents on separator/barcode pages — "this strikes me as a custom requirement specific to your workflow rather than a feature of general interest."
2. Text layer handling without full-page rasterization ⭐ biggest under-served cluster
Multiple independent requesters circle the same gap: cleanly remove/replace a pre-existing text layer without rasterizing the whole page (--force-ocr bloats file size; --redo-ocr can mix old and new text). This is probably the single most-requested capability that doesn't yet have a clean answer.
it is not possible to get a text-only pdf searchable? #537 — Text-only / reconstructed searchable PDF — currently declined as framed: Tesseract can't reconstruct fonts, and keeping the image lets a human catch OCR errors. (See --sidecar.)
3. Text-only / no-PDF output
Only generate text files without generating PDF files #1086 — Generate text only, no PDF — partially solved by --output-type none, but it's undiscoverable and there's no clean way to get the text string from the Python API. Good docs + API win.
Add command to skip all processing related to OCR #650 — Skip all OCR processing efficiently — --tesseract-timeout 0 is "a bit of a hack — we still do everything as if OCR were happening." A true no-OCR fast path needs real work.
Page orientation based on text content #283 — Detect page orientation from OCR text (vs Tesseract OSD) — receptive: "It seems like a decent idea… this effort should replace the existing --rotate-pages provided we can prove it's an improvement in most cases." A prototype with strong results existed; needs a PR over the finish line.
--threshold-final #550 — --threshold-final (binarize output) — declined on reliability: "most threshold functions are not reliable enough to trust without manual inspection." (Otsu/Sauvola discussion.) Related demand: better faded/grey-text recognition.
Add custom deskew and page rotation logic before OCR #1161 — Custom deskew/rotation logic via plugin — blocked by an architecture gap: "the plugin system doesn't actually support replacement of some steps in the pipeline that ought to be pluggable."
5. Image optimization & output control
Generally open to these, but gated on Debian/Fedora packaging availability and license compatibility.
Losslessly optimize JPEGs and PNGs #603 — Losslessly optimize JPEG/PNG (mozjpeg, jpegoptim, optipng/oxipng) — "would accept a pull request, won't do myself"; waiting on mature distro packages.
Note on cloud / ML OCR engines: requests to add Azure / Google / VLM / etc. engines to core (#595, #1186, #1434, #1617, #1628, …) are closed as won't-implement-in-core. The supported path is a plugin — see ocrmypdf-easyocr as a template, with #1250 for the architecture and #1584 for the in-progress PaddleOCR plugin.
OCR PDF Attachments? #259 — OCR / embed PDF attachments (PDF/A-3) — will not implement; use qpdf input.pdf --add-attachment=file_to_embed.txt -- output.pdf
set pdf viewer actions #464 — Viewer preferences / open actions (/FitWindow, /DisplayDocTitle, …) — "not a difficult feature to add"; but no interest in user-hostile ones (hiding toolbars).
--unpaper-args and --clean-final #392 — --unpaper-args / --clean-final — "a really messy corner of the interface… open to suggestions." Tension between exposing power via plugins vs. keeping simple CLI args.
This issue gathers long-standing feature requests that aren't currently on an active development path, so they live in one place and can drive a discussion about the roadmap.
Please read this first: where I've quoted a position below (often "won't do because…"), that's my current position and reasoning — not a permanent no. Several of these are clustered requests where many people have asked for the same thing, which is exactly the kind of signal that can change priorities. Comments, use cases, and especially pull requests are welcome. If you came here from your own closed/redirected issue, this is the place to make the case.
A recurring principle that shapes a lot of these decisions: OCRmyPDF is biased toward large, unattended, archival batch jobs. A feature that's "right 98–99% of the time" is often unacceptable at that volume, because a 1–2% per-page error rate silently corrupts documents nobody reviews. That bar is why several otherwise-reasonable features below are held back.
1. Page-count-changing features (blank-page removal, splitting, cropping)
A strong, multi-requester cluster — and one I'm currently not pursuing, because anything that adds/removes/reorders pages is high-risk for unattended batches (a misfire deletes real content).
--remove-empty-pages)mutool poster.2. Text layer handling without full-page rasterization ⭐ biggest under-served cluster
Multiple independent requesters circle the same gap: cleanly remove/replace a pre-existing text layer without rasterizing the whole page (
--force-ocrbloats file size;--redo-ocrcan mix old and new text). This is probably the single most-requested capability that doesn't yet have a clean answer.--redo-ocr --tesseract-timeout 0workaround does not work)--sidecar.)3. Text-only / no-PDF output
--output-type none, but it's undiscoverable and there's no clean way to get the text string from the Python API. Good docs + API win.--tesseract-timeout 0is "a bit of a hack — we still do everything as if OCR were happening." A true no-OCR fast path needs real work.4. Deskew / rotation / orientation / edge cleanup
--rotate-pagesprovided we can prove it's an improvement in most cases." A prototype with strong results existed; needs a PR over the finish line.--threshold-final(binarize output) — declined on reliability: "most threshold functions are not reliable enough to trust without manual inspection." (Otsu/Sauvola discussion.) Related demand: better faded/grey-text recognition.5. Image optimization & output control
Generally open to these, but gated on Debian/Fedora packaging availability and license compatibility.
--png-quality 100, remove pngquant)6. OCR backends & Unicode / text extraction
ActualText-markup solution over a normalization flag, but most viewers ignoreActualText; unresolved. A contributor has offered a PR.7. Metadata, structure & PDF features
qpdf input.pdf --add-attachment=file_to_embed.txt -- output.pdf/FitWindow,/DisplayDocTitle, …) — "not a difficult feature to add"; but no interest in user-hostile ones (hiding toolbars).8. unpaper / preprocessing interface
--unpaper-args/--clean-final— "a really messy corner of the interface… open to suggestions." Tension between exposing power via plugins vs. keeping simple CLI args.filter_page_imageplugin hook.9. Diacritics-warning UX
10. Progress / demo / misc
Quick index by disposition
If your request is here and the reasoning no longer holds — or you'd like to contribute one — please comment.