Обработка электронных документов для распознавания инвойсов
PROCESSING OF ELECTRONIC DOCUMENTS FOR INVOICES RECOGNITION

ОБЛАСТЬ ТЕХНИКИ
[0001] Раскрываемые варианты реализации изобретения относятся в общем случае к обработке электронных документов, и в частности к обработке электронных документов с целью распознавания инвойсов.
УРОВЕНЬ ТЕХНИКИ
[0002] Электронные документы, содержащие изображение инвойса, можно получить путем сканирования инвойса или захвата изображения инвойса иным способом. Необходимость обработки большого количества инвойсов на предприятии может быть вызвана потребностями бухгалтерского учета, управления финансами или другими задачами. Для такой обработки предприятие может использовать услуги экономистов, бухгалтеров и т.д. Например, бухгалтер предприятия может вручную вводить информацию, содержащуюся в инвойсах, в программный продукт для сравнения информации, содержащейся в инвойсах, с информацией окредиторской задолженности. Учитывая объем инвойсов, который необходимо обработать, этот процесс может стать серьезной проблемой.
[0003] Традиционные средства распознавания инвойсов могут упростить эту задачу путем обработки сканированных изображений инвойсов с использованием оптического распознавания символов (OCR) для преобразования сканированного изображения инвойса в машиночитаемый текст с последующим распознаванием различных полей данных инвойса в машиночитаемом тексте. Однако существующим средствам распознавания инвойсов должен быть заранее известен формат инвойсов, используемый вендором, создавшим инвойс.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0004] Сущность изобретения будет более понятна из приведенного ниже описания предпочтительных вариантов реализации и приложенных чертежей различных вариантов реализации изобретения. Однако не следует считать, что чертежи ограничивают сущность изобретения конкретными вариантами осуществления, они предназначены только для пояснения и улучшения понимания сущности изобретения.
[0005] ФИГ. 1 - блок-схема вычислительного устройства, работающего в соответствии с вариантом реализации раскрываемого изобретения;
[0006] ФИГ. 2 представляет собой пример изображения инвойса в соответствии с вариантом реализации раскрываемого изобретения;
[0007] ФИГ. 3 представляет собой блок-схему, иллюстрирующую способ обработки электронных документов для распознавания инвойсов в соответствии с вариантом реализации раскрываемого изобретения;
[0008] ФИГ. 4 представляет собой блок-схему, иллюстрирующую способ идентификации элементов заголовка инвойса в соответствии с вариантом реализации раскрываемого изобретения;
[0009] ФИГ. 5А представляет собой блок-схему, иллюстрирующую способ определения эталонной записи табличной структуры в соответствии с вариантом реализации раскрываемого изобретения;
[0010] ФИГ. 5В представляет собой блок-схему, иллюстрирующую способ определения эталонной записи на основе опорных элементов табличной структуры в соответствии с вариантом реализации раскрываемого изобретения;
[0011] ФИГ. 6А представляет собой блок-схему, иллюстрирующую способ распознавания позиций заказа в инвойсе в соответствии с вариантом реализации раскрываемого изобретения;
[0012] ФИГ. 6В иллюстрирует примеры взаимного расположения полей данных в табличной структуре в соответствии с вариантом реализации раскрываемого изобретения;
[0013] ФИГ. 6С иллюстрирует примеры табличных структур в соответствии с вариантом реализации раскрываемого изобретения; и
[0014] ФИГ. 7 иллюстрирует блок-схему одного из вариантов реализации компьютерной системы.
ПОДРОБНОЕ ОПИСАНИЕ
[0015] Описываются способы и системы обработки электронных документов для распознавания инвойсов.
[0016] Под электронным документом может пониматься файл, содержащий один или более элементов цифрового контента, которые могут визуально отображаться для визуального представления электронного документа (например, на дисплее или в виде напечатанного материала). Электронный документ можно получить путем сканирования или другого способа захвата изображения бумажного документа, например, изображения инвойса. Электронный документ может быть представлен в виде файла любого подходящего формата, например, PDF, JPEG, PNG, BMP, DOC и т.д.
[0017] Инвойс может содержать данные одного или более заказов на поставку (например, заказ на поставку услуг, заказ на поставку продукции и т.д.). Каждый заказ на поставку может быть ассоциирован с табличной структурой (например, таблицей или другой структурой данных табличного формата), которая включает поставляемые позиции заказа на поставку. Каждая позиция заказа может относиться к определенному продукту или услуге, имеющимся в заказе на приобретение, и может быть представлена в виде одной или более записей, размещенных в табличной структуре в виде записей, при этом каждая запись может содержать одно или более полей данных, размещенных в соответствующих колонках табличной структуры. Каждая колонка может иметь элемент заголовка заказа на поставку и подмножество полей данных. Кроме того, каждая колонка может содержать описание одного или более полей данных заказа на поставку, таких как "№", "Наименование товара", "Единица измерения", "Количество", "Цена, руб", "Сумма, руб", "Итого", "Итого НДС", "Сумма к оплате" и др. Как вариант, элемент заголовка может соответствовать колонке, которая не содержит определенного значения (например, колонка может соответствовать единице измерения и не содержать значения единицы измерения). Кроме полей данных в табличной структуре заказа на поставку инвойс может содержать другие поля данных, например, номер заказа на поставку, общую сумму, номер инвойса, номер счета и т.д. Заказ на поставку в инвойсе может быть (а может не быть) ассоциирован с одним или более налогами на потребление (например, налогом на добавленную стоимость (НДС) или налогом на товары и услуги (НТУ)), и каждый потребительский налог может применяться ко всем или нескольким позициям заказа в заказе на поставку.
[0018] В вариантах реализации раскрываемого изобретения может производиться обработка изображения инвойса с целью распознавания содержащихся в инвойсе данных. Например, в вариантах реализации раскрываемого изобретения изображение может обрабатываться с помощью средств оптического распознавания символов (OCR) с целью распознавания элементов инвойса, таких как элементы заголовка табличной структуры заказа на поставку, поля данных каждой позиции заказа на поставку (например, поля данных, содержащие данные о наименовании продукта, количестве продукта, цене за единицу продукта и т.д.), общая сумма заказа на поставку, номер заказа на поставку и т.д.
[0019] В некоторых вариантах реализации изобретения элементы инвойса и/или другая информация, относящаяся к инвойсу, могут быть извлечены из изображения инвойса автоматически, без участия пользователя. Как вариант, при идентификации одного или более элементов инвойса и/или извлечении другой информации, относящейся к инвойсу, вариант осуществления раскрываемого изобретения может запрашивать у пользователя подтверждение идентифицированных элементов и/или извлеченной информации (например, путем вывода элементов и/или информации на экран с помощью одного или более пользовательских интерфейсов).
[0020] Компоненты предлагаемого варианта изобретения могут выполнять распознавание инвойсов без информации о формате, который использует создающий инвойсы вендор, и могут использовать распознанные элементы инвойса для извлечения этого формата с последующим использованием его в качестве шаблона для обработки инвойсов этого вендора или инвойсов, имеющих схожий формат. Кроме того или вместо этого пользователь может вводить данные, описывающие формат инвойса или части инвойса, и/или подтверждать и корректировать распознаваемые элементы инвойса. По предлагаемому варианту реализации изобретения ввод пользователя и/или поправки пользователя могут использоваться для обучения процесса распознавания инвойсов для обеспечения более точных результатов обработки последующих инвойсов. По этой причине в некоторых реализациях вывод процесса распознавания инвойсов может представлять собой сочетание информации, полученной из распознаваемых элементов текущего инвойса, информации, полученной при обработке предыдущих инвойсов, и информации, предоставленной пользователем.
[0021] ФИГ. 1 содержит блок-схему одного пояснительного примера вычислительного устройства 100, работающего в соответствии с одним или более аспектами предлагаемого варианта реализации изобретения. В пояснительных примерах вычислительное устройство 100 может быть реализовано в виде различных вычислительных устройств, включая планшетный компьютер, мобильный телефон, портативный компьютер, настольный компьютер и т.д.
[0022] Вычислительное устройство 100 может содержать процессор 110, подключенный к системной шине 120. Другие устройства, подключенные к системной шине 120, могут включать память 130, дисплей 140, оборудованный устройством оптического ввода с сенсорным экраном 160, клавиатуру 150 и один или более коммуникационных интерфейсов 170. Термин "подключенный" в данном документе означает как электрическое подключение, так и коммуникационную связь через одно или более промежуточных устройств, адаптеров или других приспособлений.
[0023] Процессор 110 может быть представлен одним или более устройствами обработки, включая устройства общего назначения и/или специализированные процессоры. Память 130 может включать одно или более устройств энергозависимой памяти (например, микросхем ОЗУ), одно или более устройств энергонезависимой памяти (например, микросхем ПЗУ или ЭППЗУ) и одно или более запоминающих устройств (например, оптических или магнитных дисков).
[0024] В некоторых вариантах реализации изобретения вычислительное устройство 100 может содержать сенсорный экран 160, выполненный в виде сенсорной области ввода и/или чувствительной поверхности, наложенной на дисплей 140. Пример вычислительного устройства, содержащего аспекты настоящего варианта реализации изобретения, будет более подробно обсуждаться ниже с учетом ФИГ. 7.
[0025] В некоторых вариантах реализации изобретения память 130 может содержать инструкции приложения 190 для обработки электронных документов для распознавания инвойсов. В одном из вариантов реализации изобретения приложение 190 для распознавания инвойсов может быть реализовано в качестве функции, вызываемой через пользовательский интерфейс другого приложения (например, приложения биллинга, бухгалтерской программы, приложения для редактирования электронных документов и т.д.). Кроме того или вместо этого приложение 190 для распознавания инвойсов может быть реализовано в качестве автономного приложения.
[0026] В пояснительном примере приложение 190 для распознавания инвойсов получает электронный документ, содержащий изображение инвойса. Электронный документ может иметь любой подходящий формат, например, PDF, JPEG, PNG, BMP и т.д. Изображение инвойса может быть представлено в виде структуры данных, содержащей группы многобитовых пикселей визуального представления инвойса. В некоторых вариантах реализации изобретения инвойс может содержать информацию, относящуюся к одному или более заказам на поставку (например, заказу на поставку услуг, заказу на поставку товаров и т.д.).
[0027] В некоторых вариантах реализации изобретения приложение 190 может обрабатывать изображение с использованием технологии оптического распознавания символов (OCR) и/или других подходящих технологий распознавания элементов изображения. Например, приложение 190 может анализировать изображение с целью идентификации части, которая соответствует табличной структуре, и дальнейшей обработки этой части изображения для выделения в табличной структуре одной или более записей. Приложение 190 также может идентифицировать другие части изображения, которые содержат дополнительные поля данных инвойса, такие как адрес получателя заказа на поставку, номер инвойса, номер заказа на поставку, общая сумма и т.д.
[0028] Приложение 190 может далее обрабатывать и/или анализировать записи для обнаружения последовательностей символов, разделенных пробелами. Такие последовательности символов могут представлять собой, например, слова, содержащие одну или более букв, числа, содержащие одну или более цифр, один или более символов и т.д. На основе обнаруженных последовательностей символов приложение 190 может распознавать входящие в запись поля данных, при этом в каждом из полей данных может содержаться одна или несколько последовательностей символов. Как вариант, приложение 190 может определять расположение обнаруженных полей данных в инвойсе. Приложение 190 может содержать функциональные возможности OCR или являться отдельной программой или модулем, который использует выходные данные приложения OCR.
[0029] ФИГ. 2 представляет пример изображения 200, которое может обрабатываться приложением 190 для распознавания инвойсов, запущенным на вычислительном устройстве 100 в соответствии с одним или более аспектами предлагаемого варианта реализации изобретения.
[0030] Приложение 190 может обрабатывать изображение 200 и распознавать поля данных 210, содержащиеся в изображении 200 (например, с использованием технологии OCR). Каждое поле данных 210 может содержать одну или более последовательностей символов, распознаваемых как описано выше. Другими словами, поле данных может соответствовать любым данным или блоку данных, распознаваемых с помощью OCR (например, машиночитаемому тексту или символам, распознаваемым с помощью OCR). Например, поле данных может быть элементом инвойса, содержащим текст "Единица измерения" или "Цена, руб". Изначально приложению 190 неизвестно, соответствует ли определенное поле данных заголовочному элементу, позиции заказа на поставку, или чему-либо, не связанному непосредственно с заказом на поставку (например, контактным данным вендора). Затем приложение 190 может использовать один или более способов, обсуждаемых в этом документе, для определения того, что поле данных, содержащее текст "Цена, руб", соответствует элементу заголовка заказа на поставку (например, исходя из его текста, расположения, типа данных и т.д.). В некоторых вариантах реализации приложение 190 может ошибочно идентифицировать "Цену, руб" как два поля данных (то есть поле данных "Цена" и поле данных "Руб") и определить, что они соответствуют двум предыдущим элементам заголовка (то есть "Цена" и "Руб"). Как мы подробнее рассмотрим ниже, приложение 190 может позднее определить, что два предыдущих элемента заголовка соответствуют одному элементу заголовка "Цена, руб" и должны быть объединены в один элемент заголовка.
[0031] Приложение 190 может начинать процесс распознавания инвойса с идентификации части изображения 200, которая содержит табличную структуру 220. Как можно увидеть, табличная структура 220 может содержать множество полей данных 210, содержащих данные о заказе на поставку. Табличная структура 220 может также содержать одну или более записей 223а, 223с, 223d, каждая из которых может содержать одно или более полей данных 210. В одном из вариантов реализации изобретения запись 223 содержит поля данных 210, которые распознаются приложением 190 с использованием технологии OCR и/или других подходящих технологий.
[0032] Несмотря на то, что на ФИГ. 2 изображен конкретный заказ на поставку, он приведен исключительно для иллюстрации. Как вариант, изображение инвойса может содержать информацию, относящуюся к нескольким заказам на поставку, и несколько табличных структур данных, соответствующих заказам на поставку.
[0033] Табличная структура 220 может содержать один или более элементов заголовка 225. Элемент 225 заголовка может быть описанием одного или более полей данных 210, таких как "№", "Наименование товара", "Единица измерения", "Количество", "Цена, руб", "Сумма, руб", "Итого", "Итого НДС", "Сумма к оплате" и др. Кроме того, элемент заголовка может соответствовать колонке табличной структуры 220, не имеющей конкретного описания.
[0034] Заказ на поставку может содержать одну или более позиций заказа 223а, 223b. Каждая позиция заказа может содержать одну или более записей 223а, 223с, 223d и полей данных 210. Например, позиция заказа, соответствующая номеру "3", может содержать запись 223а. В другом примере позиция заказа, соответствующая номеру "1", может содержать две записи, 223с и 223d.
[0035] Приложение 190 может обрабатывать и анализировать изображение 200 для распознавания элементов заказа на поставку, таких как номер заказа на поставку, общая сумма, элемент заголовка, позиция заказа и т.д. Приложение 190 может идентифицировать одно или более полей данных как соответствующих элементу заголовка (например, колонка полей данных 227 соответствует элементу заголовка 225, "Наименование товара"). Кроме того, приложение 190 может идентифицировать одну или более записей 223 как содержащие данные одной позиции заказа (например, поля данных, содержащие данные о наименовании продукта, количестве продукта, цене за единицу продукта и/или другую информацию, относящуюся к позициям заказа 230а-b). В некоторых вариантах реализации изобретения элементы и другая информация, относящаяся к инвойсу, могут распознаваться путем выполнения одной или более операций, описанных ниже, в соответствии с ФИГ. 3-6.
[0036] В некоторых вариантах реализации изобретения приложение 190 может получать информацию, относящуюся к элементам заказа на поставку, от заданного пользователя, который запросил распознавание инвойса. Например, приложение 190 (или другое подходящее приложение) может предлагать пользователю ввести информацию о расположении, относящуюся к типовым местам расположения элементов инвойса. В одном из вариантов реализации изобретения пользователь может предоставить местоположение колонки полей данных (например, самая левая колонка), которая соответствует определенному элементу инвойса (например, "Наименование товара"). В другом примере приложение может предложить пользователю предоставить одно или более ключевых слов, относящихся к заголовочным элементам инвойса. В некоторых вариантах реализации изобретения полученная информация может храниться в базе данных с привязкой к вводившему ее пользователю или любому другому пользователю.
[0037] В некоторых вариантах реализации изобретения приложение 190 может извлекать информацию из одного или более инвойсов и/или предоставлять информацию пользователю на основании запроса пользователя. Например, в ответ на получение запроса пользователя на выдачу номеров заказов на поставку, содержащихся в одном или более инвойсах, приложение 190 может обработать изображения инвойсов (например, используя одну или более операций по способам 300-600 с ФИГ. 3 и 6) и извлечь элементы данных, соответствующие номерам заказов на поставку. В другом примере приложение 190 может получать сделанный пользователем выбор одной или более частей инвойса или нескольких инвойсов, например, указанную колонку в одном или более инвойсах, несколько колонок в одном или более инвойсах и т.д. Приложение 190 затем может извлечь данные, содержащиеся в частях инвойсов. В некоторых вариантах реализации изобретения пользователь может выбрать/идентифицировать колонку или несколько колонок, введя одно или более ключевых слов, связанных с элементом заголовка и/или другую информацию, относящуюся к колонке.
[0038] В некоторых вариантах реализации изобретения приложение 190 может предоставить пользователю информацию об одном или более инвойсах, извлеченную описанным выше способом. Например, приложение 190 может выполнить вывод этой информации на дисплей, используя один или более пользовательских интерфейсов. В другом примере приложение 190 может создавать один или более электронных документов, содержащих извлеченную информацию. В еще одном примере приложение 190 может предоставлять извлеченную информацию другому приложению (например, приложению биллинга, бухгалтерской программе и т.д.).
[0039] ФИГ. 3 представляет собой блок-схему, иллюстрирующую способ 300 распознавания инвойсов в соответствии с вариантом реализации изобретения. Способ 300 и/или каждая из его отдельных функций, процедур, подпрограмм или операций может выполняться на одном или более обрабатывающих устройствах или компьютерных системах {например, на вычислительном устройстве 100 на Фиг. 1), с помощью которых реализуется способ. В некоторых вариантах реализации изобретения способ 300 может выполняться с использованием одного потока обработки. Как вариант, способ 300 может выполняться с использованием двух и более потоков обработки, так что каждый поток будет выполнять одну или более отдельных функций, процедур, подпрограмм или операций способа. В демонстрационном примере поток обработки, реализующий способ 300, может синхронизироваться (например, с использованием семафоров, критических секций и/или других механизмов синхронизации потоков). Как вариант, потоки обработки, реализующие способ 300, могут выполняться асинхронно относительно друг друга.
[0040] Способ 300 начинается с блока 310, в котором обрабатывающее устройство получает изображение инвойса (например, такое как изображение 200 на ФИГ. 2). В некоторых вариантах реализации изобретения инвойс может содержать один или более заказов на поставку. Каждый заказ на поставку содержит множество элементов, например, элементы заголовка, номер заказа на поставку, общую сумму, позиции заказа и т.д.
[0041] В блоке 320 обрабатывающее устройство может конвертировать изображение для его преобразования в машиночитаемый текст. Например, обрабатывающее устройство может обрабатывать изображение с использованием технологии OCR и/или другой подходящей технологии для извлечения текстового содержания элементов инвойса, таких как символы, числа и т.д. В качестве другого примера, обрабатывающее устройство может ассоциировать каждый из элементов с одним или более типами данных, например, строкой символов, числовыми данными, числом, десятичным числом и т.д. В качестве еще одного примера, обрабатывающее устройство может определять информацию о расположении, относящуюся к каждому из элементов. В одном из вариантов реализации изобретения информация о расположении, относящаяся к полю данных, может содержать данные (например, координаты) о положении элемента на изображении и/или положении геометрических структур (например, таблиц и других табличных структур) на изображении.
[0042] В блоке 330 обрабатывающее устройство может распознавать позиции заказа на поставку и поля данных каждой позиции заказа.
[0043] В некоторых вариантах реализации изобретения позиции заказа могут быть распознаны путем осуществления операций 332-338. В блоке 332 обрабатывающее устройство может определять часть изображения, содержащую табличную структуру данных. Например, обрабатывающее устройство может определять часть изображения, которая содержит больше полей данных, чем другие части изображения. В одном примере часть изображения 200 может быть идентифицирована как содержащая табличную структуру данных 220.
[0044] В блоке 334 обрабатывающее устройство может идентифицировать один или более элементов заголовков полей данных в табличной структуре. В одном из вариантов реализации изобретения каждый элемент заголовка может содержать описание одного или более полей данных, например, "№", "Наименование товара", "Единица измерения", "Количество", "Цена, руб", "Сумма, руб", "Итого", "Итого НДС", "Всего к оплате" и др. Как вариант, элемент заголовка может соответствовать колонке, которая не имеет определенного названия (например, колонка может соответствовать единице измерения, при этом единица измерения может отсутствовать). После идентификации элемента заголовка обрабатывающее устройство может связать элемент заголовка с описанием (например, "Единица измерения").
[0045] В одном из вариантов реализации изобретения обрабатывающее устройство может идентифицировать элементы заголовков, выполняя одну или более операций, описанных ниже и относящихся к ФИГ. 4. В некоторых вариантах реализации изобретения после идентификации одного или более элементов заголовков обрабатывающее устройство может ассоциировать каждый из определенных элементов заголовков с одним или более типами данных. Например, элемент заголовка "Наименования товара" может быть ассоциирован с типом данных "Строка символов". В качестве другого примера элемент заголовка "Количество" может быть ассоциирован с типами данных "Числовые данные" и/или "Целое число".
[0046] После идентификации элементов заголовков табличной структуры обрабатывающее устройство может определить записи табличной структуры, которые соответствуют отдельным позициям заказа в заказе на поставку. В некоторых реализациях обрабатывающее устройство может выполнять такую идентификацию, сначала находя запись, которая является наилучшим кандидатом на соответствие позиции заказа, а потом используя эту запись в качестве эталона (или модели) для идентификации в табличной структуре других записей, соответствующих позициям заказа в заказе на поставку. В частности, в блоке 336 обрабатывающее устройство может определять в табличной структуре эталонную запись, которая соответствует позиции заказа, эталонная запись может содержать одно или более полей данных и может ассоциироваться с одним или более типами данных. В некоторых вариантах реализации изобретения обрабатывающее устройство может определять эталонную запись на основании идентифицированных элементов заголовков, как будет подробно рассмотрено ниже в связи с ФИГ. 5.
[0047] В качестве другого примера для всех или некоторых записей табличной структуры обрабатывающее устройство может определить вероятность того, что строка является эталонной записью. В одном из вариантов реализации изобретения вероятность может быть определена на основе одной или более заранее определенных инструкций, реализованных в виде программного обеспечения компьютера, которые определяют набор характеристик эталонной записи. В другом варианте реализации изобретения вероятность может определяться с помощью классификатора, который способен определить, является ли данная строка табличной структуры эталонной записью. В некоторых вариантах реализации изобретения классификатор может обучаться с помощью подходящей технологии обучения машины или комбинации технологий (например, байесовских сетей, метода опорных векторов и т.д.).
[0048] В блоке 338 обрабатывающее устройство может определить корреляцию других записей с эталонной записью, чтобы идентифицировать в инвойсе оставшиеся позиции заказа. Например, другие записи могут сопоставляться с эталонной записью путем выполнения одной или более операций, описанных ниже в связи с ФИГ. 6.
[0049] В блоке 340 обрабатывающее устройство может распознавать в инвойсе другие поля данных, которые содержат данные о заказе на поставку. Например, обрабатывающее устройство может распознавать одно или более полей данных, которые соответствуют номеру заказа на поставку, общей сумме заказа на поставку, скидке с общей суммы, ставке налога и т.д. Обрабатывающее устройство затем может извлекать элементы данных, содержащие контент (например, символы, числа и т.д.) распознанных полей данных.
[0050] В одном из вариантов реализации изобретения обрабатывающее устройство может распознавать поля данных на основании их заранее определенного расположения в инвойсе. Например, обрабатывающее устройство может искать поля данных, соответствующие общей сумме заказа на поставку в области изображения под табличной структурой.
[0051] В одном из вариантов реализации изобретения обрабатывающее устройство может идентифицировать первое поле данных, ассоциированное с символьным типом данных (например, "Строка символов"), расположенное рядом со вторым полем данных, ассоциированным с числовым типом данных (например, "Числовые данные", "Целое число", "Десятичное число" и т.д.) и определять, содержит ли первое поле данных описание, соответствующее типу данных второго поля данных. Например, обрабатывающее устройство может идентифицировать первое поле данных, включающее определение "Скидка", и второе поле данных, содержащее число. Затем обрабатывающее устройство может определить, что первое поле данных включает описание, соответствующее типу данных второго поля данных, в ответ на запрос, ассоциируется ли второе поле данных с типом данных "Десятичное число", который соответствует "Скидке".
[0052] В одном из вариантов реализации изобретения обрабатывающее устройство может идентифицировать первое поле данных с символьным типом данных, которое расположено рядом со вторым полем данных с числовым типом данных и определить, содержит ли первое поле данных описание, указывающее на общую сумму, такое как "Сумма инвойса", "Налоги", "Сумма нетто", "Сумма без налогов", "Скидка" и т.д. Обрабатывающее устройство также может проверить правильность распознавания общей суммы, комбинируя отдельные идентифицированные поля данных в соответствии с формулой и сравнивая результат с общей суммой. Например, при идентификации полей данных рядом с описанием "Налоги", описанием "Сумма нетто" и описанием "Итого" обрабатывающее устройство может определить, можно ли скомбинировать данные в полях данных в соответствии со следующей формулой: "Сумма нетто" + "Налоги" × "Сумма нетто" = "Общая сумма". Если это так, обрабатывающее устройство может определить, равен ли результат этого вычисления общей сумме. В другом примере после идентификации полей данных рядом с описанием "Скидка", описанием "Сумма нетто" и описанием "Общая сумма" обрабатывающее устройство может определить, могут ли данные в полях данных быть скомбинированы в соответствии со следующей формулой: "Сумма нетто" + "Скидка" × "Сумма нетто" = "Общая сумма". Если это так, обрабатывающее устройство может определить, равен ли результат этого вычисления общей сумме.
[0053] ФИГ. 4 представляет собой блок-схему, которая иллюстрирует способ 400 идентификации элементов заголовков заказа на поставку в соответствии с предлагаемым вариантом реализации изобретения. Способ 400 и/или каждая из его отдельных функций, процедур, подпрограмм или операций может выполняться на одном или более обрабатывающих устройствах компьютерных систем (например, на вычислительном устройстве 100 на FIG. 1), с помощью которых реализуется способ. В некоторых вариантах реализации изобретения способ 400 может выполняться с использованием одного потока обработки. Как вариант, способ 400 может выполняться с использованием двух и более потоков обработки, так что каждый поток будет выполнять одну или более отдельных функций, процедур, подпрограмм или операций способа. В демонстрационном примере потоки обработки, реализующие способ 400, могут синхронизироваться (например, с использованием семафоров, критических секций и/или других механизмов синхронизации потоков). Как вариант, потоки обработки, реализующие способ 400, могут выполняться асинхронно относительно друг друга.
[0054] В блоке 410 обрабатывающее устройство может идентифицировать набор предварительных элементов заголовков заказа на поставку внутри инвойса. В частности, обрабатывающее устройство может идентифицировать одно или более полей данных табличной структуры (например, табличной структуры 220 с ФИГ. 2) как соответствующие предварительным элементам заголовков заказа на поставку. Например, обрабатывающее устройство может искать часть табличной структуры (например, горизонтальную часть), которая содержит больше полей данных, ассоциирующихся с типом данных "Строка символов", чем какая-либо другая часть изображения. Обрабатывающее устройство затем может определить поля данных, содержащиеся в горизонтальной части изображения, как соответствующие одному или более предварительным элементам заголовков. В более конкретном примере, как на ФИГ. 2, запись в табличной структуре 220 может содержать поля данных "№", "Наименование товара", "Единица измерения", "Количество", "Цена, руб", "Сумма, руб", "Итого", "Итого НДС", "Всего к оплате", каждое из которых ассоциируется с типом данных "Строка символов". В подобном примере обрабатывающее устройство может определить, что эта строка (запись) в табличной структуре 220 содержит больше полей данных, ассоциируемых с типом данных "Строка символов", чем другие записи в табличной структуре 220, и поэтому может определить, что каждое поле данных в этой записи соответствует предварительному элементу заголовка.
[0055] В качестве другого примера обрабатывающее устройство может идентифицировать один или более предварительных элементов заголовков табличной структуры, исходя из текстового контекста полей данных табличной структуры. В частности, например, обрабатывающее устройство ищет поля данных, содержащие одно или более ключевых слов, относящихся к одному или более элементам заголовков заказа на поставку. Примерами таких ключевых слов являются "№", "Наименование товара", "Единица измерения", "Количество", "Цена, руб", "Сумма, руб", "Итого", "Итого НДС", "Всего к оплате" и т.д. В одном из вариантов реализации изобретения одно или более ключевых слов могут быть предоставлены пользователем и/или сохранены в базе данных. В другом варианте реализации изобретения одно или более ключевых слов могут быть получены обрабатывающим устройством (или другим подходящим устройством) во время распознавания предыдущих инвойсов и сохранены в базе данных.
[0056] В некоторых вариантах реализации изобретения при идентификации одного или более предварительных элементов заголовков (например, при идентификации полей данных, соответствующих предварительным элементам заголовков) обрабатывающее устройство может предлагать пользователю подтвердить идентифицированные предварительные элементы заголовков (например, используя один или более графических интерфейсов). Например, обрабатывающее устройство может предложить пользователю указать, является ли идентифицированный предварительный элемент заголовка элементом заголовка заказа на поставку. В качестве другого примера обрабатывающее устройство может предложить пользователю выбрать одно или более полей данных табличной структуры как соответствующие элементам заголовков заказа на поставку.
[0057] Предварительные элементы заголовков, найденные в блоке 410, могут включать или не включать все элементы заголовков, ассоциированные с заказом на поставку. Чтобы найти оставшиеся элементы заголовков, обрабатывающее устройство может идентифицировать в табличной структуре блоки данных, которые могут с высокой степенью точности соответствовать полям данных позиции заказа в заказе на поставку, как определено обрабатывающим устройством. В частности в блоке 420 обрабатывающее устройство может идентифицировать в табличной структуре один или более опорных элементов, опорные элементы могут быть представлены полями данных, случайным образом распределенными по табличной структуре. Как вариант, некоторые или все опорные элементы могут быть частью одной или более строк табличной структуры, одной или более колонок табличной структуры и т.д.
[0058] В одном из вариантов реализации изобретения для определения того, что опорный элемент с высокой степенью достоверности представляет собой поле данных позиции заказа, обрабатывающее устройство может идентифицировать поля данных, которые содержат числовые данные, в качестве опорных элементов, если типы данных этих полей данных соответствуют полям данных, которые обычно содержатся в различных инвойсах (например, "Количество позиций заказа" имеет тип данных "Целое число", "Цена за единицу" имеет тип данных "Десятичное число", "Всего по позиции заказа" имеет тип данных "Десятичное число" и т.д.).
[0059] Кроме того или как вариант обрабатывающее устройство может определять, что опорный элемент с высокой достоверностью соответствует полю данных позиции заказа, на основе отношений между наборами полей данных, содержащих числовые данные. Например, обрабатывающее устройство может определять математические отношения между несколькими наборами полей данных, например, каждый первый набор полей данных является результатом умножения одного из вторых наборов полей данных на один из третьих наборов полей данных. После выявления того факта, что определенные математические соотношения соответствуют заранее известной формуле (например, общая стоимость определенного продукта в одной из позиций будет результатом умножения цены за единицу продукта на его количество), обрабатывающее устройство определяет, что несколько наборов полей данных являются опорными элементами.
[0060] В блоке 430 обрабатывающее устройство может определить одну или более эталонных записей табличной структуры. В одном из вариантов реализации изобретения эталонная запись может идентифицироваться с помощью одной или более описанных ниже операций, как на ФИГ. 5А и/или 5В. В некоторых вариантах реализации изобретения блоки 420 и/или 430 можно пропустить.
[0061] В блоке 440 обрабатывающее устройство может идентифицировать обновленный набор элементов заголовков. Обновленный набор элементов заголовков может быть идентифицирован на основе одного или более предварительных элементов заголовков, опорных элементов, эталонных записей и т.д. В некоторых вариантах реализации изобретения обновленный набор элементов заголовков может быть идентифицирован путем выполнения одного или более блоков 442, 444 и 446.
[0062] В блоке 442 обрабатывающее устройство определяет, следует ли включить каждый предварительный элемент заголовка, определенный в блоке 410, в обновленный набор элементов заголовков. В одном из вариантов реализации изобретения обрабатывающее устройство выполняет определение на основании информации о расположении соответствующих опорных элементов. Например, обрабатывающее устройство может сравнивать расположение опорного элемента и расположение определенного предварительного элемента заголовка, и определять, расположен ли предварительный элемент заголовка над опорным элементом, и выровнен ли он по положению опорного элемента. Если это так, обрабатывающее устройство может определить, что предварительный элемент заголовка соответствует элементу заголовка табличной структуры. Как вариант, обрабатывающее устройство может определить, что предварительный элемент заголовка не должен включаться в обновленный набор элементов заголовков, если обнаружит, что элемент заголовка не выровнен по соответствующему опорному элементу.
[0063] В одном из вариантов реализации изобретения обрабатывающее устройство может определять корреляцию между определенным предварительным элементом заголовка и опорным элементом и затем на основе корреляции определять, следует ли разделить предварительный элемент заголовка табличной структуры на несколько элементов заголовков. В некоторых вариантах реализации изобретения корреляция указывает количество опорных элементов, которые соответствуют указанному предварительному элементу заголовка. Например, обрабатывающее устройство может определять, соответствует ли предварительный элемент заголовка нескольким опорным элементам. В результате определения соответствия предварительного элемента заголовка нескольким опорным элементам обрабатывающее устройство может определить, что предварительный элемент заголовка соответствует нескольким элементам заголовка в табличной структуре, и может разбить предварительный элемент заголовка на несколько элементов заголовка. В частности, например, после обнаружения того факта, что предварительный элемент заголовка соответствует определенному количеству опорных элементов (например, двум колонкам полей данных), обрабатывающее устройство может разделить предварительный элемент заголовка на несколько элементов заголовка, исходя из количества опорных элементов, которые соответствуют предварительному элементу. В некоторых вариантах реализации изобретения корреляция указывает, что несколько предварительных элементов заголовков (например, "Единицы измерения" и "Цена") соответствуют одному опорному элементу (например, колонке полей данных). Затем обрабатывающее устройство определяет, что несколько предварительных элементов заголовков должны быть объединены в один элемент заголовка табличной структуры (например, "Цена за единицу").
[0064] В одном из вариантов реализации изобретения обрабатывающее устройство может определять, соответствуют ли один или более предварительных элементов заголовка одному или более элементам заголовка табличной структуры, исходя из расстояний между предварительными элементами заголовков. В частности, например, обрабатывающее устройство может определить первое расстояние между первым предварительным элементом заголовка (например, "Единица") и вторым предварительным элементом заголовка (например, "Цена"), и второе расстояние между вторым предварительным элементом заголовка (например, "Цена") и третьим предварительным элементом заголовка (например, "НДС"). Затем обрабатывающее устройство может сравнить два расстояния, чтобы определить, одинаковы ли они. Например, расстояние между двумя предварительными элементами заголовков может измеряться количеством пробелов между предварительными элементами заголовков. В одном из примеров два расстояния могут определяться как одинаковые, если разница между двумя расстояниями (например, абсолютная разница, квадрат абсолютной разницы и т.д.), не превышает заранее определенное значение. Если два расстояния признаны одинаковыми, обрабатывающее устройство может определить, что и первый предварительный элемент заголовка, и второй предварительный элемент заголовка соответствуют элементам заголовка табличной структуры. С другой стороны, если первое расстояние меньше, чем второе, обрабатывающее устройство может определить, что и первый предварительный элемент заголовка, и второй предварительный элемент заголовка следует объединить в один заголовочный элемент табличной структуры.
[0065] В одном из вариантов реализации изобретения обрабатывающее устройство может определить, соответствуют ли один или более предварительных элементов заголовка элементам заголовка табличной структуры, исходя из одной или более эталонных записей. Например, обрабатывающее устройство может сравнить информацию о расположении, относящуюся к эталонной записи и информацию о расположении, относящуюся к каждому из предварительных элементов заголовка. В некоторых вариантах реализации изобретения обрабатывающее устройство, обнаружив, что предварительный элемент заголовка не выровнен по соответствующему полю данных эталонной записи, определяет, что этот предварительных элемент заголовка не является элементом заголовка табличной структуры. В другом случае обрабатывающее устройство, обнаружив, что предварительный элемент заголовка выровнен по соответствующему полю данных эталонной записи, определяет, что предварительный элемент заголовка является элементом заголовка табличной структуры.
[0066] В блоке 444 обрабатывающее устройство может определить, что один или более известных заголовков инвойса не идентифицированы. Примеры известных заголовков инвойса включают "Наименование товара", "Количество", "Цена, руб", "Итого" и/или другие заголовки, которые считаются стандартными заголовками инвойсов. В некоторых вариантах реализации изобретения обрабатывающее устройство может иметь доступ к базе данных, в которой хранится информация, относящаяся к известным заголовкам, для получения информации об известных заголовках инвойсов, ассоциирующихся с одним или более пользователями. В некоторых вариантах реализации изобретения информация, относящаяся к одному или более известным заголовками инвойсов может предоставляться пользователем и может сохраняться в базе данных.
[0067] В блоке 446 обрабатывающее устройство может идентифицировать один или более дополнительных элементов заголовков табличной структуры, исходя из неидентифицированных известных заголовков инвойсов. В частности, обрабатывающее устройство может идентифицировать одно или более полей данных табличной структуры как соответствующие неидентифицированным известным заголовкам инвойса. Например, обрабатывающее устройство может искать поля данных, которые содержат описание, указывающее на неопределенный известный заголовок. Более конкретно, например, определив, что известный заголовок "Наименование товара" не идентифицирован, обрабатывающее устройство может искать в табличной структуре поля данных, которые содержат одно или более ключевых слов, относящихся к "Наименованию товара" (например, "Наименование", "Наименование товара", "Наименование продукта" и т.д.).
[0068] Кроме того или вместо этого обрабатывающее устройство ищет поля данных, ассоциированные с типами данных (например, "Строка символов"), определенными в известных заголовках инвойса (например, "Наименование товара"). В одном из вариантов реализации изобретения обрабатывающее устройство может искать в табличной структуре часть полей данных, занимающую всю ширину структуры (например, часть 227 на изображении 200, как показано на ФИГ. 2). Затем обрабатывающее устройство определяет вероятность соответствия этих полей данных известному заголовку. В одном из вариантов реализации изобретения вероятность соответствия может определяться на основании одной или более заранее определенных программно реализованных инструкций, которые определяют набор свойств полей данных, относящихся к известному заголовку. В другом варианте реализации изобретения вероятность соответствия может определяться с помощью классификатора, который может определять, соответствует ли указанное поле данных табличной структуры известному заголовку. В некоторых вариантах реализации изобретения классификатор может обучаться с помощью подходящей технологии обучения машины (например, байесовских сетей, метода опорных векторов и т.д.).
[0069] В качестве другого примера обрабатывающее устройство идентифицирует сначала одно или более полей данных, находящихся в типовых местах инвойса, которые могут включать известный заголовок (например, левая колонка табличной структуры полей данных соответствует "№"). Затем обрабатывающее устройство определяет вероятность соответствия этих полей данных известному заголовку. В одном из вариантов реализации изобретения вероятность соответствия может определяться на основании одной или более заранее определенных программно реализованных инструкций, которые определяют набор свойств полей данных, относящихся к известному заголовку. В другом варианте реализации изобретения вероятность соответствия может определяться с помощью классификатора, который может определять, соответствует ли указанное поле данных табличной структуры известному заголовку. В некоторых вариантах реализации изобретения классификатор может обучаться с помощью подходящей технологии обучения машины (например, байесовских сетей, метода опорных векторов и т.д.).
[0070] В качестве дополнительного примера обрабатывающее устройство может идентифицировать один или более неопределенных элементов заголовков, исходя из известной информации о расположении, относящейся к известным заголовкам инвойса. В частности, например, обрабатывающее устройство может определять, что поля данных, относящиеся к "Наименованию товара", часто расположены между полями данных, соответствующими "№" и полями данных, соответствующими "Единицам измерения". В этом случае обрабатывающее устройство определяет, что элемент заголовка между элементом заголовка "№" и элементом заголовка "Единица измерения" является "Наименованием товара". Как вариант, обрабатывающее устройство может определять, соответствует ли тип данных, заданный определенным элементом заголовка, типу данных, ассоциированному с набором полей данных, расположенных ниже определенного элемента заголовка. Например, обрабатывающее устройство определяет, что заголовок "Наименование товара" определяет тип данных "Строка символов", и что набор полей данных, расположенный ниже определенного заголовка, ассоциирован с типом данных "Строка символов". В этом случае обрабатывающее устройство определяет, что определенный элемент заголовка представляет собой "Наименование товара".
[0071] ФИГ. 5А представляет собой блок-схему, иллюстрирующую способ 510 идентификации эталонной записи в табличной структуре данных, представляющей заказ на поставку, в соответствии со способом реализации изобретения. Способ 510 и/или каждая из его отдельных функций, процедур, подпрограмм или операций может выполняться одним или более процессорами компьютерной системы (например, вычислительным устройством 100 на ФИГ. 1), с помощью которых реализуется способ. В некоторых вариантах реализации изобретения способ 510 может выполняться с использованием одного потока обработки. Как вариант, способ 510 может выполняться с использованием двух и более потоков обработки, так что каждый поток будет выполнять одну или более отдельных функций, процедур, подпрограмм или операций способа. В демонстрационном примере потоки обработки, реализующие способ 300, могут синхронизироваться (например, с использованием семафоров, критических секций и/или других механизмов синхронизации потоков). Как вариант, потоки обработки, реализующие способ 300, могут выполняться асинхронно относительно друг друга.
[0072] В блоке 512 обрабатывающее устройство может идентифицировать один или более элементов заголовков табличной структуры. В одном варианте реализации изобретения элементы заголовка могут идентифицироваться путем выполнения одной или более операций, описанных выше для ФИГ. 4.
[0073] В блоке 514 обрабатывающее устройство может идентифицировать несколько записей в табличной структуре. Например, обрабатывающее устройство может идентифицировать записи, содержащие поля данных, расположенные ниже идентифицированных элементов заголовков. В другом примере обрабатывающее устройство может идентифицировать записи, содержащие заранее определенное число полей данных (например, предельные количества полей данных, самое большое количество полей данных и т.д.).
[0074] В блоке 516 обрабатывающее устройство может сравнивать поля данных идентифицированных записей с одним или более элементами заголовков, чтобы выявить одно или более совпадений. Например, обрабатывающее устройство может сравнивать типы данных, ассоциированные с полями данных идентифицированной записи, с типами данных, определенными для элементов заголовков. Затем обрабатывающее устройство выявляет совпадения между записями и элементами заголовков, идентифицируя поля данных записи, относящейся к определенному типу данных (например, "Строка символов"), который задан одним из идентифицированных заголовочных элементов (например, "Наименование товара").
[0075] В другом примере обрабатывающее устройство может сравнивать информацию о расположении, относящуюся к элементам заголовков, с информацией о расположении полей данных в записи. В частности, например, обрабатывающее устройство определяет, действительно ли каждое поле данных записи расположено ниже соответствующего идентифицированного заголовка и выровнено с ним по вертикали. Затем обрабатывающее устройство определяет, действительно ли поле данных записи расположено ниже идентифицированного заголовка и выровнено с ним, и ищет соответствия.
[0076] В блоке 518 обрабатывающее устройство на основе этого сравнения может определить эталонную запись. В одном варианте реализации изобретения эталонная запись содержит поля данных, которые имеют наибольшее количество совпадений с идентифицированными элементами заголовков по сравнению с другими записями табличной структуры. В другом варианте реализации изобретения обрабатывающее устройство может определять, что строка в табличной структуре является эталонной записью, обнаружив заранее определенное количество совпадений между полями данных записи и полями данных элементов заголовков (например, наибольшее количество совпадений, второе наибольшее количество совпадений, предельное количество совпадений и т.д.).
[0077] ФИГ. 5В представляет собой блок-схему, иллюстрирующую способ 520 идентификации эталонной записи с помощью опорных элементов заказа на поставку в соответствии со способом реализации изобретения. Способ 520 и/или каждая из его отдельных функций, процедур, подпрограмм или операций могут выполняться одним или более обрабатывающими устройствами вычислительной системы (например, вычислительным устройством 100 на ФИГ. 1), с помощью которых реализуется способ. В некоторых вариантах реализации изобретения способ 510 может выполняться с использованием одного потока обработки. Как вариант, способ 520 может выполняться с использованием двух и более потоков обработки, так что каждый поток будет выполнять одну или более отдельных функций, процедур, подпрограмм или операций способа. В демонстрационном примере потоки обработки, реализующие способ 520, могут синхронизироваться (например, с использованием семафоров, критических секций и/или других механизмов синхронизации потоков). Как вариант, потоки обработки, реализующие способ 520, могут выполняться асинхронно относительно друг друга.
[0078] В блоке 521 обрабатывающее устройство может идентифицировать одну или более записей табличной структуры, содержащих один или более опорных элементов. В некоторых вариантах реализации изобретения опорные элементы могут идентифицироваться путем выполнения одной или более операций, описанных выше при рассмотрении ФИГ. 4. В одном из примеров обрабатывающее устройство может идентифицировать запись, которая содержит заранее определенное количество опорных элементов (например, предельное количество опорных элементов, наибольшее количество опорных элементов и т.д.).
[0079] В блоке 523 обрабатывающее устройство может определить, было ли в блоке 521 идентифицировано более одной записи. В одном из вариантов реализации изобретения при выявлении того, что в блоке 521 была идентифицирована одна строка, обрабатывающее устройство может перейти к блоку 525 и определить идентифицированную запись как эталонную запись.
[0080] Как вариант, определив, что в блоке 521 идентифицировано более одной записи, обрабатывающее устройство может перейти к блоку 527 и сравнить поля данных идентифицированных записей с одним или более элементами заголовков табличной структуры, чтобы найти одно или более совпадений. Например, обрабатывающее устройство может сравнивать типы данных, ассоциированные с полями данных идентифицированной записи, с типами данных, определенными для элементов заголовков. Затем при идентификации поля данных записи, ассоциированного с типом данных, определяемым одним или более элементами заголовков, обрабатывающее устройство идентифицирует совпадения между записью и элементом заголовка.
[0081] В другом примере обрабатывающее устройство может сравнивать информацию о расположении, относящуюся к элементам заголовков, с информацией о расположении полей данных в записи. В частности, например, обрабатывающее устройство определяет, действительно ли каждое поле данных записи расположено ниже соответствующего идентифицированного заголовка и выровнено с ним по вертикали. Затем обрабатывающее устройство определяет, действительно ли поле данных записи расположено ниже идентифицированного заголовка и выровнено с ним, и ищет соответствия.
[0082] В блоке 529 обрабатывающее устройство на основе этого сравнения может определить эталонную запись. В одном варианте реализации изобретения эталонная запись содержит поля данных, которые имеют наибольшее количество совпадений с идентифицированными элементами заголовков по сравнению с другими записями табличной структуры. В другом варианте реализации изобретения обрабатывающее устройство может определять, что строка в табличной структуре является эталонной записью, обнаружив заранее определенное количество совпадений между полями данных записи и полями данных элементов заголовков (например, наибольшее количество совпадений, второе наибольшее количество совпадений, предельное количество совпадений и т.д.).
[0083] ФИГ. 6 представляет собой блок-схему, иллюстрирующую способ 600 установления корреляции между эталонной записью и другими записями для распознавания инвойсов в соответствии с вариантом реализации настоящего изобретения. Способ 600 и/или каждая из его отдельных функций, процедур, подпрограмм или операций может выполняться на одном или более обрабатывающих устройствах или компьютерных системах (например, на вычислительном устройстве 100 на FIG. 1), с помощью которых реализуется способ. В некоторых вариантах реализации изобретения способ 600 может выполняться с использованием одного потока обработки. Как вариант, способ 600 может выполняться с использованием двух и более потоков обработки, так что каждый поток будет выполнять одну или более отдельных функций, процедур, подпрограмм или операций способа. В демонстрационном примере потоки обработки, реализующие способ 600, могут синхронизироваться (например, с использованием семафоров, критических секций и/или других механизмов синхронизации потоков). Как вариант, потоки обработки, реализующие способ 600, могут выполняться асинхронно относительно друг друга.
[0084] В блоке 611 обрабатывающее устройство идентифицирует эталонную запись табличной структуры. В некоторых вариантах реализации изобретения эталонная запись может быть идентифицирована путем выполнения одной или более операций, описанных ранее при рассмотрении ФИГ. 5А и 5В. эталонная запись в некоторых вариантах реализации изобретения соответствует позиции заказа в заказе на поставку (например, позиция заказа 230а-b на ФИГ. 2).
[0085] В блоке 613 обрабатывающее устройство идентифицирует одну или более записей-кандидатов, которые соответствуют эталонной записи. В одном из вариантов реализации изобретения строка-кандидат может быть записью, которая содержит один или более опорных элементов (например, один или более опорных элементов, которые были распознаны при выполнении одной или более операций, описанных выше при рассмотрении блока 430 на ФИГ. 4). В другом варианте реализации изобретения обрабатывающее устройство может выбрать запись в табличной структуре в качестве записи-кандидата, определив, что строка содержит одно или более полей данных, находящихся ниже и выровненных по одному или более элементам заголовков табличной структуры. В одном из вариантов реализации изобретения элементы заголовков могут распознаваться путем выполнения одной или более операций, описанных выше при рассмотрении ФИГ. 3 и 4.
[0086] В некоторых вариантах реализации изобретения обрабатывающее устройство может идентифицировать запись-кандидата как соответствующую эталонной записи, обнаружив заранее определенное количество соответствий между записью-кандидатом и эталонной записью (например, граничное количество совпадений, наибольшее количество совпадений из нескольких записей-кандидатов и т.д.). Обрабатывающее устройство может идентифицировать совпадение между записью-кандидатом и эталонной записью, сравнивая информацию, относящуюся к полям данных записи-кандидата, с информацией, относящейся к полям данных эталонной записи. Например, обрабатывающее устройство может сравнивать типы данных, ассоциированные с полями данных записи-кандидата, с типами данных, ассоциированными с полями данных эталонной записи. Затем, идентифицируя поле данных записи-кандидата и соответствующее ей поле данных эталонной записи (поле данных эталонной записи находится в колонке табличной структуры, содержащей поле данных записи-кандидата), которое ассоциировано с тем же типом данных, обрабатывающее устройство идентифицирует совпадение между записью-кандидатом и эталонной записью.
[0087] В качестве другого примера обрабатывающее устройство может сравнивать информацию о расположении записи-кандидата с информацией о положении эталонной записи. В частности, например, обрабатывающее устройство идентифицирует совпадение между записью-кандидатом и эталонной записью, определяя, что поле данных записи-кандидата расположено в колонке табличной структуры, содержащей поле данных эталонной записи.
[0088] В блоке 615 обрабатывающее устройство может определять структурный шаблон позиций заказа в табличной структуре. Структурный шаблон может указывать на количество записей в позиции заказа, расположение записей друг относительно друга, определенные поля данных, входящие в каждую запись и т.д. Например, структурный шаблон может указывать, что позиция заказа содержит одну или более эталонных записей и/или одну или более других записей. Например, как показано на ФИГ. 6В, структурный шаблон 620 может указывать, что позиция заказа содержит только одну эталонную запись 621. В другом примере структурный шаблон 630 на ФИГ. 6В может указывать, что позиция заказа содержит эталонную запись 631 и дополнительные записи 633 и 635. Как показано на ФИГ. 6В, строка 633 и строка 635 могут располагаться ниже эталонной записи 631. В другом случае структурный шаблон 640 может указывать, что позиция заказа содержит эталонную запись 641 и дополнительные записи 643 и 645, причем запись 643 расположена выше эталонной записи 641, а запись 645 - ниже эталонной записи 641. Каждая из записей 621, 631, 633, 635, 641, 643 и 645 содержит одно или более полей данных (не показаны).
[0089] В некоторых вариантах реализации изобретения структурный шаблон может относиться к нескольким позициям заказа в табличной структуре. Например, как показано на ФИГ. 6С, структурный шаблон 630 применима к нескольким позициям заказа табличной структуры 650. В качестве другого примера, как показано на ФИГ. 6С, структурный шаблон 640 применим к нескольким позициям заказа табличной структуры 660.
[0090] Обрабатывающее устройство может идентифицировать структурный шаблон позиций заказа, используя любую подходящую технологию или комбинацию технологий. Например, обрабатывающее устройство может выбирать из записей-кандидатов, идентифицированных в блоке 613, запись-кандидата, расположенную ближе всего к эталонной записи, идентифицированной в блоке 611. Обрабатывающее устройство затем может определить, расположена ли какая-либо из неидентифицированных записей между эталонной записью, идентифицированной в 611, и выбранной эталонной записью-кандидатом. В одном из вариантов реализации изобретения после выявления отсутствия неидентифицированных записей между эталонной записью и выбранной записью-кандидатом обрабатывающее устройство может определить, что каждая позиция заказа в заказе на поставку содержит одну запись.
[0091] Как вариант, после определения наличия одной или более неидентифицированных записей, находящихся между эталонной записью и выбранной записью-кандидатом, обрабатывающее устройство может определить, что каждая позиция заказа в заказе на поставку содержит несколько записей. В частности, например, обрабатывающее устройство может определить количество неидентифицированных записей, расположенных между эталонной записью и выбранной записью-кандидатом (например, одна запись, две записи и т.д.). Затем обрабатывающее устройство на основании количества неидентифицированных записей может определить количество записей для каждой позиции заказа. Например, при обнаружении двух неидентифицированных записей между эталонной записью и выбранной записью-кандидатом обрабатывающее устройство может определить, что каждая позиция заказа содержит три записи.
[0092] Обрабатывающее устройство может определить, возможно ли применение определенного шаблона к нескольким позициям заказа в табличной структуре. Например, обрабатывающее устройство может сравнить информацию, относящуюся к полям данных в определенном шаблоне с соответствующей информацией, относящейся к полям данных в записях позиций заказа в табличной структуре, чтобы обнаружить одно или более совпадений между определенным шаблоном и позициями заказа. Сравниваемая информация может включать, например, типы данных полей данных, шрифты полей данных, информацию о расположении полей данных, повторяющиеся фрагменты данных в позициях заказа и т.д.
[0093] В более частном примере обрабатывающее устройство может сравнивать типы данных, ассоциированные с полями данных в определенном шаблоне, с типами данных, ассоциированными с полями данных одной или более записей, которые могут соответствовать позиции заказа в табличной структуре. После идентификации полей данных записей и полей данных определенного шаблона, которые ассоциированы с одним и тем же типом данных (например, "Строка символов"), обрабатывающее устройство идентифицирует совпадение между определенным шаблоном и позицией заказа.
[0094] В другом более частном примере обрабатывающее устройство может сравнивать информацию о расположении, относящуюся к полям данных в определенном шаблоне, и информацию о расположении, относящуюся к полям данных одной или более записей, которые могут соответствовать позиции заказа в табличной структуре. В частности, например, обрабатывающее устройство определяет, выровнено ли каждое поле данных записей (по вертикали) относительно поля данных в определенном шаблоне. После обнаружения выравнивания полей данных записей и поля данных определенного шаблона обрабатывающее устройство идентифицирует обнаруженные совпадения.
[0095] В некоторых вариантах реализации изобретения обрабатывающее устройство может определять количество совпадений между определенным шаблоном и каждой позицией заказа в табличной структуре (например, одно совпадение, два совпадения, три совпадения и т.д.). Определив, что все позиции заказа в табличной структуре имеют приблизительно одинаковое количество совпадений с определенным шаблоном, обрабатывающее устройство может определить, что определенный шаблон применим ко всем позициям заказа.
[0096] Если обрабатывающее устройство определит, что определенный шаблон применим ко всем позициям заказа в табличной структуре данных, и что определенный шаблон представляет собой шаблон из одной записи, выполнение способа 610 прекращается. Как вариант, если обрабатывающее устройство определит, что как минимум некоторые из позиций заказа в табличной структуре соответствуют шублону из нескольких записей, обрабатывающее устройство идентифицирует оставшиеся записи позиций заказа с шаблоном из нескольких записей (блок 617). Для идентификации оставшихся записей, которые принадлежат той же позиции заказа, в качестве заданной эталонной записи могут использоваться различные параметры. К этим параметрам могут относиться, например, взаимное расположение записей, расстояния между записями и т.д. Например, обрабатывающее устройство определяет, относятся ли эталонная запись и соседняя с ней (непосредственно сверху или снизу) неидентифицированная строка к одной позиции заказа. В частности, например, обрабатывающее устройство может определять первое расстояние между эталонной записью и записью, расположенной над эталонной (например, расстояние между записью 653 и эталонной записью 651 на ФИГ. 6С, расстояние между записью 663 и эталонной записью 661 на ФИГ. 6С и т.д.). Обрабатывающее устройство также определяет второе расстояние между эталонной записью и записью, расположенной ниже эталонной (например, расстояние между эталонной записью 651 и записью 655 на ФИГ. 6С, расстояние между эталонной записью 661 и записью 665 на ФИГ. 6С и т.д.). В некоторых вариантах реализации изобретения расстояние между двумя записями может измеряться количеством расположенных между ними записей и/или пробелов.
[0097] Обрабатывающее устройство может затем сравнивать два расстояния, чтобы определить, относятся ли записи, соседние с эталонной записью, и сама эталонная запись к одной и той же позиции заказа. В одном из примеров, определив, что первое расстояние равно второму расстоянию, обрабатывающее устройство определяет, что сама эталонная запись (например, эталонная запись 661 на ФИГ. 6С) и обе записи, соседние с эталонной записью (например, строка 663 и строка 665 на ФИГ. 6С) соответствуют одной позиции заказа. В некоторых вариантах реализации изобретения обрабатывающее устройство, определив, что разница между первым расстоянием и вторым расстоянием не превышает предельного значения, может посчитать, что первое расстояние равно второму расстоянию.
[0098] В другом примере, определив, что первое расстояние больше второго расстояния (например, что разница между первым расстоянием и вторым расстоянием превышает предельное значение), обрабатывающее устройство определяет, что строка, расположенная ниже эталонной записи (например, строка 655 на ФИГ. 6С), и сама эталонная запись (например, строка 651 на ФИГ. 6С) соответствуют одной позиции заказа. Как вариант, обрабатывающее устройство может определить, что строка, расположенная выше эталонной записи (например, строка 653 на ФИГ. 6С), и сама эталонная запись (например, строка 655 на ФИГ. 6С) не относятся к одной позиции заказа.
[0099] В еще одном примере, определив, что второе расстояние больше первого расстояния (например, разница между первым расстоянием и вторым расстоянием превышает предельное значение), обрабатывающее устройство определяет, что строка, расположенная выше эталонной записи, и сама эталонная запись соответствуют одной позиции заказа. Кроме того, обрабатывающее устройство может определить, что строка, расположенная ниже эталонной записи, и сама эталонная запись не соответствуют одной позиции заказа.
[00100] ФИГ. 7 иллюстрирует схематическое представление машины в примере компьютерной системы 700, в которой может выполняться набор инструкций, заставляющий машину реализовывать один или более способов, обсуждавшихся в этом документе. В других вариантах реализации изобретения машина может быть подключена (например, по сети) к другим машинам в локальной сети, интранете, экстранете или Интернете. В сети клиент-сервер машина может функционировать в качестве сервера или клиентского устройства, а в одноранговой (или распределенной) сети - в качестве узла сети. Машина может представлять из себя персональный компьютер (ПК), планшетный ПК, телеприставку (STB), карманный персональный компьютер (КПК), сотовый телефон, веб-станцию, сервер, сетевой маршрутизатор, коммутатор или мост, или любую машину, способную выполнить набор инструкций (последовательных или иных), которые определяют действия для выполнения данной машиной. В дальнейшем, несмотря на то, что на рисунке изображается одна машина, термин "машина" также будет включать в себя любые наборы машин, которые по отдельности или совместно выполняют набор (или несколько наборов) инструкций, осуществляя любой один или более рассматриваемых в этом документе способов.
[00101] Компьютерная система 700 включает обрабатывающее устройство 702 (например, процессор, ЦП и т.д.), основную память 704 (например, постоянное запоминающее устройство (ПЗУ), флэш-память, динамическую память с произвольным доступом (динамическое ОЗУ) (например, синхронное динамическое ОЗУ, или DRAM (SDRAM), или DRAM (RDRAM) и т.д.), статическую память 706 (например, флэш-память, статическую память с произвольным доступом (статистическое ОЗУ), и т.д.), и запоминающее устройство 718, которые могут обмениваться информацией друг с другом с помощью шины 708.
[00102] Обрабатывающее устройство 702 представляет собой один или более обрабатывающих устройств общего назначения, например, микропроцессор, центральный процессор или аналогичное устройство. В частности, процессорное устройство может быть микропроцессором с полным набором команд (CISC), микропроцессором с сокращенным набором команд (RISC), микропроцессором с командными словами очень большой длины (VLIW) или процессором, реализующим другие наборы команд, или процессором, реализующим сочетание наборов команд. Процессор 702 также может быть одним или более специализированными процессорами, например, специализированной интегральной микросхемой (ASIC), программируемой пользователем вентильной матрицей (ППВМ), цифровым сигнальным процессором (СМП), сетевым процессором или аналогичным устройством. Процессор 702 настраивается для выполнения логики обработки 726 для выполнения рассматриваемых в этом документе операций и шагов.
[00103] Компьютерная система 700 может также содержать устройство сетевого интерфейса 722, коммуникативно соединенное с сетью 764. Компьютерная система 600 также может включать блок видео дисплея 710 (например, жидкокристаллический дисплей (ЖКД) или электронно-лучевой прибор (ЭЛЛ)), алфавитно-цифровое устройство ввода 712 (например, клавиатуру), устройство управления курсором 714 (например, мышь) и устройство генерации сигналов 720 (например, динамик).
[00104] Устройство хранения данных 718 может включать машиночитаемый носитель данных 724, на котором хранится программа 726, реализующая одну или более технологий выполнения функций, описанных в этом документе. Программное обеспечение 726 также может размещаться, полностью или как минимум частично, внутри основной памяти 704 в виде инструкций 726 и/или внутри процессора 702 в виде логики обработки 726 во время выполнения способа компьютерной системой 700; основная память 704 и процессор 702 также представляют собой машиночитаемый носитель данных.
[00105] Машиночитаемый носитель данных 724 также может использоваться для хранения инструкций 726 по обработке электронных документов для распознавания инвойсов, такой как приложение 190, как описано выше в связи с ФИГ. 1 и/или программная библиотека, содержащая методы, вызывающие указанное выше приложение. Хотя машиночитаемый носитель данных 724 приведен в примере реализации изобретения в виде одного носителя, термин "машиночитаемый носитель данных" также будет включать в себя один носитель или несколько носителей (например, централизованную или распределенную базу данных и/или ассоциированную с ними кэш-память и серверы), которые содержат один или более наборов инструкций. Термин "машиночитаемый носитель данных" также будет включать в себя любой носитель, который в состоянии хранить, шифровать или предоставлять набор инструкций для исполнения машиной, заставляющих машину выполнять один или более способов, рассматриваемых в этом документе. Термин "машиночитаемый носитель данных" должен также включать, но не быть ограниченным этим, твердотельную память, оптические и магнитные накопители.
[00106] Многочисленные подробности изложены в предшествующем описании. Однако будет очевидно, что раскрываемая сущность изобретения может быть осуществлена без этих специфических подробностей. В некоторых частных случаях хорошо известные структуры и устройства приведены в виде блок-схем, а не в виде подробного описания, чтобы не усложнять раскрываемую сущность изобретения.
[00107] Некоторые части подробного описания ниже представлены в виде алгоритмов и символического изображения операций с битами данных в компьютерной памяти. Эти алгоритмические описания и представления используются квалифицированными специалистами по обработке данных в целях более эффективного представления сущности работы для других квалифицированных специалистов. Приведенный здесь (и в целом) алгоритм сконструирован как непротиворечивая последовательность шагов, ведущих к нужному результату. Эти шаги требуют физических манипуляций с физическими объектами. Как правило (но не обязательно), эти объекты имеют вид электрических или магнитных сигналов, которые могут храниться, передаваться, сочетаться, сравниваться или использоваться иным образом. Время от времени бывает удобно, главным образом для целей общедоступности, рассматривать эти сигналы как биты, значения, элементы, знаки, символы, термы, числа и т.д.
[00108] Однако следует помнить, что все эти и схожие термины должны ассоциироваться с физическими объектами и являются лишь удобными обозначениями, используемыми для этих объектов. Если особо не указано иное, как ясно из следующего обсуждения, в ходе изучения описания следует принимать во внимание, что используемые термины "передача", "прием", "создание", "идентификация", "предоставление", "выполнение", "определение" и аналогичные им относятся к действиям и процессам компьютерной системы или аналогичного электронного вычислительного устройства, которое использует и преобразует данные, представленные в виде физических (электронных) объектов в памяти или регистрах компьютерной системы, в другие данные, аналогично представленные в виде физических объектов в памяти или регистрах компьютерной системы или других подобных хранилищах информации, передающих устройствах или устройствах визуального вывода.
[00109] Термины "первый", "второй", "третий", "четвертый" и т.д., используемые в этом документе, используются в качестве меток для различения различных элементов и не обязательно имеют порядковое значение, соответствующее их цифровому обозначению.
[00110] Раскрываемая сущность изобретения также относится к устройству для выполнения описанных в этом документе операций. Это устройство может быть специально сконструировано для этих целей или может представлять собой компьютер общего назначения, специально активированный или настроенный компьютерной программой, хранящейся в компьютере. Эта компьютерная программа может храниться на машиночитаемом носителе данных, например, на дисках любых типов, включая флоппи-диски, оптические диски, диски CD-ROM и магнитооптические диски, постоянные запоминающие устройства (ПЗУ), оперативные запоминающие устройства (ОЗУ), СППЗУ, ЭСППЗУ, магнитные или оптические карты или любые типы носителей, способные хранить электронные инструкции и подключаемые к шине компьютерной системы.
[00111] Алгоритмы и примеры, приведенные в этом документе, не обязательно связаны с конкретными компьютерами или другими устройствами. Различные системы общего назначения могут использоваться с программами в соответствии с изложенной здесь информацией, также может быть целесообразным конструирование более специализированных устройств для выполнения шагов способа. Структура разнообразных систем такого рода определяется в порядке, предусмотренном в описании ниже. Кроме того, изложение сущности изобретения не предполагает ссылок на какие-либо конкретные языки программирования. Следует принимать во внимание, что для реализации принципов излагаемого изобретения могут быть использованы различные языки программирования.
[00112] Сущность изобретения может быть представлена в виде компьютерного программного продукта или программы, которая может содержать машиночитаемый носитель с сохраненными на нем инструкциями, которые могут использоваться для программирования компьютерной системы (или других электронных устройств) для выполнения процесса в соответствии с сущностью раскрываемого изобретения. Машиночитаемый носитель включает механизмы хранения или передачи информации в машиночитаемой форме (например, компьютером). Например, машиночитаемый (например, компьютерночитаемый) носитель включает машино- (например, компьютерно-) читаемый носитель данных (например, постоянное запоминающее устройство ("ПЗУ"), оперативное запоминающее устройство ("ОЗУ"), носитель данных на магнитных дисках, носитель данных на оптических дисках, устройства флэш-памяти и др.) и т.д.
[00113] Принимая во внимание множество вариантов и модификаций раскрываемого изобретения, которые, без сомнения, будут очевидны лицу, имеющему опыт в данной сфере, после прочтения изложенного выше описания, следует понимать, что любой конкретный вариант реализации изобретения, приведенный и описанный для иллюстрации, ни в коем случае не должен рассматриваться как ограничение. Таким образом, ссылки на подробности различных вариантов реализации изобретения не должны рассматриваться как ограничение объема притязания, который содержит только признаки, рассматриваемые в качестве сущности изобретения.