When deciding on OCR, check for presence of text rather than a font

It appears to be possible to have a PDF with an embedded font that is
either unused or used only for whitespace. So check for some amount of
actual text instead.
This commit is contained in:
Jim Barlow
2015-02-08 17:38:27 -08:00
parent dc2a4ab044
commit f0f6b57c87
+7 -6
View File
@@ -90,12 +90,13 @@ def pdf_get_pageinfo(infile, page, width_pt, height_pt):
pageinfo['height_inches'] = height_pt / 72.0
pageinfo['images'] = []
p_pdffonts = Popen(['pdffonts', '-f', str(page), '-l', str(page), infile],
close_fds=True, stdout=PIPE, stderr=PIPE,
universal_newlines=True)
pdffonts, _ = p_pdffonts.communicate()
if len(pdffonts.splitlines()) > 2:
logger.info("Page already contains font data!")
p_pdftotext = Popen(['pdftotext', '-f', str(page), '-l', str(page),
'-raw', '-nopgbrk', infile, '-'],
close_fds=True, stdout=PIPE, stderr=PIPE,
universal_newlines=True)
text, _ = p_pdftotext.communicate()
if len(text.strip()) > 0:
logger.info("Page already contains text!")
pageinfo['has_text'] = True
else:
pageinfo['has_text'] = False