From b183ad81675e801db6e2c8b2dae291305194615c Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Thu, 15 Nov 2018 22:38:49 -0800 Subject: [PATCH] Fix barcodes error handling --- src/ocrmypdf/leptonica.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/ocrmypdf/leptonica.py b/src/ocrmypdf/leptonica.py index 809f15f9..270d0356 100644 --- a/src/ocrmypdf/leptonica.py +++ b/src/ocrmypdf/leptonica.py @@ -563,15 +563,20 @@ class Pix(LeptonicaObject): return Pix(lept.pixInvert(ffi.NULL, self._cdata)) def locate_barcodes(self): - with suppress(LeptonicaError): + try: with _LeptonicaErrorTrap(): pix = Pix(lept.pixConvertTo8(self._cdata, 0)) pixa_candidates = PixArray(lept.pixExtractBarcodes(pix._cdata, 0)) - sarray = StringArray(lept.pixReadBarcodes(pixa_candidates._cdata, - lept.L_BF_ANY, - lept.L_USE_WIDTHS, - ffi.NULL, - 0)) + sarray = StringArray(lept.pixReadBarcodes( + pixa_candidates._cdata, + lept.L_BF_ANY, + lept.L_USE_WIDTHS, + ffi.NULL, + 0 + )) + except (LeptonicaError, ValueError) as e: + return + for n, s in enumerate(sarray): decoded = s.decode() if decoded.strip() == '': @@ -744,6 +749,7 @@ class Sel(LeptonicaObject): @classmethod def from_selstr(cls, selstr, name): + # TODO this will strip a horizontal line of don't care's lines = [line.strip() for line in selstr.split('\n') if line.strip()] h = len(lines) w = len(lines[0])