python-3.x - 在Python3文本库中使用tesseract

标签 python-3.x tesseract python-tesseract

我想从 PDF 文件中提取文本。我可以成功安装 tesseract(它在终端中工作)和 textract(遵循 this 指令)。

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

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. 返回 b''.join(contents)
  2. return之前插入contents = [str(item) for item in content]
  3. 返回之前插入contents = [item.decode("utf-8") for item in content]

最佳答案

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

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

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

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

    NameError:名称“unicode”未定义

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

    if isinstance(text, str):
        return text
    

关于python-3.x - 在Python3文本库中使用tesseract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38340049/

相关文章:

python - 当数字从两位数变为一位数时,如何使屏幕上的字体居中?

python - python 3 中的 REST Web 服务?

android - OCR 使用 tess-two 库返回不正确的文本

python - 文件丢失或不兼容 : ImportError: DLL load failed: %1 is not a valid Win32 application

Python - 图像处理和光学字符阅读器

python - OCR 给出错误的输出

python - 子进程 PIPE 标准输出到两个不同的进程

python - 如何使用 PyQt5 在编辑器旁边打印文本

tesseract - 在 lubuntu 18.04 上安装 tesseract 3.04

android - 无法使用 language=eng 初始化 Tesseract API