2

我想从 PDF 文件中提取文本。我可以成功安装 tesseract(它在终端中工作)和 textract(按照说明)。

但是,当我运行代码时,出现错误。

text = textract.process(
    '/Users/Text/en.pdf',
    method='tesseract',
    language='eng',
)

错误是:

/usr/local/lib/python3.4/site-packages/textract-1.4.0-py3.4.egg/textract/parsers/pdf_parser.py in extract_tesseract(self, filename, **kwargs)
     62                 page_content = TesseractParser().extract(page_path, **kwargs)
     63                 contents.append(page_content)
---> 64             return ''.join(contents)
     65         finally:
     66             shutil.rmtree(temp_dir)

TypeError: sequence item 0: expected str instance, bytes found

我尝试了几次修改,但它们从来没有工作,我得到了同样的错误。

  1. return b''.join(contents)
  2. contents = [str(item) for item in contents]之前插入return
  3. contents = [item.decode("utf-8") for item in contents]之前插入return
4

1 回答 1

2

实际上,我在日语 Stackoverflow (スタックオーバーフロー)中做了同样的问题并得到了解决方案。以下是我翻译的核心部分。(谢谢,@mjy)。

注意:此修改至少适用于英语。

  1. 在第 64 行pdf_parser.py
    更改return ''.join(contents)

    return "".join(item.decode('utf-8') if isinstance(item, bytes) else item for item in contents)
    
  2. 但是,会发生另一个错误。

    NameError: name 'unicode' is not defined

  3. 在第 54 行中utils.py,更改if isinstance(text, unicode): (...cont...)

    if isinstance(text, str):
        return text
    
于 2016-07-16T16:25:37.927 回答