Fix --remove-vectors which was broken in API migration

It got dropped during the change. This feature has also been altered so that
the final visual appearance of the file is not affected, only the OCR image.
This commit is contained in:
James R. Barlow
2019-06-05 02:04:45 -07:00
parent fd427a8ec1
commit 93f1b73579
2 changed files with 57 additions and 22 deletions
+10 -4
View File
@@ -392,10 +392,16 @@ def get_orientation_correction(preview, page_context):
return 0
def rasterize(input_file, page_context, correction=0):
def rasterize(
input_file, page_context, correction=0, output_tag='', remove_vectors=None
):
colorspaces = ['pngmono', 'pnggray', 'png256', 'png16m']
device_idx = 0
output_file = page_context.get_path('rasterize.png')
if remove_vectors is None:
remove_vectors = page_context.options.remove_vectors
output_file = page_context.get_path(f'rasterize{output_tag}.png')
pageinfo = page_context.pageinfo
def at_least(cs):
@@ -431,7 +437,7 @@ def rasterize(input_file, page_context, correction=0):
page_dpi=(page_dpi, page_dpi),
pageno=pageinfo.pageno + 1,
rotation=correction,
filter_vector=page_context.options.remove_vectors,
filter_vector=remove_vectors,
)
return output_file
@@ -520,7 +526,7 @@ def create_ocr_image(image, page_context):
barcodes = pix.locate_barcodes()
for barcode in barcodes:
decoded, rect = barcode
print('masking barcode %s %r', decoded, rect)
page_context.log.debug('masking barcode %s %r', decoded, rect)
draw.rectangle(rect, fill=white)
im = pix.topil()
+47 -18
View File
@@ -73,6 +73,16 @@ PageResult = namedtuple(
)
def preprocess(page_context, image, remove_background, deskew, clean):
if remove_background:
image = preprocess_remove_background(image, page_context)
if deskew:
image = preprocess_deskew(image, page_context)
if clean:
image = preprocess_clean(image, page_context)
return image
def exec_page_sync(page_context):
options = page_context.options
orientation_correction = 0
@@ -88,27 +98,46 @@ def exec_page_sync(page_context):
)
rasterize_out = rasterize(
page_context.origin, page_context, correction=orientation_correction
page_context.origin,
page_context,
correction=orientation_correction,
remove_vectors=False,
)
preprocess = rasterize_out
if options.remove_background:
preprocess = preprocess_remove_background(preprocess, page_context)
if options.deskew:
preprocess = preprocess_deskew(preprocess, page_context)
if options.clean:
cleaned = preprocess_clean(preprocess, page_context)
if options.clean_final:
preprocess_out = cleaned
ocr_image = cleaned
else:
preprocess_out = preprocess
ocr_image = cleaned
if not any([options.clean, options.clean_final, options.remove_vectors]):
ocr_image = preprocess_out = preprocess(
page_context,
rasterize_out,
options.remove_background,
options.deskew,
clean=False,
)
else:
preprocess_out = preprocess
ocr_image = preprocess
if not options.lossless_reconstruction:
preprocess_out = preprocess(
page_context,
rasterize_out,
options.remove_background,
options.deskew,
clean=options.clean_final,
)
if options.remove_vectors:
rasterize_ocr_out = rasterize(
page_context.origin,
page_context,
correction=orientation_correction,
remove_vectors=True,
output_tag='_ocr',
)
else:
rasterize_ocr_out = rasterize_out
ocr_image = preprocess(
page_context,
rasterize_ocr_out,
options.remove_background,
options.deskew,
clean=options.clean,
)
ocr_image_out = create_ocr_image(ocr_image, page_context)