/// <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);
}
}
}