pipeline: rename some of the stages, for clarity

This commit is contained in:
James R. Barlow
2017-01-20 17:15:00 -08:00
parent 99e47c9c04
commit 7acfaf6d34
+35 -28
View File
@@ -485,11 +485,13 @@ def ocr_tesseract_hocr(
)
def select_image_for_pdf(
def select_visible_page_image(
infiles,
output_file,
log,
context):
"Selects a whole page image that we can show the user (if necessary)"
options = context.get_options()
if options.clean_final:
image_suffix = '.pp-clean.png'
@@ -526,6 +528,10 @@ def select_image_layer(
output_file,
log,
context):
"""Selects the image layer for the output page. If possible this is the
orientation-corrected input page, or an image of the whole page converted
to PDF."""
options = context.get_options()
page_pdf = next(ii for ii in infiles if ii.endswith('.ocr.oriented.pdf'))
image = next(ii for ii in infiles if ii.endswith('.image'))
@@ -582,7 +588,7 @@ def render_hocr_debug_page(
showBoundingboxes=True, invisibleText=False)
def add_text_layer(
def combine_layers(
infiles,
output_file,
log,
@@ -652,14 +658,14 @@ def add_text_layer(
pdf_output.write(out)
def tesseract_ocr_and_render_pdf(
input_files,
def ocr_tesseract_and_render_pdf(
infiles,
output_file,
log,
context):
options = context.get_options()
input_image = next((ii for ii in input_files if ii.endswith('.image')), '')
input_pdf = next((ii for ii in input_files if ii.endswith('.pdf')))
input_image = next((ii for ii in infiles if ii.endswith('.image')), '')
input_pdf = next((ii for ii in infiles if ii.endswith('.pdf')))
if not input_image:
# Skipping this page
re_symlink(input_pdf, output_file, log)
@@ -898,8 +904,8 @@ def build_pipeline(options, work_folder, log, context):
if tesseract.v4():
task_ocr_tesseract_hocr.jobs_limit(1) # Uses multi-core on its own
task_select_image_for_pdf = main_pipeline.collate(
task_func=select_image_for_pdf,
task_select_visible_page_image = main_pipeline.collate(
task_func=select_visible_page_image,
input=[task_rasterize_with_ghostscript,
task_preprocess_remove_background,
task_preprocess_deskew,
@@ -907,11 +913,11 @@ def build_pipeline(options, work_folder, log, context):
filter=regex(r".*/(\d{6})(?:\.page|\.pp-.*)\.png"),
output=os.path.join(work_folder, r'\1.image'),
extras=[log, context])
task_select_image_for_pdf.graphviz(shape='diamond')
task_select_visible_page_image.graphviz(shape='diamond')
task_select_image_layer = main_pipeline.collate(
task_func=select_image_layer,
input=[task_select_image_for_pdf, task_orient_page],
input=[task_select_visible_page_image, task_orient_page],
filter=regex(r".*/(\d{6})(?:\.image|\.ocr\.oriented\.pdf)"),
output=os.path.join(work_folder, r'\1.image-layer.pdf'),
extras=[log, context])
@@ -930,7 +936,7 @@ def build_pipeline(options, work_folder, log, context):
task_render_hocr_debug_page = main_pipeline.collate(
task_func=render_hocr_debug_page,
input=[task_select_image_for_pdf, task_ocr_tesseract_hocr],
input=[task_select_visible_page_image, task_ocr_tesseract_hocr],
filter=regex(r".*/(\d{6})(?:\.image|\.hocr)"),
output=os.path.join(work_folder, r'\1.debug.pdf'),
extras=[log, context])
@@ -938,26 +944,27 @@ def build_pipeline(options, work_folder, log, context):
task_render_hocr_debug_page.active_if(options.pdf_renderer == 'hocr')
task_render_hocr_debug_page.active_if(options.debug_rendering)
task_add_text_layer = main_pipeline.collate(
task_func=add_text_layer,
input=[task_render_hocr_page, task_select_image_layer],
filter=regex(r".*/(\d{6})(?:\.hocr\.pdf|\.image-layer\.pdf)"),
task_combine_layers = main_pipeline.collate(
task_func=combine_layers,
input=[task_render_hocr_page,
task_select_image_layer],
filter=regex(r".*/(\d{6})(?:\.text\.pdf|\.image-layer\.pdf)"),
output=os.path.join(work_folder, r'\1.rendered.pdf'),
extras=[log, context])
task_add_text_layer.graphviz(fillcolor='"#00cc66"')
task_add_text_layer.active_if(options.pdf_renderer == 'hocr')
task_combine_layers.graphviz(fillcolor='"#00cc66"')
task_combine_layers.active_if(options.pdf_renderer == 'hocr' or options.pdf_renderer == 'tesstop')
# Tesseract OCR
task_tesseract_ocr_and_render_pdf = main_pipeline.collate(
task_func=tesseract_ocr_and_render_pdf,
input=[task_select_image_for_pdf, task_orient_page],
# Tesseract OCR+PDF
task_ocr_tesseract_and_render_pdf = main_pipeline.collate(
task_func=ocr_tesseract_and_render_pdf,
input=[task_select_visible_page_image, task_orient_page],
filter=regex(r".*/(\d{6})(?:\.image|\.ocr\.oriented\.pdf)"),
output=os.path.join(work_folder, r'\1.rendered.pdf'),
extras=[log, context])
task_tesseract_ocr_and_render_pdf.graphviz(fillcolor='"#66ccff"')
task_tesseract_ocr_and_render_pdf.active_if(options.pdf_renderer == 'tesseract')
task_ocr_tesseract_and_render_pdf.graphviz(fillcolor='"#66ccff"')
task_ocr_tesseract_and_render_pdf.active_if(options.pdf_renderer == 'tesseract')
if tesseract.v4():
task_tesseract_ocr_and_render_pdf.jobs_limit(1) # Uses multi-core
task_ocr_tesseract_and_render_pdf.jobs_limit(1) # Uses multi-core
# PDF/A
task_generate_postscript_stub = main_pipeline.transform(
@@ -981,10 +988,10 @@ def build_pipeline(options, work_folder, log, context):
# Merge pages
task_merge_pages_ghostscript = main_pipeline.merge(
task_func=merge_pages_ghostscript,
input=[task_add_text_layer,
input=[task_combine_layers,
task_render_hocr_debug_page,
task_skip_page,
task_tesseract_ocr_and_render_pdf,
task_ocr_tesseract_and_render_pdf,
task_generate_postscript_stub],
output=os.path.join(work_folder, 'merged.pdf'),
extras=[log, context])
@@ -992,10 +999,10 @@ def build_pipeline(options, work_folder, log, context):
task_merge_pages_qpdf = main_pipeline.merge(
task_func=merge_pages_qpdf,
input=[task_add_text_layer,
input=[task_combine_layers,
task_render_hocr_debug_page,
task_skip_page,
task_tesseract_ocr_and_render_pdf,
task_ocr_tesseract_and_render_pdf,
task_repair_pdf],
output=os.path.join(work_folder, 'merged.pdf'),
extras=[log, context])