Обновить
4K+

LaTeX *

Набор макросов, надстройка над TeX

0,09
Рейтинг
Сначала показывать
Порог рейтинга

Всем привет!

Сегодня поделюсь своим проектом, где использовал возможности открытых моделей LLM для создания автоматизированного конвейера по переводу англоязычных pdf-файлов в русскоязычные pdf. Как человек, интересующийся именно технологиями в области ИИ мне особенно было интересно максимальное приближенное к оригиналу сохранение содержимого переведенного материала, включая схемы, математические формулы, блоки кода (python) и bash-команд, рисунков (само собой), сохранение сносок, ссылок и пр. метаданных. Целью проекта было применение всевозможных доступных стеков и программ, использующих LLM в конкретной практической задаче. И как оказалось, на первый взгляд, простая задача перевода, с которой современная LLM, созданная и обученная на архитектуре трансформеров справляется на сегодняшний день блестяще, для pdf-формата оказалась не совсем простой (но и не скажу, что особо сложной).

О выборе программного стека технологий. Здесь во многом все определило глубина моих познаний и практических умений работать с LLM-моделями и тем оборудованием (потребительским, конечно), которое имеется дома. Поэтому, исходя из пары-тройки (пары) вычислительных узлов (ноутбуков) в домашней локалке мой выбор определил следующие программные и аппаратные компоненты.

Программные компоненты. Прежде всего это среда выполнения wsl. Просто работает в windows, удобна мне как новичку. В wsl установка обычной env стандартным python. И далее уже конкретные ПО для выполнения задачи перевода pdf на русский. Тут пришлось почитать в сети что есть свободное (исходя из цели использования только открытого ПО и LLM, чтобы оценить уровень их развития). Были опробованы такие программы как Docling, Marker-pdf и еще какую-то). В итоге, для извлечения из pdf в markdown формат я использовал Marker-pdf. У него имеется целый набор специализированных ocr-моделей для парсинга содержимого pdf. Marker в режиме конвейера осуществляет извлечение в указанную папку все содержимое исходного pdf в виде отдельных jpg-файлов, файла метаданных и итогового англоязычного .md файла. Для обратного процесса конвертации переведенного на русский язык ru.md я использовал WeasyPrint и Pandoc. Мой выбор - Pandoc. Сложнее, но поддержка xeLatex и куча настроек через опции командной строки и переменных окружения wsl. Pandoc - единственное ПО в моем конвейере, которое не использует LLM. И собственно, середина - перевод. Готовый скрипт на python. Перевод разбитых на части (chanks) в endpoint LLM - requests.post. Фишкой является url, который через специальный балансировщик, управляющий вычислительными узлами в локалке отправляется в requests.post. Получается параллельный перевод на нескольких узлах с  развернутыми OpenAI-совместимыми LLM. Количество узлов - сколько найдется в домашней ИИ лаборатории))). До и после отправки на перевод в LLM - чистка регулярками от различных костылей и защиты от перевода не нужных элементов (чистка колонтитулов, пагинация, сглаживание двойных переносов строк, изоляция спец. блоков от LLM блоков кода, мат. формул, кода внутри строк, приведение кода к pep8), подготовка переведенного _ru.md к сборке pdf-файла в Pandoc. В итоге - pipeline в 3 шага: Marker-pdf, Скрипт-переводчик на python, Pandoc.

Основные шаги перевода (marker, python скрипт, pandoc)
Основные шаги перевода (marker, python скрипт, pandoc)

Все вместе также можно запустить скриптом bash-сценария:

Использование: ./pipeline.sh <path_to_input_pdf> <output_path> [page_range]

Пример1: перевод всего Pdf-файла

./pipeline.sh /mnt/project/raw_data/embeddings.pdf /mnt/project/rendered/embeddings

Пример1: перевод первых 21 страниц Pdf-файла

./pipeline.sh /mnt/project/raw_data/embeddings.pdf /mnt/project/rendered/embeddings 0-20

Репозиторий на github DemonODG/pdf-translator: English-to-Russian PDF Translation Pipeline

Это мой первый пост на тему применения современных LLM моделей в различных практических задачах. Если это вызовет интерес в более подробном описании данного pipeline - напишу статью поподробнее.

Всем добра!

Теги:
+3
Комментарии0

Больше никаких мучений с Markdown — расширение Markdown Viewer превращает все файлы Markdown в Word-документы без боли и страданий. Захватывает инфографику: любые схемы, диаграммы, графики в чистые картинки. Берёт формулы из LaTeX и переносит их в Word нативно, а не в формате ужасных вставок. Переносит форматирование — подсвечивает код, сохраняет таблицы и списки, как в оригинале. Работает локально. Подходит для работы с GitHub: открывает документы и даёт перенести всё в Word.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии1

Есть расхожий штамп: когда нужно написать биографию кинорежиссёра, принято каждый раз указывать на особую щепетильность в отношении реквизита и одержимость деталями. На самом деле внимание к мелочам — это не уникальная фишка конкретного режиссёра, а обычная профессиональная дисциплина. Без этого фильм развалится на куски.

Взять, к примеру, известного своим визуальным стилем Сэма Рэйми. Когда студия Universal отказала в правах на экранизацию заглавного персонажа журналов бульварных романов серии The Shadow, режиссёр заменил рассказ про Тень собственным Человеком тьмы. Так в 1990 в прокат вышел супергеройский фильм Darkman, который, впрочем, по тону скорее похож на картины про очередного монстра Universal.

Ходят байки про педантичность Рэйми. Читатель наверняка знаком с форумами сообщества создателей кинореквизита RPF. В одной из веток участник форума рассказал, как товарищ из индустрии показал ему фигурировавшие в фильме фотокарточки. В «Человеке тьмы» персонаж Лиама Нисона запечатлён на фото со своей девушкой. По ходу сюжета обгорел и поджарился как персонаж Нисона, так и сама фотобумага. Как рассказал спец по кинореквизиту, пришлось по-разному обжечь и испортить сотни копий фотографии, из которых Сэм Рэйми, режиссёр кинокартины, тщательно выбрал одну для последующего размножения и появления в кадре.

Другая ключевая сюжетная деталь — служебная записка, вернее, след от кофе на ней. По сюжету персонаж Нисона рассеянно ставит на документ кружку с кофе, оставляя уникальный отпечаток. По этой улике его девушка позднее догадывается о произошедшем.

Неизвестно, как с этой деталью Рэйми дрючил художников. Одно ясно точно: сегодня подобное легко воспроизвести на компьютере, прямо в LaTeX. Для этого нужно установить пакет coffeestains.

Пакет добавляет на страницу аккуратно отрисованные кофейные пятна. Управлять можно прозрачностью, масштабом, углом и смещением относительно центра страницы. Видов пятен четыре: круглое не до конца закрытое кольцо от стакана или кружки, дуга этой окружности, а также два вида пролитых капель кофе. Пятна основаны на реальных фотографиях: автор пакета их снял, обработал и векторизовал.

ctan.org/pkg/coffeestains

Теги:
Всего голосов 4: ↑3 и ↓1+5
Комментарии2

Представлен открытый репозиторий «The Little Book of Linear Algebra», где опубликовано введение в основные понятия линейной алгебры, причём кратко и понятно для начинающих.

Теги:
Всего голосов 6: ↑6 и ↓0+8
Комментарии0