I am extracting text from a pdf file using pdfminer, and below is my code:
def parse(fname):
fp = open(fname, 'rb')
parser = PDFParser(fp)
doc = PDFDocument(parser)
parser.set_document(doc)
rsrcmgr = PDFResourceManager()
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
interpreter = PDFPageInterpreter(rsrcmgr, device)
parsed = []
for page in PDFPage.create_pages(doc):
print(page)
interpreter.process_page(page)
layout = device.get_result()
page = []
pagebuffer = []
flag = False
for x in layout:
if(isinstance(x, LTTextBox)):
pagebuffer += [x.get_text()]
if(x.get_text()[-1] == "\n"):
flag = False
page += pagebuffer
pagebuffer = []
parsed += [page]
fp.close()
return parsed
This code works fine with one of my pdf files, I can successfully extract text, but while I tried to extract the other file, the error came:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
c:\HL\PDF parsing\pdfparsing pdfminer.ipynb Cell 6 in <cell line: 2>()
1 file_path = "X:\Matters\BV\DD&A\8 - Pdf to Excel\Goldman Sachs - October 31, 2021.pdf"
----> 2 parse(file_path)
c:\HL\PDF parsing\pdfparsing pdfminer.ipynb Cell 6 in parse(fname)
13 for page in PDFPage.create_pages(doc):
14 print(page)
---> 15 interpreter.process_page(page)
16 layout = device.get_result()
17 page = []
File c:\Users\Hlin\Anaconda3\lib\site-packages\pdfminer\pdfinterp.py:841, in PDFPageInterpreter.process_page(self, page)
839 ctm = (1, 0, 0, 1, -x0, -y0)
840 self.device.begin_page(page, ctm)
--> 841 self.render_contents(page.resources, page.contents, ctm=ctm)
842 self.device.end_page(page)
843 return
File c:\Users\Hlin\Anaconda3\lib\site-packages\pdfminer\pdfinterp.py:852, in PDFPageInterpreter.render_contents(self, resources, streams, ctm)
849 if self.debug:
850 logging.info('render_contents: resources=%r, streams=%r, ctm=%r' %
851 (resources, streams, ctm))
--> 852 self.init_resources(resources)
...
--> 672 CMapParser(self.unicode_map, BytesIO(strm.get_data())).run()
673 elif self.cidcoding in ('Adobe-Identity', 'Adobe-UCS'):
674 if ttf:
TypeError: a bytes-like object is required, not 'str'
Is there any idea what can I do for this situation?
Thanks a lot!