The Jerusalem PostMicrosoft Outlook, Teams, Copilot recovering after global outage lasting over 24 hoursInquirerAmihan no longer affecting PH; easterlies prevailCNN TürkSabah namazı saat kaça kadar kılınır? Güneş doğduktan sonra sabah namazı kılınır mı?PunchMorning recap: Fani-Kayode, South Africa clash, Tinubu aide denies convoy attack, other top storiesSky TG24Stipendi trasparenti negli annunci di lavoro, il confronto tra l'Italia e i Paesi europeiDaily MaverickThe season is now — Time to enact family-law reformTRT HaberSürgünden ölüme: Ahıska TürkleriZDF heuteAktuelle Pressemitteilungen des ZDFESPN CricinfoScott, Lyon star as New South Wales secure first win under HaddinCumhuriyetFrederic Dusart'tan İsrail maçı açıklamasıعالم التقنيةسامسونج توسع اختبار One UI 9.5 تمهيدًا لإطلاق جالكسي S27매일경제11세 연하 의사 아내 임신…결혼 7년만에 아빠 되는 주진모
The Daily Newsstand · Free, Always
Saturday, November 14, 2026

Тусмав, он же Густав: как я с ИИ писал каталог домашней библиотеки

Translate

Библиотеку начал собирать ещё мой отец. Потом и я много покупал.

Сейчас это несколько тысяч книг. И в какой‑то момент я понял, что уже не помню, что у меня есть. Покупаю на развале книгу, а дома нахожу второй экземпляр. Ищу второй том и не знаю, есть ли первый.

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

Почему не LiveLib

Я внёс в LiveLib больше тысячи книг. Когда захотел забрать список, выяснилось, что экспорта нет. Свои же данные можно только листать страницами.

В карточке LiveLib я вижу, что это за книга. У себя хочу видеть ещё и экслибрис, надпись на форзаце и имя друга, которому я дал книгу «на недельку» пару лет назад.

Open Library и книга на суахили

Готовые каталогизаторы есть: LibraryThing, Tellico, Inventaire. Сканер штрихкода есть у всех. За описаниями книг они обращаются в Open Library и Google Books.

Я дал Open Library семь своих книг. Она не узнала ни одной.

Для неё «Энергоиздат», 1982 — примерно как для меня книга на суахили. У многих старых книг нет ни штрихкода, ни ISBN. На советских книгах ISBN появился только в конце восьмидесятых.

Так я взялся за свой каталог. Назвал Филином: птица ночная, книжная, и в трее компьютера смотрится солидно.

Издание и экземпляр

Издание — то, что напечатано: автор, переводчик, издательство, год, тираж. Оно одно на всех, у кого стоит этот томик.

Экземпляр — то, что стоит у меня: на какой полке, в каком состоянии, кто брал почитать и вернул ли. Можно пометить «не давать» — Филин переспросит, но запрещать не станет.

Из этого вырос учёт собраний сочинений. Кто собирал «в 30 томах», знает, что один том может занимать две книги. А тома 6 и 7 могут быть под одной обложкой. Филин считает книги на полке и показывает, чего не хватает до полного комплекта.

Ещё у экземпляра есть отметка о личной ценности. Она для книг, которыми я дорожу.

С телефоном к полке

Книги стоят не у компьютера. Заводить их надо там, где они живут: у полки, с книгой в руке. Значит, нужен телефон.

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

Решили писать настоящее приложение для Android. Под Android я не писал никогда, Kotlin не знаю. Тут ИИ отработал лучше всего: поставил инструменты для сборки, написал приложение на Kotlin, собрал и подписал APK.

Приложение показывает те же страницы Филина. Свои у него сканер штрихкода, камера и самообновление.

Ставится приложение с самого Филина. На компьютере открываешь страницу «Телефоны» и сканируешь QR‑код для скачивания APK. Второй QR‑код нужен для привязки телефона. Разрешить или закрыть доступ можно только с компьютера. Чужой телефон в той же сети Wi‑Fi каталога не увидит.

Первой книгой, заведённой с телефона у полки, стала «Первая оборона Севастополя». В карточке были только ISBN и фото обложки.

Теперь я прямо у шкафа навожу телефон на штрихкод. Через секунду вижу «такая уже есть» или карточку новой книги. Во втором случае жму «Найти в РГБ», выбираю запись и нажимаю «Это она». Можно вернуть книгу на полку и взять следующую.

ИИ сам внёс в план офлайн‑очередь сканов. Потом пришлось бы разбирать эту очередь, сверять дубли и исправлять ошибки. У меня дома компьютер и так включён, поэтому очередь из плана убрали.

Где взять описание книги, у которой нет ISBN

Вбивать всё руками — минут десять на книгу. На несколько тысяч — пенсия.

Я устроил источникам экзамен на восьми своих книгах:

  • FantLab — 3 из 8, только художественные;

  • alib.ru — нашёл всё, но это магазин, а не каталог;

  • каталог Российской государственной библиотеки — 7 из 8, включая обе книги без ISBN.

У РГБ поиск закрыт для программ, открыты только страницы конкретных записей.

Ассистент полез разбираться, как поиск устроен изнутри. Посмотрел токены и сессию, прикинул, можно ли выдать программу за браузер, и сам остановился. Сказал примерно так: это обход защиты от ботов, а её поставили ровно для того, чтобы программы туда не ходили. Делать не буду.

Я, честно говоря, удивился. До этого я воспринимал ИИ как очень быстрого исполнителя: сказал — сделал. А тут выяснилось, что у него есть правила, которые не отменяются просьбой хозяина. Чужой сайт закрылся от программ — значит, программа туда не ходит, сколько ни объясняй, что «мне только для себя».

А потом я заметил, что то же правило уже работает в проекте и без него: LiveLib в условиях использования запрещает автоматический доступ — и импорт у нас только из страниц, которые я сохранил руками. alib.ru блокирует частые запросы — и Филин ходит туда по одной книге, по кнопке.

Поиск РГБ я запускаю сам во встроенном браузере. Выбираю книгу в списке, жму «Это она», и Филин забирает из записи авторов, переводчиков, издательство, год, ББК и темы.

Ищу Эмара — Филин находит композитора Малера. Искали по самому длинному слову в имени, а «Густав» у них общий. Теперь ищем по всем словам.

А «Твёрдую руку» Эмара 1982 года мы искали в каталоге РГБ четырьмя способами и так и не нашли, но это достаточно редкий случай когда не находит. Книга стоит у меня на полке.

Отдельная загадка — белый экран вместо РГБ на моём телефоне. На компьютере всё работает, на телефоне — белое поле. Оказалось, в прошивке просто нет корневого сертификата, которым подписан сайт библиотеки. Добавили доверие к этому сертификату только для rsl.ru.

Тусмав Эмар и соавтор по фамилии Рука

С книгами восьмидесятых повезло: штрихкода нет, но ISBN напечатан. Камера телефона читает его прямо с оборота, а контрольная цифра не даёт принять мусор. Нашёлся ISBN — остальное подскажет РГБ.

Книги постарше приходится фотографировать.

Советский титульный лист — произведение искусства. Название красным, автор прописью, виньетки, всадник на коне. Вот титул Эмара: «Густав Эмар. Твёрдая рука. Гамбусино. Москва, Энергоиздат, 1982».

Филин прочитал «Тамбусино». Автором стал «Тусмаb Эмар» (с латинской «b» на конце, для солидности), а соавтором оказалась «Рука». Нарядную прописную «Г» он принял за «Т», слово «Твёрдая» пропустил. Город, издательство и год были набраны обычным шрифтом, их он прочитал без ошибок.

Карточку на обороте у Тарле я сфотографировал вверх ногами — и получил ничего. Первый живой снимок того самого Эмара дал вместо года издания «861»: программа решила по картинке в середине страницы, что лист перевёрнут. Начинали мы с Tesseract. На красных титулах он выдавал ноль. Спорить на ощупь надоело, и я собрал экзамен: настоящие снимки моих книг и правильные ответы — автор, название, издательство, год.

PaddleOCR правильно распознал больше снимков и справился примерно в пять раз быстрее Tesseract. Чтобы оставить один exe без Python, мы подключили ONNX Runtime к программе на Go напрямую через системные вызовы Windows. Модели распознавания весят около 27 МБ, и в программу я их вшивать не стал: Филин сам скачивает их отдельным пакетом из выпуска на GitHub при первом запуске, а пока качает, всё остальное работает.

Если на обороте титула есть каталожная карточка, фотографируйте её. Она набрана обычным шрифтом, и программа читает её почти без ошибок. А нарядный титул пусть остаётся для души.

Что ИИ делал хорошо, а где врал уверенно

Код Филина почти целиком написал ИИ‑ассистент. С Go, Kotlin, SQL и сборкой Android он справлялся быстро. Я решал, что нужно, и проверял результат на своих книгах. Что код сделает с «Оцеолой» 1983 года, видно только на настоящей книге. Слову «готово» я перестал верить после нескольких таких разговоров.

  • «Удалите книгу и заведите заново», — посоветовал ассистент. Кнопки удаления в программе не было вообще. Он не проверил.

  • «Браузер этого не позволит», — сказал он про запрос к РГБ. Позволил: сайт библиотеки это явно разрешает. Тоже не проверил.

  • «Распознавание работает» — проверено на подставном распознавателе. Первое же настоящее фото с телефона дало «861» вместо года.

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

По замерам мы отказались от Tesseract и FantLab. Автоматический подбор жанров не выдержал проверки на данных самой РГБ.

49 мегабайт, которые не могли скачаться

Филин — один файл filin.exe, данные лежат рядом с ним. Никаких облаков: книги — это личное.

Обновляется Филин сам: узнаёт о выпуске, спрашивает, качает, сверяет контрольную сумму, делает копию библиотеки — и только потом заменяет себя.

Первое настоящее обновление не встало вообще. Все тесты зелёные, а на медленном канале 49 мегабайт качались дольше, чем программе разрешалось ждать. И каждый раз — с начала. Пришлось учить докачке и выносить тяжёлое из exe. Сейчас он весит 16 МБ.

Библиотека живёт на старом жёстком диске, который уже жалуется на здоровье. Поэтому появилась кнопка «💾 Копия«.»

Что получилось

  • Каталог для Windows и Android, бесплатный и открытый.

  • Книгу с ISBN можно добавить с телефона за секунды. Сканируешь код и выбираешь запись в РГБ.

  • Для книги без ISBN фотографируешь оборот, правишь черновик и сверяешься с РГБ.

  • Нарядные титулы пока побеждают. Если автор набран крупнее названия, Филин их путает.

В одиночку я бы каталог для отцовской библиотеки не написал.

Если у вас тоже шкафы советских книг

Филин здесь: github.com/aleksandrgradoboev‑svg/filin. Есть инструкция по установке без командной строки.

Windows при первом запуске предупредит, что программа неподписанная: подпись стоит денег, а Филин бесплатный. Нажмите «Подробнее», затем «Выполнить в любом случае».

Если Филин плохо прочитал ваш титул, пришлите фото в issues. Добавлю его в следующий набор для проверки распознавания.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.