【问题标题】:How can I run pytesseract / tesseract in Foundry Code Repositories?如何在 Foundry 代码库中运行 pytesseract / tesseract?
【发布时间】:2022-08-09 15:56:27
【问题描述】:

我正在尝试使用存储库中库 pytesseract 中的函数 image_to_string 来执行 PDF 的 OCR。但是,我收到以下错误:

从检查中我会假设库已正确加载:

有谁知道如何在这里解决问题?

    标签: tesseract python-tesseract palantir-foundry foundry-code-repositories


    【解决方案1】:

    Foundry 似乎不尊重/运行环境激活脚本 https://github.com/conda-forge/tesseract-feedstock/blob/main/recipe/activate.sh 自动设置TESSDATA_PREFIX 环境变量。但是,我们可以手动推断该值并将其提供给 pytesseract API 调用。

    定义以下辅助函数:

    def _get_tessdata_directory_path():
        import sys
        from pathlib import Path
        env_root = Path(sys.executable).parent.parent
        share_dir = env_root / 'share' / 'tessdata'
        assert share_dir.exists(), 'tessdata directory does not exist in <envroot>/share/tessdata'
        return str(share_dir)
    

    并像下面的 sn-p 所示使用它:

    tessdata_dir_config = f'--tessdata-dir "{_get_tessdata_directory_path()}"'
    pytesseract.image_to_string(image, ..., config=tessdata_dir_config)
    

    【讨论】:

    • 感谢您创建这些。或者,您是否尝试过从 CI shell 脚本部分调用它?它的缺点是它可能会被更新配置的自动 PR 覆盖,因此您需要小心合并。如果您点击“显示隐藏的文件和文件夹”,您可以在 ci.yml 上看到它
    • 您能否在 ci.yml 中发布如何执行上述操作的示例?通常,由于文件顶部的警告,我们避免修改 ci.yml...(请勿修改或删除此文件。)
    • 所以修改 CI 的主要问题是每当你升级你的 repo 时它都会被覆盖。我实际上不知道在这里回答什么。我个人的看法是,我认为只要你小心你正在做的事情,我认为你应该可以修改它,并且如果整个 repo 失败,不要打开支持请求。我需要考虑这个':)
    • 我们已经在支持下进行了讨论。作为客户,我们需要一些不会因 PR 升级而中断的东西,否则我们不会使用它;)
    • 我遇到了同样的问题,从 pytesseract 基本示例开始并收到此错误:pytesseract.pytesseract.TesseractNotFoundError: tesseract is not installed or it's not in your PATH.我不确定在哪里可以找到路径信息 - 您的 Palantir 客户支持是否能够为您提供此信息?我也试过你的功能,但我得到了 tessdata 不存在异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2017-11-27
    • 2013-05-14
    相关资源
    最近更新 更多