unstructured Minor ocr_interface.py错误处理改进

jmp7cifd  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(45)

ocr_interface.py文件中,如果代码能在get_instance(...)函数中处理importlib.import_module(module_name),那就太好了。
当我不断收到来自get_agent(...)函数的错误时,我感到非常困惑。
经过几个小时的挖掘后,结果发现我只是没有安装pandas(大笑)

exdqitrt

exdqitrt1#

根据您提供的错误信息,实际上是在以下代码中产生的:
https://github.com/Unstructured-IO/unstructured/blob/main/unstructured/partition/utils/ocr_models/ocr_interface.py#L38

class OCRAgent(ABC):
    """Defines the interface for an Optical Character Recognition (OCR) service."""

    @classmethod
    def get_agent(cls) -> OCRAgent:
        """Get the configured OCRAgent instance.

The OCR package used by the agent is determined by the `OCR_AGENT` environment variable.
"""
        ocr_agent_cls_qname = cls._get_ocr_agent_cls_qname()
        try:
            return cls.get_instance(ocr_agent_cls_qname)
        except (ImportError, AttributeError):
            raise ValueError(
                f"Environment variable OCR_AGENT must be set to an existing OCR agent module,"
                f" not {ocr_agent_cls_qname}."
            )

这段文字的开头非常相似 :)
我认为针对这种情况的正确解决方案是同时打印原始错误信息和 "Environment variable ..." 消息。
我猜测在您的案例中触发错误的原因是类似于 ImportError: cannot import package 'pandas' 之类的东西,而在那种情况下,可能正是您需要的指针 :)
您对这个想法有什么看法?
实现方式可以是这样的:

try:
            return cls.get_instance(ocr_agent_cls_qname)
        except (ImportError, AttributeError) as e:
            raise ValueError(
                f"Environment variable OCR_AGENT must be set to an existing OCR agent module,"
                f" not {ocr_agent_cls_qname}: {str(e)}"
            )

相关问题