Я пытаюсь извлечь текст из большого количества PDF файлов, используя привязки python PDFMiner. Модуль, который я написал, работает для многих PDF файлов, но я получаю эту несколько загадочную ошибку для подмножества PDF файлов:
трассировка стека ipython:
/usr/lib/python2.7/dist-packages/pdfminer/pdfparser.pyc in set_parser(self, parser)
331 break
332 else:
--> 333 raise PDFSyntaxError('No /Root object! - Is this really a PDF?')
334 if self.catalog.get('Type') is not LITERAL_CATALOG:
335 if STRICT:
PDFSyntaxError: No /Root object! - Is this really a PDF?
Конечно, я сразу же проверил, были ли повреждены эти PDF файлы, но их можно прочитать просто отлично.
Есть ли способ прочитать эти PDF файлы, несмотря на отсутствие корневого объекта? Я не слишком уверен, куда идти отсюда.
Большое спасибо!
Edit:
Я попытался использовать PyPDF в попытке получить дифференциальную диагностику. Трассировка стека ниже:
In [50]: pdf = pyPdf.PdfFileReader(file(fail, "rb"))
---------------------------------------------------------------------------
PdfReadError Traceback (most recent call last)
/home/louist/Desktop/pdfs/indir/<ipython-input-50-b7171105c81f> in <module>()
----> 1 pdf = pyPdf.PdfFileReader(file(fail, "rb"))
/usr/lib/pymodules/python2.7/pyPdf/pdf.pyc in __init__(self, stream)
372 self.flattenedPages = None
373 self.resolvedObjects = {}
--> 374 self.read(stream)
375 self.stream = stream
376 self._override_encryption = False
/usr/lib/pymodules/python2.7/pyPdf/pdf.pyc in read(self, stream)
708 line = self.readNextEndLine(stream)
709 if line[:5] != "%%EOF":
--> 710 raise utils.PdfReadError, "EOF marker not found"
711
712 # find startxref entry - the location of the xref table
PdfReadError: EOF marker not found
Quonux предположил, что, возможно, PDFMiner прекратил синтаксический анализ после достижения первого символа EOF. Казалось бы, это говорит иначе, но я очень невежественный. Любые мысли?