Это не результат компиляции, а исходный код программы. PDF — это язык программирования PostScript, из которого убрали некоторые конструкции (например, условия и циклы). Что впрочем не делает работу с ним ни капли проще.
eumorozov Как выше сказано, это действительно не результат компиляции. Но отождествлять PDF с PostScript тоже неправильно. Нужно понимать, что PDF-документ — это набор объектов, расположенных на фиксированных местах (смещении, offset) в файле. Объекты могут иметь разные назначения. Один из объектов в документе — это контент страницы. Такой объект имеет поток stream, в котором записан поток команд. Вот как раз такой поток команд и определяет видимую часть страницы. Правила записи потока команд действительно взяты из PostScript и имеют много общего.
PDF — это результат компиляции набора инструкций, отсюда и проблемы. Редактировать PDF так же сложно, как редактировать EXE.
quwy Тут вынуждены не согласиться. Результатом компиляции должен быть набор инструкций, который сможет выполнять какая-то программа (например, PDF-viewer). Но это не так. PDF-редакторы читают и пишут PDF, не переделывая его в промежуточный набор команд.
Увы, в LibreOffice едут шрифты, рамки, и все остальное. Пробовал редактировать примитивный PDF из двух страниц. Понять смысл можно, но выглядит всё ужасно. До сих пор не существует приличной альтернативы Acrobat'у. :(
Статья как раз о том, что ABBYY FineReader PDF умеет редактировать текст и делает это теперь не хуже Акробата. Попробуйте сами: триал можно скачать здесь
Compreno лежит в основе технологий ABBYY для решения задач Natural Language Processing. Если вы читаете новости про NLP-технологии ABBYY, то значит, что здесь используются технологии анализа и понимания естественного языка.
Нет, мы продолжаем использовать Compreno. Эта технология работает в составе NLP-возможностей наших продуктов. Например, в проектах с мониторингом информации в банках используются как раз NLP-технологии на базе той самой Compreno.
У форума структура сложная, там в общем случае, нет какого-то одного повествования, а куча разных мнений. Не говоря уже о том, что в одном форуме может одновременно вестись несколько разговоров параллельно между несколькими группами людей, а также могут быть просто высказывания в пустоту — короче, хаос. Чтобы такое сокращать, нужно заранее определять, какие сообщения к чему и к кому относятся (для чего нужна отдельная программа, а по-хорошему тоже нейросеть — только как её сделать?), затем сложить из этих сообщений что-то похожее на пьесу в нескольких явлениях (одно явление — общение между определённой группой людей), а затем попробовать пройтись описанным в статье алгоритмом. Либо сразу обучать генератор заголовков (можно описанный, а можно на трансформерах, используя BERT) на форумном тексте (желательно, чтобы в нём до подачи на сеть особым образом выделялись лица разговора, цитирования и прочие форумные штуки).
Для каждого уровня обобщения нужно найти соответствующую обучающую выборку на 100k+ текстов (может, и меньше, я не проводил экспериментов, как ухудшается качество от размера обучающей выборки) и попробовать запустить сетку.
В этом ещё одна проблема. Нужны не просто тексты форумов, а также сокращения текстов форумов, которые я, например, никогда не видел. Значит, их придётся составлять самому, что очень дорого.
Словарь я готовил отдельно, он не зависит от данных, на которых проходит обучение.
Если быть точнее, то для своих экспериментов я просто находил какие-нибудь предобученные эмбеддинги (например, отсюда http://docs.deeppavlov.ai/en/master/features/pretrained_vectors.html), смотрел для каких слов они были составлены, брал первые 100k (можно больше, но от этого усложняется модель). Сами предобученные эмбеддинги, кстати, не использовал.
Судя по происхождению файла с эмбеддингами, откуда я брал слова, можно сказать, что я составил словарь из 100k самых частотных слов Википедии и корпуса Ленты, расположенных в порядке частотности.
Насчёт момента с невозможностью вывода несловарных слов. Имеется в виду, что абстрактные модели составляют заголовок только из слов, взятых из заранее заданного множества (собственно, словаря). Если в исходном тексте будет важное слово, которого не будет в словаре, то абстрактная модель его подставить в заголовок его не сможет. Это касается и тренировочных данных, и тестовых.
По поводу каста в ParallaxLayoutAttributes — я делаю так, чтобы было соответствие типов для применения функции prepareAttributes после, в общем случае это не необходимо
По поводу копирования — UICollectionViewFlowLayout кэширует аттрибуты, и когда будет необходимо перелейаутить ячейки, он обратится в кэш и узнает, необходимо ли это с помощью isEqual:. Модифицируя аттрибуты, которые мы получили через super, мы потенциально модифицируем этот кэш. Если мы попробуем это сделать без копирования, то, например, получим следующее сообщение в логе
UICollectionViewFlowLayout has cached frame mismatch for index path <NSIndexPath: 0x280664f60> {length = 2, path = 0 - 1} - cached value: {{37, 0}, {33, 66}}; expected value: {{33, 0}, {33, 66}}
This is likely occurring because the flow layout subclass PhotosApp.ThumbnailLayout is modifying attributes returned by UICollectionViewFlowLayout without copying them
Это не наш целевой сценарий, поэтому мы не стремились получить высокие результаты на этих датасетах. Запускали её в разрешении 512, качество неудовлетворительное, а на большем разрешении на мобильном устройстве можно запускать только на отдельном кадре.
И благодарим вас за наводку на статью со state-of-the-art решением.
Мы пробовали квантовать сеть на tf-lite, но он требует заранее заданного размера входного изображения для конвертации. В реальной работе размер изображения может меняться в зависимости от устройства, т. к. в текущей логике мы просто ограничиваем меньшую из сторон размером в 512 px.
Добрый день! Мы продолжаем развивать эту технологию. В этом году выпустили Mobile Capture SDK для мобильных приложений: достаточно навести камеру смартфона на документ или объект, и технология в реальном времени распознает текст и извлечет из него всю необходимую информацию.
А еще в этом году выпустили технологию ABBYY Mobile Web Capture. О ней мы не так давно рассказывали на Хабре.
Спасибо за пример страницы. Для работы с такими фотографиями рекомендуем использовать Редактор изображений – там вы можете скорректировать разрешение (увеличить до 300 dpi), предобработать фото, в т.ч. удалить трапециевидные искажения, повысить контрастность и вручную выделить область распознавания.
eumorozov Как выше сказано, это действительно не результат компиляции. Но отождествлять PDF с PostScript тоже неправильно. Нужно понимать, что PDF-документ — это набор объектов, расположенных на фиксированных местах (смещении, offset) в файле. Объекты могут иметь разные назначения. Один из объектов в документе — это контент страницы. Такой объект имеет поток stream, в котором записан поток команд. Вот как раз такой поток команд и определяет видимую часть страницы. Правила записи потока команд действительно взяты из PostScript и имеют много общего.
quwy Тут вынуждены не согласиться. Результатом компиляции должен быть набор инструкций, который сможет выполнять какая-то программа (например, PDF-viewer). Но это не так. PDF-редакторы читают и пишут PDF, не переделывая его в промежуточный набор команд.
И вам спасибо, что прочитали.
Наша продуктовая команда как раз работает над ней!
Статья как раз о том, что ABBYY FineReader PDF умеет редактировать текст и делает это теперь не хуже Акробата. Попробуйте сами: триал можно скачать здесь
Спасибо, что заметили. Речь в посте идет именно о шлюзах удаленных рабочих столов (RD Gateway). Поправили в тексте.
Да, ИБэшники (информационная безопасность) есть.
Не совсем :) Он отделался увольнением.
Да, это сделано для удобства установки программы и разворачивания в корпоративных средах.
Спасибо за ответственное раскрытие информации об уязвимости. Как и описано в статье, фикс уже был выпущен и описан здесь
Compreno лежит в основе технологий ABBYY для решения задач Natural Language Processing. Если вы читаете новости про NLP-технологии ABBYY, то значит, что здесь используются технологии анализа и понимания естественного языка.
Нет, мы продолжаем использовать Compreno. Эта технология работает в составе NLP-возможностей наших продуктов. Например, в проектах с мониторингом информации в банках используются как раз NLP-технологии на базе той самой Compreno.
У форума структура сложная, там в общем случае, нет какого-то одного повествования, а куча разных мнений. Не говоря уже о том, что в одном форуме может одновременно вестись несколько разговоров параллельно между несколькими группами людей, а также могут быть просто высказывания в пустоту — короче, хаос. Чтобы такое сокращать, нужно заранее определять, какие сообщения к чему и к кому относятся (для чего нужна отдельная программа, а по-хорошему тоже нейросеть — только как её сделать?), затем сложить из этих сообщений что-то похожее на пьесу в нескольких явлениях (одно явление — общение между определённой группой людей), а затем попробовать пройтись описанным в статье алгоритмом. Либо сразу обучать генератор заголовков (можно описанный, а можно на трансформерах, используя BERT) на форумном тексте (желательно, чтобы в нём до подачи на сеть особым образом выделялись лица разговора, цитирования и прочие форумные штуки).
Для каждого уровня обобщения нужно найти соответствующую обучающую выборку на 100k+ текстов (может, и меньше, я не проводил экспериментов, как ухудшается качество от размера обучающей выборки) и попробовать запустить сетку.
В этом ещё одна проблема. Нужны не просто тексты форумов, а также сокращения текстов форумов, которые я, например, никогда не видел. Значит, их придётся составлять самому, что очень дорого.
Словарь я готовил отдельно, он не зависит от данных, на которых проходит обучение.
Если быть точнее, то для своих экспериментов я просто находил какие-нибудь предобученные эмбеддинги (например, отсюда http://docs.deeppavlov.ai/en/master/features/pretrained_vectors.html), смотрел для каких слов они были составлены, брал первые 100k (можно больше, но от этого усложняется модель). Сами предобученные эмбеддинги, кстати, не использовал.
Судя по происхождению файла с эмбеддингами, откуда я брал слова, можно сказать, что я составил словарь из 100k самых частотных слов Википедии и корпуса Ленты, расположенных в порядке частотности.
Нет, к сожалению, BERT не пробовал.
Насчёт момента с невозможностью вывода несловарных слов. Имеется в виду, что абстрактные модели составляют заголовок только из слов, взятых из заранее заданного множества (собственно, словаря). Если в исходном тексте будет важное слово, которого не будет в словаре, то абстрактная модель его подставить в заголовок его не сможет. Это касается и тренировочных данных, и тестовых.
По поводу каста в
ParallaxLayoutAttributes
— я делаю так, чтобы было соответствие типов для применения функцииprepareAttributes
после, в общем случае это не необходимоПо поводу копирования —
UICollectionViewFlowLayout
кэширует аттрибуты, и когда будет необходимо перелейаутить ячейки, он обратится в кэш и узнает, необходимо ли это с помощьюisEqual:
. Модифицируя аттрибуты, которые мы получили через super, мы потенциально модифицируем этот кэш. Если мы попробуем это сделать без копирования, то, например, получим следующее сообщение в логеИ благодарим вас за наводку на статью со state-of-the-art решением.
А еще в этом году выпустили технологию ABBYY Mobile Web Capture. О ней мы не так давно рассказывали на Хабре.