ScribeOCR – Web interface for recognizing text, OCR, & creating digitized docs
ScribeOCR — это веб-интерфейс для распознавания текста, проверки OCR и создания полностью оцифрованных документов. Проект полностью открыт: исходники на GitHub, лицензия MIT. Поддерживаемые языки включают русский, китайский, японский и корейский. Поддерживаемые форматы: PDF, изображения, архивы ZIP/TAR. Поддерживаемые устройства: сканеры и камеры. Поддерживаемые ОС: Windows, macOS, Linux и веб-версия. Поддерживаемые форматы экспорта: PDF, DOCX, ODT, PPTX и другие. Поддерживаемые форматы экспорта: PDF, DOCX, ODT, PPTX и другие.
Комментарии (13)
I really like the idea, but unfortunately it could not cope with my usecase.I have some lecture slides as image-only PDF (Hungarian language with a sparkle of English and Latin (biology)). I tried the tool on it and I had the following experience:- proofreading with the overlay s
What If OpenDocument Used SQLite?
Если бы OpenDocument использовал SQLite
Мысленный эксперимент: заменить ZIP-контейнер в формате ODP на базу SQLite.
Плюсы: компактнее, быстрее открытие/сохранение, меньше памяти, встроенная версионность.
Текущий ODP
ODP-файл — это ZIP-архив с XML-файлами (content.xml, styles.xml, meta.xml, settings.xml) и папкой Pictures с ресурсами.
Пример: 49-слайдовая презентация — 78 файлов, 11 МБ.
Недостатки ZIP-контейнера
- Сложное инкрементальное обновление
При каждом «Сохранить» перезаписывается весь архив, что медленно и «съедает» ресурс SSD. - Медленный старт
При открытии нужно распаковать и распарсить большой XML. - Отсутствие версионности
Нет простого способа хранить историю изменений. - Избыточные данные
Каждая картинка — отдельный файл, даже если она используется многократно.
Преимущества SQLite
- Инкрементальные изменения
Обновляются только нужные строки; сохранение происходит мгновенно и безопасно (благодаря транзакциям). - Мгновенный старт
Данные уже структурированы; нет необходимости распаковывать и парсить XML. - Встроенная версионность
Таблицыslide_history,image_versionsпозволяют откатываться к любому состоянию. - Дедупликация ресурсов
Один и тот же рисунок хранится единожды; ссылки черезimage_id. - Сжатие и индексы
SQLite сжимает данные и строит индексы по ключам (номера слайдов, идентификаторы объектов).
Схема SQLite-документа (упрощённо)
CREATE TABLE slides(
slide_id INTEGER PRIMARY KEY,
title TEXT,
xml_content BLOB,
z_order INTEGER
);
CREATE TABLE images(
image_id INTEGER PRIMARY KEY,
data BLOB,
mime_type TEXT,
sha256 BLOB UNIQUE
);
CREATE TABLE slide_images(
slide_id INTEGER REFERENCES slides,
image_id INTEGER REFERENCES images,
x REAL, y REAL, width REAL, height REAL
);
CREATE TABLE history(
change_id INTEGER PRIMARY KEY,
timestamp DATETIME,
sql BLOB
);
Итог
SQLite превращает «кучу файлов» в реляционную базу: быстрее, надёжнее, экономнее.
Это не предложение переделать ODP, а идея для следующих форматов.
Комментарии (88)
- SQLite как формат файла приложений: удобен для запросов, хранит всё в одном файле, но требует осторожности с безопасностью и сетевыми ФС.
- Ключевые советы: включать
secure_delete, не хранить больше 2 ГиБ в BLOB, избегать работы по сети без надёжных блокировок. - Плюсы: SQL-запросы, простота API, лёгкость инспектировать и мигрировать данные (пример — Anki).
- Минусы: сложно версионировать бинарные вставки, проблемы синхронизации/коллаборации, перезапись всего файла при малом изменении.
- Альтернативы: разделение текста и бинарников, JSON + Git, XML для обмена, CRDT-структуры для офлайн-редактирования.