How to fix - TypeError: int() argument must be a string, a bytes-like object or a number, not 'PSKeyword'?

Viewed 271

I'm attempting to extract text from a pdf file using pdfminer and I am getting this problem, but only for some files. The code runs well on certain pdfs, but returns this error message for others. This is my code (Which I've copied over from other threads in this forum):

import io
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage
def extract_text_from_pdf(pdf_path):
    resource_manager = PDFResourceManager()
    fake_file_handle = io.StringIO()
    converter = TextConverter(resource_manager, fake_file_handle)
    page_interpreter = PDFPageInterpreter(resource_manager, converter)

    with open(pdf_path, 'rb') as fh:
        for page in PDFPage.get_pages(fh, 
                                      caching=True,
                                      check_extractable=True):
            page_interpreter.process_page(page)
        
        text = fake_file_handle.getvalue()

    # close open handles
    converter.close()
    fake_file_handle.close()

    if text:
        return text

if __name__ == '__main__':
    print(extract_text_from_pdf('test.pdf'))*

This is the error that I get:

Traceback (most recent call last):
  File "pdf.py", line 28, in <module>
    print(extract_text_from_pdf('test.pdf'))
  File "pdf.py", line 13, in extract_text_from_pdf
for page in PDFPage.get_pages(fh,
  File "C:\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfminer\pdfpage.py", line 129, in get_pages
    doc = PDFDocument(parser, password=password, caching=caching)
  File "C:\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfminer\pdfdocument.py", line 566, in __init__
xref.load(parser)
  File "C:\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfminer\pdfdocument.py", line 195, in load
(_, obj) = parser.nextobject()
  File "C:\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfminer\psparser.py", line 616, in nextobject
self.do_keyword(pos, token)
  File "C:\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pdfminer\pdfparser.py", line 79, in do_keyword
(objid, genno) = (int(objid), int(genno))
TypeError: int() argument must be a string, a bytes-like object or a number, not 'PSKeyword'

I've been attempting to search for solutions to this problem but am yet to be successful. Appreciate the help! Thanks guys.

0 Answers
Related