Импорт/экспорт OOXML в/из синтаксически упрощенное подмножество
Цена договорная
Импорт/экспорт OOXML в/из синтаксически упрощенное подмножество
Для локальных нужд пишется софт для упрощения перевода текстов с возможностью восстановления стилей и форматирования оригинального документа. Задача состоит в написании парсера OOXML, который должен импортировать текст из *.{doc,ppt, xls}x с мета-данными, достаточными для восстановления исходного форматирования.
На данный момент парсер проходит по text holder'ам формата и заменяет всю внутреннюю разметку на конструкции вида "<tN/>tag's text". У подобного подхода есть ряд минусов, среди которых:
проблемы при смене порядка следования тегов в оригинале и переводе, т.е. если оригинал содержал <t1/>bold <t2/>italic, а перевод содержит <t2/>курсив <t1/>жирный, то возникает необходимость в перемещении родителя w:t в нужное место. В приведенном примере с этим проблем нет, но они возникнут при более дальних путешествиях родительского элемента
word не оптимизирует примененные стили, т.е., если в WYSIWIG виден просто болд, в разметке часто встречается <t1/>som<t2/>e <t3/>bold
такое представление заставляет пользователей страдать: крайне неудобно перепечатывать/копировать теги в нужное место, особенно не видя стиля оригинала
возможность поломать разметку пропустив тег, или добавив лишний
и т.д.
В ряде проектов, например, memoQ, trados, и т.д. эта задача решена. Нужно сделать такое же, но с перламутровыми пуговицами.
Задачи импортера:
поддержка ходовых форматов
извлечение и преобразование текстосодержащей OOXML-разметки в наиболее минималистичный формат, удобный для дальнейших манипуляций переводчика
желательно умение преобразования простых стилей типа болда и курсива в соответствующий html, чтобы не перегружать текст лишними элементами
выхлоп в plain text
От экспортера нужно:
понимать выхлоп импортера
восстановление исходной разметки
поддержка изменения порядка следования элементов
выхлоп в docx/pptx/etc
На данный момент существует на скорую руку написанные парсеры двух видов:
указанный выше, заменяющий разметку на `<tX/>%s`;
docx-парсер, преобразует текст по параграфам в/из html.
Оба варианта могут быть предоставлены при необходимости.
Написанный парсер можно будет смело опубликовать под свободной лицензией для вашего портфолио, расположить на pypi, запилить свой transifex с нескучными обоями и переводчицами и т.д.
От кода хочется универсальности, т.е. нужен некий GenericParser, который реализует логику преобразований для OOXML и наследованные парсеры конкретного формата, например, ODTParser(GenericParser), в котором уже сделан fine-tune под текущие заморочки формата.
Желательно уложиться месяц.
Когда:
, 00:01