ОПТИМИЗАЦИЯ ОБМЕНА ДАННЫМИ МЕЖДУ КЛИЕНТСКИМ УСТРОЙСТВОМ И СЕРВЕРОМ
OPTIMIZATION OF DATA EXCHANGE BETWEEN CLIENT DEVICE AND SERVER

ОБЛАСТЬ ИЗОБРЕТЕНИЯ
[001] Настоящее изобретение относится в целом к вычислительным системам, а точнее, к системам и способам оптимизации обмена данными между клиентским устройством и сервером.
УРОВЕНЬ ТЕХНИКИ
[002] Мобильные устройства, такие как мобильные телефоны, смартфоны, планшетные компьютеры и т.д. являются популярной платформой для прикладных программ. Во многих случаях прикладная программа, выполняемая на мобильном устройстве, может осуществлять связь с серверной системой. Модель приложения клиент-сервер представляет собой распределенное приложение, задачи или процессы которого распределены между поставщиком ресурсов или услуг (сервером) и получателем услуг (клиентом). Клиенты и серверы могут связываться по компьютерной сети, в том числе обмениваться большими объемами данных.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[003] Варианты реализации настоящего изобретения описывают оптимизированный обмен данными между клиентским устройством и серверным устройством. Клиентское устройство получает исходное изображение физического документа, на основе которого создается уменьшенный файл, который значительно меньше исходного изображения по размеру и содержит данные, указывающие на тип документа. Клиентское устройство отправляет на серверное устройство запрос, включающий уменьшенный файл, на получение информации, относящейся к типу физического документа, получает от серверного устройства сведения о местонахождении, исходя из типа документа, для части исходного изображения, которое содержит элемент содержимого физического документа, и извлекает часть исходного изображения, используя информацию о местонахождении, для создания извлеченного изображения. Клиентское устройство отправляет второй запрос, содержащий извлеченную часть изображения, на серверное устройство для элемента содержимого. В ответ на получение элемента содержимого с серверного устройства клиентское устройство предоставляет элемент содержимого для просмотра.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[004] Для более полного понимания настоящего изобретения ниже приводится описание предпочтительных вариантов реализации, в котором оно для примера, а не способом ограничения иллюстрируется со ссылкой на чертежи, на которых:
[005] На Фиг. 1 приведена схема компонентов верхнего уровня для примера сетевого окружения в соответствии с одним или более вариантами реализации настоящего изобретения.
[006] На Фиг. 2 показан пример графического интерфейса пользователя (GUI) мобильного устройства для захвата изображения физического документа в соответствии с одним или более аспектами настоящего изобретения.
[007] Фиг. 3 иллюстрирует пример уменьшенного файла, созданного оптимизатором обмена данными, в соответствии с одним или более аспектами настоящего изобретения.
[008] На Фиг. 4 приведен пример исходного изображения документа с информацией о местоположении элемента содержимого в изображении документа в соответствии с одним или более аспектами настоящего изобретения.
[009] На Фиг. 5 представлена блок-схема одного из способов оптимизации обмена данными между клиентским устройством и сервером в соответствии с одним или более вариантами реализации настоящего изобретения.
[0010] На Фиг. 6 представлена диаграмма последовательности одного из вариантов реализации изобретения для оптимизации обмена данными между клиентским устройством и сервером в соответствии с одним или более вариантами реализации настоящего изобретения.
[0011] На Фиг. 7 представлена диаграмма последовательности одного из вариантов реализации изобретения для оптимизации обмена данными между клиентским устройством и сервером в соответствии с одним или более вариантами реализации настоящего изобретения.
[0012] На Фиг. 8 представлена блок-схема вычислительной системы, работающей в соответствии с примерами реализации настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ
[0013] В настоящем документе описываются способы и системы оптимизации обмена данными между клиентскими устройствами и серверными устройствами. Мобильные устройства становятся все более популярными в качестве платформы для приложений. Однако многие традиционные мобильные устройства имеют меньше ресурсов (например, памяти, мощности процессора, места для хранения данных и т.д.), чем более крупные вычислительные системы (настольные компьютеры, портативные компьютеры и т.д.), что может ограничивать вычислительную мощность приложений на мобильных устройствах. В некоторых вариантах реализации на мобильных устройствах могут быть реализованы клиент-серверные приложения, что позволяет устранить дефицит ресурсов путем распределения вычислительной нагрузки между мобильным устройством и серверной системой, которая имеет значительно большую мощность. В подобных вариантах реализации приложение может выполняться на мобильном устройстве, обмениваясь данными с ответной частью приложения, которая выполняется на серверном устройстве. Это мобильное устройство может быть связано с сервером через сетевое соединение, позволяющее им обмениваться данными. Однако при таких условиях канал связи может оказаться "узким местом" для эффективности всего приложения. Это может быть особенно важно, если приложение включает передачу больших файлов данных, например, изображений или видеопотоков.
[0014] Например, приложения, которые включают идентификацию/классификацию документов и оптическое распознавание символов (OCR) на изображениях, захваченных камерой мобильного телефона, могут содержать большое количество обрабатываемых данных. Мобильное устройство обычно не имеет достаточной мощности процессора для выполнения таких операций, поэтому может потребоваться передать эти данные на сервер для выполнения обработки. Сетевое соединение с ограниченной пропускной способностью или урезанное из-за количества передаваемых данных может отрицательно повлиять на эффективность приложения, передающего такие файлы.
[0015] Варианты реализации настоящего изобретения устраняют отмеченные выше и другие недостатки путем реализации оптимизатора обмена данными для обмена небольшим количеством информации при взаимодействии между приложением на клиентском устройстве и ответной частью приложения на серверном устройстве. В иллюстративном примере клиентское устройство получает исходное изображение физического документа. Создается уменьшенный файл, который значительно меньше по размеру, чем исходное изображение, но сохраняет достаточно информации о структуре для определения типа документа. Уменьшенный файл отправляется на серверную систему, которая производит идентификацию документа для определения типа документа. Мобильное устройство на основе типа документа получает информацию о местоположении от серверной системы для части исходного изображения, которая содержит элемент содержимого физического документа. После этого мобильное устройство может извлечь часть исходного изображения, исходя из информации о местоположении, чтобы создать извлеченную часть исходного изображения, и переслать эту извлеченную часть изображения на сервер для дальнейшей обработки. Мобильное устройство может получить реальный элемент содержимого, входящий в извлеченное изображение, и предоставить содержимое для просмотра или использования в другом приложении.
[0016] Варианты реализации настоящего изобретения, таким образом, могут оптимизировать обмен данными между клиентскими устройствами и серверными устройствами, значительно снижая объем данных, передаваемых по каналам связи. В частности, клиентское устройство может ограничивать объем данных, передаваемых на сервер, только теми данными, которые необходимы для прикладной задачи. Таким образом, при использовании каналов сетей связи с низкой пропускной способностью эффективность клиент-серверных приложений может быть значительно повышена без ухудшения качества результатов.
[0017] На Фиг. 1 приведена блок-схема, иллюстрирующая сетевое окружение 100, в котором может быть реализован вариант реализации настоящего изобретения. Сетевое окружение 100 может содержать одно или более клиентских устройств 110 и один или более серверов 120, которые могут обмениваться данными друг с другом по сети 150. Одним из примеров клиентского устройства 110 может быть вычислительная система 800, приведенная на Фиг. 8. Сеть 150 может включать, например, Интернет, сети интранет, экстранет, глобальные сети (WAN), локальные сети (LAN), проводные сети, беспроводные сети, мобильные/сотовые сети или другие подходящие сети и т.д., а также любые сочетания двух или более подобных сетей. Например, такие сети могут включать спутниковые сети, кабельные сети, сети Ethernet и другие типы сетей.
[0018] Клиентское устройство 110 может быть устройством на базе процессора, которое содержит камеру, способную получать изображения, например, мобильным телефоном (сотовый телефон, смартфон и т.д.), карманным компьютером (PDA), планшетной вычислительной системой, камерой, видеокамерой, портативным компьютером и т.д. Кроме того, клиентское устройство 110 может быть устройством на базе процессора, способным поддерживать библиотеку фотографий или получать изображения из библиотеки фотографий, как перечисленные выше устройства, а также настольные компьютеры, телевизионные приставки, музыкальные проигрыватели, игровые консоли, электронные книги или другие устройства со схожими возможностями.
[0019] В некоторых вариантах реализации клиентское устройство 110 может дополнительно содержать одно или более приложений (не показаны), которые управляют извлечением информации из изображения физического документа (например, изображения документа 115). Например, клиентское устройство 110 может содержать приложение, в котором пользователю предлагается пользовательский интерфейс для получения фотографии счета. Затем приложение может извлекать информацию, такую как номер счета и сумму к оплате, и представлять эту информацию пользователю через пользовательский интерфейс. В другом примере клиентское устройство 110 может содержать приложение, в котором пользователю предоставляется возможность сделать фотографию водительских прав для извлечения номера водительских прав, имени и адреса водителя или другой персональной информации для проведения проверки владельца прав. В другом примере клиентское устройство 110 может содержать приложение, в котором пользователю предоставляется возможность захватывать видеопоток из нескольких документов и извлекать из потока отдельные кадры, которые содержат изображения физических документов. В другом примере клиентское устройство 110 может содержать приложение, которое позволяет пользователю сделать фотографию списка покупок (например, чека из розничного магазина) для определения и распределения по категориям каждой покупки из списка (например, продукты питания, одежда, поездки, бизнес-расходы и т.д.).
[0020] В каждом из приведенных выше примеров клиентскому приложению может потребоваться определить тип документа, содержащегося в захваченном изображении, а также определить содержимое частей захваченного изображения. Клиентское устройство 110 может не обладать достаточными ресурсами для выполнения анализа документа, классификации документа и извлечения информации. По этой причине клиентское устройство 110 может обмениваться данными с сервером 120 для выполнения одной или более из этих функций. В этих вариантах реализации клиентское устройство 110 может содержать оптимизатор обмена данными 112 для облегчения оптимизированного обмена данными между клиентским устройством 110 и сервером 120, когда ресурсы сети 150 ограничены. В некоторых вариантах реализации оптимизатор обмена данными 112 может быть включен в приложение на клиентском устройстве 110. В других случаях оптимизатор обмена данными 112 может быть компонентом, который выполняется на клиентском устройстве 110 и вызывается отдельным приложением.
[0021] Сервер 120 может включать, например, компьютер сервера или другую систему, предоставляющую вычислительные мощности. Кроме того, сервер 120 может использовать множество вычислительных устройств, которые могут быть смонтированы, например, в одном или более серверных банках, компьютерных банках или в других компоновках. Эти вычислительные устройства могут быть размещены в одном месте или распределены в географически разные места. Например, сервер 120 может включать множество вычислительных устройств, которые совместно могут содержать размещенный вычислительный ресурс, сетевой вычислительный ресурс и/или любую другую распределенную компьютерную компоновку.
[0022] В некоторых реализациях сервер 120 может включать классификатор документов 122 и хранилище данных 140. Классификатор документов 122 может предоставлять услуги классификации документов и(или) извлечения данных приложениям, выполняемым на клиентском устройстве 110. Классификатор документов 122 может получать изображение с клиентского устройства 110, определять тип документов, ассоциированный с изображением, и посылать информацию о типе документов клиентскому устройству 110. Кроме того, классификатор документов может извлекать содержимое из изображений или фрагментов изображений и предоставлять извлеченное содержимое клиентскому устройству 110.
[0023] В некоторых вариантах реализации сервер 120 может содержать хранилище данных 140, на котором могут храниться правила классификации 145. Хранилище данных 140 может включать один или более носителей данных, в число которых могут входить, например, флэш-память, магнитные или оптические диски, накопители на магнитной ленте, постоянное запоминающее устройство (ROM); оперативное запоминающее устройство (RAM); перезаписываемая программируемая память (например, EPROM и EEPROM), флэш-память или любые другие типы носителей данных. Правила классификации 145 могут представлять собой структуру данных, в которой хранятся правила, связанные с определением типа документа на основе полученного изображения. Например, правила классификации 145 могут содержать информацию, которая относится к структурным характеристикам изображений физических документов для формулирования предположений о типе документа на изображении. Кроме того или вместо этого правила классификации 145 могут хранить правила оптического распознавания символов (OCR), которые классификатор документов 122 может использовать для извлечения текста из изображений или фрагментов изображений, полученных от клиентского устройства 110.
[0024] В иллюстративном примере пользователь может инициировать приложение на клиентском устройстве 110 и захватить изображение физического документа 130 с помощью камеры устройства. В одном из вариантов реализации изобретения клиентское устройство 110 может захватывать отдельное неподвижное изображение (то есть фотографию) физического документа 130. Вместо этого клиентское устройство 110 может захватывать видеопоток одного или более физических документов 130, где видеопоток будет состоять из множества кадров с изображением. Приложение может сохранить изображение документа 115 (то есть изображение физического документа 130) локально на клиентском устройстве 110 (например, в памяти, во временном хранилище, в хранилище данных устройства и т.д.). В других вариантах реализации изобретения приложение может получать изображение из библиотеки фотографий, доступной с клиентского устройства 110. После этого приложение может вызвать оптимизатор обмена данными 112 для извлечения содержимого из изображения документа 115, используя оптимизированный обмен данными между клиентским устройством 110 и сервером 120.
[0025] Оптимизатор обмена данными 112 может получать изображение документа 115 и создавать на основе полученного изображения уменьшенный файл, который будет значительно меньше по размеру, чем исходное изображение документа 115. Оптимизатор обмена данными 112 может создавать уменьшенный файл, выполняя над исходным изображением одну или более операций преобразования данных, чтобы создать файл уменьшенного размера, содержащий данные, которые указывают на тип документа физического документа, представленного на изображении документа 115. В некоторых вариантах реализации изобретения операция преобразования может включать конвертацию цветного изображения в полутоновое, цветного изображения в черно-белое, операцию сжатия данных, операцию уменьшения разрешения изображения, операцию бинаризации или другие подобные операции. Пример операции преобразования более подробно рассматривается ниже со ссылкой на Фиг. 2-3.
[0026] В некоторых вариантах реализации изобретения вместо создания уменьшенного файла, который соответствует всему изображению 115 исходного документа, оптимизатор обмена данными 112 может выбрать в качестве уменьшенного файла фрагмент изображения исходного документа 115. Например, клиентское приложение может быть предназначено для обработки документов определенного типа и поэтому должно иметь представление о положении отдельных типов содержимого внутри изображения. В подобных случаях приложение может потребовать от оптимизатора обмена данными 112 выбрать часть исходного изображения, которая содержит определенный тип содержимого. Например, приложение может быть выполнено с возможностью получения изображение счета или транспортной этикетки, в определенном месте которой находится штрих-код. Оптимизатор обмена данными 112 может извлечь часть изображения документа, которая содержит штрих-код, и создать уменьшенный файл, который содержит только изображение штрих-кода. Таким образом, в этом случае уменьшенный файл может сохранять то же разрешение, которое было у исходного изображения, при этом он будет меньше исходного изображения документа, потому что содержит только изображение штрих-кода, но не содержит остальной части исходного изображения документа.
[0027] Оптимизатор обмена данными 112 может затем послать на сервер 120 запрос, чтобы получить информацию относительно типа физического документа 130, причем этот запрос будет содержать уменьшенный файл. В некоторых вариантах реализации изобретения оптимизатор обмена данными 112 может вызываться "тонким клиентом", т.е. приложением, которое не выполняет никакого анализа типа документа. В подобных случаях клиентское устройство 110 полагается на сервер 120 по вопросам определения типа документа и определения потенциальных элементов содержимого, значимых для клиентского устройства, исходя из типа документа. Пример диаграммы последовательности для обмена данными между "тонким клиентом" и сервером приведен ниже со ссылкой на Фиг. 6. В качестве альтернативы, оптимизатор обмена данными 112 может вызываться "умным клиентом" - приложением, которое получает тип документа от сервера 120, выполняет собственное определение элементов содержимого, необходимых приложению, исходя из типа документа, и отправляет на сервер 120 новый запрос для получения информации о местоположении элементов содержимого. Пример диаграммы последовательности для обмена данными между "умным клиентом" и сервером приведен ниже со ссылкой на Фиг. 7.
[0028] Сервер 120 может получать уменьшенный файл, вызывать классификатор документов 122 для определения типа документа физического документа 130, используя уменьшенный файл, и посылать запрос к оптимизатору обмена данными 112, который содержит информацию о найденном типе документа. В тех вариантах реализации изобретения, в которых клиентское устройство 110 содержит "умный клиент", классификатор документов 122 может отправлять ответ, включающий только тип документа (например, счет, водительские права, банковский чек, товарный чек, счет из ресторана и т.д.). Оптимизатор обмена данными 112 может получать тип физического документа, определять на основе типа документа элемент содержимого документа и отправлять следующий запрос к серверу 120, запрашивая сведения о местоположении части исходного документа, которая содержит элемент содержимого (например, место номера счета, номера водительских прав, налога по счету, штрих-кода и т.д. в физическом документе). В некоторых вариантах реализации изобретения информация о местоположении может включать координаты ограничивающего прямоугольника части исходного изображения, которая содержит нужный элемент содержимого. В вариантах реализации изобретения, в которых изображение исходного документа 115 представляет собой видеопоток, содержащий несколько кадров изображения, информация о местоположении может включать информацию, идентифицирующую как минимум один кадр в видеопотоке (например, номер кадра, смещение кадра в потоке видео, смещение метки времени в потоке видео, где может находиться кадр, и т.д.).
[0029] В некоторых вариантах реализации изобретения, например, в случае "тонкого клиента", классификатор документов 122 может в ответ на получение уменьшенного файла дополнительно определить конкретный необходимый элемент содержимого (или несколько необходимых элементов содержимого), исходя из типа документа. Классификатор документа 122 может определить информацию о местоположении, исходя из типа документа для части исходного документа, которая содержит определенный элемент содержимого документа (например, местоположение номера счета, номера водительских прав, налога по счету, штрих-кода и т.д. физического документа), после чего переслать информацию о местоположении оптимизатору обмена данными 112.
[0030] Оптимизатор обмена данными 112 может получить информацию о местоположении от сервера 120 и извлечь, используя эту информацию, часть изображения исходного документа 115 для создания извлеченной части изображения. Например, оптимизатор обмена данными 112 может получить координаты ограничивающего прямоугольника части исходного изображения, которая содержит необходимый элемент содержимого, и извлечь часть изображения, используя эти координаты (например, извлечь часть изображения, определенную координатами ограничивающего прямоугольника, для создания фрагмента изображения, который содержит элемент содержимого). В вариантах реализации изобретения, в которых изображение исходного документа 115 представляет собой видеопоток, содержащий множество кадров изображений, часть изображения исходного документа может содержать как минимум один кадр из потока видео.
[0031] В некоторых вариантах реализации изобретения извлеченная часть исходного изображения может иметь то же разрешение, что и изображение исходного документа 115. Вместо этого извлеченное изображение может иметь разрешение меньше, чем у изображения 115 исходного документа, если извлеченное изображение содержит достаточно информации для того, чтобы сервер 120 определил содержимое извлеченного изображения.
[0032] Оптимизатор обмена данными 112 может затем отправить к серверу 120 запрос на содержимое, содержащееся во фрагменте изображения, причем этот запрос включает извлеченную часть исходного изображения (то есть извлеченный фрагмент изображения, который содержит элемент содержимого). В некоторых вариантах реализации оптимизатор обмена данными 112 может отправлять этот запрос на тот же сервер 120, на который был отправлен исходный запрос. В качестве альтернативы, оптимизатор 112 может отправлять этот запрос на другой сервер (не показан). Сервер 120 после этого может вызывать классификатор документов 122 (или другой компонент сервера 120 или компонент другого сервера, который связан с сервером 120) для выполнения OCR фрагмента изображения и возврата содержимого на клиентское устройство 110.
[0033] В ответ на получение содержимого с сервера 120 оптимизатор обмена данными 112 может предоставить элемент содержимого для демонстрации на клиентском устройстве через пользовательский интерфейс на экране клиентского устройства 110, сохранения элемента содержимого в хранилище данных клиентского устройства, предоставления элемента содержимого приложению, которое вызвало оптимизатор обмена данными 112, предоставления элемента данных другому приложению (выполняемому на устройстве 110 или на сервере 120) или для использования элемента содержимого любым другим способом.
[0034] На Фиг. 2 изображен графический интерфейс пользователя (GUI) мобильного устройства 220 для захвата изображения физического документа 210. GUI мобильного устройства 220 может представлять собой автономное приложение, компонент интерфейса пользователя для менеджера документов или т.п. Например, GUI мобильного устройства 220 может быть представлено для пользователя как приложение для захвата счетов с помощью камеры мобильного устройства. Кроме того, GUI может быть представлен оптимизатором обмена данными 112 с Фиг. 1, как подробно описано ниже со ссылкой на Фиг. 5.
[0035] Мобильное устройство 220 может включать приложение, выполненное с возможностью захвата изображения физического документа 210 с помощью камеры мобильного устройства. На Фиг. 2 представлен физический документ 210 в виде напечатанного счета, но, как говорилось выше, физический документ может относиться к любому типу документов. Физический документ 210 может содержать содержимое, которое может быть извлечено для использования в приложении, выполняемом на мобильном устройстве 220. Например, содержимое 450-А относится к номеру счета физического документа 210. В некоторых вариантах реализации пользователь может запустить приложение на мобильном устройстве 220 для захвата номера счета и общей суммы для использования в бухгалтерском приложении, которое сохраняет информацию и инициирует платеж общей суммой.
[0036] Как показано на Фиг. 2, это приложение может отображать в мобильном устройстве 220 GUI, призванный помочь пользователю в выравнивании физического документа 210 в видоискателе на дисплее камеры 230. Затем приложение может привести в действие камеру мобильного устройства 220, чтобы начать получать с нее изображения. Как вариант, приложение может привести в действие камеру мобильного устройства 220, чтобы начать получать с нее кадры видеопотока. Изображения (или кадры видеопотока) могут выводиться пользователю на просмотр с помощью дисплея камеры 230. Пользователь может производить захват изображения исходного документа 210, выбирая и нажимая соответствующую кнопку GUI 240, отображаемую на дисплее мобильного устройства 220. Оптимизатор обмена данными 112 может затем получить изображение и выполнить оптимизацию обмена данными для изображения физического документа, как описано выше и ниже со ссылкой на Фиг. 5-7.
[0037] Фиг. 3 иллюстрирует пример уменьшенного файла 300, созданного оптимизатором обмена данными, в соответствии с одним или более вариантами реализации настоящего изобретения. В одном из вариантов реализации изобретения уменьшенный файл 300 может быть продуктом операции трансформации, выполняемой над изображением физического документа (например, изображения документа 225 на Фиг. 2), выполняемого с целью оптимизации обмена данными между клиентским устройством и серверным устройством при отправке уменьшенного файла 300 на сервер для классификации документа и (или) идентификации документа. Как было указано выше, уменьшенный файл 300 может быть создан путем выполнения преобразования цветного исходного изображения в полутоновое, цветного исходного изображения в черно-белое, операции сжатия данных над исходным изображением, операции уменьшения разрешения исходного изображения или операции бинаризации исходного изображения.
[0038] Как показано на Фиг. 3, уменьшенный файл 300 демонстрирует результат выполнения операции уменьшения разрешения исходного изображения с получением уменьшенного файла 300, который имеет значительно меньший размер по сравнению с исходным изображением. В различных вариантах реализации изобретения уменьшенный файл 300 по-прежнему содержит важную информацию для системы классификации документа (например, классификатора документов 122 с Фиг. 1) для определения типа документа, хранящегося в уменьшенном файле 300, а также определения сведений о местоположении, соответствующих различным элементам содержимого, имеющегося в документе, на основе определенного типа документа.
[0039] Фиг. 4 содержит пример изображения исходного документа 410 с информацией о местоположении элементов содержимого на изображении документа 410 в соответствии с одним или более вариантами реализации настоящего изобретения. В одном из вариантов реализации изобретения исходное изображение документа 410 может ссылаться на изображение документа 225 на Фиг. 2. Как описано выше, оптимизатор обмена данными на клиентском устройстве (например, оптимизатор обмена данными 112 на Фиг. 1-2) может отправлять запрос на серверное устройство для получения информации, относящейся к типу документа изображения исходного документа 410, посылая на сервер уменьшенный файл (например, уменьшенный файл 300 с Фиг. 3). Сервер может определить тип документа и вернуть тип документа клиентскому устройству, вместе с информацией о местоположении части изображения документа 410, который содержит элемент содержимого документа. В некоторых вариантах реализации изобретения клиент может получать координаты ограничивающего прямоугольника интересующих элементов содержимого, которые относятся к определенному типу документов изображения документа 410.
[0040] Как показано на Фиг. 4, изображение документа 410 представляет собой изображение счета. В некоторых вариантах реализации изобретения приложение, выполняемое на клиентском устройстве, которое используется для захвата изображения, может использовать номер счета и общую сумму счета. Информация о местоположении может быть получена с сервера, который описывает местоположение номера счета и общей суммы на изображении документа 410, исходя из определенного типа документа для изображения документа 410 (счета). Как показано на Фиг. 4, информация о местоположении 420-А содержит информацию о координатах ограничивающего прямоугольника для номера счета на изображении документа 410, а информация о местоположении 420-В содержит информацию о координатах ограничивающего прямоугольника для общей суммы.
[0041] Как описано выше, оптимизатор обмена данными может затем извлечь части исходного изображения документа 410, исходя из информации о местоположении, чтобы создать извлеченные части изображения документа 410 для отправки на сервер. Оптимизатор обмена данными может извлечь часть изображения документа 410, определенную координатами ограничивающего прямоугольника из информации 420-А о местоположении, для создания фрагмента 430-А изображения, который содержит часть изображения исходного документа 410, содержащую номер счета. Аналогично, оптимизатор обмена данными может извлечь часть изображения документа 410, определенную координатами ограничивающего прямоугольника из информации 420-В о местоположении, для создания фрагмента 430-В изображения, который содержит часть изображения исходного документа 410, содержащую сумму счета. Оптимизатор обмена данными может затем отправить фрагменты 430-А и 430-В изображения на сервер для оптического распознавания символов и получить текстовое содержимое, связанное с исходными фрагментами. Затем клиентское устройство может получить текст "100" и "25,73" для использования в клиентском приложении.
[0042] Фиг. 5 содержит блок-схему примера способа оптимизации обмена данными 500 между клиентским устройством и сервером. Этот способ может осуществляться при помощи логической схемы обработки данных, которая может включать аппаратные средства (электронные схемы, специализированную логическую плату и т.д.), программное обеспечение (например, выполняться на универсальной ЭВМ или же на специализированной вычислительной машине) или комбинацию первого и второго. Этот способ и (или) каждая из отдельно взятых функций, процедур, подпрограмм или операций могут быть реализованы с помощью одного или более процессоров вычислительного устройства (например, вычислительной системы 800 на Фиг. 8), в котором реализован данный способ. В некоторых вариантах реализации изобретения представленный способ может выполняться в одном потоке обработки. В альтернативных вариантах реализации изобретения представленный способ может выполняться двумя или более потоками обработки, при этом в каждом потоке реализована одна или более отдельно взятых функций, процедур, подпрограмм или операций, относящихся к указанному способу. В некоторых вариантах реализации указанный способ может выполняться оптимизатором 112 обмена данными на клиентском устройстве 110 с Фиг. 1.
[0043] Ради простоты объяснения способ в настоящем описании изобретения изложен и наглядно представлен в виде последовательности действий. Однако действия в соответствии с настоящим описанием изобретения могут выполняться в различном порядке и (или) одновременно с другими действиями, не представленными и не описанными в настоящем документе. Кроме того, не все проиллюстрированные действия могут быть необходимы для реализации способов в соответствии с настоящим описанием изобретения. Кроме того, специалистам в данной области техники должно быть понятно, что эти способы могут быть представлены и иным образом, в виде последовательности взаимосвязанных состояний через диаграмму состояний или событий.
[0044] В блоке 505 способа 500 логика обработки получает исходное изображение физического документа. В блоке 510 логика обработки создает на основе исходного изображения уменьшенный файл, который значительно меньше исходного изображения по размеру и содержит данные, указывающие на тип документа. В блоке 515 логика обработки отправляет на серверное устройство первый запрос на получение информации, относящейся к типу документа для физического документа, при этом первый запрос содержит уменьшенный файл. В блоке 520 логика обработки получает информацию о местоположении части исходного изображения, которая содержит элемент содержимого физического документа, при этом информация о местоположении базируется на типе документа. В некоторых вариантах реализации изобретения информация о местоположении включает координаты ограничивающего прямоугольника для части исходного изображения, которая содержит элемент содержимого.
[0045] В блоке 525 логика обработки извлекает, исходя из информации о местоположении, полученной в блоке 520, часть исходного изображения для создания (получения) извлеченной части исходного изображения. В блоке 530 логика обработки отправляет на серверное устройство запрос элемента содержимого, причем этот запрос содержит извлеченную часть исходного изображения.
[0046] В блоке 535 логика обработки получает элемент содержимого с серверного устройства. В некоторых вариантах реализации изобретения логика обработки получает буквенно-текстовое содержимое, соответствующее элементу содержимого (например, имя на водительском удостоверении, название компании в счете, цену позиции в квитанции и т.д.). В альтернативном варианте логика обработки может получать алфавитно-цифровое текстовое содержимое, относящееся к элементу содержимого (например, сумма по счету, номер водительского удостоверения, номер из штрих-кода, цену позиции в квитанции и т.д.).
[0047] В одном из вариантов реализации изобретения в ответ на получение элемента содержимого логика обработки может вызвать блок 536, чтобы предоставить элемент содержимого для демонстрации на клиентском устройстве. В одном из вариантов реализации изобретения в ответ на получение элемента содержимого логика обработки может вызвать блок 537, чтобы сохранить элемент содержимого в хранилище данных на клиентском устройстве. В одном из вариантов реализации изобретения в ответ на получение элемента содержимого логика обработки может вызвать блок 538, чтобы предоставить элемент содержимого приложению, выполняемому на клиентском устройстве, или приложению, выполняемому на серверном устройстве. После выполнения блока 535 (или 536, 537, 538), способ с Фиг. 5 завершает свою работу.
[0048] На Фиг. 6 показана диаграмма последовательности 600 одного из вариантов реализации оптимизации обмена данными между оптимизатором обмена данными "тонкого клиента" клиентского устройства 601 и классификатором документов на серверном устройстве 603 в соответствии с вариантом реализации настоящего изобретения. Диаграмма последовательности 600 показывает, что оптимизатор обмена данными 601 может снизить объем данных, передаваемых классификатору документов 603 в ситуациях с ограниченной пропускной способностью сети. Кроме того, диаграмма последовательности 600 описывает вариант реализации изобретения, при котором классификатор документов 603 выполняет определение интересующих элементов содержимого на клиентском устройстве, исходя из типа документа.
[0049] Изначально оптимизатор обмена данными 601 может получать исходное изображение физического документа (605). Оптимизатор обмена данными 601 может затем создать уменьшенный файл (610) и переслать этот уменьшенный файл классификатору документов 603 с запросом информации о местоположении (615). После этого классификатор 603 может определить тип документа, исходя из уменьшенного файла (620), определить элемент содержимого внутри документа, исходя из типа документа (625), определить информацию о местоположении элемента содержимого (630) и переслать ответ оптимизатору обмена данными 601 на клиентском устройстве.
[0050] Оптимизатор обмена данными 601 может затем получить информацию о местоположении от классификатора документов 603 (635), извлечь часть исходного изображения, описывающую информацию о местоположении (640) и переслать извлеченную часть исходного изображения классификатору документов 603 с запросом на содержимое в извлеченной части (645). Затем классификатор документов 603 может определить содержимое в извлеченной части исходного изображения (650), например, выполнив операцию OCR над извлеченной частью. Оптимизатор обмена данными 601 может затем получить элемент содержимого от классификатора документов 603 (655).
[0051] На Фиг. 7 показана диаграмма последовательности 700 одного из вариантов реализации оптимизации обмена данными между оптимизатором обмена данными "умного клиента" клиентского устройства 701 и классификатором документов на серверном устройстве 703 в соответствии с вариантом реализации настоящего изобретения. Диаграмма последовательности 700 показывает, что оптимизатор обмена данными 701 может снизить объем данных, передаваемых классификатору документов 703 в ситуациях с ограниченной пропускной способностью сети. Кроме того, диаграмма последовательности 700 описывает вариант реализации изобретения, при котором оптимизатор обмена данными 701 выполняет определение интересующих элементов содержимого на клиентском устройстве, исходя из типа документа, полученного от классификатора документов 703.
[0052] Изначально оптимизатор обмена данными 701 может получать исходное изображение физического документа (705). Оптимизатор 701 обмена данными может затем создать уменьшенный файл (710) и переслать этот уменьшенный файл классификатору документов 703 с запросом информации о местоположении (715). Затем классификатор документов 703 может определить тип документа, исходя из уменьшенного файла (720), и переслать ответ оптимизатору обмена данными 701 на клиентском устройстве вместе с типом документа.
[0053] Оптимизатор обмена данными 701 затем может получать тип документа от классификатора документа 703 (725), определять элемент содержимого в документе, исходя из типа документа (730), и посылать запрос к классификатору документов 703, запрашивая местоположение элемента содержимого в документе (735). Таким образом, в некоторых вариантах реализации изобретения оптимизатор обмена данными 701 может управлять элементами содержимого, извлекаемыми из изображения документа. Затем классификатор документов 703 может определять информацию о местоположении элемента содержимого (740) и посылать ответ оптимизатору обмена данными 701.
[0054] Оптимизатор обмена данными 701 может затем получить информацию о местоположении от классификатора документов 703 (745), извлечь часть исходного изображения, описывающую информацию о местоположении (750) и переслать извлеченную часть исходного изображения классификатору документов 703 с запросом на содержимое в извлеченной части (755). Затем классификатор документов 703 может определить содержимое в извлеченной части исходного изображения (760), например, выполнив операцию OCR над извлеченной частью. Оптимизатор обмена данными 701 может затем получить элемент содержимого от классификатора документов 703 (765).
[0055] На Фиг. 8 приведен пример вычислительной системы 800, которая может выполнять один или более описанных здесь способов. В одном из примеров вычислительная система 800 может соответствовать вычислительному устройству, способному выполнять оптимизатор обмена данными 112, представленный на Фиг. 1. Данная вычислительная система может быть подключена (например, по сети) к другим вычислительным системам в локальной сети, сети интранет, сети экстранет или сети Интернет. Данная вычислительная система может выступать в качестве сервера в сетевой среде клиент-сервер. Эта вычислительная система может представлять собой персональный компьютер (ПК), планшетный компьютер, телевизионную приставку (STB), карманный персональный компьютер (PDA), мобильный телефон, фотоаппарат, видеокамеру или любое устройство, способное выполнять набор команд (последовательно или иным способом), который определяется действиями этого устройства. Кроме того, несмотря на то, что показана система только с одним компьютером, термин «компьютер» также включает любой набор компьютеров, которые по отдельности или совместно выполняют набор команд (или несколько наборов команд) для реализации любого из описанных здесь способа или нескольких таких способов.
[0056] Пример вычислительной системы 800 включает устройство обработки 802, основную память 804 (например, постоянное запоминающее устройство (ПЗУ), флэш-память, динамическое ОЗУ (DRAM), например, синхронное DRAM (SDRAM)), статическую память 806 (например, флэш-память, статическое оперативное запоминающее устройство (ОЗУ)) и устройство хранения данных 816, которые взаимодействуют друг с другом по шине 808.
[0057] Устройство обработки 802 представляет собой одно или более устройств обработки общего назначения, например, микропроцессоров, центральных процессоров или аналогичных устройств. В частности, устройство обработки 802 может представлять собой микропроцессор с полным набором команд (CISC), микропроцессор с сокращенным набором команд (RISC), микропроцессор со сверхдлинным командным словом (VLIW) или процессор, в котором реализованы другие наборов команд, или процессоры, в которых реализована комбинация наборов команд. Устройство обработки 802 также может представлять собой одно или более устройств обработки специального назначения, такое как специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA), процессор цифровых сигналов (DSP), сетевой процессор и т.п. Устройство обработки данных 802 сконфигурировано с возможностью выполнения оптимизатора 826 обмена данными, что обеспечивает выполнение описанных здесь операций и этапов (например, при реализации вариантов, представленных на Фиг. 1 и т.д.).
[0058] Вычислительная система 800 может дополнительно включать устройство сетевого интерфейса 822. Вычислительная система 800 может также включать видеомонитор 810 (например, жидкокристаллический дисплей (LCD) или электроннолучевую трубку (ЭЛТ)), устройство буквенно-цифрового ввода 812 (например, клавиатуру), устройство управления курсором 814 (например, мышь) и устройство для формирования сигналов 820 (например, громкоговоритель). В одном из иллюстративных примеров видео дисплей 810, устройство буквенно-цифрового ввода 812 и устройство управления курсором 814 могут быть объединены в один компонент или устройство (например, сенсорный жидкокристаллический дисплей).
[0059] Запоминающее устройство 816 может включать машиночитаемый носитель 824, в котором хранится оптимизатор обмена данными 826 (например, соответствующий способу, показанному на Фиг. 5 и т.д.), отражающий одну или более методологий или функций, описанных в данном документе. Оптимизатор обмена данными 826 может находиться полностью или, по меньшей мере, частично в основной памяти 804 и (или) в устройстве обработки 802 во время выполнения способа вычислительной системой 800 основной памятью 804 и устройством обработки 802, также содержащими машиночитаемый носитель информации. Оптимизатор обмена данными 826 может дополнительно передаваться или приниматься по сети через устройство сетевого интерфейса 822.
[0060] Несмотря на то, что машиночитаемый носитель данных 824 показан в иллюстративных примерах как единичный носитель, термин "машиночитаемый носитель данных" следует понимать и как единичный носитель, и как несколько таких носителей (например, централизованная или распределенная база данных, и (или) связанные кэши и серверы), на которых хранится один или более наборов команд. Термин «машиночитаемый носитель данных» также следует рассматривать как термин, включающий любой носитель, который способен хранить, кодировать или переносить набор команд для выполнения машиной, который заставляет эту машину выполнять одну или более методик, описанных в настоящем описании изобретения. Соответственно, термин «машиночитаемый носитель данных» следует понимать как включающий, среди прочего, устройства твердотельной памяти, оптические и магнитные носители.
[0061] Несмотря на то что операции способов показаны и описаны в настоящем документе в определенном порядке, порядок выполнения операций каждого способа может быть изменен таким образом, чтобы некоторые операции могли выполняться в обратном порядке или чтобы некоторые операции могли выполняться, по крайней мере частично, одновременно с другими операциями. В некоторых вариантах реализации изобретения команды или подоперации различных операций могут выполняться с перерывами и (или) попеременно.
[0062] Следует понимать, что приведенное выше описание носит иллюстративный, а не ограничительный характер. Различные другие варианты осуществления станут очевидны специалистам в данной области техники после прочтения и понимания приведенного выше описания. Область применения изобретения поэтому должна определяться с учетом прилагаемой формулы изобретения, а также всех областей применения эквивалентных способов, которые покрывает формула изобретения.
[0063] В приведенном выше описании изложены многочисленные детали. Однако специалистам в данной области техники должно быть очевидно, что варианты реализации изобретения могут быть реализованы на практике и без этих конкретных деталей. В некоторых случаях хорошо известные структуры и устройства показаны в виде блок-схем, а не подробно, чтобы не усложнять описание настоящего изобретения.
[0064] Некоторые части описания предпочтительных вариантов реализации выше представлены в виде алгоритмов и символического изображения операций с битами данных в компьютерной памяти. Такие описания и представления алгоритмов являются средством, используемым специалистами в области обработки данных, чтобы наиболее эффективно передавать сущность своей работы другим специалистам в данной области. Приведенный здесь (и в целом) алгоритм сконструирован как непротиворечивая последовательность шагов, ведущих к нужному результату. Эти шаги требуют физических манипуляций с физическими величинами. Обычно, хотя и не обязательно, эти величины принимают форму электрических или магнитных сигналов, которые можно хранить, передавать, комбинировать, сравнивать и выполнять другие манипуляции. Иногда удобно, прежде всего для обычного использования, описывать эти сигналы в виде битов, значений, элементов, символов, терминов, цифр и т.д.
[0065] Однако следует иметь в виду, что все эти и подобные термины должны быть связаны с соответствующими физическими величинами, и что они являются лишь удобными обозначениями, применяемыми к этим величинам. Если специально не указано иное, как видно из последующего обсуждения, следует понимать, что во всем описании такие термины, как «прием», «создание», «отправка», «извлечение», «обеспечение», «хранение» и т.п., относятся к действиям вычислительной системы или подобного электронного вычислительного устройства или и процессам в нем, причем такая система или устройство манипулирует данными и преобразует данные, представленные в виде физических (электронных) величин, в регистрах вычислительной системы и памяти в другие данные, также представленные в виде физических величин в памяти или регистрах вычислительной системы или в других подобных устройствах хранения, передачи или отображения информации.
[0066] Настоящее изобретение также относится к устройству для выполнения операций, описанных в настоящем документе. Такое устройство может быть специально сконструировано для требуемых целей, или оно может содержать универсальный компьютер, который избирательно активируется или дополнительно настраивается с помощью компьютерной программы, хранящейся в компьютере. Такая вычислительная программа может храниться на машиночитаемом носителе данных, например (помимо прочего): диск любого типа, в том числе гибкие диски, оптические диски, CD-ROM и магнитно-оптические диски, постоянные запоминающие устройства (ПЗУ), оперативные запоминающие устройства (ОЗУ), программируемые ПЗУ (EPROM), электрически стираемые ППЗУ (EEPROM), магнитные или оптические карты или любой тип носителя, пригодный для хранения электронных команд, каждый из которых соединен с шиной вычислительной системы.
[0067] Алгоритмы и изображения, приведенные в этом документе, не обязательно связаны с конкретными компьютерами или другими устройствами. Различные системы общего назначения могут использоваться с программами в соответствии с изложенной здесь информацией, возможно также признание целесообразным сконструировать более специализированные устройства для выполнения шагов способа. Структура разнообразных систем такого рода определяется в порядке, предусмотренном в описании ниже. Кроме того, изложение вариантов реализации изобретения не предполагает ссылок на какие-либо конкретные языки программирования. Следует принимать во внимание, что для реализации принципов настоящего изобретения могут быть использованы различные языки программирования.
[0068] Варианты осуществления настоящего изобретения могут быть представлены в виде вычислительного программного продукта или программы, которая может содержать машиночитаемый носитель данных с сохраненными на нем инструкциями, которые могут использоваться для программирования вычислительной системы (или других электронных устройств) для выполнения процесса в соответствии с сущностью изобретения. Машиночитаемый носитель данных включает механизмы хранения или передачи информации в машиночитаемой форме (например, компьютером). Например, машиночитаемый (считываемый компьютером) носитель данных содержит машиночитаемый (например, компьютером) носитель данных (например, постоянное запоминающее устройство («ПЗУ»), оперативное запоминающее устройство («ОЗУ»), накопитель на магнитных дисках, накопитель на оптическом носителе, устройства флэш-памяти и т.д.) и т.п.
[0069] Слова «пример» или «примерный» используются здесь для обозначения использования в качестве примера, отдельного случая или иллюстрации. Любой вариант реализации или конструкция, описанная в настоящем документе как «пример», не должна обязательно рассматриваться как предпочтительная или преимущественная по сравнению с другими вариантами реализации или конструкциями. Слово «пример» лишь предполагает, что идея изобретения представляется конкретным образом. В этой заявке термин «или» используется для обозначения включающего «или», а не исключающего «или». Если не указано иное или не очевидно из контекста, то «X включает А или В» используется для обозначения любой из естественных включающих перестановок. То есть если X включает в себя А; X включает в себя В; или X включает и А и В, то высказывание «X включает в себя А или В» является истинным в любом из указанных выше случаев. Кроме того, артикли «а» и «an», использованные в англоязычной версии этой заявки и прилагаемой формуле изобретения, должны, как правило, означать «один или более», если иное не указано или из контекста не следует, что это относится к форме единственного числа. Использование терминов «вариант реализации» или «один вариант реализации» или «реализация» или «одна реализация» не означает одинаковый вариант реализации, если это не указано в явном виде. В описании термины «первый», «второй», «третий», «четвертый» и т.д. используются как метки для обозначения различных элементов и не обязательно имеют смысл порядка в соответствии с их числовым обозначением.