Проект Shiva: Альтернатива Apache Tika и Pandoc

Я начал работать над проектом Shiva с первого коммита в марте 2024 года, стремясь создать универсальный инструмент на Rust для парсинга и конвертации документов. За несколько месяцев проект значительно расширился, добавив поддержку множества форматов файлов, включая HTML, Markdown, простой текст, PDF, JSON, CSV, RTF, DOCX, XML, XLS, XLSX, ODS и Typst. Shiva — это проект с открытым исходным кодом, и его репозиторий доступен на github.com/igumnoff/shiva.

Цель проекта — предложить альтернативу таким известным инструментам, как Apache Tika, написанный на Java, и Pandoc, разработанный на Haskell. Эти инструменты уже давно стали стандартом для разработчиков, работающих с документами. Однако я надеюсь, что Shiva сможет предложить более простое и эффективное решение, которое сможет справляться с растущим разнообразием и сложностью цифровых документов. Проект развивается быстро, хотя впереди еще много работы, но мне радостно наблюдать за прогрессом.

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

Буду рад, если кто-то заглянет в репозиторий, оставит отзыв или внесет свой вклад. Сообщество открыто для идей и совместной работы, чтобы продолжать развивать возможности Shiva.

@igumnov
22.10.2024 16:22 UTC
Первоисточник

Комментарии

@belonesox
24.10.2024 03:48 UTC
+1

Посмотрел, пока непонятно, это только «изоморфная конвертация» или все таки будет «техписательство»
Наверное проект еще молодой, заброшу ожидания того, кто использует pandoc-пайплайны для технического документирования (может когда-нибудь получится, или сразу напишете, что это против вижена проекта):

  • синхронизация исходников с результатом (что-то типа «source-pos» в pandoc)

  • включение одних документов в другие (типа разных include-фильтров pandoc, но если это будет из коробки — лучше).

  • подстановки шаблонов/cущностей...

и я так понял, плагинов не планируется?

@igumnov
24.10.2024 07:06 UTC
+1

Звучит круто и амбициозно. Пожалуйста, опиши, как Вы это видите, и я добавлю в планы.

24.10.2024 13:22 UTC
+1

Ну, long story short → я вижу эффективное техдокументирование близким к LaTeX-процессу, где есть код и предпросмотр, между ними легко перепрыгивать, код может «включать» другой код и шаблоны. Разве что заменить LaTeX-разметку (которая не для людей) на Markdown, а PDF-предпросмотр (кому теперь нужны страницы) на HTML-предпросмотр. Вот как это выглядит за 30 секунд.

Я это сделал на Pandoc, но контрибуция в Haskell-сорсы для меня мучительна, а экстеншны не всегда удобно там подключаются... Но в целом, реализуемо (там масса тонкостей, как обрабатывать формулы, как...).

Не хочу вас сейчас в это толкать (вдруг я склоняю вас к NIH-переизобретению-велосипедов), но может когда-нибудь... Ну разве что сейчас на уровне архитектуры наверно надо подумать о подключении экстеншнов, и опциональной информации «в исходном файле этот обьект был на такой строчке такого файла» и может, тут как-то форсить на мировом уровне для маркдауна спецификацию стандартного способа как «включать другие файлы».

07.03.2025 11:18 UTC
0

Есть у меня подозрение, что такие вещи лучше на js делать сразу под браузерный движок. Тогда доступны будут всякие хитрые операции, типа обновления только измененной части прямо на лету или кеширование отдельных объектов, встраивание сторонних динамических объектов и так далее.