ОПРЕДЕЛЕНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ КОМАНД ВЫВОДА ТЕКСТА В PDF ДОКУМЕНТАХ
DETERMINATION OF TEXT OUTCOME SEQUENCE IN PDF DOCUMENTS

ОБЛАСТЬ ИЗОБРЕТЕНИЯ
[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 логика обработки определяет логическую структуру страницы документа. В некоторых вариантах реализации изобретения логическая структура страницы может содержать множество блоков контента, которые определяют порядок в наборе команд вывода текста в текстовом слое, не совпадающий с порядком чтения страницы. В одном из иллюстративных примеров логика обработки может определять логическую структуру, как описано ниже со ссылкой на Фиг. 4.
[0045] В блоке 320 логика обработки определяет упорядоченную последовательность набора команд вывода текста для страницы, причем упорядоченная последовательность отражает порядок чтения внутри каждого из множества блоков контента. В одном из иллюстративных примеров логика обработки может определять упорядоченную последовательность, как описано ниже со ссылкой на Фиг. 5
[0046] В блоке 325 логика обработки создает модифицированный текстовый слой для документа, причем этот модифицированный текстовый слой будет содержать набор команд вывода текста в упорядоченной последовательности. В блоке 330 логика обработки предоставляет модифицированный текстовый слой устройству вывода для отображения множества символов, соответствующих набору команд вывода текста в упорядоченной последовательности. После блока 330 представленный на Фиг. 3 способ завершается.
[0047] На Фиг. 4 изображена блок-схема примера реализации способа 400 определения логической структуры страницы документа. В блоке 405 способа 400 логика обработки получает изображение страницы документа. В блоке 410 логика обработки определяет множество блоков контента в изображении страницы документа. В блоке 415 логика обработки определяет координаты положения каждого из множества блоков контента в изображении страницы документа. В блоке 420 логика обработки определяет ориентацию текста на изображении для множества блоков контента. После блока 420 представленный на Фиг. 4 способ завершается.
[0048] На Фиг. 5 изображена блок-схема примера реализации способа 500 определения упорядоченной последовательности команд вывода текста для страницы документа. В блоке 505 способа 500 логика обработки выбирает на странице блок контента, где блок контента содержит текстовый контент. В блоке 510 логика обработки определяет границы блока контента, исходя из координат положения этого блока контента. В блоке 515 логика обработки определяет подмножество команд вывода текста, расположенных в пределах границ первого блока.
[0049] В блоке 520 логика обработки сортирует подмножество команд вывода текста в пределах границ блока контента. В некоторых вариантах реализации логика обработки упорядочивает подмножество команд вывода текста по строкам команд вывода текста, исходя из значений координат подмножества команд вывода (521). Логика обработки может затем упорядочить команды вывода текста для каждой строки команд вывода текста в порядке чтения в пределах границ блока контента, исходя из значений их координат (522).
[0050] В блоке 525 логика обработки создает номер в упорядоченной последовательности для каждой команды вывода текста в подмножестве команд вывода текста, при этом каждый номер в упорядоченной последовательности отражает положение соответствующей команды вывода текста в порядке чтения блока контента. После блока 525 показанный на Фиг. 5 способ завершается.
[0051] На Фиг. 6 приведена блок-схема примера реализации способа 600 сортировки команд вывода текста в порядке чтения для горизонтального текста. В блоке 605 способа 600 логика обработки сортирует подмножество команд вывода текста по значению координаты вертикальной оси. В блоке 610 логика обработки определяет первую команду вывода текста с первым значением координаты вертикальной оси. В блоке 615 логика обработки определяет вторую команду вывода текста со вторым значением координаты вертикальной оси. В блоке 620 логика обработки определяет разность между первым значением координаты по вертикальной оси и вторым значением координаты по вертикальной оси.
[0052] В блоке 625 логика обработки производит разделение, исходя из разности между первым значением координаты по вертикальной оси и вторым значением координаты по вертикальной оси. Если разность меньше или равна пороговому значению, логика обработки переходит к блоку 630. В противном случае логика обработки переходит к блоку 635. В блоке 630 логика обработки назначает первую команду вывода текста и вторую команду вывода текста для первой строки текста в блоке. В блоке 635 логика обработки назначает первую команду вывода текста для первой строки текста и вторую команду вывода текста для второй строки текста в блоке.
[0053] В некоторых вариантах реализации блоки с 610 по 635 могут повторяться для каждой пары команд вывода текста в блоке текста, которые отсортированы по координате вертикальной оси. В блоке 640 логика обработки определяет, все ли команды вывода текста в блоке назначены строкам команд вывода текста в блоке. Если это не так, логика обработки возвращается к блоку 610 для определения следующей команды вывода текста в блоке и назначает ее строке команд вывода текста в блоке, исходя из координат этой следующей команды вывода.
[0054] После того, как каждая отсортированная команда вывода текста будет назначена строке текста в блоке текста, логика обработки переходит к блоку 645. В блоке 645 логика обработки сортирует команды вывода текста для каждой строки команд вывода текста в порядке чтения. В некоторых вариантах реализации в блок-схему может быть включен блок 646 для сортировки команд вывода текста для каждой строки команд вывода текста в соответствии со значениями координат команд вывода текста в строке по горизонтальной оси. После блока 645 (или блока 646) способ по Фиг. 6 прекращает свою работу.
[0055] На Фиг. 7 приведена блок-схема примера реализации способа 700 сортировки команд вывода текста в порядке чтения для вертикального текста. В блоке 705 способа 700 логика обработки сортирует подмножество команд вывода текста по значению координаты горизонтальной оси. В блоке 710 логика обработки определяет первую команду вывода текста с первым значением координаты горизонтальной оси. В блоке 715 логика обработки определяет вторую команду вывода текста со вторым значением координаты горизонтальной оси. В блоке 720 логика обработки определяет разность между первым значением координаты по горизонтальной оси и вторым значением координаты по горизонтальной оси.
[0056] В блоке 725 логика обработки производит разделение, исходя из разности между первым значением координаты по горизонтальной оси и вторым значением координаты по горизонтальной оси. Если разность меньше или равна пороговому значению, логика обработки переходит к блоку 730. В противном случае логика обработки переходит к блоку 735. В блоке 730 логика обработки назначает первую команду вывода текста и вторую команду вывода текста для первой строки текста в блоке. В блоке 735 логика обработки назначает первую команду вывода текста для первой строки текста и вторую команду вывода текста для второй строки текста в блоке.
[0057] В некоторых вариантах реализации блоки с 710 по 735 могут повторяться для каждой пары команд вывода текста в блоке текста, которые отсортированы по координате горизонтальной оси. В блоке 740 логика обработки определяет, все ли команды вывода текста в блоке назначены строкам команд вывода текста в блоке. Если это не так, логика обработки возвращается к блоку 710 для определения следующей команды вывода текста в блоке и назначает ее строке команд вывода текста в блоке, исходя из координат этой следующей команды вывода.
[0058] После того как каждая отсортированная команда вывода текста будет назначена строке текста в блоке текста, логика обработки переходит к блоку 745. В блоке 745 логика обработки сортирует команды вывода текста для каждой строки команд вывода текста в порядке чтения. В некоторых вариантах реализации в блок-схему может быть включен блок 746 для сортировки команд вывода текста для каждой строки команд вывода текста в соответствии со значениями координат команд вывода текста в строке по вертикальной оси. После блока 745 (или блока 746) способ по Фиг. 7 прекращает свою работу.
[0059] На Фиг. 8 приведен пример вычислительной системы 800, которая может выполнять один или более описанных здесь способов. В одном из примеров вычислительная система 800 может соответствовать вычислительному устройству, способному выполнять модуль 130 определения последовательности команд вывода текста, представленный на Фиг. 1. Эта вычислительная система может быть подключена (например, по сети) к другим вычислительным системам в локальной сети, сети интранет, сети экстранет или сети Интернет. Данная вычислительная система может выступать в качестве сервера в сетевой среде клиент-сервер. Эта вычислительная система может представлять собой персональный компьютер (ПК), планшетный компьютер, телевизионную приставку (STB), карманный персональный компьютер (PDA), мобильный телефон, фотоаппарат, видеокамеру или любое устройство, способное выполнять набор команд (последовательно или иным способом), который определяется действиями этого устройства. Кроме того, несмотря на то, что показана система только с одним компьютером, термин «компьютер» также включает любой набор компьютеров, которые по отдельности или совместно выполняют набор команд (или несколько наборов команд) для выполнения любого из описанных здесь способа или нескольких таких способов.
[0060] Пример вычислительной системы 800 включает устройство обработки 802, основную память 804 (например, постоянное запоминающее устройство (ПЗУ), флэш-память, динамическое ОЗУ (DRAM), например, синхронное DRAM (SDRAM)), статическую память 806 (например, флэш-память, статическое оперативное запоминающее устройство (ОЗУ)) и устройство хранения данных 816, которые взаимодействуют друг с другом по шине 808.
[0061] Устройство обработки 802 представляет собой одно или более устройств обработки общего назначения, например, микропроцессоров, центральных процессоров или аналогичных устройств. В частности, устройство обработки 802 может представлять собой микропроцессор с полным набором команд (CISC), микропроцессор с сокращенным набором команд (RISC), микропроцессор со сверхдлинным командным словом (VLIW) или процессор, в котором реализованы другие наборов команд, или процессоры, в которых реализована комбинация наборов команд. Устройство обработки 802 также может представлять собой одно или более устройств обработки специального назначения, такое как специализированная интегральная схема (ASIC), программируемая пользователем вентильная матрица (FPGA), процессор цифровых сигналов (DSP), сетевой процессор и т.п. Устройство обработки данных 802 сконфигурировано с возможностью выполнения модуля 826 определения последовательности команд вывода текста, что обеспечивает выполнение описанных здесь операций и этапов (например, при реализации вариантов, представленных на Фиг. 3-7 и т.д.).
[0062] Вычислительная система 800 может дополнительно включать устройство сопряжения с сетью 822. Вычислительная система 800 может также включать видеомонитор 810 (например, жидкокристаллический дисплей (LCD) или электроннолучевую трубку (ЭЛТ)), устройство буквенно-цифрового ввода 812 (например, клавиатуру), устройство управления курсором 814 (например, мышь) и устройство для формирования сигналов 820 (например, громкоговоритель). В одном из иллюстративных примеров видео дисплей 810, устройство буквенно-цифрового ввода 812 и устройство управления курсором 814 могут быть объединены в один компонент или устройство (например, сенсорный жидкокристаллический дисплей).
[0063] Запоминающее устройство 816 может включать машиночитаемый носитель 824, в котором хранится модуль определения последовательности команд вывода текста, 826 (например, соответствующий способам, показанным на Фиг. 3-7 и т.д.), отражающий одну или более методологий или функций, описанных в данном документе. Кроме того, модуль определения последовательности команд вывода текста 826 может находиться полностью или, по меньшей мере, частично в основной памяти 804 и (или) в устройстве обработки 802 во время выполнения способа вычислительной системой 800, основной памятью 804 и устройством обработки 802, также представляющими собой машиночитаемую среду. Модуль определения последовательности команд вывода текста 826 может дополнительно передаваться или приниматься по сети через устройство сопряжения с сетью 822.
[0064] Несмотря на то, что машиночитаемый носитель данных 824 показан в иллюстративных примерах как единичный носитель, термин «машиночитаемый носитель данных» следует понимать и как единичный носитель, и как несколько таких носителей (например, централизованная или распределенная база данных, и (или) связанные кэши и серверы), на которых хранится один или более наборов команд. Термин «машиночитаемый носитель данных» также следует рассматривать как термин, включающий любой носитель, который способен хранить, кодировать или переносить набор команд для выполнения машиной, который заставляет эту машину выполнять любую одну или более методик, описанных в настоящем раскрытии изобретения. Соответственно, термин «машиночитаемый носитель данных» следует понимать, как включающий, среди прочего, устройства твердотельной памяти, оптические и магнитные носители.
[0065] Несмотря на то что операции способов показаны и описаны в настоящем документе в определенном порядке, порядок выполнения операций каждого способа может быть изменен таким образом, чтобы некоторые операции могли выполняться в обратном порядке или чтобы некоторые операции могли выполняться, по крайней мере частично, одновременно с другими операциями. В некоторых вариантах реализации изобретения команды или подоперации различных операций могут выполняться с перерывами и (или) попеременно.
[0066] Следует понимать, что приведенное выше описание носит иллюстративный, а не ограничительный характер. Различные другие варианты осуществления станут очевидны специалистам в данной области техники после прочтения и понимания приведенного выше описания. Область применения изобретения поэтому должна определяться с учетом прилагаемой формулы изобретения, а также всех областей применения эквивалентных способов, которые покрывает формула изобретения.
[0067] В приведенном выше описании изложены многочисленные детали. Однако специалистам в данной области техники должно быть очевидно, что варианты реализации изобретения могут быть реализованы на практике и без этих конкретных деталей. В некоторых случаях хорошо известные структуры и устройства показаны в виде блок-схем, а не подробно, чтобы не усложнять описание настоящего изобретения.
[0068] Некоторые части подробного описания выше представлены в виде алгоритмов и символического изображения операций с битами данных в компьютерной памяти. Такие описания и представления алгоритмов являются средством, используемым специалистами в области обработки данных, чтобы наиболее эффективно передавать сущность своей работы другим специалистам в данной области. Приведенный здесь (и в целом) алгоритм сконструирован как непротиворечивая последовательность шагов, ведущих к нужному результату. Эти шаги требуют физических манипуляций с физическими величинами. Обычно, хотя и не обязательно, эти величины принимают форму электрических или магнитных сигналов, которые можно хранить, передавать, комбинировать, сравнивать и манипулировать ими. Иногда удобно, прежде всего для обычного использования, описывать эти сигналы в виде битов, значений, элементов, символов, терминов, цифр и т.д.
[0069] Однако следует иметь в виду, что все эти и подобные термины должны быть связаны с соответствующими физическими величинами, и что они представляют собой просто удобные метки, применяемые к этим величинам. Если особо не указано иное, как видно из последующего обсуждения, следует понимать, что во всем описании такие термины, как «прием», «преобразование», «выявление», «создание», «определение», «расчет» и т.п., относятся к функционированию и процессам вычислительной системы или подобного электронного вычислительного устройства, которое управляет данными, представленными в виде физических (электронных) величин в регистрах и памяти компьютерной системы, и преобразует их в другие данные, аналогичным образом представленным в виде физических величин в памяти или регистрах вычислительной системы или в других подобных устройствах хранения, передачи или отображения информации.
[0070] Настоящее изобретение также относится к устройству для выполнения операций, описанных в настоящем документе. Такое устройство может быть специально сконструировано для требуемых целей, или оно может содержать универсальный компьютер, который избирательно активируется или дополнительно настраивается с помощью компьютерной программы, хранящейся в компьютере. Такая вычислительная программа может храниться на машиночитаемом носителе данных, например (помимо прочего): диск любого типа, в том числе гибкие диски, оптические диски, CD-ROM и магнитно-оптические диски, постоянные запоминающие устройства (ПЗУ), оперативные запоминающие устройства (ОЗУ), программируемые ПЗУ (EPROM), электрически стираемые ППЗУ (EEPROM), магнитные или оптические карты или любой тип носителя, пригодный для хранения электронных команд, каждый из которых соединен с шиной вычислительной системы.
[0071] Алгоритмы и изображения, приведенные в этом документе, не обязательно связаны с конкретными компьютерами или другими устройствами. Различные системы общего назначения могут использоваться с программами в соответствии с изложенной здесь информацией, возможно также признание целесообразным сконструировать более специализированные устройства для выполнения шагов способа. Структура разнообразных систем такого рода определяется в порядке, предусмотренном в описании ниже. Кроме того, изложение вариантов реализации изобретения не предполагает ссылок на какие-либо конкретные языки программирования. Следует принимать во внимание, что для реализации принципов настоящего изобретения могут быть использованы различные языки программирования.
[0072] Варианты осуществления настоящего изобретения могут быть представлены в виде вычислительного программного продукта или программы, которая может содержать машиночитаемый носитель с сохраненными на нем инструкциями, которые могут использоваться для программирования вычислительной системы (или других электронных устройств) для выполнения процесса в соответствии с сущностью изобретения. Машиночитаемый носитель данных включает механизмы хранения или передачи информации в машиночитаемой форме (например, компьютером). Например, машиночитаемый (считываемый компьютером) носитель данных содержит машиночитаемый (например, компьютером) носитель данных (например, постоянное запоминающее устройство («ПЗУ»), оперативное запоминающее устройство («ОЗУ»), накопитель на магнитных дисках, накопитель на оптическом носителе, устройства флэш-памяти и т.д.) и т.п.
[0073] Слова «пример» или «примерный» используются здесь для обозначения использования в качестве примера, отдельного случая или иллюстрации. Любой вариант реализации или конструкция, описанная в настоящем документе как «пример», не должна обязательно рассматриваться как предпочтительная или преимущественная по сравнению с другими вариантами реализации или конструкциями. Слово «пример» лишь предполагает, что идея изобретения представляется конкретным образом. В этой заявке термин «или» предназначен для обозначения включающего «или», а не исключающего «или». Если не указано иное или не очевидно из контекста, то «X включает А или В» используется для обозначения любой из естественных включающих перестановок. То есть если X включает в себя А; X включает в себя В; или X включает и А и В, то высказывание «X включает в себя А или В» является истинным в любом из указанных выше случаев. Кроме того, артикли «а» и «an», использованные в англоязычной версии этой заявки и прилагаемой формуле изобретения, должны, как правило, означать «один или более», если иное не указано или из контекста не следует, что это относится к форме единственного числа. Использование терминов «вариант реализации» или «один вариант реализации» или «реализация» или «одна реализация» не означает одинаковый вариант реализации, если это не указано в явном виде. В описании термины «первый», «второй», «третий», «четвертый» и т.д. используются как метки для обозначения различных элементов и не обязательно имеют смысл порядка в соответствии с их числовым обозначением.