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