diff --git a/misc/completion/ocrmypdf.fish b/misc/completion/ocrmypdf.fish index 31e30b2a..d085acdd 100644 --- a/misc/completion/ocrmypdf.fish +++ b/misc/completion/ocrmypdf.fish @@ -59,7 +59,8 @@ complete -c ocrmypdf -x -l output-type -a '(__fish_ocrmypdf_output_type)' -d "se function __fish_ocrmypdf_pdf_renderer echo -e "auto\t"(_ "auto select PDF renderer") - echo -e "hocr\t"(_ "use hocr renderer") + echo -e "hocr\t"(_ "use hOCR renderer") + echo -e "hocrdebug\t"(_ "uses hOCR renderer in debug mode, showing recognized text") echo -e "sandwich\t"(_ "use sandwich renderer") end complete -c ocrmypdf -x -l pdf-renderer -a '(__fish_ocrmypdf_pdf_renderer)' -d "select PDF renderer options" diff --git a/src/ocrmypdf/_pipeline.py b/src/ocrmypdf/_pipeline.py index 76223ac6..e0989f30 100644 --- a/src/ocrmypdf/_pipeline.py +++ b/src/ocrmypdf/_pipeline.py @@ -602,14 +602,17 @@ def create_pdf_page_from_image(image: Path, page_context: PageContext): def render_hocr_page(hocr: Path, page_context: PageContext): + options = page_context.options output_file = page_context.get_path('ocr_hocr.pdf') - dpi = get_page_square_dpi(page_context.pageinfo, page_context.options) + dpi = get_page_square_dpi(page_context.pageinfo, options) + debug_mode = options.pdf_renderer == 'hocrdebug' + hocrtransform = HocrTransform(hocr, dpi.x) # square hocrtransform.to_pdf( output_file, image_filename=None, - show_bounding_boxes=False, - invisible_text=True, + show_bounding_boxes=False if not debug_mode else True, + invisible_text=True if not debug_mode else False, interword_spaces=True, ) return output_file diff --git a/src/ocrmypdf/_sync.py b/src/ocrmypdf/_sync.py index a24c05e7..624ac7bf 100644 --- a/src/ocrmypdf/_sync.py +++ b/src/ocrmypdf/_sync.py @@ -207,7 +207,7 @@ def exec_page_sync(page_context: PageContext): visible_image_out, page_context ) - if options.pdf_renderer == 'hocr': + if options.pdf_renderer.startswith('hocr'): (hocr_out, text_out) = ocr_engine_hocr(ocr_image_out, page_context) ocr_out = render_hocr_page(hocr_out, page_context) elif options.pdf_renderer == 'sandwich': diff --git a/src/ocrmypdf/_validation.py b/src/ocrmypdf/_validation.py index 9b82ebb4..9354a629 100644 --- a/src/ocrmypdf/_validation.py +++ b/src/ocrmypdf/_validation.py @@ -78,7 +78,7 @@ def check_options_languages(options, ocr_engine_languages): def check_options_output(options): is_latin = options.languages.issubset(HOCR_OK_LANGS) - if options.pdf_renderer == 'hocr' and not is_latin: + if options.pdf_renderer.startswith('hocr') and not is_latin: msg = ( "The 'hocr' PDF renderer is known to cause problems with one " "or more of the languages in your document. Use " diff --git a/src/ocrmypdf/cli.py b/src/ocrmypdf/cli.py index df865aa9..6d8d4296 100644 --- a/src/ocrmypdf/cli.py +++ b/src/ocrmypdf/cli.py @@ -407,7 +407,7 @@ Online documentation is located at: ) advanced.add_argument( '--pdf-renderer', - choices=['auto', 'hocr', 'sandwich'], + choices=['auto', 'hocr', 'sandwich', 'hocrdebug'], default='auto', help="Choose OCR PDF renderer - the default option is to let OCRmyPDF " "choose. See documentation for discussion.",