| from typing import Dict, List, Any | |
| class LanguageDetectionAgent: | |
| """Detects language for OCR optimization.""" | |
| LANGUAGES = { | |
| "est": ["on", "ja", "et", "ei", "oli", "mis", "kuidas"], | |
| "eng": ["the", "is", "and", "of", "to", "a", "in"], | |
| "rus": ["è", "è", "è", "è", "è", "è", "è"], | |
| } | |
| def process(self, extracted_text: str) -> Dict[str, Any]: | |
| """Detect language.""" | |
| language = self._detect(extracted_text) | |
| confidence = self._confidence_score(extracted_text, language) | |
| return { | |
| "detected_language": language, | |
| "confidence": confidence, | |
| "supported_languages": list(self.LANGUAGES.keys()), | |
| } | |
| def _detect(self, text: str) -> str: | |
| """Detect language from text.""" | |
| text_lower = text.lower() | |
| scores = {} | |
| for lang, keywords in self.LANGUAGES.items(): | |
| scores[lang] = sum(1 for kw in keywords if kw in text_lower) | |
| if max(scores.values()) > 0: | |
| return max(scores, key=scores.get) | |
| return "unknown" | |
| def _confidence_score(self, text: str, language: str) -> float: | |
| """Calculate confidence.""" | |
| if language == "unknown": | |
| return 0.0 | |
| return 0.8 | |