diff --git a/src/ocrmypdf/_pipeline.py b/src/ocrmypdf/_pipeline.py index c09c31f1..bf3e979f 100644 --- a/src/ocrmypdf/_pipeline.py +++ b/src/ocrmypdf/_pipeline.py @@ -144,9 +144,11 @@ def triage(input_file, output_file, options, log): return output_file -def get_pdfinfo(input_file, detailed_page_analysis=False): +def get_pdfinfo(input_file, detailed_page_analysis=False, progbar=False): try: - return PdfInfo(input_file, detailed_page_analysis=detailed_page_analysis) + return PdfInfo( + input_file, detailed_page_analysis=detailed_page_analysis, progbar=progbar + ) except pikepdf.PasswordError: raise EncryptedPdfError() except pikepdf.PdfError: diff --git a/src/ocrmypdf/_sync.py b/src/ocrmypdf/_sync.py index 1ca758d1..013be469 100644 --- a/src/ocrmypdf/_sync.py +++ b/src/ocrmypdf/_sync.py @@ -55,9 +55,6 @@ from ._pipeline import ( validate_pdfinfo_options, ) from ._validation import ( - check_dependency_versions, - check_environ, - check_options, check_requested_output_file, create_input_file, report_output_file_size, @@ -320,7 +317,11 @@ def run_pipeline(options, api=False): ) # Gather pdfinfo and create context - pdfinfo = get_pdfinfo(origin_pdf, detailed_page_analysis=options.redo_ocr) + pdfinfo = get_pdfinfo( + origin_pdf, + detailed_page_analysis=options.redo_ocr, + progbar=options.progress_bar, + ) context = PDFContext(options, work_folder, origin_pdf, pdfinfo) # Validate options are okay for this pdf diff --git a/src/ocrmypdf/pdfinfo/__init__.py b/src/ocrmypdf/pdfinfo/__init__.py index c6c4f7e9..ea09ba99 100644 --- a/src/ocrmypdf/pdfinfo/__init__.py +++ b/src/ocrmypdf/pdfinfo/__init__.py @@ -28,6 +28,7 @@ import re from pikepdf import PdfMatrix import pikepdf +from tqdm import tqdm from . import ghosttext @@ -616,7 +617,7 @@ def _pdf_get_pageinfo(pdf, pageno: int, infile, xmltext): return pageinfo -def _pdf_get_all_pageinfo(infile, detailed_analysis=False, log=None): +def _pdf_get_all_pageinfo(infile, detailed_analysis=False, log=None, progbar=False): pdf = pikepdf.open(infile) # Do not close in this function if pdf.is_encrypted: pdf.close() @@ -627,7 +628,13 @@ def _pdf_get_all_pageinfo(infile, detailed_analysis=False, log=None): pages_xml = ghosttext.extract_text_xml(infile, pdf, pageno=None, log=log) pages = [] - for n in range(len(pdf.pages)): + for n, _ in tqdm( + enumerate(pdf.pages), + total=len(pdf.pages), + desc="Scan", + unit='page', + disable=not progbar, + ): page_xml = pages_xml[n] if pages_xml else None page = PageInfo(pdf, n, infile, page_xml, detailed_analysis) pages.append(page) @@ -749,10 +756,10 @@ class PageInfo: class PdfInfo: """Get summary information about a PDF""" - def __init__(self, infile, detailed_page_analysis=False, log=logger): + def __init__(self, infile, detailed_page_analysis=False, log=logger, progbar=False): self._infile = infile self._pages, pdf = _pdf_get_all_pageinfo( - infile, detailed_page_analysis, log=log + infile, detailed_page_analysis, log=log, progbar=progbar ) self._needs_rendering = pdf.root.get('/NeedsRendering', False) self._has_acroform = False