/// <summary> /// Used to initialize Tesseract OCR library /// </summary> /// <param name="languageId">Language ID</param> public void Initialize(string languageId) { if(m_Handle == IntPtr.Zero) { m_Handle = TesseractOCRBridge.CreateTesseractHandle(); } CoroutineRunner.RunCoroutine(InitializeRoutine(languageId)); }
/// <summary> /// Initializes tesseract's configuration list /// </summary> private void InitializeTesseractConfiguration() { IntPtr handle = TesseractOCRBridge.CreateTesseractHandle(); if(TesseractOCRBridge.Initialize(handle, Application.persistentDataPath + "/tessdata", "eng") == 0) { TesseractOCRBridge.PrintVariablesToFile(handle, "config"); } TesseractOCRBridge.EndTesseractHandle(handle); TesseractOCRBridge.DeleteMonitorHandle(handle); string defaultConfigPath = Path.Combine(Directory.GetCurrentDirectory(), "config"); if(File.Exists(defaultConfigPath)) { string[] lines = File.ReadAllLines(defaultConfigPath); m_TesseractDefaultConfigInfo = new TesseractConfigInfo[lines.Length]; for(int i = 0; i < lines.Length; i++) { string[] split = lines[i].Split('\t'); m_TesseractDefaultConfigInfo[i] = new TesseractConfigInfo() { name = split[0], value = split[1], description = split[2] }; } IComparer<TesseractConfigInfo> comparer = new AscendingCompare(); Array.Sort<TesseractConfigInfo>(m_TesseractDefaultConfigInfo, comparer); int defaultConfigLen = m_TesseractDefaultConfigInfo.Length; m_TesseractConfigInfo = new TesseractConfigInfo[defaultConfigLen]; Array.Copy(m_TesseractDefaultConfigInfo, m_TesseractConfigInfo, defaultConfigLen); File.Delete(defaultConfigPath); } string userDefinedConfigPath = "Assets/StreamingAssets/tessdata/configs"; if(Directory.Exists(userDefinedConfigPath)) { string[] configs = Directory.GetFiles(userDefinedConfigPath, "*.", SearchOption.TopDirectoryOnly); if(configs.Length == 1) { string[] lines = File.ReadAllLines(configs[0]); for(int i = 0; i < lines.Length; i++) { string[] split = lines[i].Split('\t'); int index = Array.FindIndex<TesseractConfigInfo>(m_TesseractConfigInfo, a => a.name == split[0]); if(index >= 0) { m_TesseractConfigInfo[index].value = split[1]; } } IComparer<TesseractConfigInfo> comparer = new AscendingCompare(); Array.Sort<TesseractConfigInfo>(m_TesseractDefaultConfigInfo, comparer); } } }