File size: 1,265 Bytes
734b5b4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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
|