Не существует свойства «Глобальное признание доверия». Предполагается, что разработчики будут вычислять их самостоятельно, используя свои собственные критерии доверия. Самый простой способ - итерация каждого персонажа, проверка свойства CharParams.IsSuspicious. Вот пример кода (C#) для FREngine 11
//Statistics counters
//Count of all suspicious symbols in layout
private int suspiciousSymbolsCount;
//Count of all unrecognized symbols in layout
private int unrecognizedSymbolsCount;
//Count of all nonspace symbols in layout
private int allSymbolsCount;
//Count of all words in layout
private int allWordsCount;
//Count of all not dictionary word in layout
private int notDictionaryWordsCount;
private void processImage()
{
// Create document
FRDocument document = engineLoader.Engine.CreateFRDocument();
try {
// Add image file to document
displayMessage("Loading image...");
string imagePath = Path.Combine(FreConfig.GetSamplesFolder(), @"SampleImages\Demo.tif");
document.AddImageFile(imagePath, null, null);
//Recognize document
displayMessage("Recognizing...");
document.Process(null);
// Calculate text statistics
displayMessage("Calculating statistics...");
clearStatistics();
for(int i = 0; i < document.Pages.Count; i++) {
calculateStatisticsForLayout(document.Pages[i].Layout);
}
//show calculated statistics
displayStatistics();
} catch(Exception error) {
MessageBox.Show(this, error.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally {
// Close document
document.Close();
}
}
private void calculateStatisticsForLayout(Layout layout)
{
LayoutBlocks blocks = layout.Blocks;
for(int index = 0; index < blocks.Count; index++) {
calculateStatisticsForBlock(blocks[index]);
}
}
void calculateStatisticsForBlock(IBlock block)
{
if(block.Type == BlockTypeEnum.BT_Text) {
calculateStatisticsForTextBlock(block.GetAsTextBlock());
} else if(block.Type == BlockTypeEnum.BT_Table) {
calculateStatisticsForTableBlock(block.GetAsTableBlock());
}
}
void calculateStatisticsForTextBlock(TextBlock textBlockProperties)
{
calculateStatisticsForText(textBlockProperties.Text);
}
void calculateStatisticsForTableBlock(TableBlock tableBlockProperties)
{
for(int index = 0; index < tableBlockProperties.Cells.Count; index++) {
calculateStatisticsForBlock(tableBlockProperties.Cells[index].Block);
}
}
void calculateStatisticsForText(Text text)
{
Paragraphs paragraphs = text.Paragraphs;
for(int index = 0; index < paragraphs.Count; index++) {
calculateStatisticsForParagraph(paragraphs[index]);
}
}
void calculateStatisticsForParagraph(Paragraph paragraph)
{
calculateCharStatisticsForParagraph(paragraph);
calculateWordStatisticsForParagraph(paragraph);
}
void calculateCharStatisticsForParagraph(Paragraph paragraph)
{
for(int index = 0; index < paragraph.Text.Length; index++)
{
calculateStatisticsForChar(paragraph, index);
}
}
void calculateStatisticsForChar(Paragraph paragraph, int charIndex)
{
CharParams charParams = engineLoader.Engine.CreateCharParams();
paragraph.GetCharParams(charIndex, charParams);
if(charParams.IsSuspicious)
{
suspiciousSymbolsCount++;
}
if(isUnrecognizedSymbol(paragraph.Text[charIndex]))
{
unrecognizedSymbolsCount++;
}
if(paragraph.Text[charIndex] != ' ')
{
allSymbolsCount++;
}
}
void calculateWordStatisticsForParagraph(Paragraph paragraph)
{
allWordsCount += paragraph.Words.Count;
for(int index = 0; index < paragraph.Words.Count; index++)
{
if(!paragraph.Words[index].IsWordFromDictionary)
{
notDictionaryWordsCount ++;
}
}
}
bool isUnrecognizedSymbol(char symbol)
{
//it is special constant used by FREngine recogniser
return (symbol == 0x005E);
}
void displayStatistics()
{
labelAllSymbols.Text = "All symbols: " + allSymbolsCount.ToString();
labelSuspiciosSymbols.Text = "Suspicious symbols: " + suspiciousSymbolsCount.ToString();
labelUnrecognizedSymbols.Text = "Unrecognized symbols: " + unrecognizedSymbolsCount.ToString();
labelAllWords.Text = "All words: " + allWordsCount.ToString();
labelNotDictionaryWords.Text = "Non-dictionary words: " + notDictionaryWordsCount.ToString();
}
хорошо, просто сделайте это немного понятным. То, что я ищу, - это сводка доверия к коду для всего сканирования - есть ли возможность fnc для объекта Engine? в выходном файле RAW есть уверенность для каждого символа, но его слишком подробно ... –
, вероятно, вы должны спросить об этом на форуме ABBYY здесь: http://forum.ocrsdk.com – Tomato