diff --git a/src/ocrmypdf/_pipeline.py b/src/ocrmypdf/_pipeline.py index d2881407..70657a3a 100644 --- a/src/ocrmypdf/_pipeline.py +++ b/src/ocrmypdf/_pipeline.py @@ -521,6 +521,9 @@ def create_ocr_image(image, page_context): draw.rectangle(rect, fill=white) im = pix.topil() + if options.filter_ocr_image: + im = options.filter_ocr_image(im) + del draw # Pillow requires integer DPI dpi = round(xres), round(yres) diff --git a/src/ocrmypdf/api.py b/src/ocrmypdf/api.py index e371324d..701e3b73 100644 --- a/src/ocrmypdf/api.py +++ b/src/ocrmypdf/api.py @@ -113,10 +113,14 @@ def configure_logging(verbosity, progress_bar_friendly=True, manage_root_logger= def create_options(*, input_file, output_file, **kwargs): cmdline = [] + filters = [] for arg, val in kwargs.items(): if val is None: continue + if arg.startswith('filter') and callable(val): + filters.append((arg, val)) + continue cmd_style_arg = arg.replace('_', '-') cmdline.append(f"--{cmd_style_arg}") if isinstance(val, bool): @@ -135,6 +139,8 @@ def create_options(*, input_file, output_file, **kwargs): parser.api_mode = True options = parser.parse_args(cmdline) + for keyword, function in filters: + setattr(options, keyword, function) return options diff --git a/src/ocrmypdf/cli.py b/src/ocrmypdf/cli.py index 503f591b..1480d677 100644 --- a/src/ocrmypdf/cli.py +++ b/src/ocrmypdf/cli.py @@ -466,6 +466,10 @@ advanced.add_argument( help="Specify the location of the Tesseract user patterns file.", ) + +filters = parser.add_argument_group("Filters", argparse.SUPPRESS) +filters.add_argument('--filter-ocr-image', help=argparse.SUPPRESS) + debugging = parser.add_argument_group( "Debugging", "Arguments to help with troubleshooting and debugging" )