Russian (Русский) - Change language

Задание нескольких вариантов значений статического текста Поиск статического текста со схожими значениями

Для поиска различного рода заголовков форм, таблиц, полей (а также любого текста, присутствующего на всех или многих изображениях документа) в программе FlexiLayout Studio предусмотрен элемент типа Static Text. Если на разных изображениях, которые предполагается обрабатывать с помощью одного и того же гибкого определения документа, встречаются разные варианты заголовков, по смыслу относящиеся к одному и тому же элементу формы (например, у поля «Номер счета» могут быть заголовки Invoice, Invoice:, Invoice № и т.п.), то в диалоге свойств элемента Static Text необходимо задать все варианты значений статического текста, даже если они отличаются только знаками препинания, поставленными после значимого слова.

Это необходимо делать по следующим причинам:

  1. Для формирования гипотезы, соответствующей заданному значению. Например, если не задать вариант с двоеточием: « Invoice: », а задать только « Invoice », - то двоеточие не попадет в гипотезу заголовка. Тогда оно может попасть в область поиска номера счета, который, будет искаться справа от статического текста. Если поиск номера допускает наличие нецифровых (или незаданных) символов, то двоеточие может попасть в гипотезу элемента, ищущего номер счета.
  2. Для того чтобы при поиске заголовка не штрафовать гипотезу за наличие в ней символов, не указанных при задании значения в окне Search text. Например, если задать в секции Search text значение “ Invoice: ”, а на обрабатываемых изображениях встретится также заголовок “ Invoice# ”, то, если для данного элемента допускается некоторый процент ошибок (в данном случае, не менее одной ошибки), гипотеза заголовка будет сформирована, но ее качество будет оштрафовано.
  3. При имеющихся вариантах гипотез типа " Invoice|Invoice: " программа более длинной гипотезе даст чуть более высокую оценку, чтобы при прочих равных условиях гипотеза " Invoice: " была предпочтительнее. А именно, при наличии варианта с « : » вариант без " : " будет оштрафован на 0.001, т.к. строка “ Invoice ” является подстрокой “ Invoice: ”. Штраф более короткого заголовка, который является подстрокой другого, при наличии на форме обоих вариантов позволяет выиграть более длинной гипотезе.

Рассмотрим на примере проекта StaticText.fsp (папка %public%\ABBYY\FlexiCapture\12.0\Samples\FLS\Tips and Tricks\Variants of StaticText), каким образом задание значений статического текста влияет на нахождение заголовка и самого поля “Номер счета”.

В проекте находятся 5 страниц:

  • Страница 1 - поле «Номер счета» имеет заголовок “INVOICE”;
  • Страница 2 – поле «Номер счета» имеет заголовок “Invoice:”;
  • Страница 3 – поле «Номер счета» имеет заголовок “Invoice #:”;
  • Страница 4 – поле «Номер счета» имеет заголовок “Invoice -”;
  • Страница 5 – поле «Номер счета» имеет заголовок “Invoice:”, а также на странице присутствует поле “Invoice date”, в составе заголовка которого встречается слово “Invoice”.

В диалоге свойств элемента Static Text с именем InvoiceHeader задан список всех значений заголовка, которые могут встретиться на обрабатываемых формах (в нашем случае – это перечисленные выше значения). Регистр написания вариантов заголовков не имеет значения.

Invoice|Invoice:|Invoice#:|Invoice-.

Замечание. Для ускорения процедуры поиска элемента заголовка все варианты пишутся без пробела, однако наличие или отсутствие пробела в тексте гипотезы не оказывает влияние на качество гипотезы.

Для простоты будем считать, что номер счета всегда расположен правее заголовка. Для поиска номера счета создан элемент типа Character String с именем InvoiceNumber. Для него задан алфавит и условия поиска на вкладке Relations. Эти настройки не содержат сложностей для понимания. Поэтому останавливаться на них не будем. Их можно посмотреть непосредственно в проекте.

В дереве проекта создан текстовый блок Invoice. В качестве Source element в нем указан элемент InvoiceNumber.

Как можно видеть в пакете проекта после запуска процедуры анализа всех страниц, заголовок и номер счета на всех страницах найдены правильно.

Теперь попробуйте временно удалить все значения статического текста в элементе InvoiceHeader, оставив лишь первое значение (Invoice) и наложите гибкое описание на все страницы. Вы увидите, что заголовок и номер счета найдены правильно только на первой странице, на которой заголовок полностью совпадает с заданным значением (Invoice). На страницах 2-4 в номер счета попала также часть заголовка. А на странице 5 поле номера вообще было найдено ошибочно.

Теперь верните все удаленные значения. Рассмотрим результат анализа 5 страницы, на которой слово Invoice присутствует дважды. Как можно видеть, программа сформировала 5 гипотез для элемента InvoiceHeader. Из них максимальный показатель качества (Chain quality = 1, в нашем случае совпадает с Pre-search quality) имеет гипотеза, соответствующая заголовку “Invoice:”. Также были сформированы гипотезы, имеющие значения “Invoice” и “Invoice d”, являющиеся производными от значений, заданных для элемента InvoiceHeader с учетом допустимого процента ошибок. Эти гипотезы были оштрафованы (как упоминалось выше при рассмотрении причин необходимости задания всех значений статического текста), и в итоге их качество оказалось хуже.

01.12.2020 7:04:05


Please leave your feedback about this article