Импорт/экспорт OOXML в/из синтакс. упрощ. подмнож.

Юлия11 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
23.09.2014

Для локальных нужд пишется софт для упрощения перевода текстов с возможностью восстановления стилей и форматирования оригинального документа. Задача состоит в написании парсера OOXML, который должен импортировать текст из *.{doc,ppt, xls}x с мета-данными, достаточными для восстановления исходного форматирования.

На данный момент парсер проходит по text holder'ам формата и заменяет всю внутреннюю разметку на конструкции вида "tag's text". У подобного подхода есть ряд минусов, среди которых:

проблемы при смене порядка следования тегов в оригинале и переводе, т.е. если оригинал содержал bold italic, а перевод содержит курсив жирный, то возникает необходимость в перемещении родителя w:t в нужное место. В приведенном примере с этим проблем нет, но они возникнут при более дальних путешествиях родительского элемента

word не оптимизирует примененные стили, т.е., если в WYSIWIG виден просто болд, в разметке часто встречается some bold

такое представление заставляет пользователей страдать: крайне неудобно перепечатывать/копировать теги в нужное место, особенно не видя стиля оригинала

возможность поломать разметку пропустив тег, или добавив лишний

и т.д.

В ряде проектов, например, memoQ, trados, и т.д. эта задача решена. Нужно сделать такое же, но с перламутровыми пуговицами.

Задачи импортера:

поддержка ходовых форматов

извлечение и преобразование текстосодержащей OOXML-разметки в наиболее минималистичный формат, удобный для дальнейших манипуляций переводчика

желательно умение преобразования простых стилей типа болда и курсива в соответствующий html, чтобы не перегружать текст лишними элементами

выхлоп в plain text

От экспортера нужно:

понимать выхлоп импортера

восстановление исходной разметки

поддержка изменения порядка следования элементов

выхлоп в docx/pptx/etc

На данный момент существует на скорую руку написанные парсеры двух видов:

указанный выше, заменяющий разметку на `%s`;

docx-парсер, преобразует текст по параграфам в/из html.

Оба варианта могут быть предоставлены при необходимости.

Написанный парсер можно будет смело опубликовать под свободной лицензией для вашего портфолио, расположить на pypi, запилить свой transifex с нескучными обоями и переводчицами и т.д.

От кода хочется универсальности, т.е. нужен некий GenericParser, который реализует логику преобразований для OOXML и наследованные парсеры конкретного формата, например, ODTParser(GenericParser), в котором уже сделан fine-tune под текущие заморочки формата.

!Язык программирования: Python.

Желательно уложиться в 2 недели.

Ключевые слова: Python, ooxml, parse, translate.