Spaces:
Runtime error
Runtime error
| import logging | |
| import threading | |
| from typing import Optional, Tuple | |
| from src.core.config import config | |
| from src.core.exceptions import ( | |
| DocumentProcessingError, | |
| ConversionError, | |
| ConfigurationError | |
| ) | |
| from src.services.document_service import DocumentService | |
| # Import all parsers to ensure they're registered | |
| from src import parsers | |
| # Global document service instance | |
| _document_service = DocumentService() | |
| def set_cancellation_flag(flag: threading.Event) -> None: | |
| """Set the reference to the cancellation flag from ui.py""" | |
| _document_service.set_cancellation_flag(flag) | |
| def is_conversion_in_progress() -> bool: | |
| """Check if conversion is currently in progress""" | |
| return _document_service.is_conversion_in_progress() | |
| def convert_file(file_path: str, parser_name: str, ocr_method_name: str, output_format: str) -> Tuple[str, Optional[str]]: | |
| """ | |
| Convert a file using the specified parser and OCR method. | |
| Args: | |
| file_path: Path to the file | |
| parser_name: Name of the parser to use | |
| ocr_method_name: Name of the OCR method to use | |
| output_format: Output format (Markdown, JSON, Text, Document Tags) | |
| Returns: | |
| tuple: (content, download_file_path) | |
| """ | |
| if not file_path: | |
| return "Please upload a file.", None | |
| try: | |
| # Use the document service to handle conversion | |
| content, output_path = _document_service.convert_document( | |
| file_path=file_path, | |
| parser_name=parser_name, | |
| ocr_method_name=ocr_method_name, | |
| output_format=output_format | |
| ) | |
| return content, output_path | |
| except ConversionError as e: | |
| # Handle user-friendly conversion errors | |
| if "cancelled" in str(e).lower(): | |
| return "Conversion cancelled.", None | |
| return f"Conversion failed: {e}", None | |
| except DocumentProcessingError as e: | |
| # Handle document processing errors | |
| return f"Document processing error: {e}", None | |
| except ConfigurationError as e: | |
| # Handle configuration errors | |
| return f"Configuration error: {e}", None | |
| except Exception as e: | |
| # Handle unexpected errors | |
| logging.error(f"Unexpected error in convert_file: {e}") | |
| return f"Unexpected error: {e}", None | |