code cleanup

main
adam j hartz 2023-03-18 19:39:04 -04:00
parent da3c0fabd7
commit d6ee570284
Signed by: hz
GPG Key ID: 5FDD2840E179AD62
3 changed files with 29 additions and 52 deletions

View File

@ -2,18 +2,14 @@ import io
import os
import sys
import pickle
import hashlib
import multiprocessing
import tqdm
import click
from PIL import Image
from pyzbar import pyzbar
from pypdf import PdfReader
from geometry import PAGE_SIZE
def parse(code):
assert len(code) == 12
@ -84,36 +80,33 @@ def main(input_file, verify, min_pages, append, output, force, num_workers):
for page_i, (qrinfo, rotated) in enumerate(qrinfos):
if len(qrinfo) == 0:
continue # bad scan, skip it
else:
qrs = {}
update = True
m = None
for info in qrinfo:
magic, page, qrnum, serial = parse(info.data)
qrs[qrnum] = (
serial,
page,
magic,
tuple(map(tuple, info.polygon)),
)
serials, pagenums, magics, _ = list(map(set, zip(*qrs.values())))
if verify is not None and magics != {verify}:
continue
if {len(serials), len(pagenums)} != {1}:
continue
old = pages_map.get(serial, {}).get(page, None)
if old is not None and (len(old[-1]) == 2 or len(old[-1]) > len(qrs)):
continue
if len(qrs) == 2 and set(qrs) != {0, 1}:
continue
pages_map.setdefault(serial, {})[page] = (
fname,
page_i,
rotated,
qrs,
qrs = {}
for info in qrinfo:
magic, page, qrnum, serial = parse(info.data)
qrs[qrnum] = (
serial,
page,
magic,
tuple(map(tuple, info.polygon)),
)
serials, pagenums, magics, _ = list(map(set, zip(*qrs.values())))
if verify is not None and magics != {verify}:
continue
if {len(serials), len(pagenums)} != {1}:
continue
old = pages_map.get(serial, {}).get(page, None)
if old is not None and (len(old[-1]) == 2 or len(old[-1]) > len(qrs)):
continue
if len(qrs) == 2 and set(qrs) != {0, 1}:
continue
pages_map.setdefault(serial, {})[page] = (
fname,
page_i,
rotated,
qrs,
)
seen_files.add(fname)
if min_pages is None:

View File

@ -68,7 +68,7 @@ def find_transform_matrix(src, dst, estimate_scale):
rank = numpy.linalg.matrix_rank(A)
if rank == 0:
return numpy.nan * T
elif rank == dim - 1:
if rank == dim - 1:
if numpy.linalg.det(U) * numpy.linalg.det(V) > 0:
T[:dim, :dim] = U @ V
else:

View File

@ -1,45 +1,30 @@
import io
import os
import sys
import numpy
import pickle
import hashlib
import tempfile
import subprocess
import multiprocessing
import tqdm
import click
import img2pdf
from PIL import Image, ImageTransform
from pyzbar import pyzbar
from pypdf import PdfReader, PdfWriter, PageObject
from pypdf import PdfReader
from geometry import (
PAGE_SIZE,
QR_SIZE,
QR_LOCS,
QR_EXPECTED_POINTS,
find_transform_matrix,
)
def do_exam(inp):
exam_number, page_info, rectify, guess_missing_rect_data = inp
@click.command()
@click.option("--rectify/--no-rectify", default=True)
@click.option("--output-dir", "-o", required=True)
@click.option("--num-workers", "-j", default="0")
@click.option("--exam-numbers", "-e")
@click.option("--output-dpi", type=int, default=200)
@click.option("--fill-color", type=int, default=200)
@click.argument("input_file")
def main(
input_file, rectify, output_dir, num_workers, output_dpi, fill_color, exam_numbers
):
def main(input_file, rectify, output_dir, output_dpi, fill_color, exam_numbers):
os.makedirs(output_dir, exist_ok=True)
with open(input_file, "rb") as f:
@ -64,7 +49,6 @@ def main(
image = Image.open(im_buf)
if rotated:
image = image.rotate(180)
dpi = int(sum([i / j for i, j in zip(image.size, PAGE_SIZE)]) / 2)
output_size = tuple(int(output_dpi * i) for i in PAGE_SIZE)
if rectify: