Source code for langchain_community.tools.edenai.ocr_invoiceparser

from __future__ import annotations

import logging
from typing import Optional

from langchain_core.callbacks import CallbackManagerForToolRun

from langchain_community.tools.edenai.edenai_base_tool import EdenaiTool

logger = logging.getLogger(__name__)


[docs]class EdenAiParsingInvoiceTool(EdenaiTool): """查询Eden AI发票解析API的工具。 要使用,请设置环境变量``EDENAI_API_KEY``,并使用您的API令牌。您可以在此处找到您的令牌:https://app.edenai.run/admin/account/settings""" name = "edenai_invoice_parsing" description = ( "A wrapper around edenai Services invoice parsing. " """Useful for when you have to extract information from an image it enables to take invoices in a variety of formats and returns the data in contains (items, prices, addresses, vendor name, etc.) in a structured format to automate the invoice processing """ "Input should be the string url of the document to parse." ) language: Optional[str] = None """传递给模型的图像的语言。""" feature = "ocr" subfeature = "invoice_parser" def _parse_response(self, response: list) -> str: formatted_list: list = [] if len(response) == 1: self._parse_json_multilevel( response[0]["extracted_data"][0], formatted_list ) else: for entry in response: if entry.get("provider") == "eden-ai": self._parse_json_multilevel( entry["extracted_data"][0], formatted_list ) return "\n".join(formatted_list) def _run( self, query: str, run_manager: Optional[CallbackManagerForToolRun] = None, ) -> str: """使用这个工具。""" query_params = { "file_url": query, "language": self.language, "attributes_as_list": False, } return self._call_eden_ai(query_params)