uni-ocr 0.1.5

Native OCR for MacOS, Windows, Linux
Documentation
use serde::Serialize;
use std::fmt;

#[derive(Clone, Debug, Serialize, Hash, Eq, PartialEq)]
#[serde(rename_all = "kebab-case")]
#[repr(usize)]
pub enum Language {
    English,
    Chinese,
    German,
    Spanish,
    Russian,
    Korean,
    French,
    Japanese,
    Portuguese,
    Turkish,
    Polish,
    Catalan,
    Dutch,
    Arabic,
    Swedish,
    Italian,
    Indonesian,
    Hindi,
    Finnish,
    Hebrew,
    Ukrainian,
    Greek,
    Malay,
    Czech,
    Romanian,
    Danish,
    Hungarian,
    Norwegian,
    Thai,
    Urdu,
    Croatian,
    Bulgarian,
    Lithuanian,
    Latin,
    Malayalam,
    Welsh,
    Slovak,
    Persian,
    Latvian,
    Bengali,
    Serbian,
    Azerbaijani,
    Slovenian,
    Estonian,
    Macedonian,
    Nepali,
    Mongolian,
    Bosnian,
    Kazakh,
    Albanian,
    Swahili,
    Galician,
    Marathi,
    Punjabi,
    Sinhala,
    Khmer,
    Afrikaans,
    Belarusian,
    Gujarati,
    Amharic,
    Yiddish,
    Lao,
    Uzbek,
    Faroese,
    Pashto,
    Maltese,
    Sanskrit,
    Luxembourgish,
    Myanmar,
    Tibetan,
    Tagalog,
    Assamese,
    Tatar,
    Hausa,
    Javanese,
}

impl Language {
    pub fn as_lang_code(&self) -> &'static str {
        match self {
            Language::English => "en",
            Language::Chinese => "zh",
            Language::German => "de",
            Language::Spanish => "es",
            Language::Russian => "ru",
            Language::Korean => "ko",
            Language::French => "fr",
            Language::Japanese => "ja",
            Language::Portuguese => "pt",
            Language::Turkish => "tr",
            Language::Polish => "pl",
            Language::Catalan => "ca",
            Language::Dutch => "nl",
            Language::Arabic => "ar",
            Language::Swedish => "sv",
            Language::Italian => "it",
            Language::Indonesian => "id",
            Language::Hindi => "hi",
            Language::Finnish => "fi",
            Language::Hebrew => "he",
            Language::Ukrainian => "uk",
            Language::Greek => "el",
            Language::Malay => "ms",
            Language::Czech => "cs",
            Language::Romanian => "ro",
            Language::Danish => "da",
            Language::Hungarian => "hu",
            Language::Norwegian => "no",
            Language::Thai => "th",
            Language::Urdu => "ur",
            Language::Croatian => "hr",
            Language::Bulgarian => "bg",
            Language::Lithuanian => "lt",
            Language::Latin => "la",
            Language::Malayalam => "ml",
            Language::Welsh => "cy",
            Language::Slovak => "sk",
            Language::Persian => "fa",
            Language::Latvian => "lv",
            Language::Bengali => "bn",
            Language::Serbian => "sr",
            Language::Azerbaijani => "az",
            Language::Slovenian => "sl",
            Language::Estonian => "et",
            Language::Macedonian => "mk",
            Language::Nepali => "ne",
            Language::Mongolian => "mn",
            Language::Bosnian => "bs",
            Language::Kazakh => "kk",
            Language::Albanian => "sq",
            Language::Swahili => "sw",
            Language::Galician => "gl",
            Language::Marathi => "mr",
            Language::Punjabi => "pa",
            Language::Sinhala => "si",
            Language::Khmer => "km",
            Language::Afrikaans => "af",
            Language::Belarusian => "be",
            Language::Gujarati => "gu",
            Language::Amharic => "am",
            Language::Yiddish => "yi",
            Language::Lao => "lo",
            Language::Uzbek => "uz",
            Language::Faroese => "fo",
            Language::Pashto => "ps",
            Language::Maltese => "mt",
            Language::Sanskrit => "sa",
            Language::Luxembourgish => "lb",
            Language::Myanmar => "my",
            Language::Tibetan => "bo",
            Language::Tagalog => "tl",
            Language::Assamese => "as",
            Language::Tatar => "tt",
            Language::Hausa => "ha",
            Language::Javanese => "jw",
        }
    }
}

impl fmt::Display for Language {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        write!(f, "{}", self.as_lang_code())
    }
}

impl PartialEq<&str> for Language {
    fn eq(&self, other: &&str) -> bool {
        self.to_string().as_str() == *other
    }
}

pub const TESSERACT_LANGUAGES: [(&str, &str); 76] = [
    ("eng", "english"),
    ("chi_sim", "chinese"),
    ("deu", "german"),
    ("spa", "spanish"),
    ("rus", "russian"),
    ("kor", "korean"),
    ("fra", "french"),
    ("jpn", "japanese"),
    ("por", "portuguese"),
    ("tur", "turkish"),
    ("pol", "polish"),
    ("cat", "catalan"),
    ("nld", "dutch"),
    ("ara", "arabic"),
    ("swe", "swedish"),
    ("ita", "italian"),
    ("ind", "indonesian"),
    ("hin", "hindi"),
    ("fin", "finnish"),
    ("vie", "vietnamese"),
    ("heb", "hebrew"),
    ("ukr", "ukrainian"),
    ("ell", "greek"),
    ("msa", "malay"),
    ("ces", "czech"),
    ("ron", "romanian"),
    ("dan", "danish"),
    ("hun", "hungarian"),
    ("nor", "norwegian"),
    ("tha", "thai"),
    ("urd", "urdu"),
    ("hrv", "croatian"),
    ("bul", "bulgarian"),
    ("lit", "lithuanian"),
    ("lat", "latin"),
    ("mal", "malayalam"),
    ("cym", "welsh"),
    ("slk", "slovak"),
    ("fas", "persian"),
    ("lav", "latvian"),
    ("ben", "bengali"),
    ("srp", "serbian"),
    ("aze", "azerbaijani"),
    ("slv", "slovenian"),
    ("est", "estonian"),
    ("mkd", "macedonian"),
    ("nep", "nepali"),
    ("mon", "mongolian"),
    ("bos", "bosnian"),
    ("kaz", "kazakh"),
    ("sqi", "albanian"),
    ("swa", "swahili"),
    ("glg", "galician"),
    ("mar", "marathi"),
    ("pan", "punjabi"),
    ("sin", "sinhala"),
    ("khm", "khmer"),
    ("afr", "afrikaans"),
    ("bel", "belarusian"),
    ("guj", "gujarati"),
    ("amh", "amharic"),
    ("yid", "yiddish"),
    ("lao", "lao"),
    ("uzb", "uzbek"),
    ("fo", "faroese"),
    ("pus", "pashto"),
    ("mlt", "maltese"),
    ("san", "sanskrit"),
    ("lb", "luxembourgish"),
    ("mya", "myanmar"),
    ("bod", "tibetan"),
    ("tgl", "tagalog"),
    ("asm", "assamese"),
    ("tat", "tatar"),
    ("hau", "hausa"),
    ("jav", "javanese"),
];