如何在C#中获取Genesis Tesseract 4的逐字符置信度及关联区域
解决方案:获取逐字符置信度并关联分割区域
要同时获取每个字符的置信度及其对应的分割区域,你需要使用PageIterator遍历OCR结果的Symbol级别(单个字符),替代原来单独调用文本、置信度和区域的方法。以下是修改后的实现代码:
... private TesseractEngine tesseract = new TesseractEngine(path, "eng", EngineMode.LstmOnly); .... using (var page = tesseract.Process(image, rec, PageSegMode.Auto)) { // 初始化PageIterator遍历单个字符 using (var iterator = page.GetIterator()) { iterator.Begin(); // 循环遍历所有字符 do { // 获取当前字符的文本内容 string charText = iterator.GetText(PageIteratorLevel.Symbol); // 获取当前字符的置信度值 float charConfidence = iterator.GetConfidence(PageIteratorLevel.Symbol); // 获取当前字符的矩形区域坐标 System.Drawing.Rectangle charRect = iterator.GetBoundingBox(PageIteratorLevel.Symbol); // 按需求格式输出结果 Console.WriteLine($"{charRect.X} {charRect.Y} {charRect.Width} {charRect.Height} \"{charText}\" - confidence:{charConfidence}"); } while (iterator.Next(PageIteratorLevel.Block, PageIteratorLevel.Symbol)); } }
关键说明:
PageIteratorLevel.Symbol指定遍历单位为单个字符,确保能获取每个字符的独立数据。GetConfidence(PageIteratorLevel.Symbol)直接返回当前字符的置信度,而非单词或页面的平均值。GetBoundingBox(PageIteratorLevel.Symbol)返回字符的精确矩形区域,无需再单独调用GetSegmentedRegions做手动关联。
内容的提问来源于stack exchange,提问作者MR.ROBOT
相关产品推荐
相关产品推荐

