[1] Настоящее изобретение в целом относится к вычислительным системам, более конкретно - к системам и способам обнаружения полей в неструктурированных электронных документах с использованием нейронных сетей.
УРОВЕНЬ ТЕХНИКИ
[2] Обнаружение текстовых полей в неструктурированных электронных документах является фундаментальной задачей в обработке, хранении и сопоставлении электронных документов. Традиционные подходы обнаружения полей могут включать использование большого количества настраиваемых вручную эвристик и поэтому могут требовать большого количества ручного труда.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[3] Варианты реализации настоящего изобретения описывают механизмы обнаружения текстовых полей в неструктурированных электронных документах с использованием нейронных сетей. Способ по настоящему изобретению включает: получение макета документа, содержащего множество полей, отнесение документа на основе его макета к первому типу документов из множества определенных типов документов, определение множества последовательностей символов в документе и обработка с помощью обрабатывающего устройства множества последовательностей символов в документе с применением первой нейронной сети, связанной с первым типом документов, для определения взаимосвязи между первым полем из множества полей с первой последовательностью символов из множества последовательностей символов в документе.
[4] Постоянный машиночитаемый носитель данных по настоящему изобретению содержит команды, которые при обращении к ним обрабатывающего устройства приводят к выполнению обрабатывающим устройством следующих операций: получение макета документа, содержащего множество полей, отнесение документа на основе его макета к первому типу документов из множества определенных типов документов, определение множества последовательностей символов в документе и обработка с помощью обрабатывающего устройства множества последовательностей символов в документе с применением первой нейронной сети, связанной с первым типом документов, для определения взаимосвязи между первым полем из множества полей с первой последовательностью символов из множества последовательностей символов в документе.
[5] Система по настоящему изобретению включает память и обрабатывающее устройство, оперативно соединенное с памятью, причем обрабатывающее устройство выполняет следующие операции: получение макета документа, содержащего множество полей, отнесение документа на основе его макета к первому типу документов из множества определенных типов документов, определение множества последовательностей символов в документе и обработка с помощью обрабатывающего устройства множества последовательностей символов в документе с применением первой нейронной сети, связанной с первым типом документов, для определения взаимосвязи между первым полем из множества полей с первой последовательностью символов из множества последовательностей символов в документе.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[6] Изложение сущности изобретения будет лучше понятно из приведенного ниже подробного описания и приложенных чертежей различных вариантов осуществления изобретения. Однако не следует считать, что чертежи ограничивают сущность изобретения конкретными вариантами осуществления; они предназначены только для пояснения и улучшения понимания сущности изобретения.
[7] На ФИГ. 1А представлена блок-схема примера вычислительной системы, в которой может выполняться реализация настоящего изобретения.
[8] На ФИГ. 1В представлен пример документа, который может использоваться для получения одной или более нейронных сетей, которые могут работать в соответствии с некоторыми вариантами реализации настоящего изобретения.
[9] На ФИГ. 2С представлена принципиальная схема, иллюстрирующая пример операций механизма распознавания полей, использующего механизм кластеризации и множество нейронных сетей для извлечения полей из документов в соответствии с некоторыми вариантами реализации настоящего изобретения.
[10] На ФИГ. 2В представлена принципиальная схема, иллюстрирующая пример операций механизма распознавания полей, использующего единую общую нейронную сеть для извлечения полей из документов в соответствии с некоторыми вариантами реализации настоящего изобретения.
[11] На ФИГ. 2С представлена принципиальная схема, иллюстрирующая пример нейронной сети, которая использует общий контекст документа для выявления полей, в соответствии с некоторыми вариантами реализации настоящего изобретения.
[12] На ФИГ. 3 представлена принципиальная схема, иллюстрирующая пример подсистемы нейронной сети, которая пересчитывает значения векторных представлений различных последовательностей символов исходного документа на основе общего контекста документа в соответствии с некоторыми вариантами реализации настоящего изобретения.
[13] На ФИГ. 4 представлена принципиальная схема, иллюстрирующая пример подсистемы нейронной сети, которая предсказывает класс поля, заполненного последовательностью символов, определенной на изображении документа, в соответствии с некоторыми вариантами реализации настоящего изобретения.
[14] На ФИГ. 5 представлена блок-схема, иллюстрирующая один пример способа выбора нейронной сети для извлечения полей из документов на основе макета документа в соответствии с некоторыми вариантами реализации настоящего изобретения.
[15] На ФИГ. 6 представлена блок-схема, иллюстрирующая один пример способа использования алгоритма кластеризации для выбора нейронной сети с целью извлечения полей из документов в соответствии с некоторыми вариантами реализации настоящего изобретения.
[16] На ФИГ. 7 представлена блок-схема, иллюстрирующая один пример способа обучения нейронной сети для извлечения полей из документов в соответствии с некоторыми вариантами реализации настоящего изобретения.
[17] На ФИГ. 8 представлена блок-схема, иллюстрирующая один пример способа переобучения нейронной сети при неверном определении нейронной сетью связи между полем и документом в соответствии с некоторыми вариантами реализации настоящего изобретения.
[18] На ФИГ. 9 представлена блок-схема, иллюстрирующая один пример способа добавления нейронной сети для определения того, что исходный документ не относится к ранее выявленным типам документов в соответствии с некоторыми вариантами реализации настоящего изобретения.
[19] На ФИГ. 10 представлена блок-схема последовательности операций, иллюстрирующая один пример способа, в котором используются нейронные сети для определения векторных представлений (например, словных эмбеддингов, word embeddings) для последовательностей символов, определенных на изображении документа, в соответствии с некоторыми вариантами реализации настоящего изобретения.
[20] На ФИГ. 11 представлена блок-схема последовательности операций, иллюстрирующая один пример способа, в котором используются нейронные сети для определения взаимосвязей между последовательностями символов и полями/таблицами документа, используя глобальный контекст документа, в соответствии с некоторыми вариантами реализации настоящего изобретения.
[21] На ФИГ. 12 представлена блок-схема последовательности операций, иллюстрирующая один пример способа, в котором используются нейронные сети для создания и проверки множества гипотез о связях между последовательностями символов и полями/таблицами документа, в соответствии с некоторыми вариантами реализации настоящего изобретения.
[22] На ФИГ. 13 проиллюстрирована блок-схема компьютерной системы в соответствии с некоторыми вариантами реализации настоящего изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[23] Описываются варианты реализации изобретения для обнаружения полей и таблиц в неструктурированных электронных документах с использованием нейронных сетей. Один из традиционных подходов к определению полей и соответствующих типов полей в таких документах основан на эвристиках. В случае эвристического подхода рассматривается большое количество (например, несколько сотен) документов, например, ресторанных счетов или квитанций, и накапливается статистика относительно того, какой текст (например, ключевые слова) используется рядом с определенным полем и где такой текст можно поместить относительно поля (например, в поле, справа, слева, выше, ниже). Например, эвристический подход может отслеживать, какое слово или слова часто расположены рядом с полем, указывающим общую сумму покупки, какое слово или слова находятся внутри или рядом с полем, указывающим на применимые налоги, какое слово или слова написаны внутри или рядом с полем, указывающим общую сумму оплаты по кредитной карте и т.д. На основе таких статистических данных при обработке нового счета можно определить, какие данные, обнаруженные в документе, соответствуют определенному полю. Однако эвристический подход не всегда работает точно, поскольку если по какой-либо причине счет был распознан с ошибками, а именно в словосочетаниях «Общий налог» и «Общий платеж» слова «налог» и «платеж» были распознаны плохо, то соответствующие значения могут быть неверно проклассифицированы.
[24] При другом традиционном подходе используются гибкие описания полей. Гибкие описания могут включать значительное количество различных шаблонов, указывающих на ожидаемое место нахождения того или иного поля в документе. Например, некоторые шаблоны могут указывать на то, что поле «Итого» может быть расположено непосредственно справа или непосредственно под словами «Итого» или «Итого оплачено» («Total paid») и т.д.
Работа гибких описаний полей зачастую становится затруднена в случаях, когда в документе имеется особое поле (например, в счете может быть указана общая сумма в долларах), но отсутствует отчетливое описание этого поля (например, может отсутствовать описание «Итого», «Total»).
[25] В связи с большим разнообразием мест нахождения различных полей в документах даже из одного источника может потребоваться создание большого количества шаблонов (иногда до нескольких тысяч), если клиент (например, банк или предприятие, занимающееся реализацией товаров и (или) услуг) имеет много заказчиков или деловых партнеров, для каждого из которых используются документы с особым форматом и макетом. По мере добавления новых поставщиков и типов документов в базу данных клиента количество шаблонов может соответствующим образом увеличиваться. Разработчик системы распознавания документов, вероятно, должен будет рассмотреть образцы дополнительных типов документов и создать дополнительные шаблоны с особыми гибкими описаниями полей для каждого нового типа документов. Такой подход имеет ряд недостатков. С одной стороны, новые документы могут содержать конфиденциальную информацию, которую клиент не может раскрыть разработчику. С другой стороны, у такого подхода отсутствует гибкость, и могут потребоваться значительные усилия со стороны разработчика для создания множества моделей обнаружения полей с учетом особых требований клиента. Например, один клиент может быть менее заинтересован в обнаружении полей, связанных со «Сбором налога», а вместо этого более заинтересован в итоговой сумме до налогообложения, тогда как другому клиенту необходимо собрать всю имеющуюся информацию о налогообложении. У некоторых клиентов могут иметься ограничения на поставку тех или иных товаров в определенные страны (или в определенные почтовые отделения), и, следовательно, для таких клиентов важно определить поля адреса в заказах на закупку перед их обработкой.
[26] Аспекты настоящего описания устраняют отмеченные выше и другие недостатки, предоставляя механизмы обнаружения полей в документах (например, в неструктурированном электронном документе) с использованием нейронных сетей. Описанные механизмы могут использоваться для анализа макета документа (document layout) и отнесения документа к определенному типу (кластеру) документов на основе его макета и для направления документа на определение полей с помощью одной из нейронных сетей для конкретного кластера. Модель нейронной сети может быть обучена на документах соответствующего типа. Для обучения каждой нейронной сети может потребоваться ограниченное количество документов, и такое обучение может выполняться на стороне клиента (а не на стороне разработчика). В результате разработчику не требуется получение доступа к конфиденциальной информации клиента. Помимо того, клиент может ограничить обнаружение полей только до полей, которые представляют действительный интерес для клиента и только для типов документов, которые фактически встречаются в работе клиента.
[27] Описанные варианты реализации настоящего изобретения дают возможность обучения модели машинного обучения, с учетом конкретного типа документа, с использованием лишь нескольких размеченных документов. В некоторых случаях для обучения модели машинного обучения может быть достаточного всего одного размеченного документа. По сравнению с имеющейся технологией распознавания документов это значительный шаг вперед. Поскольку зачастую достаточно лишь небольшого количества обучающих документов, это создает дополнительное преимущество, заключающееся в том, что обучение может происходить полностью на стороне заказчика.
[28] Используемый в данном документе термин «неструктурированный электронный документ» (также называемый в данном документе просто «документ») может относиться к любому документу, изображение которого может быть доступно для вычислительной системы, которая выполняет выявление полей. Изображение может быть отсканированным изображением, сфотографированным изображением или любым другим представлением документа, который может быть преобразован в форму данных, доступную для компьютера. Например, под термином «неструктурированный электронный документ» может подразумеваться файл, содержащий один или несколько элементов цифрового содержимого, которые могут быть переданы визуально для создания визуального представления электронного документа (например, на дисплее или на печатном носителе). В соответствии с различными вариантами реализации настоящего изобретения документ может быть представлен в виде файла любого подходящего формата, например, PDF, DOC, ODT, JPEG и др. Несмотря на то что документ может быть представлен в электронном (например, цифровом) формате, предполагается, что документ не имеет электронной структуры и что макет документа (document layout) - места расположения различных текстовых полей, таблиц, параграфов и т. д. - не указана в электронном виде. (Как, например, было бы, если бы документ был первоначально выпущен в электронном формате - электронный счет (е-invoice) или другие подобные электронные документы - с уже указанными местоположениями полей и таблиц.)
[29] «Документ» может представлять собой финансовый документ, юридический документ или любой другой документ, например, документ, который создается путем заполнения полей буквенно-цифровыми символами (например, буквами, словами, цифрами) или изображениями. «Документ» может представлять собой документ, который напечатан, набран или написан от руки (например, путем заполнения стандартной формы). «Документ» может представлять собой форму документа, который содержит множество полей, таких как текстовые поля (содержащие цифры, буквы, слова, предложения), графическое поле (содержащее логотип или любое другое изображение), таблицы (содержащие строки, столбцы, ячейки) и т.д. В контексте настоящего документа слово «поле» может относиться к полю данных в документе, содержащем буквенно-цифровые символы или элемент таблицы (строка, столбец, ячейка), при этом под термином «таблица» понимается любая графическая структура, например, структура, образованная линиями. Таблица может включать в себя ячейки, содержащие другие поля, такие, как любые поля, заполненные буквенно-цифровыми символами, и (или) поля, содержащие изображения (например, логотипы) и т.д.
[30] К документам для выявления полей, помимо прочего, могут относиться документы, имеющие стандартное содержимое (предопределяемое нормами или установившейся практикой хозяйственной деятельности), но гибкое распределение этого содержимого в документе - заявки на выдачу кредитов (в т. ч. ипотечных), договоры купли-продажи объектов недвижимости, графики платежей по кредиту, договоры страхования, полицейские рапорты, заказы на закупку, счета и т.д. В документах могут иметься поля, которые встречаются один раз или повторяются несколько раз в одной форме (например, номер документа, дата, общая сумма и т.д.), или поля, имеющие несколько значений (например, несколько номеров заказа, дат, адресов отгрузки, типов перевозимых товаров и т.д.).
[31] Под термином «тип поля» может подразумеваться тип содержимого, находящегося в поле. Например, типом поля может быть «имя», «наименование компании», «телефон», «факс», «адрес, «имя поставщика», «тип оплаты», «способ оплаты», «тип товара», «количество товара» или любая другая запись, которая может присутствовать в документе. Поле изображения может включать логотип компании, подпись, изображение товара, используемого вместо описания товара (или в дополнение к описанию товара), или любое другое изображение, которое может быть включено в документ.
[32] Описанные в данном документе методы позволяют автоматически обнаруживать поля в документах с использованием искусственного интеллекта. Методы могут обучать нейронную сеть обнаруживать поля в документах и классифицировать поля по предопределенным классам. Каждый из предопределенных классов может соответствовать типу поля. Нейронная сеть может содержать множество нейронов, связанных с получаемыми при обучении весами и смещениями. Такие нейроны могут быть организованы в слои. Нейронная сеть может быть обучена на обучающей выборке данных документов, содержащих известные поля и (или) таблицы. Например, обучающая выборка данных может содержать примеры документов, содержащих одно или более полей, в качестве исходных данных для обучения и один или более идентификаторов типа поля, которые правильно соответствуют одному или более полям/таблицам в качестве результата обучения. Исходные данные для обучения могут быть в виде размеченного (например, клиентом) документа, например, с выделением последовательности символов в документе (например, «11/26/2018») и соответствующего поля (например, «дата»), к которому принадлежит эта последовательность символов. (Может считаться, что последовательность символов представляет значение поля в документе).
[33] Нейронная сеть может построить наблюдаемый результат для каждых исходных данных для обучения. Наблюдаемый результат работы нейронной сети можно сравнить с результатом обучения, включенным в обучающую выборку данных, и ошибка может распространяться назад на предыдущие слои нейронной сети, параметры которой (веса и смещения нейронов) могут регулироваться соответствующим образом. В ходе обучения нейронной сети параметры нейронной сети могут быть отрегулированы для оптимизации точности предсказания.
[34] После обучения нейронная сеть может быть использована для автоматического распознавания полей в исходном документе и выбора наиболее вероятного типа поля для каждого из обнаруженных полей. Использование нейронных сетей может избавить от необходимости ручной разметки полей в документах на этапе их выявления. Использование описанных в данном документе механизмов обнаружения полей в документе может повысить качество результатов обнаружения за счет выполнения обнаружения полей с использованием обученной нейронной сети, которая сохраняет информацию о контексте всего документа. Например, нейронные сети, настроенные и обученные в соответствии с реализациями настоящего изобретения, могут быть способны повысить точность обнаружения полей и классификации типов полей на основе того, какие виды буквенно-цифровых последовательностей встречаются во всем документе. Например, нейронная сеть может определить числовую последовательность в нижнем левом углу документа, помеченную характерным жирным двоеточием, в качестве кода банка. Следовательно, нейронная сеть, обученная принимать во внимание контекст всего документа, может быть способна более точно обнаруживать другие поля того же документа, например, адрес, количество, номер счета группы, подпись или другие поля, обычно присутствующие на счете. Нейронная сеть, обученная в соответствии с вариантами реализации настоящего изобретения, может применяться для идентификации документов любого типа и может обеспечивать эффективное обнаружение полей, таким образом повышая как точность обнаружения, так и скорость обработки вычислительного устройства, реализующего такое обнаружение.
[35] На ФИГ. 1А представлена блок-схема примера вычислительной системы 100, в которой может выполняться реализация настоящего изобретения. Как показано на изображении, система 100 включает вычислительное устройство 110, хранилище 120 и сервер 150, подключенный к сети 130. Сеть 130 может быть общественной сетью (например, Интернет), частной сетью (например, локальной сетью (LAN) или распределенной сетью (WAN)), а также их комбинацией.
[36] Вычислительное устройство 110 может быть настольным компьютером, портативным компьютером, смартфоном, планшетным компьютером, сервером, сканером или любым подходящим вычислительным устройством, которое в состоянии использовать технологии, описанные в настоящем изобретении. В некоторых вариантах реализации изобретения вычислительное устройство 110 может быть и (или) включать одно или более вычислительных устройств 800 с ФИГ. 13.
[37] Документ 140 может быть получен вычислительным устройством 110. Документ 140 может содержать любой подходящий текст, изображения или таблицы, например один или более символов (буквы и (или) цифры), слов, предложений и т. д. Документ 140 может относиться к любому подходящему типу, например «визитная карточка», «счет», «паспорт», «полис медицинского страхования», «опросный лист» и т.д. В некоторых вариантах реализации тип документа 140 может быть указан пользователем и сообщен вычислительному устройству 110 вместе с документом 140.
[38] Документ 140 может быть получен любым подходящим способом. Например, вычислительное устройство 110 может получить цифровую копию документа 140 путем сканирования документа или фотографирования документа. Кроме того, в тех вариантах реализации изобретения, где вычислительное устройство 110 представляет собой сервер, клиентское устройство, которое подключается к серверу по сети 130, может загружать цифровую копию документа 140 на сервер. В тех вариантах реализации изобретения, где вычислительное устройство 110 является клиентским устройством, соединенным с сервером по сети 130, клиентское устройство может загружать документ 140 с сервера или из хранилища 120.
[39] Документ 140 может быть использован для обучения набора моделей машинного обучения или может быть новым документом, для которого следует выполнить обнаружение и (или) классификацию полей. В некоторых вариантах реализации при использовании для обучения одной или более моделей машинного обучения 114 (нейронных сетей) для последующего распознавания документ 140 может быть соответствующим образом подготовлен для облегчения обучения. Например, в документе 140 могут быть вручную или автоматически выбраны текстовые последовательности или элементы таблиц, могут быть отмечены символы, текстовые последовательности, графические изображения, или элементы таблиц могут быть нормализованы, масштабированы и (или) бинаризованы. В некоторых вариантах реализации изобретения текст в документе 140 может распознаваться с использованием любого подходящего метода оптического распознавания символов (OCR).
[40] В одном из вариантов реализации изобретения вычислительное устройство 110 может содержать механизм распознавания полей 111. Механизм распознавания полей 111 может содержать механизм кластеризации 112 для отнесения документа 140 к одному из двух или более типов документов (кластеров). В некоторых вариантах реализации механизм кластеризации 112 может быть интегрирован в механизм распознавания полей, при этом один механизм выполняет и кластеризацию документа, и распознавание полей. В некоторых вариантах реализации механизм распознавания полей 111 и механизм кластеризации 112 могут представлять собой два независимых компонента. В других реализациях механизм распознавания полей 111 и механизм кластеризации 112 могут совместно использовать некоторые общие компоненты (например, некоторые функции нейронной сети), но могут содержать другие компоненты, предназначенные для использования только одним из компонентов. Механизм распознавания полей 111 и (или) механизм кластеризации 112 может содержать инструкции, сохраненные на одном или более физических машиночитаемых носителях данных вычислительного устройства 110 и выполняемые на одном или более устройствах обработки данных вычислительного устройства 110.
[41] В одном из вариантов реализации изобретения механизм распознавания полей 111 и (или) механизм кластеризации 112 может использовать для обнаружения и (или) классификации полей/таблиц набор обученных моделей машинного обучения 114. Модели машинного обучения 114 обучаются и используются для обнаружения и (или) классификации полей в исходном документе. Некоторые из моделей машинного обучения 114 могут совместно использоваться механизмом распознавания полей 111 и механизмом кластеризации 112. В остальной части настоящего изобретения термин «механизм распознавания полей 111» следует понимать, как охватывающий также механизм кластеризации 112.
[42] Механизм распознавания полей 111 также может предварительно обрабатывать любые документы перед использованием таких документов для обучения моделей машинного обучения 114 и (или) применения обученных моделей машинного обучения 114 к документам. В некоторых вариантах реализации обученные модели машинного обучения 114 могут быть частью механизма обнаружения полей 111 или быть доступны с другой машины (например, сервера 150) через механизм обнаружения полей 111. На основе результатов работы обученных моделей распознавания полей 114 механизм распознавания полей 111 может обнаруживать в электронном документе одно или более полей и (или) таблиц и может классифицировать каждое из полей, относя их к одному из множества классов, соответствующих заранее определенным типам полей.
[43] Механизм распознавания полей 111 может быть клиентским приложением или же сочетанием клиентского компонента и серверного компонента. В некоторых вариантах реализации изобретения механизм распознавания полей 111 может быть запущен на исполнение исключительно на вычислительном устройстве клиента, например, это могут быть сервер, персональный компьютер, планшетный компьютер, смартфон, ноутбук, фотокамера, видеокамера и т. д. В альтернативном варианте реализации клиентский компонент механизма распознавания полей 111, исполняемый на клиентском вычислительном устройстве, может получать документ и передавать его на серверный компонент механизма распознавания полей 111, исполняемый на серверном устройстве, который выполняет обнаружение и (или) классификацию полей. Серверный компонент механизма распознавания полей 111 может затем возвращать результаты распознавания (например, определенный тип поля для обнаруженного поля или обнаруженной таблицы или связи слова с полем или ячейкой таблицы) в клиентский компонент механизма распознавания полей 111, исполняемый на клиентском вычислительном устройстве, для сохранения. При альтернативном подходе серверный компонент механизма распознавания полей 111 может передавать результат распознавания в другое приложение. В других вариантах реализации изобретения механизм распознавания полей 111 может исполняться на серверном устройстве в качестве интернет- приложения, доступ к которому обеспечивается через интерфейс браузера. Серверное устройство может быть представлено в виде одной или более вычислительных систем, например, одним или более серверов, рабочих станций, больших ЭВМ (мейнфреймов), персональных компьютеров (ПК) и т.д.
[44] Сервер 150 может быть стоечным сервером, маршрутизатором, персональным компьютером, карманным персональным компьютером, мобильным телефоном, портативным компьютером, планшетным компьютером, фотокамерой, видеокамерой, нетбуком, настольным компьютером, медиацентром или их сочетанием и (или) содержать указанное оборудование. Сервер 150 может содержать механизм обучения 151. Механизм обучения 151 может строить модель (модели) машинного обучения 114 для обнаружения полей. Модель (модели) 114 машинного обучения, приведенная на ФИГ. 1А, может быть обучена механизмом обучения 151 с использованием обучающих данных, которые содержат обучающие входные данные и соответствующие выходные данные обучения (правильные ответы на соответствующие обучающие входные данные). Механизм обучения 151 может находить в обучающих данных закономерности, которые связывают обучающие входные данные с выходными данными обучения (предсказанным ответом), и предоставлять модели машинного обучения 114, которые используют эти шаблоны. Как более подробно будет описано ниже, набор моделей машинного обучения 114 может быть составлен, например, из одного уровня линейных или нелинейных операций (например, машина опорных векторов (SVM)) или может представлять собой глубокую нейронную сеть, то есть модель машинного обучения, составленную из нескольких уровней нелинейных операций. Примерами глубоких нейронных сетей являются нейронные сети, включая сверточные нейронные сети, рекуррентные нейронные сети (RNN) с одним или более скрытыми слоями и полносвязные нейронные сети. В некоторых вариантах реализации изобретения модели машинного обучения 114 могут включать одну или несколько нейронных сетей, описанную применительно к ФИГ. 2-4.
[45] Модели машинного обучения 114 могут обучаться обнаружению полей в документе 140 и определять наиболее вероятный тип поля для каждого из полей в электронном документе 140. Например, механизм обучения 151 может создавать обучающие данные для обучения моделей машинного обучения 114. В одном из вариантов реализации механизм обучения 151 может в случайном порядке выбирать из каждого кластера документов один или более документов для разметки с целью использования в качестве обучающих документов. В некоторых вариантах реализации разметка выполняется оператором вручную перед размещением размеченного документа (оператором или механизмом обучения 151) в хранилище 120. Обучающие данные могут храниться в хранилище 120 и включать в себя один или более наборов обучающих входных данных 122 и один или более наборов выходных данных обучения 124. Такие обучающие данные могут также содержать данные сопоставления 126 обучающих входных данных 122 с выходными данными обучения 124. В некоторых вариантах реализации данные сопоставления 126 могут включать перечень, содержащий, по меньшей мере, несколько полей в обучающих входных данных 122, и перечень соответствия значениям полей. Например, данные сопоставления могут содержать поле «код позиции» и перечень из нескольких (или всех) значений, которые соответствуют полю «код позиции» в конкретном исходном обучающем документе. Обучающие входные данные 122 могут включать обучающую выборку документов, содержащих текст, изображения или таблицы (также - «обучающие документы»). Каждый из обучающих документов может быть документом, содержащим известное (например, размеченное) поле. Выходные данные обучения 124 могут быть классами, представляющими типы полей, соответствующие известным полям. Например, первый обучающий документ в первой обучающей выборке может содержать первое известное текстовое поле (например, «Джон Смит»), Первый обучающий документ может быть первым набором обучающих входных данных 122, который можно использовать для обучения модели (моделей) машинного обучения 114. Первые выходные данные обучения 124, соответствующие первым обучающим входным данным 122, могут содержать класс, соответствующий типу поля для известного текстового поля (например, «имя»), В ходе обучения механизм обучения 151 может находить шаблоны в обучающих данных 126, которые можно использовать для отображения обучающих входных данных на выходные данные обучения. Такие шаблоны могут быть впоследствии использованы моделью (моделями) машинного обучения 114 для дальнейшего предсказания. Например, после получения исходных данных с неизвестными текстовыми полями, содержащими неизвестный текст (например, одно или более неизвестных слов), обученная модель (модели) машинного обучения 114 может предсказать тип поля, к которому относится каждое неизвестное текстовое поле, и может вывести предсказанный класс, определяющий тип поля, в качестве результата. В качестве другого примера модель (модели) машинного обучения может выполнять поиск конкретных полей, представляющих интерес для клиента (например, полей, которые были обозначены клиентом как важные), и определять все значения (например, последовательности буквенно-цифровых символов) в документе, соответствующие таким полям.
[46] Хранилище 120 может представлять собой постоянную память, которая в состоянии сохранять электронные документы, а также структуры данных для выполнения распознавания символов в соответствии с вариантами реализации настоящего изобретения. Хранилище 120 может располагаться на одном или более запоминающих устройствах, таких как основное запоминающее устройство, магнитные или оптические запоминающие устройства на основе дисков, лент или твердотельных накопителей, NAS, SAN и т.д. Несмотря на то что хранилище изображено отдельно от вычислительного устройства 110, в одной из реализаций изобретения хранилище 120 может быть частью вычислительного устройства 110. В некоторых вариантах реализации хранилище 120 может представлять собой подключенный к сети файловый сервер, в то время как в других вариантах реализации изобретения хранилище содержимого 120 может представлять собой какой-либо другой тип энергонезависимого запоминающего устройства, например, объектно-ориентированную базу данных, реляционную базу данных и т. д., которая может находиться на сервере или одной или более различных машинах, подключенных к нему через сеть 130.
[47] В некоторых вариантах реализации изобретения механизм обучения 151 может обучать одну или более искусственных нейронных сетей (модели 114), каждая из которых содержит множество нейронов для обнаружения полей в соответствии с некоторыми вариантами реализации настоящего изобретения. Каждый нейрон может получать свои исходные данные от других нейронов или из внешнего источника и генерировать результат, применяя функцию активации к сумме взвешенных исходных данных и полученному при обучении значению смещения. Нейронная сеть может содержать множество нейронов, распределенных по слоям, включая входной слой, один или более скрытых слоев и выходной слой. Нейроны соседних слоев соединены взвешенными ребрами. Веса ребер определяются на этапе обучения сети на основе обучающей выборки данных, которая содержит множество документов с известной классификацией полей. В иллюстративном примере все веса ребер инициализируются некоторыми изначально назначенными случайными значениями. Для всех обучающих входных данных 122 в выборе обучающих данных механизм обучения 151 может активировать соответствующую нейронную сеть (выбор соответствующей нейронной сети может выполняться механизмом кластеризации 112). Наблюдаемый выход нейронной сети OUTPUTnn (ИСХОДНЫЕ ДАННЫЕ ОБУЧЕНИЯ) сравнивается с желаемыми выходными данными обучения 124, заданными обучающей выборкой:
Сравнение: OUTPUTnn (ИСХОДНЫЕ ОБУЧАЮЩИЕ ДАННЫЕ) в сравнении с РЕЗУЛЬТАТОМ ОБУЧЕНИЯ
Полученная погрешность - разница между выходом нейронной сети OUTPUTnn и желаемым РЕЗУЛЬТАТОМ ОБУЧЕНИЯ - распространяется обратно на предыдущие уровни нейронной сети, в которых веса настраиваются таким образом, чтобы изменить OUTPUTnn и приблизить его к РЕЗУЛЬТАТУ ОБУЧЕНИЯ. Такая корректировка может повторяться до тех пор, пока погрешность в результатах для конкретных обучающих входных данных 122 не будет удовлетворять заранее определенным условиям (например, станет ниже заранее определенного порогового значения). Впоследствии могут быть выбраны другие обучающие входные данные 122, может быть сгенерирован новый OUTPUTnn, может быть реализован новый ряд корректировок и т.д. до тех пор, пока нейронная сеть не будет обучена с достаточной степенью точности. В некоторых вариантах реализации данный метод обучения может применяться для обучения одной или более искусственных нейронных сетей, проиллюстрированных на ФИГ. 2-А.
[48] После обучения моделей машинного обучения 114 множество моделей машинного обучения 114 может использоваться механизмом распознавания полей 111 для анализа новых документов. Например, механизм распознавания полей 111 может вводить новый документ 140 и (или) признаки документа 140 в набор моделей машинного обучения 114 в качестве исходных данных. Механизм распознавания полей 111 может получать один или более результатов распознавания от множества обученных моделей машинного обучения и может извлекать из результатов распознавания один или более типов полей для каждого поля и (или) таблиц, обнаруженных в документе 140. Предполагаемый тип поля может включать определенный тип поля, соответствующий типу обнаруженного поля (например, «имя», «адрес», «наименование компании», «логотип», «адрес электронной почты» и т.д.).
[49] На Фиг. 1В представлен пример документа 140, который может использоваться для получения одной или более нейронных сетей, которые могут работать в соответствии с некоторыми вариантами реализации настоящего изобретения. Как показано на чертеже, документ 140 (например, счет) может содержать множество полей, например, «наименование и ярлык (логотип) компании», «наименование и адрес компании», «баркод», «имя и адрес» лица, которому выставляется счет, «имя и адрес» грузополучателя, «номер счета», «общая сумма», «дата», «количество» и т. д. Клиент, получивший документ 140, может быть более всего заинтересован в некотором подмножестве полей, например «номер счета», «дата», «общая сумма» и т. д. Документ 140 может использоваться в качестве обучающих входных данных 122, использующихся для обучения одной или более моделей 114 для распознавания этих полей.
[50] В одном из вариантов реализации одно или более полей в документе 140 могут быть размечены для использования в качестве обучающих входных данных 122. Например, поле «номер счета», содержащее значение «21580», может быть размечено путем включения в прямоугольник 141 (показан в виде прямоугольника с пунктирными линиями вокруг значения). Значение «12/26/2018» в поле «дата» может иметь аналогичную разметку с помощью другого пунктирного прямоугольника 142, а значение «$1,062.00» в поле «сумма к выплате» может быть размечено пунктирным прямоугольником 143. Документ 140, подготовленный как обучающие входные данные 122, может содержать данные сопоставления 126, связанные с документом 140. На основе данных сопоставления 126 было определено, что прямоугольники 141-143 соответствуют полям «номер счета», «дата» и «сумма к выплате». Например, на основе данных сопоставления можно установить соответствие между координатами размеченных прямоугольников и соответствующих полей. В некоторых вариантах реализации прямоугольники могут быть обозначены цветом, например, прямоугольник, соответствующий полю «номер счета», может быть зеленым, прямоугольник, соответствующий значению «дата», может быть красным, а прямоугольник, соответствующий полю «сумма к выплате», может быть синим. В размеченном документе 140 могут быть не определены все значения одинаковых или аналогичных полей. Например, как показано на ФИГ. 2, поле «дата отгрузки» и поле «срок» могут быть не размечены.
[51] После обучения модели 114 на основе размеченного документа 140, модель 114 может использоваться для поиска и определения полей и их значений в документе 140, который был размечен для обучения, а также полей/значений, которые ранее не были определены. Например, выход обученной модели 114 может включать прямоугольник 145 вокруг значения «номер счета» и прямоугольник 146 вокруг значения «дата», а также прямоугольник 148 вокруг значения «сумма к выплате» (показаны сплошными линиями). Обученная модель 114 также может служить для определения значения «12/26/2018» в поле «срок» 147 и значения «$1,062.00» в поле «итого» 149.
[52] На ФИГ. 2А представлена принципиальная схема, иллюстрирующая пример операций 200 механизма распознавания полей (например, механизм распознавания полей 111), использующего механизм кластеризации и множество нейронных сетей для извлечения полей из документов в соответствии с некоторыми вариантами реализации настоящего изобретения. Входные данные механизма распознавания полей 111 могут быть представлены пакетом документов 201. В некоторых вариантах реализации все документы в пакете 201 могут быть получены одновременно. В других вариантах реализации документы из пакета 201 могут быть получены в течение длительного периода времени, а обработка различных документов в пакете может выполняться в различное время. В целях настоящего документа предполагается, что пакет документов 201 может включать подборку физических документов и (или) электронных экземпляров документов (например, неструктурированные электронные документы). Если в пакете 201 были получены физические документы (например, на бумажном носителе, пленке и т. д.), механизм распознавания полей 111 или вычислительное устройство 110 (или сервер 150) могут получать изображения физических документов и преобразовывать изображения в цифровые изображения (например, путем сканирования), в одном из цифровых форматов (JPEG, TIFF, GIG, BMP, CGM, SVG и т. п.). Механизм распознавания полей 111 может также выполнять оптическое распознавание символов (OCR) текста в документе, а в некоторых вариантах реализации также разделять распознанный текст на множество последовательностей символов, представляющих различные слова, цифры, предложения, изображения и т. д. в документе.
[53] Некоторые документы из пакета 201 могут быть выбраны для обучения нейронных сетей (моделей) механизма распознавания полей 111. В некоторых вариантах реализации обучающие документы 202 (выделены затененной областью) могут быть выбраны в случайном порядке из пакета документов 201. В некоторых вариантах реализации изобретения обучающие документы 202 могут быть выбраны оператором (например, администратором на стороне клиента) вручную. В обучающих документах 202 могут быть размечены поля, представляющие интерес для клиента. Разметка может быть выполнена вручную оператором (например, тем же самым оператором, который выбирал обучающие документы или другим оператором). Оператор может являться сотрудником агента или клиента. В некоторых вариантах реализации разметка может выполняться компьютерным алгоритмом, например, алгоритмом, основанным на гибких описаниях полей.
[54] На этапе обучения обучающие документы 202 могут быть разделены на кластеры 204, при этом каждый кластер соответствует конкретному вендору или конкретному типу документа (операции на этапе обучения показаны на ФИГ. 2А штриховыми линиями). Например, документы одного вендора, которые могут выглядеть одинаково, могут быть связаны с кластером 1 (204-1), а документы другого вендора могут быть связаны с кластером 2 (204-2) и т. д. В некоторых вариантах реализации кластеры могут соответствовать конкретному типу документа. Например, заявки на выдачу ипотечных кредитов могут быть связаны с кластером 1 независимо от того, какой кредитной организацией была выдана форма заявки. В некоторых вариантах реализации оператор может распределить обучающие документы 202 по различным типам (кластерам) документов. В некоторых вариантах реализации распределение обучающих документов может выполняться механизмом кластеризации 112.
[55] Механизм кластеризации 112 может сначала определять компоновку документа, например, за счет определения положений (координат) заголовков, логотипов, абзацев, таблиц, предложений, слов, букв, изображений и штампов, присутствующих в документе. Исходя из макета документа механизм кластеризации 112 может использовать один из алгоритмов кластеризации, например автоэнкодеры (в т. ч. вариационные автоэнкодеры), кластеризация к- средних, ЕМ-алгоритмы (expectation-maximization algorithms), алгоритмы сдвига среднего значения, алгоритмы прекращения, алгоритмы обобщения, алгоритмы разложения одиночного значения или другие применимые алгоритмы.
[56] В некоторых вариантах реализации механизм кластеризации 112 может определять одно или более числовых значений, характеризующих макет (layout) документа (например, обучающего документа 202, однако на этапе извлечения аналогичная процедура также может применяться к неразмеченным документам 203). Все числовые значения могут описывать признаки макета. Признаки могут включать распределение темных и светлых пикселей в заданной сетке, наложенной на документ, присутствие различных слов в документе, частоту их появления в документе и т.д. Одно или более числовых значений, вычисленных для макета обучающего документа 202, могут быть сопоставлены с соответствующими значениями кластеров (центроидами). Близость значений документа к значениям кластеров можно определить с помощью функции схожести (функция близости, мера схожести) или функции различия. Например, макет обучающего документа 202 может быть определен (в рамках конкретного алгоритма кластеризации) на основе признаков документа X, Y, Z, ... j-й кластер может иметь значения центроида для этих особенностей, равные Xj, Yj, Zj,... Затем может быть определена функция различия (схожести), описывающая схожесть документа с j-м кластером, путем вычисления расстояния (пространство характеристики) между компоновкой документа и каждым из центроидов кластеров, например, hj= А(Х - Xj)2 + B(Y - Yj)2 + C(Z - Zj)2 + •••, с применением некоторых весовых коэффициентов А, В, С,… (которые сами по себе могут быть определены путем дополнительного обучения с использованием документов, относящихся к различным кластерам). В других вариантах могут использоваться другие функции различия. После определения функций различия ISj для каждого из выявленных кластеров механизм кластеризации 112 может определить соответствующий кластер j, для которого функция различия Aj имеет самое низкое значение и, следовательно, определить, что обучающий документ 202 относится к у-му кластеру (/'-й тип документов).
[57] Учитывая определенный кластер, механизм распознавания полей 111 может выбрать нейронную сеть (модель), которая соответствует определенному кластеру документов. Например, нейронная сеть 1 (210-1) может соответствовать кластеру 1 (204-1), а нейронная сеть 2 (210-1) - кластеру 2 (204-2) и т.д. Некоторые или все нейронные сети 210 могут быть представлены моделями 114 на ФИГ. 1А. Обучающие документы, для которых определена принадлежность к конкретному кластеру, могут использоваться для обучения нейронной сети, соответствующей этому конкретному кластеру. Обучение каждой нейронной сети может выполняться в соответствии с приведенным выше описанием путем сравнения результатов, сформированных нейронной сетью (по результатам исходных данных обучающего документа), с результатами обучения и путем корректировки (например, с использованием обратного распространения) параметров нейронной сети (веса, сдвига нейронных связей и т. д.) для минимизации различия между результатами обучения и фактическими результатами, полученными нейронной сетью. Например, исходные данные для обучения могут быть представлены изображением счета, а результаты обучения могут быть представлены разметкой соответствующих полей в изображении счета.
[58] После обучения одной или более нейронных сетей 210 обученные нейронные сети могут использоваться на этапе определения для распознавания полей в неразмеченных документах 203. (Операции на этапе определения показаны на ФИГ. 2А сплошными линиями). Исходные документы могут обрабатываться механизмом кластеризации 112. Механизм кластеризации 112 может разделять исходные документы 203 на несколько стэков для обработки соответствующими нейронными сетями. Например, документы 212-1, для которых установлена принадлежность к документам типа 1 (кластер 1), могут обрабатываться нейронной сетью 1 (210-1), документы 212-1, для которых установлена принадлежность к документам типа 2 (кластер 2), могут обрабатываться нейронной сетью 2 (210-2) и т. д. (дополнительные нейронные сети для краткости не показаны). Выход каждой нейронной сети 210 может быть представлен полями, определенными в каждом исходном документе 203 (если такие поля присутствуют), и значениями, связанными с определенными полями (например, числовое значение, связанное с полем «баланс»).
[59] В некоторых вариантах реализации изобретения обученная нейронная сеть (например, нейронная сеть 201-1) может не определить некоторые поля в исходном документе. В таких случаях механизм распознавания полей 111 может обозначить исходный документ как документ с нераспознанными полями. Выделенные документы 207 могут далее использоваться для повторного обучения соответствующей нейронной сети. Например, выделенные документы 207 могут быть размечены и использоваться для переобучения нейронной сети 201-1. В некоторых вариантах реализации механизм распознавания полей 111 может запускать повторное обучение после накопления определенного количества выделенных документов 207. В некоторых вариантах реализации механизм распознавания полей 111 может запускать переобучение после выделения даже одного документа 207. В некоторых вариантах реализации механизм распознавания полей 111 может периодически запускать переобучение, при условии что было выделено определенное минимальное количество документов (минимальное количество может быть равным одному, двум, трем или любому другому количеству документов).
[60] В некоторых вариантах реализации механизм кластеризации 112 может не отнести один или более исходных документов 203 к уже определенном типу документов. Например, один или более из исходных документов 203 могут быть документами, полученными от нового вендора. Механизм кластеризации 112 может отложить неклассифицированные документы 209 для использования при обновлении производительности механизма распознавания полей 111. Например, неклассифицированные документы 209 могут использоваться для установления нового кластера (например, кластер 204-N). До, после и во время установления нового кластера механизм распознавания полей 111 может создать новую нейронную сеть (например, сеть 210-N). Неклассифицированные документы 209 могут быть размечены обычным способом (например, путем определения полей, представляющих интерес для клиента) и использоваться для обучения новой нейронной сети. После обучения новая нейронная сеть может использоваться вместе с ранее существовавшими сетями для обработки последующих исходных документов.
[61] На ФИГ. 2В представлена принципиальная схема, иллюстрирующая пример операций 215 механизма распознавания полей (например, механизма распознавания полей 111), использующего единую общую нейронную сеть 210 для извлечения полей из документов в соответствии с некоторыми вариантами реализации настоящего изобретения. Примеры операции 215 могут включать обучение одной общей нейронной сети 210 с использованием полного пакета документов 201, включающего документы различных типов и (или) от различных вендоров. Некоторые документы (например, случайно выбранные документы) из стэка 201 могут быть размечены для обучения (например, документы 202) нейронной сети 210. После обучения новые (неразмеченные) документы 203 могут быть поданы в нейронную сеть 210 для распознавания полей. Если нейронная сеть 210 неверно определила значение некоторого поля или не смогла определить все необходимые поля в одном или более конкретных документах 207, документ(ы) 207 может быть помечен (например, с помощью механизма распознавания полей 111) и, после корректирующей разметки (например, человеком-оператором), использоваться для переобучения нейронной сети 210 (показано пунктирной линией «ПЕРЕОБУЧЕНИЕ»),
[62] В некоторых вариантах реализации по меньшей мере некоторые из обработанных документов могут быть отложены для последующего обновления нейронной сети 210. При обновлении некоторые из отложенных документов 216 могут быть размечены и использоваться в качестве исходных данных для обучения с целью обновления нейронной сети 210 («ОБНОВЛЕНИЕ»), Такое обновление может выполняться периодически в установленное время или может быть обусловлено скоплением конкретного количества обработанных (или отложенных) документов, или же оно может выполняться по указанию от клиента. Например, такое указание может быть выдано клиентом, если сеть 210 совершает значительное количество ошибок (например, больше определенного процента: 1 %, 2 %, 5 %, 10 % и т. д.). В некоторых вариантах реализации отложенные документы 216 могут представлять все ранее обработанные документы 201 или некоторую их часть, например, случайную выборку из всех ранее обработанных документов. В некоторых вариантах реализации отложенные документы 216 могут представлять срез по всем типам/вендорам. Например, определенное количество документов каждого типа (заказ на закупку, счет, накладная и т. д.) и (или) документов от каждого вендора могут быть отложены в случайном порядке для последующего обновления нейронной сети 210.
[63] На ФИГ. 2С представлена принципиальная схема, иллюстрирующая пример нейронной сети 210, которая использует общий контекст документа для выявления полей, в соответствии с некоторыми вариантами реализации настоящего изобретения. Нейронная сеть 210 может содержать множество нейронов, связанных с получаемыми при обучении весами и смещениями. Такие нейроны могут быть организованы в слои. Некоторые из слоев могут быть скрытыми. Как показано, нейронная сеть 210 может включать в себя подсистему А 240, подсистему В 260 и подсистему С 280. Каждая из подсистем 240, 260 и 280 может включать несколько нейронных слоев и может быть настроена для выполнения одной или более функций для обнаружения полей/таблиц в соответствии с настоящим изобретением.
[64] Нейронная сеть 210 может обрабатывать изображение документа 212, которое в различных вариантах реализации может являться изображением документа 140, изображением размеченного документа 201, изображением неразмеченного документа 203. Изображение 212 документа может быть получено путем визуализации (например, сканирования, фотографирования и т. д.) документа 140. В некоторых вариантах реализации визуализация может выполняться непосредственно перед обработкой изображения 212 документа нейронной сетью 210. В некоторых вариантах реализации визуализация может выполняться в некоторый момент в прошлом, и изображение документа 212 может быть получено из локального или сетевого (например, облачного) хранилища. Изображение документа 212 может подвергаться оптическому распознаванию символов (OCR) либо непосредственно перед дальнейшей обработкой нейронной сетью 210, либо в некоторый момент в прошлом. Оптическое распознавание символов может сопровождаться предварительной обработкой изображения документа 212 для улучшения его качества, например, масштабирования, изменения соотношения сторон, масштабирования серого, нормализации, увеличения данных, усиления, бинаризации и т. д.
[65] Результатом оптического распознавания символов изображения документа 212 может быть набор распознанных последовательностей символов SymSeq(x,y), связанных с координатами х, у изображения документа 212. Последовательности символов SymSeq могут содержать один или несколько буквенно-цифровых символов, которые могут быть объединены в слоги, слова и (или) предложения. Последовательности символов SymSeq могут представлять собой один или несколько знаков препинания, такие как запятая, точка, эллипсисы или любые другие знаки. Последовательности SymSeq могут быть горизонтальными, вертикальными или наклонными линиями таблиц, или трехсторонними или четырехсторонними пересечениями линий. Строки могут быть одинарными, двойными и т.д. Последовательности символов SymSeq могут быть любыми комбинациями символов, знаков пунктуации и (или) строк. В некоторых вариантах реализации для генерации последовательностей символов SymSeq, содержащихся в изображении документа 212, механизм распознавания полей 111 (или любой другой компонент, который выполняет или выполнил оптическое распознавание символов на изображении документа 212) может использовать подходящие способы распознавания символов, разделять текст документа на несколько слов и извлекать несколько последовательностей символов из слов.
[66] Выявленные последовательности символов SymSeq могут отображаться в соответствующих областях изображения документа 212, где расположены такие последовательности. Например, каждая последовательность SymSeq может быть связана с одним или несколькими наборами координат (х,у), которые определяют местоположения последовательностей. Координаты могут быть декартовыми или любыми другими (например, полярными) координатами, которые могут быть удобными при определении местоположений последовательностей символов. В одном из вариантов реализации отдельный символ, знак пунктуации или короткая строка могут быть определены одним набором координат (х,у), тогда как более длинные последовательности (слова, предложения, длинные строки) могут быть определены несколькими наборами (х,у), такими как координаты четырех углов области, содержащей последовательность. Линии могут быть определены по координатам двух концов линии. Пересечение двух линий (например, трехстороннее или четырехстороннее пересечение) может быть определено по координатам концов всех линий, а также по координатам пересечения. В настоящем изобретении (х,у) обозначает любое определение последовательностей символов с одним или более наборами координат, которые могут потребоваться для конкретной последовательности SymSeq.
[67] Механизм распознавания полей 111 может вводить последовательности символов SymSeq(x,y) в подсистему А 240 для того, чтобы генерировать представления векторов в пространстве признаков для каждой из последовательностей символов: SymSeq(x,y) vec(x,y). Каждый из векторов в пространстве признаков vec(x,y) может представлять собой символьные векторные эмбеддинги одной из последовательностей символов (например, слов/предложений, знаков пунктуации и (или) линий), что также упоминается как словный эмбеддинг (word embedding). В некоторых вариантах реализации изобретения каждое символьный векторный эмбеддинг в таблицах может иметь определенную длину (то есть заранее определенную длину). Если длина последовательности символов меньше определенной длины, то к ней могут быть добавлены заранее определенные значения для того, чтобы создать символьный векторный эмбеддинг заранее определенной длины (например, к векторам могут добавлены нули). Термин «символьный векторный эмбеддинг», используемый в данном документе, может означать вектор действительных чисел или любое другое цифровое представление последовательности символов. Векторный эмбеддинг можно получить, например, с помощью нейронной сети, реализующей математическое преобразование символов (слов/знаков пунктуации/строк таблиц) с помощью функций эмбеддинга, отображая такие символы на их цифровые представления.
[68] Словные векторные эмбеддинги vec(x,y) — также называемые в данном документе как векторные представления последовательностей символов SymSeq(x,y) или просто как «векторы» — могут быть созданы с использованием любой подходящей модели или комбинации моделей, таких как Word2Vec, GloVe, FastText и др. Подсистема А 240 может использовать множество нейронных слоев, таких как входной слой, выходной слой и один или несколько скрытых слоев. Подсистема А 240 может представлять собой рекуррентную нейронную сеть (RNN), RNN на уровне символов, долгую краткосрочную память (LSTM) или любую другую подобную сеть, включая любую комбинацию таких сетей. Подсистема А 240 может работать со словарем эмбеддингов, который может включать в себя векторные представления типичных слов, найденных в документах соответствующих типов. Подсистема А 240 может быть обучена генерировать такие векторные представления последовательностей символов SymSeq(x,y), которые имеют близкие числовые значения vec(x,y) для слов, имеющих близкие семантические значения (например, «число» и «количество»), или которые могут быть найдены в непосредственной близости друг от друга (например, «сумма» и «предложенная»). Подсистема А 240 может быть предварительно обучена с использованием обучающих входных данных 122 и выходных данных обучения 124, как описано выше. Документы, используемые на этапе обучения - обучающие входные данные 122 и выходные данные обучения 124 - могут быть документами того же типа, что и целевые документы (например, счета-фактуры, чеки, заказы на закупку и т. д.), которые следует использовать на этапе прогнозирования. Соответственно, несмотря на то, что словарь для словных векторных эмбеддингов SymSeq(x,y) может разрабатываться на этапе обучения для конкретного класса целевых документов, словные векторные эмбеддинги SymSeq(x,y) не обязательно должны принадлежать словарю эмбеддингов, предварительно обученному на некотором более широком классе документов (например, книги, газеты, журналы), которые не связаны с конкретным классом целевых документов. Обученная первая подсистема 240 может быть способна предсказать, какая последовательность символов SymSeq следует (или предшествует или примыкает в вертикальном или горизонтальном направлении) за конкретной последовательностью SymSeq. Прогнозы первой подсистемы 240 могут быть представлены в виде вероятностей. Например, обученная подсистема А 240 может быть в состоянии предсказать, что слову «сумма» предшествует слово «общая» с вероятностью 30 %, а за ним следует слово «предложенная» с вероятностью 15 %.
[69] В некоторых вариантах реализации выходные векторные представления в пространстве признаков vec(x,y) могут быть независимыми от конкретного местоположения (х,у) последовательности символов SymSeq. Более конкретно, координаты (х,у) последовательности символов SymSeq(x,y) могут служить геометрическим идентификатором последовательности, но ее векторное представление vec(x,y) может быть одинаковым независимо от того, где на изображении находится последовательность. Например, подсистема А 240 может назначать одинаковые вероятности того, что различные последовательности символов SymSeq (например, «город», штат») находятся в непосредственной близости от слова «улица». В других вариантах реализации векторные представления vec(x,y) одной и той же последовательности символов SymSeq могут отличаться в зависимости от местоположения последовательности в документе (или в пределах изображения документа 212). Например, выходные данные подсистемы А 240 - векторные представления слов, например «эскроу», - могут варьироваться в зависимости от местоположения (х,у) слова внутри изображения документа 212. Соответственно, векторное представление слова «эскроу» может быть ближе (в векторном пространстве) к представлениям одного множества слов, если «эскроу» встречается в середине документа, но ближе к представлениям другого множества слов, если «эскроу» находится в нижней части документа. Векторные представления конкретного слова могут также зависеть от типа документа. Например, слово «сумма» может быть по-разному представлено в договоре, передающем право в недвижимости, и в заказе на покупку.
[70] В результате, если М последовательностей символов (символов, знаков пунктуации, слов, предложений) определены на изображении документа 212 и введены в подсистему А 240, выходные данные первой подсистемы могут представлять собой множество из М векторов (векторов в пространстве признаков) {vec(x,y)}. Каждый из М векторов vec(x,y) может зависеть от контекста всего документа — типа документа, количества слов в документе, расположения текста в документе, расположения некоторых или всех слов в документе и т.д.
[71] Векторное пространство для векторов vec(x,y) может иметь ряд измерений N, выбранных в зависимости от сложности документа. В некоторых вариантах реализации N может быть равно 128 (32, 64 или любому другому числу). Число N может быть выбрано большим с целью представления последовательности символов сложного документа и, наоборот, меньшим для более простых документов, имеющих ограниченный словарный запас слов. Для заданного числа измерений N каждый вектор может иметь N компонентов, vec(x,y) = (zi, Z2, ... zn), где zj может быть двоичным числом, десятичным числом или любым другим числом, доступным для компьютера. В некоторых вариантах реализации некоторые из векторов vec(x,y), определенных подсистемой А 240, например более короткие слова или знаки пунктуации, могут содержать меньше N чисел. В таких вариантах реализации остальным компонентам вектора могут быть назначены нулевые значения, так что общая длина всех векторов может быть одинаковой.
[72] Выходные данные подсистемы А 240 могут быть схематически представлены в виде параллелепипеда (куба) 250, составленного из компонентов отдельных векторов в множестве {vec(x,y)}. В направлениях плоскостей х и у область изображения 212 документа может быть дискретизирована нар ячеек в направлении х и л ячеек в направлении у (например, р = 32 и л = 64, в одном примерном варианте реализации). Слово (символ, предложение) с центром в конкретной ячейке (х,у) может иметь свое векторное представление vec(x,y) = (zi, Z2, … zn), представленное в виде последовательности блоков (ячеек), расположенных в третьем направлении, как схематически показано на ФИГ. 2С для углового вектора. Другие векторы могут быть аналогичным образом размещены в других ячейках параллелепипеда 250, называемого в данном документе «кубом», при этом следует помнить, что число ячеек в каждом из трех направлений может отличаться от количества ячеек в двух других, где s хр х N - общее количество ячеек в «кубе». Для формирования куба может использоваться функция Мар (например, Gather).
[73] Некоторые ячейки (или вертикальные грани) куба 250 могут быть пустыми (например, заполнены нулями). Например, ячейки, расположенные над координатами (х,у), которые соответствуют пустым пространствам изображения документа 212, могут содержать все нули. Строка (в направлении х) или столбец (в направлении у) могут содержать все нули для всех своих векторов, если такая строка или столбец не содержит символов (например, попадает между строками текста). Даже в тех строках/столбцах, которые содержат символы, некоторые ячейки (или даже большинство ячеек) могут быть заполнены нулями. Например, если j-я строка содержит десять слов, а горизонтальный размер изображения 212 документа дискретизирован на 32 ячейки, в данной строке могут присутствовать только 10 ненулевых векторов vec(x,y), разделенных 22 нулевыми векторами. В некоторых вариантах реализации векторы (х,у), которые не имеют по меньшей мере одного ненулевого компонента, могут быть исключены из куба.
[74] Куб 250, имеющий s х р х N ячеек, содержащих множество {vec(x,y)} из М выявленных векторов, соответствующих выявленным последовательностям символов, может быть введен в подсистему В 260 для пересчета векторов {vec(x,y)} {VEC (х,у)} с учетом общего контекста всего документа. Подсистема В 260 может содержать одну или более нейронных сетей (как поясняется ниже со ссылкой на ФИГ. 3), которые могут модифицировать компоненты векторных представлений vec(x,y) последовательностей символов с учетом всех других векторов куба 250. В результате пересчитанные значения VEC(x,y)=(Zi, Z2, … Z2N) могут учитывать контекст всего документа. Более конкретно, пересчитанные значения VEC(x,y)=(Zi, Z2, … Z2N), выводимые подсистемой В 260, могут учитывать наличие всех других последовательностей символов в документе, а также содержимое каждого из таких символов последовательности.
[75] Новый куб 270, содержащий множество пересчитанных векторов {VEC(x,y)}, может быть введен в подсистему С 280 для прогнозирования класса каждой последовательности символов, выявленной в изображении документа 212. В некоторых вариантах реализации ядро системы распознавания полей 111 может использовать модель (модели) машинного обучения 114 для генерации гипотез о последовательностях символов SymSeq 220 документа (представленного набором векторов {VEC(x,y)}), принадлежащих различным классам полей в исходном документе 140, как описано более подробно ниже со ссылкой на ФИГ. 4. Классами поля могут быть: «название поставщика», «тип товара», «количество товара», «номер заказа», «тип отправки», «место доставки», «дата заказа», «вид оплаты» и т.д. В некоторых вариантах реализации различные классы полей могут быть предварительно заданы для по меньшей мере некоторых типов документов и введены в третью подсистему 280 в виде множества внешних параметров. В других вариантах реализации различные классы, которые могут присутствовать в документе, могут быть определены третьей подсистемой 280, которая может быть обучена определять тип исходного документа (например, «счет-фактура», «заказ», «счет» и т. д.) и предсказывать классы полей, которые могут присутствовать в определенном типе исходного документа.
[76] Некоторые из компонентов, показанных на ФИГ. 2С, могут быть объединены. Например, в одном из вариантов реализации подсистемы А, В и С могут быть реализованы в виде одной нейронной сети. В некоторых вариантах реализации подсистемы А и В могут быть реализованы как одна сеть, в то время как подсистема С может быть реализована как отдельная сеть. В некоторых вариантах реализации подсистемы В и С могут быть реализованы как одна сеть, в то время как подсистема А может быть реализована как отдельная сеть. В тех вариантах реализации, где множество подсистем реализуются объединенной единой сетью, функции разных подсистем объединенной сети могут быть реализованы отдельными выделенными уровнями или совместно используемыми уровнями или их комбинацией.
[77] На ФИГ. 3 представлена принципиальная схема, иллюстрирующая пример подсистемы 300 нейронной сети, которая пересчитывает значения векторных представлений различных последовательностей символов исходного документа на основе общего контекста документа в соответствии с некоторыми вариантами реализации настоящего изобретения. В одном из вариантов реализации подсистема 300 нейронной сети может быть подсистемой В 260. Подсистема 300 нейронной сети может быть реализована механизмом распознавания полей 111.
[78] Куб 250, содержащий множество {vec(x,y)} векторов, соответствующих выявленным последовательностям символов SymSeq, может быть введен в подсистему 300. Подсистема 300 может включать в себя одну или более нейронных сетей, каждая из которых содержит множество слоев нейронов. В некоторых вариантах реализации подсистема 300 может включать в себя две нейронные сети, сеть горизонтального прохода 310 и сеть вертикального прохода 320. В некоторых вариантах реализации сеть горизонтального прохода 310 и сеть вертикального прохода 320 могут быть сетями с долгой краткосрочной памятью (LSTM). В других вариантах реализации сеть горизонтального прохода 310 и сеть вертикального прохода 320 могут быть сетями RNN или LSTM, основанными на механизме внимания (Attention-based LSTM).
[79] Сеть горизонтального прохода 310 и сеть вертикального прохода 320 могут выполнять множество проходов в горизонтальном (х) и вертикальном (у) измерениях куба 250. Более конкретно, сеть горизонтального прохода 310 может выбирать в последовательных итерациях каждый из s столбцов основания (нижняя плоскость ячеек), а сеть вертикального прохода 320 может аналогично выбирать каждую из р строк основания. Нулевые векторы (те, которые содержат все нули) могут игнорироваться, например могут быть пропущены. Сеть горизонтального прохода 310 и сеть вертикального прохода 320 могут пересчитывать векторные компоненты, vec(x,y)=(zi, Z2, ... zn) VEC(x,y)=(Zi, Z2, ... Zn) для некоторых или всех векторов {vec(x,y)}, так что значения VEC(x,y)=(Zi, Z2, ... Zn) пересчитываются на основе значений всех векторов {vec(x,y) } документа, и, следовательно, новые значения {VEC(x,y)} могут зависеть от контекста (типа, содержимого) всего документа.
[80] В одном примерном варианте реализации векторный пересчет может быть выполнен следующим образом. Сеть горизонтального прохода 310 может итеративно выбирать последовательные значения столбцов j, так что 1 <j < s. Для каждого / сеть горизонтального прохода 310 может определять плоскость векторных компонентов zi (xj,yk), zi (xj,yk), … zn (Xj,yk), расположенных в ячейке куба 250, имеющих один и тот же индекс столбца /, но разные возможные индексы строк к. Сеть горизонтального прохода 310 может затем использовать параметры (например, весовые коэффициенты и смещения) сети 310 для изменения значений векторных компонентов zi (xj,yk), zi (xj,yk), … zn (xj,yk) на основе значений в предыдущей плоскости, zi (xj-i,yk), zi (xj-i,yk), … zn (xj-i,yk), или фиксированного числа (два, три, десять или любое другое число) предыдущих плоскостей. В некоторых вариантах реализации значения для плоскости столбца j могут быть пересчитаны на основе всех предыдущих плоскостей, имеющих индексы от 1 до j-1. После пересчета значений компонентов вектора zi (xj,yk), zi (Xj,yk), … zn (Xj,yk)) для плоскости столбца j сеть горизонтального прохода 310 может приступить к пересчету значений компонентов вектора для следующей плоскости, zi (xj+i,yk), zi (xj+i,yk), ... zn (xj+i,yk) и т.д., пока все столбцы куба 250 не будут пересчитаны.
[81] Сеть горизонтального прохода 310 может выполнять несколько горизонтальных проходов, как описано выше. В некоторых вариантах реализации некоторые из проходов могут выполняться в обратном направлении, например, начиная с j=s и продолжая в направлении меньших значений j, пока столбец /= 1 не будет достигнут и пересчитан.
[82] Сеть вертикального прохода 320 может также выбирать в последовательных итерациях каждую из р строк базовой плоскости ячеек куба 250 и аналогичным образом пересчитывать компоненты вектора на основе значений всех векторов {vec(x,y)} документа. Например, сеть вертикального прохода 320 может итеративно выбирать последовательные значения строк к, так что 1 < к < р. Для каждого к сеть вертикального прохода 320 может определять плоскость векторных компонентов z\ (xj,yk), zi (xj,yk), ... zn (xj,yk), расположенных в ячейке куба 250, имеющих один и тот же индекс строки к, но различные возможные индексы столбцов j. Сеть вертикального прохода 320 может затем использовать параметры (например, весовые коэффициенты и смещения) сети 320 для изменения значений компонент вектора zi (xj,yk), zi (xj,yk), … ZN (xj,yk) на основе значений в предыдущей плоскости, х\ (xj,yk-i), zi (xj,yk-i), … zn (xj,yk-i), или фиксированного числа (два, три, десять или любое другое число) предыдущих плоскостей. В некоторых вариантах реализации значения для плоскости строк к могут быть пересчитаны на основе всех предыдущих плоскостей строк, имеющих индексы от 1 до к-\. После пересчета значений компонентов вектора zi (xj,yk), zi (xj,yk), … zn (xj,yk) для плоскости строк к сеть горизонтального прохода 310 может приступить к пересчету значений компонентов вектора для следующей плоскости, z\ (xj,yk+i), zi (xj,yk+i), ... zn (xj,yk+i) и т. д., до тех пор пока все строки куба 250 не будут пересчитаны.
[83] Параметры сети горизонтального прохода 310 могут отличаться от параметров сети вертикального прохода 320. Параметры двух сетей могут быть определены на этапе обучения путем выбора одного или более наборов обучающих входных данных 122, определения выходных данных объединенной сети (подсистемы 300), сравнения выходных данных с выходными данными обучения 124 и обратного распространения ошибок через уровни сетей по сети горизонтального прохода 310 и сети вертикального прохода 320.
[84] На этапе обучения сеть горизонтального прохода 310 и сеть вертикального прохода 320 могут выполнять множество проходов, пока ошибка выходных данных подсистемы 300 не станет ниже некоторой предварительно заданной ошибки. Проходы по сети горизонтального прохода 310 и сети вертикального прохода 320 могут выполняться в различных последовательностях. Например, в одной реализации первый проход может быть прямым проходом по сети горизонтального прохода 310, второй путь может быть обратным путем по сети горизонтального прохода 310, третий проход может быть прямым путем по сети вертикального прохода 320, четвертый проход может быть обратным путем по сети вертикального прохода 320 и т.д. Данный процесс может повторяться несколько раз. Альтернативно, в другом варианте реализации первый проход может быть прямым проходом по сети горизонтального прохода 310, второй путь может быть прямым путем по сети вертикального прохода 320, третий проход может быть обратным путем по сети горизонтального прохода 310, четвертый проход может быть обратным путем по сети вертикального прохода 320 и т.д. В другом варианте реализации каждая из двух сетей может выполнять несколько (например, два, три или более) проходов в одном и том же направлении (вперед или назад), прежде чем одна и та же сеть сможет выполнить несколько проходов в противоположном направлении или перед тем, как другие сети выполнят несколько проходов (в любом направлении). Специалист в данной области техники поймет, что возможно реализовать практически неограниченное количество различных комбинаций двух сетей, выполняющих проходы в двух направлениях.
[85] Результатом этапа обучения может быть множество параметров (например, смещения и весовые коэффициенты) для сети горизонтального прохода 310 и множество параметров для сети вертикального прохода 320. Такие два множества могут быть разными. Кроме того, каждая из двух сетей может содержать множество параметров, которое отличается для прямых и обратных проходов. Кроме того, несмотря на то, что в некоторых вариантах реализации параметры (например, для обратных проходов сети горизонтального прохода 310) могут быть независимыми от того, где находится пересчитанная плоскость столбца, в других вариантах реализации параметры могут зависеть от таких местоположений. Например, параметры могут отличаться для плоскостей столбцов (плоскостей строк), расположенных вблизи краев документа, от плоскостей, расположенных вблизи середины документа.
[86] Выходные данные сети горизонтального прохода 310 и сети вертикального прохода 320 могут быть объединены для получения пересчитанного куба 270. (Операция объединения обозначена на ФИГ. ЗА белым крестом.) Связанные векторы могут иметь пересчитанные значения VEC(x,y)=(Zi, Z2, ... Zn, Zn+i, ... Z2N), содержащие первые N компонентов, которые представляют выходные данные сети горизонтального прохода 310, и последние N компонентов, которые представляют выходные данные сети вертикального прохода 320 (или наоборот). Например, в одном примерном варианте реализации, если исходные векторы vec(x,y), которые формируют (исходный) куб 250, содержат 128 компонентов, пересчитанные векторы VEC(x,y), которые формируют (выходной) куб 270, могут содержать 256 компонентов.
[87] В одном из вариантов реализации на этапе прогнозирования подсистема 300 может работать в том же порядке комбинаций, что и на этапе обучения. В других вариантах реализации количество проходов на этапе прогнозирования может быть меньше (или больше), чем на этапе обучения. Например, если количество анализируемых документов является значительным, число проходов (на один документ) на этапе прогнозирования может быть значительно уменьшено по сравнению с этапом обучения.
[88] На этапе прогнозирования, после завершения заранее определенного количества проходов (количество проходов может быть заранее определено на этапе обучения как число, достаточное для достижения требуемой точности) подсистема 300 может выводить куб 270, содержащий пересчитанные значения компонентов вектора VEC(x,y)=(Zi, Z2, … Zn, Zn+i, … Z2N), функция Unmap 330 (например, Scatter) может отображать пересчитанный куб 270 в множестве пересчитанных несопоставленных векторов 340, имеющих исходную длину (N компонентов). К примеру, в некоторых вариантах реализации функция Unmap 330 может объединять два компонента вектора (Zi, Z2, … Zn, Zn+i,… Z2N), например, согласно Zk+ ZN+k Zk., или согласно некоторой другой схеме установления соответствия, которая уменьшает количество векторных компонентов от 2N до N. В других вариантах реализации функция Unmap 330 может сначала исключить нулевые компоненты вектора (Zi, Z2, ... Zn, Zn+i, • • • Z2N) и выбрать N первых (N последних, N наибольших и т.д.) оставшихся компонентов. В другом варианте реализации слой плотной нейронной сети, имеющий 2N входов и N выходов, может сокращать вектор VEC(x,y)=(Zi, Z2, … Zn, Zn+i, • • • Z2N) до упрощенного вектора VEC(x,y)=(Zi, Z2, … Zn). Упрощенные (несопоставленные) векторы 340 могут содержать координаты соответствующих последовательностей символов SymSeq. В некоторых вариантах реализации уменьшение длины каждого из векторов с 2N до Сможет включать только один данный вектор; а именно, определение компонентов упрощенного вектора, определенного по координатам (х,у), может не включать компоненты других векторов (например, определенных по другим координатам). Поскольку несопоставленные векторы 340, выводимые подсистемой 300, пересчитываются на основе значений всех векторов документа, несопоставленные векторы 340 зависят от контекста всего документа.
[89] На ФИГ. 4 представлена принципиальная схема 400, иллюстрирующая пример подсистемы нейронной сети 410, которая предсказывает класс поля, заполненного последовательностью символов, определенной на изображении документа, в соответствии с некоторыми вариантами реализации настоящего изобретения. Подсистема нейронной сети 410, показанная на ФИГ. 4, в одном из вариантов реализации может быть подсистемой С 280. Подсистема 410 нейронной сети может быть реализована механизмом распознавания полей 111. Подсистема нейронной сети 410 может использовать в качестве исходных данных выходной сигнал подсистемы В (например, подсистемы 300 или подсистемы 350). Более конкретно, подсистема С 410 нейронной сети может вводить пересчитанные значения векторных компонентов VEC(x,y)=(Zi, Z2, … Zn), соответствующих выявленным последовательностям символов SymSeq(x,y). Подсистема С 410 может иметь один или несколько полносвязных/плотных нейронных слоев, например, слои 412, 414, 416. Некоторые из полносвязных слоев могут использовать функцию softmax. В некоторых вариантах реализации один или более полносвязных слоев 412, 414 и (или) 416 могут быть соединены друг с другом слоями, которые не являются полносвязными.
[90] В некоторых вариантах реализации подсистема 410 может использовать дополнительный вход типа поля 420, который может включать в себя списки полей для различных типов документов. Например, в некоторых вариантах реализации вход типа поля 420 может содержать информацию о том, что документ счета может включать в себя такие поля, как «продавец», «покупатель», «адрес продавца», «адрес покупателя», «тип товара», «количество товара», «способ оплаты», «сумма депозита», «дата доставки», «подпись» и т.д. В некоторых вариантах реализации вход типа поля может предоставляться как часть обучающих входных данных 122, а выходные данные обучения 124 и подсистема 410 могут определять количество и тип полей, встречающихся в документах различных типов как часть процесса обучения (этапа).
[91] Подсистема С 410 может классифицировать каждую из последовательностей символов SymSeq(x,y) в качестве одного из множества предопределенных классов. Каждый из заранее определенных классов может соответствовать одному из обнаруженных типов полей. Для классификации последовательности символов подсистема С 410 может строить гипотезы о том, что некоторые или каждая из выявленных последовательностей символов, описанных соответствующими векторами 340, принадлежат одному из полей документа. Подсистема С 410 может дополнительно определять вероятности того, что конкретная последовательность символов принадлежит различным типам полей в документе (определяется на этапе обучения или вводится явно). Выход прогнозирования класса поля 430 подсистемы С 410 может включать в себя связь каждой из последовательностей символов SymSeq(x,y) с различными классами Kl, К2, КЗ, К4 и т.д. Например, как указано на ФИГ. 4, связи могут быть созданы посредством назначения различных вероятностей для последовательностей SymSeq(x,y), принадлежащих соответствующим типам полей, которые должны быть обнаружены. Например, подсистема С 410 может определить, что конкретная последовательность SymSeq(x,y) может принадлежать классу КЗ с вероятностью 60%, классу К1 с вероятностью 20%, классу Кб с вероятностью 15 % и классу К2 с вероятностью 5%.
[92] Для определения предсказаний класса поля 430 для различных последовательностей символов документа подсистема С 410 может сначала построить множество гипотез о том, что каждая из выявленных SymSeq(x,y) может принадлежать данному классу Кп. Например, гипотеза может состоять в том, что множество нескольких слов, расположенных рядом друг с другом (например, в одной и той же строке), может принадлежать одному и тому же полю (например, адресу поставщика). Другая гипотеза может заключаться в том, что одни и те же слова могут принадлежать адресу покупателя. Гипотеза для слова может быть построена на основе одной или более характеристик слова (или предложения), которые известны с определенностью, таких как местоположение слова, количество символов в слове и т. д. Генератор гипотез, реализованный подсистемой С 410 и (или) механизмом распознавания полей 111, может строить множественные гипотезы для каждого SymSeq(x,y) на основании известных признаков данной последовательности.
[93] Затем множество сгенерированных гипотез может быть введено в одну или более нейронных сетей подсистемы С 410 для оценки/проверки сгенерированных гипотез и для присвоения значений вероятности каждой сгенерированной гипотезе. Для проверки гипотез может использоваться функция тестирования. Функция тестирования может быть определена на основе оценки обучающих входных данных 122, сравнения фактических выходов подсистемы С 410 с выходными данными обучения 124 и коррекции параметров функции тестирования таким образом, чтобы минимизировать разницу между фактическими выходами подсистемы 410 и выходными данными обучения 124. Обучение функции тестирования может выполняться с использованием методов повышения градиента, методов дерева решений или аналогичных методов.
[94] Затем подсистема С 410 может формировать и проверять цепочки (множества) гипотез. Например, подсистема С 410, возможно, определила, что последовательность символов Word-1 с вероятностью 95 % принадлежит полю F1, а слово Word-2 принадлежит полю F2 с вероятностью 60 % и полю А с вероятностью 30 %. Вместо того, чтобы решить, что слово Word-2 должно быть связано с полем В (в соответствии с более высокой вероятностью), подсистема С 410 может проанализировать две цепочки гипотез: 1) Word-1 относится к классу Kl, a Word-2 относится к классу К2, и 2) и Word-1, и Word-2 относятся к классу К1. Подсистема 410 может затем определить, что Word-1 и Word-2 должны иметь более высокую вероятность принадлежности одному и тому же полю, чем к другим полям, и, следовательно, гипотеза 2) должна быть предпочтительной гипотезой, несмотря на индивидуальное определение Word-2 в пользу его принадлежности к классу К1. В другом примере цепочка гипотез, которая оставляет некоторые поля пустыми, может быть проигнорирована по сравнению с цепочкой, которая присваивает по меньшей мере одно слово каждому из полей.
[95] Построение и проверка гипотез для обнаружения таблиц могут выполняться аналогично построению и проверке гипотез, связанных со словами. Выход горизонтальных линий 370 может использоваться для построения гипотез, связанных с расположением строк таблиц в документе. Выход вертикальных линий 380 может использоваться для построения гипотез, связанных с расположением столбцов таблиц в документе. Выход соответствия слов и таблиц 390 может использоваться для построения гипотез, связанных с принадлежностью различных буквенно-цифровых последовательностей различным разделам таблицы - строкам, столбцам и ячейкам. Например, при построении гипотез может быть сгенерировано множество гипотез о расположении буквенно-цифровых последовательностей (например, слов) относительно различных горизонтальных и вертикальных линий, о связи слов с ячейками таблиц и т. д. Во время проверки гипотез нейронная сеть (например, подсистема С 410) определяет вероятности для различных гипотез, цепочек гипотез и анализирует конфликты между гипотезами (и (или) цепочками гипотез). В результате выбираются наиболее вероятные гипотезы, которые могут связывать разделы таблицы с буквенно-цифровыми предложениями, связанными (например, принадлежащими) с такими разделами. Оценка гипотез (определение вероятностей) может выполняться с помощью эвристических методов, методов дерева решений, методов градиентного бустинга (gradient boosting) и т.д. Классификация типов разделов таблицы может быть выполнена с помощью функции, обученной оценивать признаки (векторы) слов, принадлежащие различным разделам таблицы, в обучающих входных данных 122.
[96] После выбора наиболее вероятных гипотез и (или) цепочек гипотез последовательности символов SymSeq(x,y) могут быть классифицированы в соответствии с гипотезами (цепочками гипотез), которые определены как имеющие самые высокие вероятности. Множество последовательностей символов может быть связано с каждым полем документа и (или) разделом таблицы (таблиц), представленной в документе. Каждый раздел поля/таблицы может содержать одну или более последовательностей символов (например, отдельные буквенно-цифровые символы, отдельные слова, несколько слов, предложения и т. д.). Некоторые поля/разделы таблицы могут не содержать обнаруженных символов. Содержимое выявленных полей/разделов таблицы документа может храниться, например, в хранилище 120 или любом другом устройстве хранения, включая локальное или сетевое (например, облачное) устройство хранения. Содержимое выявленных полей/разделов таблицы может быть сохранено как часть профиля документа. В одном из вариантов реализации профиль документа может храниться в выделенном файле или папке, связанной с получателем документа. В других вариантах реализации профиль документа может быть сохранен как часть файла или папки, связанной с автором документа, с типом документа, временем выпуска документа и т.п.
[97] В одном из вариантов реализации после выявления полей/разделов таблицы в документе информация о выявленных полях/разделах таблицы может быть сохранена, например, в хранилище 120 или любом другом устройстве хранения, включая локальное или сетевое (например, облачное) устройство хранения. Поля/разделы таблицы могут быть определены по их абсолютным местоположениям (например, координатам) или относительным местоположениям (относительно других полей/разделов). Данная информация может повторно использоваться при вводе последующего документа того же или подобного типа для выявления полей. В таких случаях после оптического распознавания символов последующего документа поля/разделы таблицы могут быть заполнены (и сохранены в профиле последующего документа) последовательностями символов для уже определенных полей/разделов таблицы на основе координат (х,у) последовательностей символов в последующем документе. В таких случаях нейронные сети, возможно, не должны использоваться для обнаружения полей/разделов таблицы в последующих документах. В других вариантах реализации, где можно ожидать, что последующий документ (или форма) может иметь другую компоновку или макет, поля/разделы таблицы (и их местоположения), определенные для исходного документа, могут использоваться во время выявления полей последующего документа в качестве гипотез. Такие гипотезы могут быть проверены вместе с другими гипотезами, которые могут генерироваться нейронными сетями, как описано выше. Новый макет полей/разделов таблицы, обнаруженная в каждом дополнительном документе, может быть аналогичным образом добавлена в пул гипотез для обнаружения полей/таблиц в будущих документах.
[98] В одном примерном варианте реализации после получения последующего документа и выявления конкретной последовательности символов последующего документа может быть определено, что местоположение последовательности символов в последующем документе совпадает, в пределах предварительно определенной точности, с местоположением первого текстового поля или с первым разделом таблицы в одном из ранее обработанных документов. Затем может быть определено, что последовательность символов последующего документа связана с первым текстовым полем или с первым разделом таблицы.
[99] В некоторых вариантах реализации местоположение текстового поля или раздела таблицы может быть определено на основе размещения буквенно-цифровой последовательности относительно по меньшей мере одной другой последовательности символов из множества последовательностей символов. Например, размещение буквенноцифровой последовательности «предложенная» может быть определено относительно местоположения другой последовательности «общая сумма».
[100] На ФИГ. 5-12 показаны блок-схемы, иллюстрирующие примеры способов 5001200, которые используют нейронные сети для учета общего контекста документа при выявлении полей и таблиц в соответствии с некоторыми вариантами реализации настоящего изобретения. Каждый из способов 500-1200 может выполняться логикой обработки, которая может включать аппаратные средства (электронные схемы, специализированную логику, программируемую логику, микрокоманды и т. д.), программное обеспечение (например, инструкции, выполняемые обрабатывающим устройством), встроенное программное обеспечение или комбинацию всех таких средств. В одном из вариантов реализации изобретения способы 500-1200 могут выполняться устройством обработки данных (например, устройством обработки данных 1302 на ФИГ. 13) вычислительного устройства 110 и (или) сервера 150, как показано применительно к ФИГ. 1. В некоторых вариантах осуществления способы 500-1200 могут выполняться в одном потоке обработки. Кроме того, способы 5001200 могут выполняться в двух или более потоках обработки, при этом в каждом потоке будут выполняться одна или более отдельных функций, процедур, подпрограмм или операций способа. В иллюстративном примере потоки обработки, в которых реализованы способы 5001200, могут быть синхронизированы (например, с использованием семафоров, критических секций и (или) других механизмов синхронизации потоков). Кроме того, потоки обработки, реализующие способы 500-1200, могут выполняться асинхронно друг относительно друга. Поэтому, хотя ФИГ. 5-12 и соответствующие описания содержат операции способов 500-1200 в определенном порядке, различные варианты реализации способов могут выполнять по крайней мере некоторые из перечисленных операций, параллельно и (или) в произвольно выбранном порядке.
[101] На ФИГ. 5 представлена блок-схема, иллюстрирующая один пример способа 500 выбора нейронной сети для извлечения полей из документов на основе макета документа в соответствии с некоторыми вариантами реализации настоящего изобретения. На шаге 510 устройство обработки, выполняющее способ 500, может получить компоновку документа, имеющего множество полей. Макет может включать, по меньшей мере, несколько последовательностей символов документа. Например, макет может включать расположения определенных слов, предложений, абзацев, горизонтальных и вертикальных линий. На шаге 520 на основе полученной макета устройство обработки может относить документ к первому типу документов (например, «счет») из множества (ранее) определенных типов документов (например, множество типов финансовых документов). В некоторых вариантах реализации для отнесения документа к первому типу документов устройство обработки может исполнять алгоритм кластеризации, как описано ниже по отношению к методу 600, проиллюстрированному на ФИГ. 6.
[102] На шаге 530 способ 500 может продолжить определение множества последовательностей символов в документе. Такие последовательности символов могут включать цифры (например, суммы в долларах), текст (буквы, слова, предложения, абзацы), особые символы, изображения (логотипы), элементы таблиц (линии, ячейки) или другие символы, которые могут быть определены в документе (например, с помощью оптического распознавания символов в изображении документа). На шаге 540 устройство обработки может выполнять обработку множества определенных символов в документе с использованием первой нейронной сети (например, нейронная сеть 210-1), связанной с первым типом документов. Учитывая входные последовательности символов, первая нейронная сеть может определить связь первого поля из множества полей с первой последовательностью символов из множества последовательностей символов в документе (шаг 550). Например, первая нейронная сеть может определить, что поле «Номер счета» связано с последовательностью символов «1375294», которая затем может быть определена как номер счета вендора в базе данных клиента.
[103] На ФИГ. 6 представлена блок-схема, иллюстрирующая один пример способа 600 использования алгоритма кластеризации для выбора нейронной сети с целью извлечения полей из документов в соответствии с некоторыми вариантами реализации настоящего изобретения. Для использования алгоритма кластеризации устройство обработки, реализующее способ 600, может определить на шаге 610 значение документа, характеризующее компоновку документа. Для определения значения документа устройство обработки может начать определение одного или более признаков документа, например, количества слов и (или) линий, расположение и размер графических изображений, присутствующих в документе, присутствие конкретных слов в документе, частота появления конкретных слов и (или) символов в документе и т. д. Устройство обработки может устанавливать связь между числовым значением и каждым из определенных признаков. Соответственно, значение документа может быть векторным значением, имеющим множество числовых компонентов, каждый из которых характеризует степень, в которой тот или иной признак присутствует в документе. Например, первый компонент (векторного) значения документа может являться количеством раз, которое слово «сумма» встречается в документе.
[104] На шаге 620 устройство обработки может выполнять сравнение значения документа с множеством значений кластеров, при этом одно из множества значений кластеров соответствует одному из множества определенных типов документов. Каждое из значений кластеров также может быть векторным значением, имеющим множество числовых компонентов, каждый из которых представляет значение центройда кластера, которое характеризует степень, в которой соответствующий признак присутствует в среднем документе кластера. На шаге 630 способ может далее определить значение документа, наиболее близкое к первому значению кластера из множества значений кластеров. Например, устройство обработки может вычислить расстояние в векторном пространстве признаков между значением документа и каждым из значений кластеров и определить, что первый кластер имеет минимальное расстояние. В одном из вариантов реализации для определения расстояния устройство обработки может использовать ряд различных функций схожести (похожести различия), например, функция расстояния наименьших квадратов. На шаге 640 способ 600 может далее определить на основе результатов сравнения на шаге 630, что документ относится к первому типу документов (связанному с первым кластером).
[105] На ФИГ. 7 представлена блок-схема, иллюстрирующая один пример способа 700 обучения нейронной сети для извлечения полей из документов в соответствии с некоторыми вариантами реализации настоящего изобретения. Для обучения нейронной сети (например, нейронной сети 210-1) устройство обработки, реализующее способ 700, может получить на шаге 710 обучающий документ, имеющий согласно разметке связь с первым полем. Обучающий документ может быть любым документом, полученным клиентом от одного из вендоров клиента. Обучающий документ может быть финансовым документом, полицейским рапортом, формой заявки или документом любого иного типа. Обучающий документ может быть аналогичен документу 140, показанному на ФИГ. 1В. Документ может иметь множество полей; некоторые из полей могут быть важными для клиента, при этом некоторые из полей могут представлять меньший интерес для клиента. Например, поля «номер счета», «дата» и «итого» могут иметь наибольшую важность для клиента, а поля «адрес» и «грузополучатель» могут иметь меньшее значение. Размеченная связь в обучающем документе может быть первой последовательностью символов обучающего документа. Например, поле «итого» может иметь размеченную связь с первой последовательностью символов, например, последовательностью символов («$2,657,08»), представляющей сумму - значение поля «итого». Связь может быть установлена сотрудником клиента (или любого другого лица) или другими способами, известными в области техники, например, на основе алгоритмов гибких описаний полей.
[106] На шаге 720 устройство обработки, выполняющее способ 700, может с помощью первой нейронной сети получить предсказанную связь с первым полем в обучающем документе. Например, первая нейронная сеть может спрогнозировать, что первое поле «итого» имеет предсказанную связь с последовательностью символов «$2,657,08» или с другой последовательностью символов «$1,932.14» в обучающем документе. В некоторых случаях первая нейронная сеть может совсем не установить предсказанную связь (нулевая связь). На шаге 730 устройство обработки может определить на основе сравнения предсказанной связи первого поля в обучающем документе с первой последовательностью символов в обучающем документе, требуется ли изменение параметров первой нейронной сети. Например, устройство обработки может сравнить предсказанную связь первого поля, например, с суммой «$2,657,08» или «$1,932.14» или недействительную связь с размеченной связью («$2,657,08») в обучающем документе. Если предсказанная связь правильно воспроизводит размеченную связь, устройство обработки может не выполнять корректировки параметров (сдвиги, веса и т. д.) в первой нейронной сети. Если предсказанная связь отличается от размеченной связи или если нейронная сеть совсем не определила первое поле и не спрогнозировала связь, устройство обработки может изменить параметры первой нейронной сети. Параметры могут изменяться до тех пор, пока первая нейронная сеть не сделает правильное предсказание и не выявит успешно размеченную связь.
[107] На ФИГ. 8 представлена блок-схема, иллюстрирующая один пример способа повторного обучения 800 нейронной сети при неверном определении нейронной сетью связи между полем и документом в соответствии с некоторыми вариантами реализации настоящего изобретения. Первая нейронная сеть может быть изначально обучена с использованием одного или более размеченных обучающих документов, что описано со ссылкой на ФИГ. 7. Устройство обработки может получить неразмеченный документ (например, один из документов 203), отнести неразмеченный документ к первому типу документов и использовать первую нейронную сеть (связанную с первым типом документов) для обработки неразмеченного документа и получения связи между первой последовательностью символов и первым полем в документе. На шаге 810 устройство обработки, выполняющее способ 800, может определить, что полученная связь является неверной. Например, лицо, рассматривающее (например, в случайном порядке или периодически) выходные значения первой нейронной сети, может заметить неправильную связь и выделить документ для возможной разметки. Это лицо может выделить документ отправкой маркера на устройство обработки (например, нажатием на кнопку мыши или иным способом, например, с помощью голосовой команды) о том, что установленная связь имеет ошибку.
[108] Лицо, выделившее документ (или любое иное лицо), может создать размеченную версию документа путем установления правильной связь первого поля и предоставить изображение размеченной версии документа в устройство обработки. На шаге 820 устройство обработки, выполняющее способ 800, может получить размеченную версию документа, имеющую исправленную связь для первого поля. На шаге 830 устройство обработки может использовать размеченную версию документа в качестве исходных данных обучения для повторного обучения первой нейронной сети. В некоторых вариантах реализации устройство обработки может затем выполнить некоторые или все шаги способа обучения 700 в соответствии с приведенным выше описанием.
[109] На ФИГ. 9 представлена блок-схема, иллюстрирующая один пример способа 900 добавления нейронной сети для определения того, что исходный документ не относится к ранее выявленным типам документов в соответствии с некоторыми вариантами реализации настоящего изобретения. В одном из вариантов реализации способ 900 может быть реализован механизмом распознавания полей 111 с использованием устройства обработки. Механизм распознавания полей может содержать механизм кластеризации 112. Механизм распознавания полей 111 и (или) механизм кластеризации 112 может иметь доступ к множеству ранее обученных нейронных сетей, каждая из которых может выявлять поля в документах, относящихся к соответствующему типу (кластеру) документов. В одном из вариантов реализации механизм распознавания полей может выполнять обработку описанным выше способом, например, путем выполнения оптического распознавания символов последующего исходного документа (например, одного из документов 203). В другом варианте реализации механизм распознавания полей может выполнять доступ к цифровому файлу, содержащему ранее выполненное оптическое распознавание символов исходного документа (например, созданного другим, например, внешним, компонентом или агентом).
[110] На шаге 910 способ 900 может получить множество последовательностей символов из последующего документа, содержащего множество полей. На шаге 920 способ 900 может определить на основе некоторых последовательностей из множества последовательностей символов в последующем документе, что последующий документ не относится к любому типу документов из множества уже определенных типов документов. Например, механизм кластеризации может выполнять анализ кластеризации (как показано на ФИГ. 6 в одном примере) и определять, что расстояние между определенным значением документа для последующего документа слишком сильно отстоит от любого из существующих значений кластера. Более конкретно, каждое из определенных расстояний может превышать некоторое заданное максимальное расстояние (это максимальное расстояние может зависеть от кластера), что указывает на то, что последующий документ не может быть легко связан с существующими типами (кластерами) документов, и будет создан новый кластер. На шаге 930 способ 900 может добавить к множеству определенных типов документов новый тип документов с созданием нового кластера на основе последующего документа. Например, компоненты вектора значений документа могут приниматься для нового кластера как исходные центроиды признаков. Далее определяются дополнительные документы и добавляются к новому кластеру, центроиды могут быть пересчитаны (например, как арифметическое, геометрическое, взвешенное или другое среднее значение соответствующих компонентов для всех или некоторых из обработанных документов, которые были отнесены к новому кластеру).
[111] На шаге 940 способ 900 может далее создать новую нейронную сеть (например, нейронную сеть 210-N), связываемую с новым типом документов и с использованием последующего документа для обучения новой нейронной сети. Например, в одном из вариантов реализации устройство обработки, выполняющее способ 900, при получении инструкций от механизма кластеризации 112 может выдать сообщение «обнаружен новый тип документа» или другое аналогичное сообщение, связанное с последующим документом. Лицо, рассматривающее результаты, может извлечь последующий документ и создать размеченную версию последующего документа путем разметки связей полей, которые могут представлять интерес для клиента. Механизм распознавания полей 111 может получать изображение размеченной версии последующего документа. Размеченная версия последующего документа может определить одно или более полей последующего документа. Устройство обработки может использовать размеченную версию документа в качестве исходных данных для обучения новой нейронной сети. Затем дополнительные документы относятся к новому типу документов, некоторые из этих дополнительных документов могут быть размечены и использоваться для дальнейшего обучения новой нейронной сети. В некоторых вариантах реализации первые М документов, относящиеся к новому типу, могут быть размечены и использоваться для обучения. В других вариантах реализации дополнительные документы могут быть размечены и использоваться для обучения только в том случае, если нейронная сеть не определила или неверно определила по меньшей мере одно из полей, как описано в отношении способа 800, показанного на ФИГ. 8.
[112] На ФИГ. 10 представлена блок-схема последовательности операций, иллюстрирующая один пример способа 1000, который использует нейронные сети для определения векторных представлений (например, векторов представления слова) для последовательностей символов, определенных на изображении документа, в соответствии с некоторыми вариантами реализации настоящего изобретения. Некоторые шаги способа 1000 (например, шаги 1010 и 1020) могут выполняться до определения типа документа, а некоторые шаги способа 1000 (например, шаги 1030, 1040 и 1050) могут выполняться с использованием особой нейронной сети для документов определенного типа. На шаге 1010 устройство обработки данных (например, компьютер), реализующее способ 1000, может выполнять оптическое распознавание символов изображения документа, чтобы получить распознанный текст документа. В некоторых вариантах реализации документ может содержать множество полей, заполненных буквенно-цифровыми последовательностями символов. В некоторых вариантах реализации документ также может содержать по меньшей мере одну таблицу, имеющую множество разделов, таких как ячейки, строки и (или) столбцы.
[113] На шаге 1020 устройство обработки данных, реализующее способ 1000, может разделить распознанный текст на множество последовательностей символов SymSeq(x,y) документа. Последовательности символов могут быть буквенно-цифровыми, графическими или комбинированными. Буквенно-цифровые последовательности могут представлять собой текст (слоги, слова, предложения), цифры, символические знаки и т. д. Графические последовательности могут представлять собой элементы графической таблицы, такие как горизонтальная линия, вертикальная линия, наклонная линия, угол (двухстороннее пересечение линий, которое может указывать на угловой раздел таблицы), трехстороннее пересечение линий (которое может указывать на краевой раздел таблицы) или четырехстороннее пересечение линий (которое может указывать на внутренний раздел таблицы). Комбинированная последовательность может представлять собой комбинацию одного или более буквенно-цифровых символов и одного или более графических элементов таблицы. Последовательность может состоять из множества символов, но в некоторых случаях может быть одним символом.
[114] На шаге 1030 устройство обработки данных, реализующее способ 1000, может вводить множество последовательностей символов в нейронную сеть А. Нейронная сеть А может быть подсистемой (подсетью) А (240), описанной со ссылкой на ФИГ. 2С. Нейронная сеть А может быть нейронной сетью, особо связанной с конкретным типом документов, определенных механизмом кластеризации 112. В некоторых вариантах реализации нейронная сеть А может совместно использоваться некоторым множеством нейронных сетей, связанных с различными типами документов. Целью нейронной сети А может быть определение множества векторов, представляющих последовательности символов, определенные на шаге 1020. В частности, на шаге 1040 нейронная сеть А может определять внедрение слова для каждой из множества последовательностей символов. Векторы представления слов могут быть векторами vec(x,y)=(Zi, Z2, ... Zn), соответствующими обнаруженным последовательностям символов SymSeq(x,y), как описано выше со ссылкой на ФИГ. 2С. Нейронная сеть А может быть предварительно обучена на исходных документах, которые могут быть такого же типа, что и целевой документ.
[115] Определенные векторы (например, векторы представления слов) vec(x,y)=(Zi, Z2, … Zn) могут быть введены в нейронную сеть В (1050). Нейронная сеть В может быть подсистемой В (260), описанной со ссылкой на ФИГ. 2С. Целью нейронной сети В может быть пересчет векторов {vec(x,y)} {VEC(x,y)} с учетом общего контекста всего документа. Нейронная сеть В может быть нейронной сетью, особо связанной с конкретным типом документов, определенных механизмом кластеризации 112. В некоторых вариантах реализации нейронная сеть В может совместно использоваться некоторым множеством нейронных сетей, связанных с различными типами документов.
[116] На ФИГ. 11 представлена блок-схема последовательности операций, иллюстрирующая один пример способа 1100, который использует нейронные сети для определения связей между последовательностями символов и полями документа, используя общий контекст документа, в соответствии с некоторыми реализациями настоящего изобретения. На шаге 1110 устройство обработки данных, реализующее способ 1100, может получить множество последовательностей символов документа, содержащего множество полей и, необязательно, одну или несколько таблиц. В одном из вариантов реализации операции, выполняемые на шаге 1110, могут быть аналогичны операциям, выполняемым в шагах 1010 и 1020 способа 1000. На шаге 1120 устройство обработки данных может определить множество векторов vec(x,y), представляющих последовательности символов. В одном из вариантов реализации операции, выполняемые на шаге 1110, могут быть аналогичны операциям, выполняемым в шагах 1030 и 1040 способа 1000.
[117] На шаге 1130 способ 1100 может продолжаться с обработки множества векторов {vec(x,y)} с использованием нейронной сети В. Выходные данные нейронной сети В могут являться множеством векторов, {vec(x,y)} {VEC(x,y)}, пересчитанных на основе значений всех или некоторых векторов из множества векторов (1140). Для получения множества пересчитанных векторов устройство обработки, выполняющее способ 1100 может использовать сеть горизонтального прохода 310 и (или) сеть вертикального прохода 320, как описано со ссылкой на ФИГ. 3. Выходные данные сетей 310 и 320 могут быть объединены, и множество пересчитанных векторов {VEC(x,y)} может быть определено по объединенным результатам, как описано выше.
[118] На шаге 1150 способ может продолжаться с определения связи между первым пересчитанным вектором и первым полем, причем первый пересчитанный вектор принадлежит первой последовательности символов. Например, поле «итого» может быть связано с пересчитанным вектором, который соответствует сумме, указанной в документе счета. На шаге 1160 способ 1100 может продолжаться с определения связи между первой последовательностью символов и первым полем или (когда присутствует по меньшей мере одна таблица) связи между буквенно-цифровой последовательностью и разделом таблицы.
[119] На ФИГ. 12 представлена блок-схема последовательности операций, иллюстрирующая способ 1200, который использует нейронные сети для создания и проверки множества гипотез о связях между последовательностями символов и полями/таблицами документа, в соответствии с некоторыми реализациями настоящего изобретения. В некоторых вариантах реализации способ 1200 может реализовывать шаги 1150, 1152 и 1160 способа 1100. Например, на шаге 1210 способ 1200 может принимать множество пересчитанных векторов {VEC(x,y)} от нейронной сети В. на шаге 1220 устройство обработки данных, реализующее способ 1200, может построить с помощью нейронной сети С множество гипотез о связи, содержащих связи одного из множества пересчитанных векторов с первым полем или с разделом таблицы. В некоторых вариантах реализации нейронная сеть С может быть подсистемой С (410) по ФИГ. 4. Например, гипотеза может состоять в том, что п-й вектор, представляющий буквенно-цифровую последовательность «$ 128», связан с полем «предложенная сумма», которая, как известно, присутствует (или может присутствовать с некоторой вероятностью) в документе. В качестве другого иллюстративного примера гипотеза может состоять в том, что т-й вектор, представляющий буквенно-цифровую последовательность «итого», связан с самой правой ячейкой в первой строке таблицы, которая может присутствовать в документе.
[120] На шаге 1230 способ может продолжаться с определения вероятности возникновения для каждой из множества гипотез о связи. В одном из вариантов реализации это может быть выполнено с использованием одного или нескольких нейронных слоев сети С с использованием функции тестирования. Функция тестирования может быть определена на основе оценки обучающих входных данных (например, обучающих входных данных 122) и сравнения выходов сети С с выходными данными обучения 124 и параметров настройки функции тестирования для того, чтобы минимизировать разницу между текущими выходами и результатами обучения.
[121] На шаге 1240 может быть определено, что первая гипотеза о связи из множества гипотез о связи имеет наибольшую вероятность возникновения. Например, первая гипотеза о связи может включать в себя связь первого пересчитанного вектора со вторым пересчитанным вектором. Наибольшая вероятность может относиться к связи данной последовательности символов с конкретным полем или с конкретным разделом таблицы в одной возможной реализации. Другими словами, гипотезы могут быть сгруппированы по последовательностям символов (например, все возможные гипотезы о связи последовательности символов «$ 128» с различными полями могут быть сгруппированы вместе). Соответственно, в пределах данной группы может быть проанализировано множество гипотез о возможных связях конкретной последовательности символов с различными полями/разделами таблицы, и может быть выбрана гипотеза с наибольшей вероятностью. В другом возможном варианте реализации гипотезы могут быть сгруппированы по полям или по разделам таблицы. Например, все возможные гипотезы о связи ячейки таблицы (2,4) - например, ячейки в четвертом столбце второй строки - с различными буквенно-цифровыми последовательностями могут быть сгруппированы вместе, и может быть выбрана гипотеза о наибольшей вероятности связи ячейки (2,4).
[122] На шаге 1250 способ 1200 может продолжаться, когда устройство обработки данных выбирает гипотезу с наибольшей вероятностью и связывает первый пересчитанный вектор с первым полем или с первым разделом таблицы
[123] На ФИГ. 13 приведен пример вычислительной системы 1300, которая может выполнять один или более методов настоящего изобретения. Эта вычислительная система может быть подключена (например, по сети) к другим вычислительным системам в локальной сети, сети интранет, сети экстранет или сети Интернет. Данная вычислительная система может выступать в качестве сервера в сетевой среде клиент-сервер. Данная вычислительная система может представлять собой персональный компьютер (ПК), планшетный компьютер, телевизионную приставку (STB), карманный персональный компьютер (PDA), мобильный телефон, фотоаппарат, видеокамеру или любое устройство, способное выполнять набор команд (последовательно или иным способом), который определяет действия данного устройства. Кроме того, несмотря на то, что показана система только с одним компьютером, термин «компьютер» также включает любой набор компьютеров, которые по отдельности или совместно выполняют набор команд (или несколько наборов команд) для реализации любого из описанных в данном документе способов или нескольких таких способов.
[124] Пример вычислительной системы 1300 включает устройство обработки 1302, основное запоминающее устройство 1304 (например, постоянное запоминающее устройство (ПЗУ), флэш-память, динамическое ОЗУ (DRAM, dynamic random access memory), например, синхронное DRAM (SDRAM, synchronous dynamic random access memory)), статическое запоминающее устройство 1306 (например, флэш-память, статическое оперативное запоминающее устройство (SRAM, static random access memory)) и устройство хранения данных 1316, которые взаимодействуют друг с другом по шине 1308.
[125] Устройство обработки 1302 представляет собой один или более обрабатывающих устройств общего назначения, например микропроцессоров, центральных процессоров или аналогичных устройств. В частности, устройство обработки 1302 может представлять собой микропроцессор с полным набором команд (CISC), микропроцессор с сокращенным набором команд (RISC), микропроцессор со сверхдлинным командным словом (VLIW) или процессор, в котором реализованы другие наборы команд, или процессоры, в которых реализована комбинация наборов команд. Устройство обработки 1302 также может представлять собой одно или более устройств обработки специального назначения, такое как специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA), процессор цифровых сигналов (DSP), сетевой процессор и т. п. Устройство обработки 1302 реализовано с возможностью выполнения инструкций 1326 для реализации ядра механизма распознавания полей 111 и (или) механизма обучения 151 на ФИГ. 1 А, а также выполнения операций и шагов, описанных в данном документе (то есть способов 600-1200 на ФИГ. 6-12).
[126] Вычислительная система 1300 может дополнительно включать устройство сопряжения с сетью 1322. Вычислительная система 1300 может также включать видеодисплей 1310 (например, жидкокристаллический дисплей (LCD) или электронно-лучевую трубку (ЭЛТ)), устройство буквенно-цифрового ввода 1312 (например, клавиатуру), устройство управления курсором 1314 (например, мышь) и устройство для формирования сигналов 1320 (например, громкоговоритель). В одном из иллюстративных примеров видеодисплей 1310, устройство буквенно-цифрового ввода 1312 и устройство управления курсором 1314 могут быть объединены в один компонент или устройство (например, сенсорный жидкокристаллический дисплей).
[127] Устройство 1316 хранения данных может содержать машиночитаемый носитель данных 1324, в котором хранятся инструкции 1326, реализующие одну или более из методик или функций, описанных в данном документе. Инструкции 1326 могут также находиться полностью или по меньшей мере частично в основном запоминающем устройстве 1304 и (или) в устройстве обработки 1302 во время их выполнения вычислительной системой 1300, основным запоминающим устройством 1304 и устройством обработки 1302, также содержащим машиночитаемый носитель информации. В некоторых вариантах осуществления изобретения инструкции 1326 могут дополнительно передаваться или приниматься по сети через устройство сопряжения с сетью 1322.
[128] Несмотря на то, что машиночитаемый носитель данных 1324 показан в иллюстративных примерах как единичный носитель, термин «машиночитаемый носитель данных» следует понимать и как единичный носитель, и как несколько таких носителей (например, централизованная или распределенная база данных и (или) связанные кэши и серверы), на которых хранится один или более наборов команд. Термин «машиночитаемый носитель данных» также следует понимать, как описывающий любой носитель, который может хранить, кодировать или переносить набор команд для выполнения машиной и который обеспечивает выполнение машиной любой одной или более методик настоящего изобретения. Соответственно, термин «машиночитаемый носитель данных» следует понимать, как включающий, среди прочего, устройства твердотельной памяти, оптические и магнитные носители.
[129] Несмотря на то что операции способов показаны и описаны в данном документе в определенном порядке, порядок выполнения операций каждого способа может быть изменен таким образом, чтобы некоторые операции могли выполняться в обратном порядке или чтобы некоторые операции могли выполняться (по меньшей мере частично) одновременно с другими операциями. В некоторых вариантах реализации изобретения команды или подоперации различных операций могут выполняться с перерывами и (или) попеременно.
[130] Следует понимать, что приведенное выше описание носит иллюстративный, а не ограничительный характер. Различные другие варианты реализации станут очевидны специалистам в данной области техники после прочтения и понимания приведенного выше описания. Поэтому область применения изобретения должна определяться с учетом прилагаемой формулы изобретения, а также всех областей применения эквивалентных способов, которые покрывает формула изобретения.
[131] В приведенном выше описании изложены многочисленные детали. Однако специалистам в данной области техники должно быть очевидно, что варианты реализации изобретения могут быть реализованы на практике и без таких конкретных деталей. В некоторых случаях хорошо известные структуры и устройства показаны в виде блок-схем, а не подробно, для того чтобы не усложнять описание настоящего изобретения.
[132] Некоторые части описания предпочтительных вариантов реализации выше представлены в виде алгоритмов и символического изображения операций с битами данных в компьютерной памяти. Такие описания и представления алгоритмов являются средством, используемым специалистами в области обработки данных для того, чтобы наиболее эффективно передавать сущность своей работы другим специалистам в данной области. Приведенный в данном документе (и в целом) алгоритм сконструирован в общем как непротиворечивая последовательность шагов, ведущих к требуемому результату. Такие шаги требуют физических манипуляций с физическими величинами. Обычно, но не обязательно, такие величины принимают форму электрических или магнитных сигналов, которые можно хранить, передавать, комбинировать, сравнивать, а также можно выполнять другие манипуляции с ними. Иногда удобно, прежде всего для обычного использования, описывать такие сигналы в виде битов, значений, элементов, символов, терминов, цифр и т.д.
[133] Однако следует иметь в виду, что все такие и подобные термины должны быть связаны с соответствующими физическими величинами и что они являются лишь удобными обозначениями, применяемые к таким величинам. Если прямо не указано иное, как видно из последующего обсуждения, следует понимать, что во всем описании такие термины, как «прием» или «получение», «определение» или «обнаружение», «выбор», «хранение», «анализ» и т.п., относятся к действиям вычислительной системы или подобного электронного вычислительного устройства или к процессам в нем, причем такая система или устройство манипулирует данными и преобразует данные, представленные в виде физических (электронных) величин, в регистрах и памяти вычислительной системы в другие данные, также представленные в виде физических величин в памяти или регистрах компьютерной системы или в других подобных устройствах хранения, передачи или отображения информации.
[134] Настоящее изобретение также относится к устройству для выполнения операций, описанных в данном документе. Такое устройство может быть специально сконструировано для требуемых целей, либо оно может представлять собой универсальный компьютер, который избирательно приводится в действие или дополнительно настраивается с помощью программы, хранящейся в памяти компьютера. Такая вычислительная программа может храниться на машиночитаемом носителе данных, включая, среди прочего, диски любого типа, в том числе гибкие диски, оптические диски, CD-ROM и магнитооптические диски, постоянные запоминающие устройства (ПЗУ), оперативные запоминающие устройства (ОЗУ), программируемые ПЗУ (EPROM), электрически стираемые ППЗУ (EEPROM), магнитные или оптические карты или любой тип носителя, пригодный для хранения электронных команд, каждый из которых соединен с шиной вычислительной системы.
[135] Алгоритмы и изображения, приведенные в данном документе, не обязательно связаны с конкретными компьютерами или другими устройствами. Различные системы общего назначения могут использоваться с программами в соответствии с изложенной в данном документе информацией, возможно также признание целесообразным сконструировать более специализированные устройства для выполнения шагов способа. Структура разнообразных систем такого рода определяется в порядке, предусмотренном в описании. Кроме того, изложение вариантов реализации настоящего изобретения не предполагает ссылок на какие-либо конкретные языки программирования. Следует принимать во внимание, что для реализации принципов настоящего изобретения могут быть использованы различные языки программирования.
[136] Варианты реализации настоящего изобретения могут быть представлены в виде вычислительного программного продукта или программы, которая может содержать машиночитаемый носитель данных с сохраненными на нем инструкциями, которые могут использоваться для программирования вычислительной системы (или других электронных устройств) в целях выполнения процесса в соответствии с настоящим изобретением. Машиночитаемый носитель данных включает механизмы хранения или передачи информации в машиночитаемой форме (например, компьютером). Например, машиночитаемый (то есть считываемый компьютером) носитель данных содержит машиночитаемый (например, компьютером) носитель данных (например, постоянное запоминающее устройство (ПЗУ), оперативное запоминающее устройство (ОЗУ), накопитель на магнитных дисках, накопитель на оптическом носителе, устройства флэш-памяти и пр.).
[137] Слова «пример» или «примерный» используются в данном документе для обозначения использования в качестве примера, отдельного случая или иллюстрации. Любой вариант реализации или конструкция, описанная в данном документе как «пример», не должна обязательно рассматриваться как предпочтительная или преимущественная по сравнению с другими вариантами реализации или конструкциями. Слово «пример» лишь предполагает, что идея изобретения представляется конкретным образом. В данной заявке термин «или» предназначен для обозначения включающего «или», а не исключающего «или». Если не указано иное или не очевидно из контекста, то «X включает А или В» используется для обозначения любой из естественных включающих перестановок. То есть если X включает в себя А, X включает в себя В или X включает и А, и В, то высказывание «X включает в себя А или В» является истинным в любом из указанных случаев. Кроме того, неопределенные артикли, использованные в данной заявке и прилагаемой формуле изобретения, должны, как правило, означать «один или более», если иное не указано или из контекста не следует, что это относится к форме единственного числа. Использование терминов «вариант осуществления» или «один вариант осуществления», либо «реализация» или «одна реализация» не означает одинаковый вариант реализации, если такое описание не приложено. В описании термины «первый», «второй», «третий», «четвертый» и т. д. используются как метки для обозначения различных элементов и не обязательно имеют смысл порядка в соответствии с их числовым обозначением.
[138] Принимая во внимание множество вариантов и модификаций раскрываемого изобретения, которые, без сомнения, будут очевидны специалисту в уровне техники, после прочтения изложенного выше описания, следует понимать, что любой частный вариант осуществления изобретения, приведенный и описанный для иллюстрации, ни в коем случае не должен рассматриваться как ограничение. Таким образом, ссылки на подробности различных вариантов реализации изобретения не должны рассматриваться как ограничение объема притязания, который содержит только признаки, рассматриваемые в качестве сущности изобретения.
Изобретение относится к области информационных технологий, а именно к системам распознавания текста. Технический результат направлен на повышение точности распознавания полей в неструктурированных документах. Способ анализа неструктурированных документов, представленных в цифровом формате, включающий: получение макета документа, содержащего множество полей; идентификацию документа, определение множества последовательностей символов в документе, обработку с помощью процессорного устройства множества последовательностей символов в документе с применением первой нейронной сети, ассоциированной с первым типом документов, для определения взаимосвязи между первым полем из множества полей с первой последовательностью символов из множества последовательностей символов в документе, и в котором указанная первая нейронная сеть содержит одну или более нейронную подсеть, содержащую по меньшей мере один скрытый слой нейронов. 3 н. и 16 з.п. ф-лы, 16 ил.
1. Способ анализа неструктурированных документов, представленных в цифровом формате, включающий:
получение макета документа, содержащего множество полей; идентификацию документа, на основе его макета, в качестве принадлежащего к первому типу документов из множества идентифицированных типов документов; определение множества последовательностей символов в документе; обработку с помощью процессорного устройства множества последовательностей символов в документе с применением первой нейронной сети, ассоциированной с первым типом документов, для определения взаимосвязи между первым полем из множества полей с первой последовательностью символов из множества последовательностей символов в документе, и в котором
указанная первая нейронная сеть содержит одну или более нейронную подсеть, содержащую по меньшей мере один скрытый слой нейронов.
2. Способ по п. 1, отличающийся тем, что макет содержит расположения по меньшей мере некоторого количества из множества последовательностей символов в документе.
3. Способ по п. 1, отличающийся тем, что отнесение документа к первому типу документов включает исполнение алгоритма кластеризации.
4. Способ по п. 3, отличающийся тем, что исполнение алгоритма кластеризации включает следующее:
определение значения документа, характеризующего компоновку документа;
сравнение значения документа с множеством значений кластеров, при этом одно из множества значений кластеров соответствует одному из множества идентифицированных типов документов;
определение того, что значение документа является наиболее близким к первому значению кластера из множества значений кластеров, при этом значение первого кластера соответствует первому типу документов.
5. Способ по п. 1, отличающийся тем, что обучение первой нейронной сети происходит посредством:
получения обучающего документа, имеющего согласно разметке ассоциацию с первым полем, при этом размеченная ассоциация находится с первой последовательностью символов обучающего документа;
получение с помощью первой нейронной сети предсказанной связи с первым полем в обучающем документе;
определение на основе сравнения предсказанной связи первого поля в обучающем документе с первой последовательностью символов в обучающем документе того, требуется ли корректировка параметров первой нейронной сети.
6. Способ по п. 1, дополнительно включающий следующее:
определение того, что ассоциация между первой последовательностью символов и первым полем документа является неверной;
получение размеченной версии документа, при этом размеченная версия документа содержит исправленную ассоциацию первого поля;
использование размеченной версии документа в качестве входных данных для обучения первой нейронной сети.
7. Способ по п. 1, дополнительно включающий следующее:
получение множества последовательностей символов последующего документа, при этом последующий документ содержит множество полей;
определение на основе некоторых последовательностей из множества последовательностей символов в последующем документе, что последующий документ не относится к любому типу документов из множества идентифицированных типов документов;
добавление к множеству идентифицированных типов документов нового типа документов;
использование последующего документа для обучения новой нейронной сети для ассоциации с новым типом документов.
8. Способ по п. 7, отличающийся тем, что использование последующего документа для обучения новой нейронной сети включает использование размеченной версии последующего документа, при этом размеченная версия последующего документа определяет одно или более полей последующего документа.
9. Способ по п. 1, отличающийся тем, что определение множества последовательностей символов документа содержит следующее:
выполнение оптического распознавания символов (OCR) изображения документа для получения распознанного текста документа;
разбиение распознанного текста на множество последовательностей символов.
10. Способ по п. 1, отличающийся тем, что обработка множества последовательностей символов с использованием первой нейронной сети включает следующее:
определение множества векторов, при этом вектор из множества векторов принадлежит одной из множества последовательностей символов;
обработку множества векторов с использованием первой нейронной подсети первой нейронной сети для получения множества пересчитанных векторов, при этом каждый из множества пересчитанных векторов пересчитывается на основании значений множества векторов;
определение связи между первым пересчитанным вектором из множества пересчитанных векторов и первым полем из множества полей, при этом первый пересчитанный вектор принадлежит первой последовательности символов из множества последовательностей символов; и
определение ассоциации между первым полем с первой последовательностью символов и первым полем, на основе связи между первым пересчитанным вектором и первым полем.
11. Способ по п. 10, отличающийся тем, что определение множества векторов, представляющих множество последовательностей символов, содержит определение, с использованием второй нейронной подсети, словного эмбеддинга для каждой из множества последовательностей символов.
12. Способ по п. 1, отличающийся тем, что первая подсеть из одной или более подсетей должна пересчитывать множество векторов в направлении увеличения или уменьшения горизонтальных координат векторов, и при этом вторая подсеть из одной или более подсетей должна пересчитывать множество векторов в направлении увеличения или уменьшения вертикальных координат векторов.
13. Способ по п. 10, отличающийся тем, что определение связи между первым пересчитанным вектором из множества пересчитанных векторов и полем из множества полей содержит следующее:
построение третьей нейронной сетью множества гипотез об ассоциации, где каждая из гипотез об ассоциации содержит связь одного из множества пересчитанных векторов с первым полем;
определение вероятности возникновения для каждой из множества гипотез об ассоциации;
определение того, что первая гипотеза об ассоциации из множества гипотез об ассоциации имеет наибольшую вероятность возникновения, причем первая гипотеза об ассоциации содержит связь первого пересчитанного вектора с первым полем.
14. Постоянный машиночитаемый носитель данных, содержащий инструкции, которые при обращении к ним процессорного устройства побуждают его выполнять:
получение макета документа, содержащего множество полей; идентификацию документа, на основе его макета, в качестве принадлежащего к первому типу документов из множества определенных типов документов; определение множества последовательностей символов в документе; обработку множества последовательностей символов в документе с применением первой нейронной сети, ассоциированной с первым типом документов, для определения взаимосвязи между первым полем из множества полей с первой последовательностью символов из множества последовательностей символов в документе, и в котором
указанная первая нейронная сеть содержит одну или более нейронную подсеть, содержащую по меньшей мере один скрытый слой нейронов.
15. Носитель данных по п. 14, отличающийся тем, что отнесение документа к первому типу документов включает исполнение алгоритма кластеризации устройством обработки на основе инструкций.
16. Носитель данных по п. 15, отличающийся тем, что для исполнения процессорным устройством алгоритма кластеризации инструкции должны обеспечить выполнение следующих действий:
определение значения документа, характеризующего макет документа; сравнение значения документа с множеством значений кластеров, при этом одно из множества значений кластеров соответствует одному из множества идентифицированных типов документов;
определение того, что значение документа является наиболее близким к первому значению кластера из множества значений кластеров, при этом значение первого кластера соответствует типу документов.
17. Носитель данных по п. 14, отличающийся тем, что для обработки множества последовательностей символов с использованием первой нейронной сети инструкции побуждают в процессорное устройство выполнять:
определение множества векторов, при этом вектор из множества векторов принадлежит одной из множества последовательностей символов;
обработку множества векторов с использованием первой нейронной подсети первой нейронной сети для получения множества пересчитанных векторов, при этом каждый из множества пересчитанных векторов пересчитывается на основании значений множества векторов;
определение связи между первым пересчитанным вектором из множества пересчитанных векторов и первым полем из множества полей, при этом первый пересчитанный вектор является представителем первой последовательности символов из множества последовательностей символов;
определение связи между первым полем с первой последовательностью символов и первым полем, на основе связи между первым пересчитанным вектором и первым полем.
18. Носитель данных по п. 17, отличающийся тем, что для определения ассоциации между первым пересчитанным вектором из множества пересчитанных векторов и первым полем из множества полей инструкции побуждают процессорное устройство выполнять:
построение третьей нейронной сетью множества гипотез об ассоциации, где каждая из гипотез об ассоциации содержит связь одного из множества пересчитанных векторов с первым полем;
определение вероятности возникновения для каждой из множества гипотез об ассоциации; а также
определение того, что первая гипотеза об ассоциации из множества гипотез об ассоциации имеет наибольшую вероятность возникновения, причем первая гипотеза об ассоциации содержит связь первого пересчитанного вектора с первым полем.
19. Система для анализа неструктурированных документов, представленных в цифровом формате, включающая:
запоминающее устройство; и
процессорное устройство, функционально связанное с запоминающим устройством и настроенное на:
получение макета документа, содержащего множество полей;
идентификацию документа, на основе его макета, в качестве принадлежащего к первому типу документов из множества идентифицированных типов документов; определение множества последовательностей символов в документе; обработку с помощью процессорного устройства множества последовательностей символов в документе с применением первой нейронной сети, ассоциированной с первым типом документов, для определения взаимосвязи между первым полем из множества полей с первой последовательностью символов из множества последовательностей символов в документе и в которой
указанная первая нейронная сеть содержит одну или более нейронную подсеть, содержащую по меньшей мере один скрытый слой нейронов.
US 8996350 B1, 31.03.2015 | |||
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса | 1924 |
|
SU2015A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
КЛАССИФИКАЦИЯ ИЗОБРАЖЕНИЙ ДОКУМЕНТОВ НА ОСНОВЕ ПАРАМЕТРОВ ЦВЕТОВЫХ СЛОЕВ | 2015 |
|
RU2603495C1 |
СПОСОБ АВТОМАТИЧЕСКОЙ КЛАССИФИКАЦИИ ДОКУМЕНТОВ | 2003 |
|
RU2254610C2 |
Авторы
Даты
2020-12-02—Публикация
2019-11-20—Подача