Skip to content

Roadmap / wish list: consolidated feature requests and current positions #1696

Description

@jbarlow83

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).

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.

3. Text-only / no-PDF output

4. Deskew / rotation / orientation / edge cleanup

  • 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.
  • [Feature]: OCR on pages with multiple text rotations #1110 — OCR pages with multiple text rotations (e.g. a rotated table inset) — "a limitation of Tesseract's PDF renderer rather than the engine, which makes it tractable."
  • after deskew remove grey frame or cut like a A4? #520 — Remove grey/black frame after deskew — declined on reliability grounds; better done by scanner software that knows where the page is.
  • --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.

6. OCR backends & Unicode / text extraction

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.

7. Metadata, structure & PDF features

8. unpaper / preprocessing interface

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions