ОБРАБОТКА ДОКУМЕНТА С ИСПОЛЬЗОВАНИЕМ НЕСКОЛЬКИХ ПОТОКОВ ОБРАБОТКИ
DOCUMENT PROCESSING USING MULTIPLE PROCESSING FLOWS

ОБЛАСТЬ ТЕХНИКИ
[0001] Настоящее изобретение в целом относится к вычислительным устройствам для обработки электронных документов, а точнее - к обработке документов с использованием параллельной обработки.
УРОВЕНЬ ТЕХНИКИ
[0002] Бумажный документ можно преобразовать в электронный файл путем оцифровки (например, используя сканирование) каждой страницы бумажного документа, получая серию изображений. Затем изображения обрабатываются для создания единого документа, например, в формате PDF (Portable Document Format) или TIFF (Tagged Image File Format). Процесс преобразования серии изображений часто требует большого объема вычислений и значительного времени.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0003] Настоящее изобретение иллюстрируется с помощью примеров, а не методом ограничения, его можно лучше понять при рассмотрении приведенного ниже подробного описания в сочетании с чертежами, на которых:
[0004] На Фиг. 1 представлена блок-схема одного из вариантов реализации вычислительного устройства, работающего в соответствии с одним или несколькими аспектами настоящего изобретения.
[0005] На Фиг. 2 показан пример файла, состоящего из нескольких частей, которые могут обрабатываться в соответствии с одним или несколькими аспектами настоящего изобретения.
[0006] На Фиг. 3 приведен пример файла, состоящего из нескольких частей, обрабатываемого основным процессом и несколькими рабочими процессами в соответствии с одним или несколькими аспектами настоящего изобретения.
[0007] На Фиг. 4 показана блок-схема одного иллюстративного примера способа 400 обработки файла при использовании параллельной обработки в соответствии с одним или несколькими аспектами настоящего изобретения.
[0008] На Фиг. 4А приведена блок-схема, которая расширяет блок 440 на Фиг. 4 в соответствии с одним или несколькими аспектами настоящего изобретения.
[0009] На Фиг. 5 приведена более подробная схема иллюстративного примера вычислительного устройства, в котором реализованы методы настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[00010] Настоящее изобретение относится к способу использования параллельной обработки при формировании документа (например, в формате PDF, DjVu, TIFF, PNG, JPEG, EPS или другого документа, состоящего из сегментов). Этот способ может включать использование нескольких процессов, которые совместно обрабатывают графические и/или текстовые элементы и собирают их в файл. В данном документе термин «процесс» относится к одному потоку, выполняющему последовательность инструкций, который может быть обеспечен, например, процессом Unix или потоком Linux. В одном примере возможен основной процесс и несколько рабочих процессов, которые работают совместно, чтобы собрать один или более документов в один файл в формате PDF.
[00011] Основной процесс может анализировать исходный документ и направлять рабочие процессы на обработку частей исходного документа. Такой анализ может включать выявление частей документа, которые включают один или более элементов, требующих длительной обработки, например графические элементы (такие как фотографии, линейная графика, картинки), аудио и т.п., причем в этой точке основной процесс может использовать рабочий процесс для обработки части документа. Элемент, занимающий длительное время на обработку, является частью документа, обработка которой занимает существенно больше времени, чем обработка других частей документа. Для иллюстрации настоящего изобретения в дальнейшем в качестве элементов, требующих длительной обработки, будут рассматриваться графические элементы. В одном примере реализации каждая часть может представлять собой изображение страницы многостраничного документа. Если несколько частей содержат графику, то основной процесс может использовать отдельный рабочий процесс для каждой части. Основной процесс может выполняться асинхронно по отношению к рабочим процессам и может продолжать обработку других частей документа при выполнении рабочих процессов. После того как основной процесс завершил свою часть обработки, он может ожидать завершения всех рабочих процессов перед продолжением для окончательной сборки файла.
[00012] Основной процесс может создавать рабочие процессы путем порождения дочерних процессов, используя, например, вызов fork() в Unix, вызов pthread_create() в Linux или иной подобный вызов системной функции. Количество рабочих процессов может зависеть от числа задач, определенных основным процессором, но может быть ограничено общим количеством доступных устройств обработки данных (например, ядер). Каждая задача может включать обработку одной части документа (например, страницы). Задача может быть создана, например, для каждой страницы независимо от места нахождения графических элементов или (при альтернативном подходе) только для страниц, содержащих графические элементы. Основной процесс может организовать очередь задач, если число задач больше числа рабочих процессов.
[00013] В одном примере реализации основной процесс может проанализировать внутреннее представление документа и определить, что в нем имеется 40 страниц. Из 40 страниц 10 страниц могут содержать графику. Таким образом, основной процесс может использовать 10 задач, соответствующих каждой из 10 страниц. Если имеется только 8 процессорных ядер, то основной процесс может создать до 7 рабочих процессов, а остальные три задачи могут быть помещены в очередь и обработаны рабочим процессом после завершения его текущей задачи.
[00014] Раскрытая в этом документе технология может обеспечить несколько преимуществ, например сокращение времени, необходимого для сборки файла документа. Такие преимущества становятся доступными за счет того, что обработка графических элементов (например, сжатие, изменение разрешения, формата изображения, цветности, качества, уменьшение шумов изображения) зачастую является значительно более сложной задачей с точки зрения объема вычислений, чем обработка текста (например, изменение шрифта). При параллельной организации рабочих процессов обработки графики можно сократить общее время, необходимое для сборки документа.
[00015] Различные аспекты упомянутых выше способов и систем подробно описаны ниже в этом документе с помощью примеров, а не методом ограничения.
[00016] На Фиг. 1 приведена блок-схема одного иллюстративного примера вычислительного устройства 100, работающего в соответствии с одним или несколькими аспектами настоящего изобретения. В иллюстративных примерах вычислительное устройство 100 может представлять собой разнообразные вычислительные устройства, включая планшетный компьютер, смартфон, ноутбук или настольный компьютер.
[00017] Вычислительное устройство 100 может содержать процессор 110, подключенный к системной шине 120. Другие устройства, подключенные к системной шине 120, могут включать память 130, дисплей 140, клавиатуру 150, оптическое устройство ввода 160 и один или более коммуникационных интерфейсов 170. Термин «подключенный» в этом документе означает электрическое соединение и/или обмен данными через одно или более интерфейсных устройств, адаптеров и т.п.
[00018] В различных иллюстративных примерах процессор 110 может содержать один или более устройств обработки данных. Процессорный блок может быть частью аппаратного обеспечения, которое выполняет поток независимо от других потоков в пределах одного процессора. Устройство обработки данных может представлять собой ядро процессора, включенное в центральный процессор (CPU), цифровой сигнальный процессор (DSP), графический процессор (GPU) или любой другой подобный тип аппаратного процессора. Устройства обработки данных могут располагаться в одном источнике аппаратного обеспечения (например, в сервере) или в группе источников аппаратного обеспечения (например, в кластере, серверной ферме), которая может быть логически объединена и способна функционировать в качестве единого ресурса (например, облака). Память 130 может включать одно или более энергозависимых запоминающих устройств (например, микросхемы ОЗУ), одно или более энергонезависимых запоминающих устройств (например, микросхемы ПЗУ или электрически стираемых программируемых ПЗУ) и/или одно или более запоминающих устройств (например, оптические или магнитные диски). Устройство оптического ввода 160 может представлять собой сканер или фотокамеру, настроенную на сбор света, отраженного от объектов, расположенных в ее поле зрения. Входная информация может представлять собой любой электронный документ, который был подвергнут обработке изображений, анализу документа и этапам оптического распознавания символов (OCR). Пример вычислительного устройства, в котором реализованы аспекты настоящего изобретения, будет рассмотрен более подробно ниже в описании Фиг. 5.
[00019] Память 130 может хранить команды модуля 190 для формирования электронных документов в заранее определенном формате. В определенных реализациях изобретения модуль 190 может выполнять способы сборки документа с графикой в соответствии с одним или несколькими аспектами настоящего изобретения. В качестве иллюстративного примера модуль 190 может быть реализован как функция, вызываемая через пользовательский интерфейс приложения. При альтернативном подходе модуль 190 может быть реализован в виде автономного приложения.
[00020] На Фиг. 2 показан пример состоящего из нескольких частей документа 210, который может быть обработан с помощью модуля 190, работающего в вычислительном устройстве 100 в соответствии с одним или несколькими аспектами настоящего изобретения. Документ 210 может включать части 220А-С (например, страницы), которые могут включать графические элементы 222А-В и текстовые элементы 224А-В. Эти элементы были выбраны исключительно для иллюстративных целей и не устанавливают каких-либо ограничений для объема настоящего описания.
[00021] Документ 210 может включать один или более цифровых элементов, которые могут быть переданы визуально для создания визуального представления электронного документа (например, на дисплее или в виде печатного материала). Документ 210 может представлять собой внутреннее представление, хранимое в модуле 190, имеющее структуру, которая обеспечивает возможность быстрого доступа. Как показано на Фиг. 2, документ 210 может представлять собой отсканированный журнал, который, возможно, был подвергнут этапам обработки изображений, анализа документа и OCR. В одном примере документ 210 может иметь формат, не читаемый ни одним из модулей за исключением модуля 190. В настоящем изобретении приведено описание способа сохранения документа из его внутреннего представления в любой выходной формат, который может быть прочитан автономным модулем или программным приложением.
[00022] Внутреннее представление документа 210 может включать справочную информацию, которая выявляет расположение графических элементов 222А-В и/или текстовых элементов 224А-В. Документ 210 также может включать другие элементы (например, разметку страницы или логическую структуру страниц), которые не показаны на Фиг. 2. В одном примере документ 210 может включать презентацию, таблицу и/или альбом, в этом случае его составные части 220А-С могут представлять собой страницы, слайды, ячейки и картинки соответственно.
[00023] Текстовые элементы 224А-В могут иметь любой цвет, шрифт или компоновку, как, например, блоки, колонки, таблицы или другую подобную компоновку. Графические элементы 222А-В могут включать, например, фотографию, картинку, иллюстрацию, чертеж, схему, график, диаграмму, символ или другую подобную графику.
[00024] На Фиг. 3 в качестве примера показан способ 300, в котором вычислительное устройство 100 может использовать несколько процессов обработки документа 310 и его различных частей (например, изображений 320А-С) для записи результирующего файла 340. Каждое из изображений 320А-С может представлять собой страницу электронного документа и включать графические элементы 322, 326, 328 и текстовые элементы 324А-D. Изображения 320А-С можно создать путем сканирования или иного способа получения изображения или серии изображений бумажного документа с последующей обработкой изображений, анализом документа и OCR. В различных иллюстративных примерах результирующий файл 340 может иметь формат, не зависящий от прикладного программного обеспечения, аппаратного обеспечения и операционных систем, и может содержать полное описание фиксированной разметки плоского документа, включая текст, шрифты, графику и другую информацию, необходимую для его отображения, например, как в файле PDF или DjVu.
[00025] Изображения 320А-С могут быть обработаны основным процессом 302 и/или рабочими процессами 304А-В. Обработка изображения может включать преобразование изображения или части изображения в требуемый формат. Например, преобразование может включать сжатие, изменение разрешения, форматирование, изменение цветности, уменьшение уровня шумов и/или сегментацию изображения. Сжатие может включать применение одной или нескольких технологий сжатия (например, алгоритмов), которые преобразовывают изображения, содержащие компоненты черно-белого текста и нерастеризованные компоненты, например, аналогично технологии Mixed Raster Content (MRC).
[00026] Выбор оптимального алгоритма сжатия может зависеть от типа графического элемента (например, фотография, линейная графика, картинка) или от предполагаемого размера документа. В одном примере может быть выбран алгоритм сжатия без потерь, который может уменьшить размер данных изображения с минимальной потерей качества изображения. Алгоритм сжатия может включать выявление и устранение статистической избыточности, например, как в форматах PNG или GIF. В другом примере алгоритм сжатия может представлять собой сжатие с потерями, которое может уменьшить размер изображения, но при этом может снижаться качество изображения, например, путем определения ненужной информации и удаления ее, как в алгоритме JPEG.
[00027] Как показано на Фиг. 3, документ 310 может быть обработан как основным процессом 302, так и рабочими процессами 304А-В. Способ может начаться с основного процесса 302, который анализирует изображения (например, страницы) части документа для выявления графических элементов 322, 326 и 328 и текстовых элементов 324A-D. Анализ разметки может включать доступ к структуре данных, которая включает информацию о базовом расположении (например, координаты) элементов в разметке. На основании разметки основной процесс 302 может определить, что все изображения (например, 320А-С) содержат текстовые элементы, а некоторые изображения (например, 320А и 320С) также включают графические элементы. Для изображений частей документа, которые включают графический элемент, основной процесс 302 может сформировать рабочий процесс для обработки графического элемента, а остальные части изображений (например, текстовые части) могут быть обработаны основным процессом 302.
[00028] В некоторых вариантах реализации изобретения наличие графических элементов не рассматривается, потому что требуется обработка изображения всей страницы (например, при сохранении в формат файла PDF текст под/над изображением страницы). Затем формируются рабочие процессы для обработки изображения каждой страницы документа.
[00029] Основной процесс 302 может использовать несколько рабочих процессов 304А-В и предоставлять рабочим процессам 304А-В информацию (например, входные параметры) для определения соответствующего расположения изображения и графических элементов. Информация о расположении может предоставляться в виде определения структуры, которая может включать в себя положение (например, координаты) и размеры части изображения, содержащего графический контент.
[00030] Каждый рабочий процесс может обработать изображение путем его сжатия и форматирования, а затем возвратить результаты в основной процесс 302. Как показано на Фиг. 3, основной процесс 302 формирует рабочий процесс 304А для обработки графического элемента 322А изображения 320А и порождает рабочий процесс 304В для обработки графических элементов 326 и 328 изображения 320С. В одном примере реализации рабочий процесс 304А может обработать часть документа (например, страницу) путем обработки графического элемента 322 без обработки остального изображения 320А (например, текстовый элемент 324А), а в другом примере рабочий процесс может обрабатывать все изображение 320А, включая графический элемент и текстовые элементы. Если изображение не имеет графических элементов, как показано в изображении 320В, то основной процесс 302 может обрабатывать изображение без использования дополнительного рабочего процесса.
[00031] Каждый рабочий процесс 304А-В может быть дочерним процессом основного процесса, или он может представлять собой один из потоков основного процесса 302. Таким образом, основной процесс может формировать рабочий процесс, создавая новый дочерний процесс, используя, например, порождение, разветвление или другую подобную функциональность. При альтернативном подходе формирование рабочего процесса может включать в себя создание нового потока с помощью соответствующей функциональной возможности. В другом примере осуществления основной процесс может повторно использовать уже существующий поток или дочерний процесс.
[00032] Основной процесс 302 может быть асинхронным по отношению к рабочим процессам 304А-В, поэтому он может создать рабочий процесс 304А и может продолжать обработку документа в то время, когда рабочие процессы 304А-В выполняют свою соответствующую обработку. Это позволяет модулю 190 обрабатывать нескольких частей документа 310 параллельно (например, параллельная обработка). В одном примере осуществления система может поддерживать двухуровневый параллелизм, при котором основной процесс может порождать один или более дочерних процессов (первый уровень параллелизма), а каждый дочерний процесс может иметь несколько потоков (второй уровень параллелизма). При этом, например, основной процесс может породить дочерний процесс для обработки страницы с несколькими графическими элементами, а дочерний процесс может иметь несколько потоков, каждый из которых обрабатывает один из графических элементов на странице.
[00033] Количество рабочих процессов может зависеть от различных условий, таких как количество задач и/или количество устройств обработки информации. В одном примере задача может быть создана для каждого изображения (например, страницы), включающего по меньшей мере один графический элемент. Поэтому гипотетический документ, содержащий три страницы, из которых две страницы содержат по два графических элемента, может привести к созданию двух задач. В другом примере реализации может быть создана задача для каждого графического элемента, и в этом примере формируются четыре задачи.
[00034] Основной процесс 302 может создавать рабочий процесс для каждой задачи, пока количество рабочих процессов не достигнет порогового количества рабочих процессов. Пороговое количество рабочих процессов может быть основано на системных ресурсах, например, пороговое значение может быть равно количеству устройств обработки информации минус один для основного процесса. Это позволяет использовать общее количество процессов (основного и рабочих), меньшее или равное числу процессорных блоков.
[00035] Как уже обсуждалось выше, устройства обработки информации могут соответствовать доступным ядрам; таким образом, если в машине имеется два процессора с четырьмя ядрами в каждом, то присутствуют восемь устройств обработки, и пороговое количество рабочих процессов может быть равно семи. Если используются виртуальные машины, то устройства обработки могут быть представлены виртуальными или имитационными процессорами, в этом случае количество устройств обработки определяется на основании количества устройств, доступных в гостевой машине для использования приложением 190. В другом примере реализации порог может быть основан на объеме используемой или не используемой (доступной) памяти для основного процесса и/или системы. Если системе не хватает памяти, то она может снизить порог и тем самым закрепить задачи среди меньшего количества рабочих процессов. В одном примере она может изменить порог на основании средней потребляемой памяти всех рабочих процессов или их части.
[00036] Когда количество рабочих процессов достигает порога, основной процесс может сформировать очередь из последующих задач. Очередь задач может включать хранение задач в структуре данных, такой как очередь, список, массив и/или стек, организованной по принципу FIFO. После постановки задачи в очередь основной процесс может распределить находящиеся в очереди задачи по рабочим процессам, завершившим или собирающимся завершить свою текущую задачу. В одном примере главный процесс может распределять задачи рабочему процессу, который уже обрабатывает изображение, и он может обрабатывать задачи последовательно или параллельно. В другом примере основной процесс может распределять задачи на основании порядка очередности, при котором более крупные задачи могут иметь более высокий приоритет. Затем основной процесс может сначала направить рабочий процесс на обработку задачи с более высоким приоритетом или может разбить задачу на несколько задач, которые будут распределены среди более чем одного рабочего процесса.
[00037] Когда рабочий процесс завершает задачу, он может либо прекратиться, либо перейти в режим ожидания. Прекращение может производиться автоматически, если рабочий процесс возвращает обработанное изображение, или может быть инициировано основным процессом. Кроме того, рабочий процесс может завершить задачу и ждать другой задачи. Он может сделать это, переходя в режим ожидания или в спящий режим, пока основной поток не направит его для обработки другой задачи. В этой ситуации рабочий процесс не может прекратиться до тех пор, пока больше не останется задач или не будут обработаны все изображения.
[00038] Одно изображение (например, изображение 320С) может включать множество графических элементов, которые могут быть обработаны с использованием различных алгоритмов кодирования. Рабочие процессы или основной процесс могут определить тип графического элемента путем доступа к справочной информации (например, путем определения структуры), которая включает поле графического типа. На основе графического типа рабочий процесс или основной процесс может выбрать алгоритм кодирования, который будет выполняться рабочими процессами 304А-В или основным процессом 302. Как показано на Фиг. 3, изображение 320С может включать встроенную цветную фотографию 326 и встроенное изображение в градациях серого 328. Для встроенной цветной фотографии 326 рабочий процесс 304В может анализировать тип графики и может выбрать алгоритм сжатия, который поддерживает фотореалистичные изображения (например, JPEG). Для изображения в градациях серого 328 тот же самый рабочий процесс 304В может выбирать алгоритм сжатия, который лучше подходит для графики с градациями серого. В другом примере содержащее несколько графических элементов изображение может быть сжато с использованием различных алгоритмов (например, алгоритма Mixed Raster Content (MRC)), а рабочий процесс, обрабатывающий эту задачу, можно разделить на несколько независимых рабочих процессов. Например, если требуется по-разному сжимать цветную фотографию 326 и изображение в градациях серого 328, то рабочий процесс 304В может быть разделен на два рабочих процесса: один независимый рабочий процесс (304С, не показан), который обрабатывает фотоснимок 326, и другой независимый рабочий процесс (304D, не показан), который обрабатывает изображение 328.
[00039] После обработки всех изображений основной процесс 302 может собрать результирующие изображения в один или более результирующих файлов 340. Сборка может включать, например, совмещение изображений (например, конкатенацию, сшивание, соединение) и другие этапы обработки изображений, не описанные в настоящем документе. В одном примере реализации изображения могут быть обработаны вне порядка, поэтому этап сборки также может изменить организацию обработанных изображений и изменить формат (например, кадрирование, вращение) одного или нескольких элементов, чтобы оптимизировать или улучшить их представление, например, сделать текст и/или графику яснее. В другом примере в результате документ может быть изменен для того, чтобы заменить текст документа с идентичным или по существу аналогичным стандартным шрифтом, который может дополнительно повысить сжатие, а также сократить последующее время декомпрессии.
[00040] Исходный документ 310 и/или результирующий файл 340 могут включать несколько слоев. Несколько слоев могут содержать данные, накладываемые на исходный документ, например текстовые метаданные, комментарии, аннотации или другие подобные данные. Примером многослойного документа является файл PDF с возможностью поиска, который может иметь прозрачный слой текста, наложенный на текстовые элементы документа.
[00041] Основной процесс 302 или рабочие процессы 304А-В могут изменить многослойный документ, чтобы объединить все слои в одну плоскость, например, путем выравнивания изображения или документа. Это может привести к устранению или уменьшению количества слоев.
[00042] На Фиг. 4 приведена блок-схема одного иллюстративного примера способа 400 обработки электронных документов в соответствии с одним или несколькими аспектами настоящего изобретения. Способ 400 и/или каждая из его отдельных функций, стандартных программ, подпрограмм или операций может выполняться с помощью одного или нескольких процессоров компьютерного устройства (например, вычислительного устройства 100 на Фиг. 1), в котором реализован этот способ. В некоторых вариантах реализации способ 400 может быть осуществлен с помощью двух или более потоков обработки, причем каждый поток выполняет одну или более отдельных функций, процедур, подпрограмм или операций способа. В качестве иллюстративного примера рабочие процессы или потоки обработки, реализующие способ 400, могут быть синхронизированы (например, с использованием семафоров, критических секций, и/или других механизмов синхронизации потоков).
[00043] В блоке 410 вычислительное устройство, реализующее этот способ, может получать изображения исходного документа 310. Исходный документ 310 может быть сохранен во временной внутренней структуре данных, которая представляет документ, полученный от другого процесса, осуществляющего распознавание изображений (например, OCR).
[00044] В блоке 420 вычислительное устройство может открыть изображение (например, страницу), а в блоке 430 вычислительное устройство может определить, содержит ли изображение по меньшей мере один графический элемент. Вычислительное устройство может различать типы элементов в изображении, поскольку оно может включать основной процесс 302 и рабочий процесс 304А-В, которые могут быть назначены различным элементам и использовать различные технологии обработки. В одном примере реализации основной процесс 302 может обрабатывать текстовый элемент 324А в пределах документа 310 без обработки каких-либо графических элементов, а рабочий процесс 304А может обрабатывать графический элемент 322 без обработки каких-либо текстовых элементов. В другом примере документ может включать страницы (например, 320С) с несколькими графическими элементами. Первый графический элемент может быть цветной фотографией, а второй графический элемент может быть штриховым черно-белым рисунком. Рабочий процесс может использовать первый алгоритм обработки (например, алгоритм сжатия с потерями) для первого графического элемента и другой алгоритм обработки (например, алгоритм сжатия без потерь) для второго графического элемента.
[00045] Если изображение включает графический элемент, то вычислительное устройство может перейти к блоку 440, чтобы подготовить (обработать) графические элементы, а затем к блоку 450, в противном случае вычислительное устройство может перейти непосредственно к блоку 450. В качестве иллюстративного примера определение наличия графических элементов может быть выполнено путем доступа к справочной информации. Блок 440 и подготовка (обработка) графических элементов будут описаны более подробно ниже со ссылкой на Фиг. 4А.
[00046] В блоке 450 вычислительное устройство может подготовить (обработать) текстовые элементы в изображении. В одном примере основной процесс 302 может обрабатывать текстовые элементы каждой страницы документа 310, при этом каждая страница, которая содержит графику, может обрабатываться отдельным выделенным рабочим процессом, при этом первый рабочий процесс 304А может обрабатывать графику на первой странице, а второй рабочий процесс 304В может обрабатывать графику на второй странице. В другом примере основной процесс 302 может обрабатывать только текст на страницах без графики, а рабочие процессы 304А-В могут обработать текст в дополнение к графике для любых страниц, которые имеют по крайней мере один графический элемент (например, изображения 320А и 320С).
[00047] В блоке 460 вычислительное устройство может проверить, включает ли документ другое изображение, при положительном ответе на этот вопрос происходит переход к блоку 420 и непрерывный перебор всех изображений на основе описанного выше процесса. В противном случае это последняя страница и вычислительное устройство может перейти к блоку 470 и ожидать завершения всех рабочих процессов.
[00048] В блоке 480 вычислительное устройство может создать выходной файл. Выходной файл может быть документом, состоящим из нескольких частей, которые могут иметь гибридный формат файла. Файлом с гибридным форматом может быть файл, в котором разные части файла сжаты с использованием различных алгоритмов сжатия. В одном примере выходной файл может находиться в гибридном формате, например PDF (PDF/A, PDF/E, PDF/UA, PDF/VT, PDF/X), PPT (PPTX) и/или DOC (DOCX). В одном примере вычислительное устройство, используемое для осуществления способа, может собрать несколько изображений в выходной файл, который представляет собой файл документа с жесткой разметкой.
[00049] После завершения операций, описанных выше в этом документе, выполнение этого способа может завершиться.
[00050] На Фиг. 4А приведена блок-схема, которая расширяет подготовку графического элемента, показанную в блоке 440 на Фиг. 4. В блоке 441 вычислительное устройство может создать задачу для обработки графических элементов изображения в отдельном или выделенном процессе (например, в фоновом процессе). На этапе 442 вычислительное устройство может определить, что количество рабочих процессов ниже порогового количества рабочих процессов. Если это количество ниже порогового значения, то вычислительное устройство может сформировать рабочий процесс, как показано в блоке 446. В противном случае вычислительное устройство может поместить задачи в очередь, как показано в блоке 444. В блоке 448 вычислительное устройство может назначить задачу только что созданному рабочему процессу. Затем этот рабочий процесс может обработать задачу в фоновом режиме.
[00051] В некоторых вариантах реализации изобретения эта функциональность также может анализировать разметку исходного документа для получения логической структуры документа. Затем эта функциональность может применить логическую структуру к извлеченной текстовой информации для получения редактируемого электронного файла, соответствующего исходному бумажному документу. Логическая структура документа может содержать множество элементов формы, включая изображения, таблицы, страницы, заголовки, главы, разделы, разделители, абзацы, подзаголовки, оглавления, сноски, ссылки, библиографии, рефераты, чертежи и т.д.
[00052] На Фиг. 5 представлена более подробная схема примера вычислительного устройства 500, внутри которого исполняется набор команд, которые вызывают выполнение вычислительным устройством любого из способов или нескольких способов настоящего изобретения. Вычислительное устройство 500 может включать те же компоненты, что и вычислительное устройство 100 на Фиг. 1, а также некоторые дополнительные или другие компоненты, некоторые из которых могут быть опциональными и необязательными для реализации аспектов настоящего изобретения. Вычислительное устройство может быть подключено к другому вычислительному устройству по локальной сети, корпоративной сети, сети экстранет или сети Интернет. Вычислительное устройство может работать в качестве сервера или клиента в сетевой среде "клиент/сервер" или в качестве однорангового вычислительного устройства в одноранговой (или распределенной) сетевой среде. Вычислительное устройство может быть представлено персональным компьютером (ПК), планшетным ПК, телевизионной приставкой (STB), карманным ПК (PDA), сотовым телефоном или любым вычислительным устройством, способным выполнять набор команд (последовательно или иным образом), определяющих операции, которые должны быть выполнены этим вычислительным устройством. Кроме того, в то время как показано только одно вычислительное устройство, следует принять, что термин «вычислительное устройство» также может включать любую совокупность вычислительных устройств, которые отдельно или совместно выполняют набор (или несколько наборов) команд для выполнения одной или нескольких методик, обсуждаемых в настоящем документе.
[00053] Пример вычислительного устройства 500 включает процессор 502, основную память 504 (например, постоянное запоминающее устройство (ПЗУ) или динамическую оперативную память (DRAM)) и устройство хранения данных 518, которые взаимодействуют друг с другом по шине 530.
[00054] Процессор 502 может быть представлен одним или более универсальными устройствами обработки данных, например микропроцессором, центральным процессором и т.д. В частности, процессор 502 может представлять собой микропроцессор с полным набором команд (CISC), микропроцессор с сокращенным набором команд (RISC), микропроцессор с командными словами сверхбольшой длины (VLIW), процессор, реализующий другой набор команд, или процессоры, реализующие комбинацию наборов команд. Процессор 502 также может представлять собой одно или несколько устройств обработки специального назначения, например интегральную схему специального назначения (ASIC), программируемую пользователем вентильную матрицу (FPGA), процессор цифровых сигналов (DSP), сетевой процессор и т.п. Процессор 502 настроен на выполнение команд 522 для осуществления рассмотренных в настоящем документе операций и функций.
[00055] Вычислительное устройство 500 может дополнительно включать статическую память 506, устройство сетевого интерфейса 508, видеодисплей 510, устройство ввода символов 512 (например, клавиатуру), устройство управления курсором 514 и генератор сигналов 516.
[00056] Запоминающее устройство 518 может содержать машиночитаемый носитель данных 528, в котором хранится один или более наборов команд 522, реализующих один или более из методов или функций настоящего изобретения. Команды 522 также могут находиться полностью или по меньшей мере частично в основной памяти 504 и/или в процессоре 502 во время исполнения их в вычислительном устройстве 500. Основная память 504 и процессор 502 также могут составлять машиночитаемый носитель данных. Команды 522 дополнительно могут передаваться или приниматься по сети 520 через устройство сетевого интерфейса 508.
[00057] В определенных вариантах реализации команды 522 могут включать команды способа 300 и/или 400 для обработки изображений документов; они могут выполняться с помощью модуля 190, изображенного на Фиг. 1. В то время как машиночитаемый носитель 528, показанный на примере на Фиг. 5, является единым носителем, термин «машиночитаемый носитель» должен включать один носитель или несколько носителей (например, централизованную или распределенную базу данных и/или соответствующие кэши и серверы), в которых хранятся один или несколько наборов команд. Термин «машиночитаемый носитель информации» также следует рассматривать как термин, включающий любой носитель, который способен хранить, кодировать или выполнять набор команд для выполнения машиной, который заставляет эту машину выполнять любую одну или более из методик, описанных в настоящем описании изобретения. Термин «машиночитаемый носитель информации» включает помимо прочего твердотельную память, оптические и магнитные носители.
[00058] Описанные в документе способы, компоненты и функции могут быть реализованы дискретными компонентами аппаратного обеспечения, либо они могут быть интегрированы в функции других аппаратных компонентов, таких как ASICS, FPGA, DSP или подобных устройств. Кроме того, способы, компоненты и функции могут быть реализованы с помощью модулей встроенного программного обеспечения или функциональных схем аппаратных устройств. Способы, компоненты и функции могут быть также реализованы с помощью любой комбинации аппаратных устройств и программных компонентов либо исключительно с помощью программного обеспечения.
[00059] В приведенном выше описании изложены многочисленные детали. Однако специалисту в этой области техники благодаря этому описанию очевидно, что настоящее изобретение может быть реализовано на практике без этих конкретных деталей. В некоторых случаях хорошо известные структуры и устройства показаны в виде блок-схемы, а не детально, чтобы не усложнять описание настоящего изобретения.
[00060] Некоторые части описания предпочтительных вариантов осуществления представлены в виде алгоритмов и символического представления операций с битами данных в памяти компьютера. Такие описания и представления алгоритмов представляют собой средства, используемые специалистами в области обработки данных, чтобы наиболее эффективно передавать сущность своей работы другим специалистам в этой области. В настоящем документе и в целом алгоритмом называется самосогласованная последовательность операций, приводящих к требуемому результату. В операциях производятся физические манипуляции с физическими величинами. Обычно, хотя и не обязательно, эти величины принимают форму электрических или магнитных сигналов, которые можно хранить, передавать, комбинировать, сравнивать и подвергать другим манипуляциям. Оказалось, что прежде всего для обычного использования удобно описывать эти сигналы в виде битов, значений, элементов, символов, членов, цифр и т.д.
[00061] Однако следует иметь в виду, что все эти и подобные термины должны быть связаны с соответствующими физическими величинами и что они представляют собой просто удобные метки, применяемые к этим величинам. Из приведенного ниже изложения очевидно, что если особо не указано иное, то следует понимать, что в описании такие термины, как «определение», «вычисление», «расчет», «получение», «выявление», «изменение» и т.п., относятся к действиям и процессам вычислительного устройства или аналогичного электронного вычислительного устройства, которое манипулирует данными и преобразует данные, представленные в виде физических (например, электронных) величин в регистрах вычислительного устройства и памяти, в другие данные, аналогичным образом представленные в виде физических величин в памяти или регистрах вычислительного устройства или других таких устройств хранения, передачи или отображения информации.
[00062] Настоящее изобретение также относится к устройству для выполнения операций, описанных в этом документе. Такое устройство может быть специально сконструировано для требуемых целей, или оно может содержать универсальный компьютер, который избирательно активируется или реконфигурируется с помощью компьютерной программы, хранящейся в компьютере. Такая компьютерная программа может храниться на машиночитаемом носителе данных, например (помимо прочего): диск любого типа, в том числе гибкий диск, оптические диски, CD-ROM и магнитно-оптические диски, постоянные запоминающие устройства (ПЗУ), оперативные запоминающие устройства (ОЗУ), программируемые ПЗУ (EPROM), электрически стираемые ППЗУ (EEPROM), магнитные или оптические карты или любой тип носителя, пригодный для хранения электронных команд.
[00063] Следует иметь в виду, что приведенное выше описание предназначено для иллюстрации и что оно не носит ограничительный характер. Различные другие реализации станут очевидны специалистам в данной области техники после прочтения и понимания приведенного выше описания. Поэтому объем раскрытия должен определяться со ссылкой на прилагаемую формулу изобретения наряду с полным объемом эквивалентов, на которые такие требования предоставляют право.