From d6124c17878a99f8ed7dde24a7c83c35cca79899 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Wed, 2 Dec 2015 03:12:52 -0800 Subject: [PATCH] pageinfo: improve robustness of text test for Tesseract produced PDFs --- ocrmypdf/pageinfo.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/ocrmypdf/pageinfo.py b/ocrmypdf/pageinfo.py index ff9b1452..7923ccc6 100644 --- a/ocrmypdf/pageinfo.py +++ b/ocrmypdf/pageinfo.py @@ -104,6 +104,24 @@ def _find_page_images(page, pageinfo): yield image +def _page_has_text(pdf, page): + # Simple test + text = page.extractText() + if text.strip() != '': + return True + + # More nuanced test to deal with quirks of Tesseract PDF generation + # Check if there's a Glyphless font + font = page['/Resources']['/Font'] + font_objects = list(font.keys()) + for font_object in font_objects: + basefont = font[font_object]['/BaseFont'] + if basefont.endswith('GlyphLessFont'): + return True + + return False + + def _pdf_get_pageinfo(infile, page: int): pageinfo = {} pageinfo['pageno'] = page @@ -112,8 +130,7 @@ def _pdf_get_pageinfo(infile, page: int): pdf = pypdf.PdfFileReader(infile) page = pdf.pages[page - 1] - text = page.extractText() - pageinfo['has_text'] = (text.strip() != '') + pageinfo['has_text'] = _page_has_text(pdf, page) width_pt = page['/MediaBox'][2] - page['/MediaBox'][0] height_pt = page['/MediaBox'][3] - page['/MediaBox'][1]