Определение последовательности команд вывода текста в pdf документах
Иллюстрации
Показать всеИзобретение относится к области документов, содержащих текст. Техническим результатом является определение последовательности команд вывода текста в документах. Способ определения последовательности команд вывода текста в документах включает: получение устройством обработки документа, который содержит в текстовом слое множество команд вывода текста, при этом каждая команда вывода текста предназначена для отображения одного или более символов на устройстве вывода; определение с использованием множества команд вывода текста в текстовом слое набора команд вывода текста для страницы из множества страниц документа; определение логической структуры документа, при этом логическая структура документа содержит множество блоков контента, которые обуславливают отличия порядка в наборе команд вывода в текстовом слое от порядка чтения документа; определение устройством обработки упорядоченной последовательности набора команд вывода текста для страницы, причем упорядоченная последовательность отражает порядок чтения внутри каждого из множества блоков контента; создание устройством обработки модифицированного текстового слоя для документа, где этот модифицированный текстовый слой будет содержать набор команд вывода текста в упорядоченной последовательности; и предоставление устройством обработки модифицированного текстового слоя, чтобы вызвать устройство вывода выполнить отображение множества символов, соответствующих набору команд вывода текста в упорядоченной последовательности. 3 н. и 42 з.п. ф-лы, 10 ил.
Реферат
ОБЛАСТЬ ИЗОБРЕТЕНИЯ
[001] Настоящее изобретение в целом относится к вычислительным системам, а точнее - к системам и способам определения последовательности команд вывода текста в документах.
УРОВЕНЬ ТЕХНИКИ
[002] Portable Document Format (PDF) - это формат, используемый для представления документов в виде, не зависящем от прикладных программ, аппаратных средств или операционных систем. Документ PDF может содержать полное описание документа с фиксированной разметкой, включая текст, шрифты, графику и другую информацию, необходимую для его вывода. Документ PDF может содержать текстовый слой, включающий команды вывода текста для представления символов при отображении документа.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[003] Варианты реализации настоящего изобретения описывают умное определение последовательности команд вывода текста для логических блоков документа PDF. Получаемый документ содержит в текстовом слое множество команд вывода текста, при этом каждая команда вывода текста предназначена для отображения одного или более символов на устройстве вывода. Использование множества команд вывода текста в текстовом слое позволяет определить набор команд вывода текста для страницы или множества страниц документа. Производится определение логической структуры документа, при этом логическая структура документа содержит множество блоков контента, которые обуславливают отличия порядка в наборе команд вывода в текстовом слое от порядка чтения документа. Определяется упорядоченная последовательность набора команд вывода текста для страницы, при этом упорядоченная последовательность отражает порядок чтения каждого из множества блоков контента, расположенных на странице. Для документа создается модифицированный текстовый слой с набором команд вывода в упорядоченной последовательности. Затем модифицированный текстовый слой передается устройству вывода для отображения множества символов, соответствующих набору команд вывода текста в упорядоченной последовательности.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[004] Настоящее изобретение иллюстрируется на примерах без каких бы то ни было ограничений; его сущность становится понятной при рассмотрении приведенного ниже подробного описания предпочтительных вариантов реализации в сочетании с чертежами, при этом:
[005] На Фиг. 1 приведена блок-схема верхнего уровня для типового «умного» модуля создания документов в соответствии с одним или более вариантами реализации настоящего изобретения.
[006] На Фиг. 2А-2В изображены блок-схемы примера создания упорядоченной последовательности набора команд вывода текста для страницы документа в соответствии с одним или более вариантами реализации настоящего изобретения.
[007] На Фиг. 2С изображен пример блоков текста с командами вывода текста в упорядоченной последовательности в соответствии с одним или более вариантами реализации настоящего изобретения
[008] На Фиг. 3 приведена блок-схема одного из способов «умного» определения последовательности команд вывода текста в соответствии с одним или более вариантами реализации настоящего изобретения.
[009] На Фиг. 4 представлена блок-схема одного из способов определения логической структуры страницы документа, в соответствии с одним или более вариантами реализации настоящего изобретения.
[0010] На Фиг. 5 изображена блок-схема одного из способов определения упорядоченной последовательности команд вывода текста для страницы документа в соответствии с одним или более вариантами реализации настоящего изобретения.
[0011] На Фиг. 6 приведена блок-схема одного из способов сортировки команд вывода текста в порядке чтения для горизонтального текста в соответствии с одним или более вариантами реализации настоящего изобретения.
[0012] На Фиг. 7 приведена блок-схема одного из способов сортировки команд вывода текста в порядке чтения для вертикального текста в соответствии с одним или более вариантами реализации настоящего изобретения.
[0013] На Фиг. 8 представлена блок-схема типовой вычислительной системы, взятой как пример и работающей в соответствии с примерами реализации настоящего изобретения.
ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ РЕАЛИЗАЦИИ
[0014] В настоящем документе описываются способы и системы умного определения последовательности команд вывода текста для логических блоков в документах PDF. Документы PDF, которые включают текстовый слой, могут быть упорядочены так, что порядок команд вывода текста в документе может отличаться от порядка вывода соответствующего текста на устройство вывода и последующего чтения пользователем (также называемого «порядком чтения»). Например, в Searchable PDF, который представляет собой растровое изображение с невидимым текстовым слоем, каждая буква может быть частью растрового изображения и иметь связь с определенным символом текстового слоя. В некоторых случаях буквы, следующие в изображении одна за другой, в текстовом слое могут не следовать друг за другом. Таким образом, хотя текст будет отображаться правильно, использование текста, расположенного в текстовом слое (для выделения, копирования и т.д.) может быть затруднено. Это может стать особой проблемой для документов, страницы которых содержат несколько колонок текста. Например, при использовании курсора для выделения строк в колонке текста, когда выбрана определенная строка текста внутри колонки, курсор может неожиданно перескочить не на следующую строку в этой колонке, а на строку в другой колонке на странице. Кроме того, при копировании текста из документа PDF в другой документ порядок строк текста (а иногда порядок слов или символов) может быть произвольным. Это может привести к необходимости активного вмешательства со стороны пользователя для ручного исправления порядка текста при его копировании из документа PDF в другой документ.
[0015] Аспекты настоящего изобретения решают вышеперечисленные и другие недостатки путем анализа логической структуры документа PDF, определяя на странице блоки текста и изменяя порядок выполнения команд вывода текста в текстовом слое в соответствии с порядком чтения текста на странице в каждом блоке текста. В иллюстративном примере получаемый документ PDF содержит в текстовом слое множество команд вывода текста, при этом каждая команда вывода текста предназначена для отображения одного или более символов на устройстве вывода. В текстовом слое определяется набор команд вывода текста для страницы из множества страниц документа. Определяется логическая структура страницы документа, а затем упорядоченная последовательность набора команд вывода текста для страницы, где упорядоченная последовательность отражает порядок чтения в каждом из множества блоков контента на странице. Для документа создается модифицированный текстовый слой с набором команд вывода в упорядоченной последовательности. Затем модифицированный текстовый слой передается устройству вывода для отображения множества символов, соответствующих набору команд вывода текста в упорядоченной последовательности.
[0016] Аспекты настоящего изобретения, таким образом, способны более эффективно организовать текстовый слой документа PDF, так, чтобы он отражал порядок чтения текста внутри каждой страницы документа. Полученный текстовый слой, таким образом, может более эффективно использоваться и не требовать обширного ручного редактирования, таким образом уменьшая или устраняя потребность в ресурсах при создании и (или) изменении документа. В частности, при использовании курсора для выделения строк в колонке текста текст можно выделять в порядке чтения. Более того, при копировании текста из документа PDF в другой документ порядок строк текста (и порядок слов или символов в строках) может копироваться в соответствии с порядком чтения текста.
[0017] На Фиг. 1 приведена блок-схема верхнего уровня для примера умной системы определения последовательности команд вывода текста в соответствии с одним или более вариантами реализации настоящего изобретения. Умная система определения последовательности команд вывода текста может включать модуль 130 определения последовательности команд вывода текста, который может быть клиентским приложением или сочетанием клиентской и серверной частей. В некоторых вариантах реализации изобретения модуль 130 определения последовательности команд вывода текста может полностью выполняться на вычислительном устройстве клиента - к примеру, это может быть планшетный компьютер, смартфон, ноутбук, фотокамера, видеокамера и т.д. Вместо этого выполняемый на вычислительном устройстве клиента модуль 130 определения последовательности команд вывода текста может получать документ и передавать его серверной части модуля 130 определения последовательности команд вывода текста, которая выполняется на сервере и осуществляет определение последовательности команд вывода текста. Серверная часть модуля 130 определения последовательности команд вывода текста может возвращать модифицированный документ клиентской части модуля 130 определения последовательности команд вывода текста, выполняемой на вычислительном устройстве клиента. В других вариантах реализации изобретения умный модуль 130 определения последовательности команд вывода текста может быть выполнен на серверном устройстве в качестве Интернет-приложения, доступ к которому обеспечивается через интерфейс Интернет-браузера. Примером серверного устройства могут быть одна или более вычислительных систем - одно или более таких устройств, как серверы, рабочие станции, большие ЭВМ (мейнфреймы), персональные компьютеры (ПК) и т.д. В некоторых вариантах реализации изобретения модуль 130 определения последовательности команд вывода текста может быть компонентом системы управления документами, которая может открывать, выводить на экран и (или) хранить документы.
[0018] В иллюстративном примере модуль 130 определения последовательности команд вывода текста может получать исходный документ 110. В некоторых вариантах реализации исходный документ 110 может быть документом в формате PDF, который содержит команды вывода текста в текстовом слое документа, и каждая из команд вывода текста предназначена для отображения одного или более символов на устройстве вывода. Исходный документ 110 может быть созданным в цифровой форме документом PDF с видимым текстовым слоем (так называемый «True PDF»), документом PDF с невидимым текстовым слоем («Searchable PDF») или любым другим документом, содержащим текстовый слой. Документ PDF с невидимым текстовым слоем может быть создан с помощью приложения OCR (оптического распознавания символов) для сканированных PDF или других документов на базе изображений. В ходе процесса распознавания текста производится анализ символов и структуры документа изображения, после чего к изображению документа может быть добавлен текстовый слой, обычно он помещается под слоем изображения.
[0019] Как было сказано выше, текстовый слой может включать команды вывода текста для вывода символов при отображении документа на экране. Команды вывода текста могут содержать информацию, описывающую, как может выводиться текст, например, гарнитуру шрифта текста, размер шрифта текста, страницу документа, на которой должен выводиться текст, координаты вывода текста на странице документа, один или более выводимых символов, цветовые параметры текста или другие аналогичные свойства отображения. Модуль 130 определения последовательности команд вывода текста может, используя команды вывода текста в текстовом слое, определять набор команд вывода текста для одной страницы из множества страниц документа.
[0020] Модуль 130 определения последовательности команд вывода текста может затем определять логическую структуру одной страницы документа 110. Исходный документ 110 может иметь логическую структуру, включающую множество страниц, и любая из страниц может содержать множество блоков контента. Эти блоки контента могут содержать текстовые блоки, изображения, таблицы или любые другие виды контента. Как показано на Фиг. 1, исходный документ 110 может содержать текстовые блоки 120-А и 120-В, каждый из которых содержит строки текста (строки текста с 121-А по 123-А и строки текста с 121-В по 123-В, соответственно). Текстовые блоки 120-А и 120-В могут быть двумя колонками текста на странице исходного документа 110, как те, которые бы напечатали в печатной публикации (например, новостной заметке, журнале, статье и др.). Следует учесть, что для простоты исходный документ 110 показан на Фиг. 1 в виде одной страницы с двумя текстовыми блоками, каждый из которых содержит три строки текста. В других вариантах реализации изобретения исходный документ 110 может содержать больше одной страницы с большим или меньшим количеством блоков контента, каждый из которых может содержать больше или меньше строк текста, чем блок, показанный на Фиг. 1.
[0021] Модуль 130 определения последовательности команд вывода текста может определять логическую структуру путем анализа метаданных PDF с видимым текстовым слоем. В альтернативном варианте реализации модуль 130 определения последовательности команд вывода текста может определять логическую структуру путем анализа документа в виде изображения. Модуль 130 определения последовательности команд вывода текста может получать изображение страницы документа (например, в PDF с невидимым текстовым слоем, где в документе имеется слой изображения). Модуль 130 определения последовательности команд вывода текста может выявлять блоки контента в изображении страницы, определяя координаты положения и (или) границы каждого блока контента на странице, а также ориентацию текста (то есть горизонтально расположенный текст, вертикально расположенный текст и т.д.) на изображении для блоков контента.
[0022] В некоторых вариантах реализации изобретения логическая структура страницы может включать блоки контента, которые определяют порядок в наборе команд вывода текста в текстовом слое (например, порядок текста 125), не совпадающий с порядком чтения страницы. Порядок чтения должен указывать порядок, в котором текст должен читаться читателем, в противоположность порядку вывода строк текста в исходном документе 110. Как показано на Фиг. 1, строки текста 121-А и 121-В выводятся в одной строке страницы, но строка текста 121-В не должна читаться читателем немедленно после строки текста 121-В, потому что эти строки находятся в разных колонках (то есть в текстовых блоках 120-А и 120-В, соответственно). В текстовом слое страницы первыми появляются команды вывода текста для символов в строке текста 121-А, за ними идут команды вывода текста для символов в строке текста 121-В, в строке текста 122-А, 122-В, 123-А и 123-В, соответственно (в соответствии с порядком текста 125). Наличие двух выявленных текстовых блоков (120-А, 120-В) указывает, что команды вывода текста для строк текста на странице должны быть упорядочены внутри каждого блока, а не на странице.
[0023] Модуль 130 определения последовательности команд вывода текста затем может определять упорядоченную последовательность набора команд вывода текста на странице, причем упорядоченная последовательность отражает порядок чтения внутри каждого блока контента. Например, порядок чтения в колонке текста для текстового блока 120-А должен отражать порядок чтения текста читателем. Это означает, что команды вывода текста для символов в строке текста 121-А должны идти первыми, за ними должны следовать команды вывода текста для символов в строке текста 122-А, а далее - команды вывода текста для символов в строке текста 123-А. Команды вывода текста для символов в строках текста с 121-В по 123-В в текстовом блоке 120-В должны следовать в текстовом слое документа за командами вывода текста текстового блока 120-А. В некоторых вариантах реализации изобретения модуль 130 определения последовательности команд вывода текста может создавать упорядоченную последовательность набора команд вывода текста для страницы, как описано ниже со ссылкой на Фиг. 2А, 2В и 2С.
[0024] Далее модуль 130 определения последовательности команд вывода текста может создать модифицированный текстовый слой для страницы документа, этот модифицированный текстовый слой будет содержать набор команд вывода текста в упорядоченной последовательности. Как показано на Фиг. 1, модуль 130 определения последовательности команд вывода текста может создавать модифицированный текстовый слой, показанный в модифицированном документе 150, где команды вывода текста для символов в строках текста с 161-А до 163-А сохранены в порядке чтения 165-А (порядок чтения в текстовом блоке 160-А), далее идут команды вывода текста для символов в строках текста с 161-В по 163-В в порядке чтения 165-В (порядок чтения для текстового блока 160-В).
[0025] Затем модуль 130 определения последовательности команд вывода текста может создать модифицированный текстовый слой, чтобы устройство вывода производило отображение символов, соответствующих набору команд вывода текста страницы, в упорядоченной последовательности. В некоторых вариантах реализации изобретения модуль 130 определения последовательности команд вывода текста может производить описанный выше процесс для одной выводимой страницы. Вместо этого модуль 130 определения последовательности команд вывода текста может производить этот процесс для каждой страницы документа перед выводом какой-либо страницы. Модуль 130 определения последовательности команд вывода текста может затем сохранять модифицированный документ с модифицированным текстовым слоем. Вместо этого модифицированный текстовый слой может временно поддерживаться системой (например, в памяти устройства или другом временном хранилище) с последующим удалением без сохранения модифицированного документа.
[0026] На Фиг. 2А-2С изображены блок-схемы примера создания упорядоченной последовательности набора команд вывода текста для страницы документа 200 в соответствии с одним или более аспектами настоящего изобретения. В некоторых вариантах осуществления документ 200 соответствует исходному документу 100 на Фиг. 1. Как показано на Фиг. 2А, страница документа 200 может иметь логическую структуру, которая содержит два текстовых блока (текстовые блоки 210-А, 210-В), которые включают несколько отображаемых строк текста. Как описано выше со ссылкой на Фиг. 1, команды вывода текста в текстовом слое страницы документа 200 отличаются от порядка чтения страницы.
[0027] Для определения упорядоченной последовательности для набора команд вывода текста для этой страницы модуль определения последовательности команд вывода текста (например, модуль определения последовательности команд вывода текста 130 на Фиг. 1) может выбрать один из блоков контента на странице. Модуль определения последовательности команд вывода текста может выбрать этот блок, исходя из логической структуры страницы, как описано выше. Например, для текста, сгруппированного в колонки горизонтально ориентированного текста, модуль определения последовательности команд вывода текста может выбирать текстовый блок, который начинается сверху в левой части страницы. После того как команды вывода текста для этого текстового блока будут проанализированы и упорядочены, модуль определения последовательности команд вывода текста может начать поиск по странице по вертикали, чтобы найти следующий текстовый блок. Если ничего не найдено, модуль определения последовательности команд вывода текста может продолжить поиск следующего текстового блока с верха страницы, перемещаясь по странице горизонтально, и т.д.
[0028] После того, как текстовый блок будет выявлен и выбран, модуль определения последовательности команд вывода текста может определить границы текстового блока, исходя из координат положения выявленного текстового блока в логической структуре страницы. Границы текстовых блоков 210-А и 210-В изображены на Фиг. 2А в виде прямоугольников, описывающих символы с 211-А по 217-А и с 211-В по 214-В, соответственно. Модуль определения последовательности команд вывода текста затем может определить подмножество команд вывода текста для страницы, расположенных в пределах границ блока. Таким образом, для текстового блока 210-А модуль определения последовательности команд вывода текста может выявить подмножество команд вывода текста для отображения символов с 211-А по 217-А. Это подмножество можно определить, сравнивая значения координат границ текстового блока 210-А со значениями координат команд вывода текста в текстовом слое страницы. Если значения координат команд вывода текста находятся внутри границ текстового блока 210-А, модуль определения последовательности команд вывода текста может определить команды вывода текста как часть множества для этого блока.
[0029] Модуль определения последовательности команд вывода текста далее может отсортировать подмножество команд вывода текста для текстового блока 210-А в порядке чтения команд вывода текста в пределах границ блока. В некоторых вариантах реализации модуль определения последовательности команд вывода текста может сначала сортировать подмножество команд вывода текста по строкам на основе значений координат отдельных команд подмножества. Далее модуль определения последовательности команд вывода текста может упорядочить команды вывода текста для каждой строки в порядке чтения для строки на основе значений координат. На Фиг. 2В показаны команды вывода текста для текстового блока 210-А, отсортированные в порядке чтения 265-А в пределах границ блока.
[0030] В иллюстративном примере, когда ориентация текста в текстовом блоке 210-А горизонтальная, как показано на Фиг. 2А-2В, модуль определения последовательности команд вывода текста может сначала отсортировать подмножество команд вывода текста для текстового блока 210-А по значению координат вертикальной оси. Как было сказано выше, каждая из команд вывода текста в текстовом слое может включать координаты положения первого символа, вывод которого производится этой командой вывода текста. Они могут быть сохранены в виде координат (X, Y) для горизонтальной и вертикальной двумерной схемы (например, как показано на Фиг. 2В), как смещение на странице или другим схожим способом. Модуль определения последовательности команд вывода текста определяет команду вывода текста со значением координаты по вертикальной оси, которое указывает на расположение около верхней части текстового блока (то есть максимальной координатой по вертикальной оси (Y) в блоке), затем определяет следующую команду вывода текста в отсортированном списке (команда вывода текста для символа 211-А в (X1, Y1) и команда вывода текста для символа 212-А в (X2, Y2), как показано на Фиг. 2А-2В).
[0031] Затем модуль определения последовательности команд вывода текста определяет разность между координатами первой команды вывода текста и второй команды вывода текста по вертикальной оси (то есть разницу между Y1 и Y2 на Фиг. 2В). Если будет обнаружено, что разность меньше или равна пороговому значению, модуль определения последовательности команд вывода текста может назначить обе команды вывода текста принадлежащими одной строке текста. Как показано на Фиг. 2В, разность между Y1 и Y2 находится внутри порогового значения, так что команды вывода текста для символов 211-А и 212-А могут быть назначены одной строке текста (строка текста 261-А). Если будет обнаружено, что разность больше порогового значения, модуль определения последовательности команд вывода текста может назначить эти команды вывода текста разным строкам текста. Например, вертикальные координаты команд вывода текста для символов 211-А (Y1) и 213-А (Y3) (или 212-А (Y2) и 213-А (Y3)) могут выходить за пороговое значение, и поэтому могут быть назначены разным строкам текста, как показано на Фиг. 2В. Этот процесс может проводиться на сортированном списке, пока каждая из команд вывода текста не будет назначена горизонтальной строке текста.
[0032] Таким образом, как показано на Фиг. 2В, текстовый блок 210-А содержит три строки текста, каждая из которых представлена командой вывода текста на текстовом слое страницы документа 200. Первая строка текста (текстовая строка 261-А) представлена командами вывода текста для отображения символов 211-А и 212-А, вторая строка текста (текстовая строка 262-А) представлена командами вывода текста для отображения символов 213-А и 214-А, третья строка текста (текстовая строка 263-А) представлена командами вывода текста для отображения символов 215-А, 216-А и 217-А. Как было сказано раньше, команды вывода текста для отображения символов в этих трех строках могут быть выстроены в порядке чтения 265-А. Этот процесс можно повторить для текстового блока 210-В, при этом определив, что текстовый блок 210-В включает три строки, первая строка представлена командами вывода текста для отображения символов 211-В и 212-В, вторая строка представлена командой вывода текста для отображения символа 213-В, а третья строка представлена командами вывода текста для отображения символов 214-В и 215-В. Символы для этих строк могут аналогичным образом выстроены в порядке чтения для текстового блока 210-В. Кроме того, данный процесс может определить порядок чтения страницы документа 200 так, чтобы порядок чтения для 210-В следовал за порядком чтения блока 210-А. Таким образом, если пользователь выделяет текст в блоке 210-А и перетаскивает курсор, используя интерфейс пользователя, по странице, сначала может быть выделен текст, соответствующий символам в блоке 210-А, а потом - текст, соответствующий символам во текстовом блоке 210-В.
[0033] Аналогично, если ориентация текста вертикальная (например, вертикальные строки азиатских символов), модуль определения последовательности команд вывода текста может сначала отсортировать подмножество команд вывода текста текстового блока по значениям координат горизонтальной оси (X). Модуль определения последовательности команд вывода текста определяет команды вывода текста со значением горизонтальной координаты рядом с левой границей текстового блока (то есть, наименьшим значением координаты для горизонтальной оси (X) для блока), после чего определяет следующую команду вывода текста в отсортированном списке. Затем модуль определения последовательности команд вывода текста определяет разность между координатами по горизонтальной оси для первой команды вывода текста и второй команды вывода текста (то есть, разность между значениями координаты X). Если будет обнаружено, что разность меньше или равна пороговому значению, модуль определения последовательности команд вывода текста может назначить обе команды вывода текста принадлежащими одной строке текста. Если будет обнаружено, что разность больше порогового значения, модуль определения последовательности команд вывода текста может назначить эти команды вывода текста разным строкам текста. Этот процесс над отсортированным списком может происходить до тех пор, пока каждая команда вывода текста не будет назначена одной из вертикальных строк текста.
[0034] После того как команды вывода текста будут назначены строкам, исходя из значения координаты по вертикальной оси, их можно отсортировать в порядке чтения. В некоторых вариантах реализации команды вывода текста можно отсортировать в пределах каждой строки для формирования порядка чтения строки. Текст, имеющий одинаковое горизонтальное направление слева направо (например, на английском языке или русском языке, и т.д.) можно отсортировать в возрастающем порядке по значению координаты горизонтальной оси (X). Текст, имеющий одинаковое горизонтальное направление справа налево (например, на арабском языке, иврите и т.д.), можно отсортировать в убывающем порядке по значению координаты горизонтальной оси (X). Текст, имеющий одинаковое вертикальное направление сверху вниз (например, азиатские языки, такие как китайский, японский и корейский), можно отсортировать в убывающем порядке по значению координаты вертикальной оси (Y). Текст, имеющий одинаковое вертикальное направление снизу вверх, можно отсортировать в возрастающем порядке по значению координаты вертикальной оси (Y). Как показано на Фиг. 2В, порядок чтения 265-А для текстового блока 210-А, полученный из команд текста, будет следующим: 211-А (X1, Y1), 212-А (X2, Y2), 213-А (X3, Y3), 214-А (X4, Y4), 215-А (X5, Y5), 216-А (X6, Y6) и 217-А (X7, Y7).
[0035] В некоторых вариантах реализации строки текста могут содержать участки строк, ориентированные в одном направлении, при том, что другие участки ориентированы в противоположном направлении. Например, одна строка горизонтального текста может содержать текст на английском языке (направленный слева направо) и на арабском языке (направленный справа налево). В подобных случаях модуль определения последовательности команд вывода текста может сначала определять характеристики частей текста для определения направления различных частей. Эта информация может быть включена в команды вывода текста, связанные с символами, может быть определена в процессе оптического распознавания символов, путем реализации алгоритма определения однонаправленности или двунаправленности текста Unicode различных частей строки текста или каким-либо другим образом. После определения направления различных частей строки текста команды текста для различных частей строки можно отсортировать в соответствии с их направлением.
[0036] Например, после назначения команд вывода текста одной из строк и одной части команд вывода текста для английских символов этой строки и другой части команд вывода текста для арабских символов этой строки модуль определения последовательности команд вывода текста может использовать процесс, описанный выше, для сортировки частей текста в соответствии с их направлением, чтобы определить порядок чтения строки. Так, команды вывода текста для английского текста можно отсортировать в возрастающем порядке по значению координаты горизонтальной оси (X), а команды вывода текста для арабского текста можно отсортировать в убывающем порядке по значению координаты горизонтальной оси (X). Аналогичный процесс можно использовать для вертикально ориентированного текста, если одна часть вертикальной строки текста направлена сверху вниз, а другая часть - снизу вверх.
[0037] После этого модуль определения последовательности команд вывода текста может создать номер в упорядоченной последовательности для каждой команды вывода текста подмножества команд вывода для блока, при этом каждый номер в упорядоченной последовательности отражает положение соответствующей команды вывода текста в порядке чтения для блока. Номер в упорядоченной последовательности можно создать, используя цифровые символы, алфавитные символы, алфавитно-цифровые символы или другим подобным образом, который указывал бы на последовательную упорядоченность. В одном из иллюстративных примеров номера в упорядоченной последовательности команд вывода текста для текстового блока 210-А в порядке чтения 265-А для блока могут выглядеть следующим образом: 211-А (1), 212-А (2), 213-А (3), 214-А (4), 215-А (5), 216-А (6) и 217-А (7).
[0038] Модуль определения последовательности команд вывода текста может затем повторить описанный выше процесс для каждого блока контента для страницы документа 200. Как показано на Фиг. 2А, можно выбрать текстовый блок 210-В и определить его границы на основе координат положения на странице. Второе подмножество команд вывода текста для страницы, которое расположено в пределах границ блока 210-В, может быть определено на основе значений координат команд вывода текста. Затем второе подмножество команд вывода текста для текстового блока 210-В может быть отсортировано в порядке чтения в пределах границ блока (сначала по строкам, затем внутри каждой строки). В одном из иллюстративных примеров порядок чтения для текстового блока 210-В, полученный на основе команд вывода текста для символов, может выглядеть следующим образом: 211-В, 212-В, 213-В, 214-В и 215-В.
[0039] Затем для каждой команды вывода текста в текстовом блоке 210-В могут быть созданы дополнительные упорядоченные последовательные номера. В некоторых вариантах реализации упорядоченные последовательные номера для команд вывода текста для текстового блока 210-А могут предшествовать дополнительным упорядоченным последовательным номерам команд вывода текста для текстового блока 210-В в упорядоченной последовательности для страницы. Таким образом, упорядоченные последовательные номера для команд вывода текста для текстового блока 210-В в порядке чтения для блока могут выглядеть следующим образом: 211-В (8), 212-В (9), 213-В (10), 214-В (11) и 215-В (12). Затем может быть создан модифицированный текстовый слой страницы документа с командами вывода текста для блоков 210-А и 210-В в упорядоченной последовательности.
[0040] На Фиг. 2С показан пример текстовых блоков 225-А и 225-В, которые могут соответствовать модифицированному текстовому слою для текстовых блоков 210-А и 210 В на Фиг. 2А. Как показано на Фиг. 2С, командам вывода текста текстовых блоков 225-А (для символов 221-А, 222-А, 223-А, 224-А, 225-А, 226-А и 227-А) были назначены упорядоченные последовательные номера, отражающие порядок чтения блока 225-А. Аналогично, командам вывода текста текстового блока 225-В (для символов 221-В, 222-В, 223-В, 224-В и 225-В) были назначены упорядоченные последовательные номера, отражающие порядок чтения блока 225-В. Упорядоченные последовательные номера команд вывода текста для текстового блока 225-А (1, 2, 3, 4, 5, 6 и 7) предшествуют упорядоченным последовательным номерам команд вывода текста для текстового блока 225-В (8, 9, 10, 11 и 12), что отражает общий порядок чтения страницы документа в модифицированном текстовом слое.
[0041] Фиг. 3-7 представляют собой блок-схемы различных реализаций способов, относящихся к определению порядка команд вывода текста в документах. Эти способы могут осуществляться при помощи логической схемы обработки данных, которая может включать аппаратные средства (электронные схемы, специализированную логическую плату и т.д.), программное обеспечение (например, выполняться на универсальной ЭВМ или же на специализированной вычислительной машине) или комбинацию первого и второго. Представленные способы и (или) каждая из отдельно взятых функций, процедур, подпрограмм или операций могут быть реализованы с помощью одного или более процессоров вычислительного устройства (например, вычислительной системы 800 на Фиг.8), в котором реализованы данные способы. В некоторых вариантах реализации изобретения представленные способы могут выполняться в одном потоке обработки. В альтернативных вариантах реализации изобретения представленные способы могут выполняться в двух и более потоках обработки, при этом в каждом потоке реализована одна (или более) отдельно взятая функция, процедура, подпрограмма или операция, относящаяся к указанным способам. Некоторые способы могут быть реализованы модулем 130 определения последовательности команд вывода текста с Фиг. 1.
[0042] Ради простоты объяснения способы в настоящем описании изобретения изложены и наглядно представлены в виде последовательности действий. Однако действия в соответствии с настоящим описанием изобретения могут выполняться в различном порядке и (или) одновременно с другими действиями, не представленными и не описанными в настоящем документе. Кроме того, не все действия, приведенные для иллюстрации сущности изобретения, могут оказаться необходимыми для реализации способов в соответствии с настоящим описанием изобретения. Специалистам в данной области техники должно быть понятно, что эти способы могут быть представлены и иным образом - в виде последовательности взаимосвязанных состояний через диаграмму состояний или событий.
[0043] На Фиг. 3 изображена блок-схема примера способа 300 умного определения последовательности команд вывода текста. В блоке 305 способа 300 логика обработки получает документ, содержащий множество команд вывода текста в текстовом слое документа. В некоторых вариантах реализации каждая команда вывода текста выполняет отображение одного или более символов на устройстве вывода. В блоке 310 логика обработки, используя множество команд вывода текста в текстовом слое, выявляет набор команд вывода текста для страницы или множества страниц документа.
[0044] В блоке 315 логика обработки определяет логическую структуру страницы документа. В некоторых вариантах реализации изобретения логическая структура страницы может содержать мн