Spaces:
Configuration error
Configuration error
| import logging | |
| import os | |
| from langchain_core.tools import StructuredTool | |
| from pydantic import BaseModel, Field | |
| import easyocr | |
| logger = logging.getLogger(__name__) | |
| class ImageParserInput(BaseModel): | |
| task_id: str = Field(description="Task identifier") | |
| file_path: str = Field(description="Path to the image file") | |
| async def image_parser_func(task_id: str, file_path: str) -> str: | |
| """ | |
| Parse text from an image file using OCR. | |
| Args: | |
| task_id (str): Task identifier. | |
| file_path (str): Path to the image file. | |
| Returns: | |
| str: Extracted text or error message. | |
| """ | |
| try: | |
| if not os.path.exists(file_path): | |
| logger.warning(f"Image file not found: {file_path}") | |
| return "Image file not found" | |
| logger.info(f"Parsing image: {file_path} for task {task_id}") | |
| reader = easyocr.Reader(['en'], model_storage_directory='./cache') | |
| result = reader.readtext(file_path, detail=0) | |
| text = " ".join(result).strip() | |
| return text if text else "No text extracted from image" | |
| except Exception as e: | |
| logger.error(f"Error parsing image for task {task_id}: {e}") | |
| return f"Error: {str(e)}" | |
| image_parser_tool = StructuredTool.from_function( | |
| func=image_parser_func, | |
| name="image_parser_tool", | |
| args_schema=ImageParserInput, | |
| coroutine=image_parser_func | |
| ) |