我正在尝试使用 PDFMiner python 绑定从大量 PDF 中提取文本。我编写的模块适用于许多 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?我不太确定从这里去哪里。
非常感谢!
编辑:
我尝试使用 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 字符后停止解析。这似乎暗示了其他情况,但我非常无能为力。有什么想法吗?