Telegramda yozing@Odilient

SI VA AVTOMATLASHTIRISH

Knigopoisk: yirik shriftli kitoblar konveyeri

Rus tilidagi internet-kitob do‘koni uchun Python konveyeri: OCR matn qatlamli skanerlangan PDF kitoblarni toza, yirik shriftli PDF, moslashuvchan EPUB va katalog muqovalariga aylantiradi.

Knigopoisk
Mijoz
Kitoblar va nashriyot
Soha
2026
Yil
Boshlang‘ich nuqta

Muammo

Ba’zi kitoblar faqat OCR matn qatlami bor skanerlangan PDF ko‘rinishida mavjud: sahifalar qotib qolgan rasmlardan iborat, matnda yumshoq defislar (soft hyphen) va tanib olishdagi xatolar bor — masalan, kirill so‘zlari ichida lotin harflari. Ko‘rishi zaif o‘quvchilarga xuddi shu kitob yirik shriftda, qayta taxlangan holda kerak; elektron kitob do‘koniga esa yana moslashuvchan EPUB va ko‘rkam muqova kerak — yuzlab sahifalarni qo‘lda qayta terib o‘tirmasdan.

Biz nima qildik

Yechim

PyMuPDF, ReportLab, Pillow va NumPy asosida besh bosqichli Python konveyerini qurdik. U har bir matn qatorini koordinatalari bilan ajratib oladi, qatorlarni xatboshilarga yig‘adi, yumshoq defislarni olib tashlaydi, OCR’ning odatiy chalkashliklarini tuzatadi, qism va boblarni sarlavha o‘lchamiga qarab aniqlaydi va rasmlarni ularning izohlariga qarab qirqib oladi. Bitta oraliq tuzilmadan istalgan shrift o‘lchamida EPUB va PDF yaratadi — 18 pt va undan kattasida yirik shriftli maketga o‘tadi — hamda katalog uchun 2:3 formatdagi muqova tayyorlaydi.

Texnologiyalar
PythonPyMuPDFReportLabPillowNumPyEPUB
Parda ortida

Loyiha qanday yaratildi

Skanerlangan PDF’larni yirik shriftli PDF va EPUB nashrlarga aylantirish

Rus tilidagi elektron va audiokitoblar do‘koni Knigopoisk uchun OCR matn qatlami bor skanerlangan PDF kitobni qulay nashrlarga aylantiradigan konveyer qurdik: tanlangan shrift o‘lchamidagi yirik shriftli PDF, moslashuvchan EPUB va do‘kon vitrinasidagi kitob kartalari kutadigan 2:3 formatdagi muqova rasmi. Bu mijozlar ko‘radigan funksiya emas, balki ichki ishlab chiqarish vositasi.

Konveyer qanday ishlaydi

  1. Ajratib olish — extract.py PDF’ni PyMuPDF bilan o‘qiydi va har bir matn qatorini sahifadagi koordinatalari bilan rows.json fayliga yozadi.
  2. Tuzilmani tiklash — build3.py qatorlarni xatboshilarga yig‘adi, yumshoq defislarni olib tashlaydi va OCR’ning odatiy chalkashliklarini tuzatadi: masalan, noto‘g‘ri tanilgan kirill harflari yoki kirill so‘zlari ichiga tushib qolgan lotin belgilari. Sarlavha shrifti o‘lchamiga qarab qismlar, boblar va bo‘limlarni aniqlaydi, rasmlarni esa «Ris. N» (ruscha «rasm» so‘zining qisqartmasi) izohlariga qarab alohida tasvirlarga ajratadi.
  3. Natijalarni yozish — make_outputs.py bloklar ro‘yxatini bo‘limlarga va EPUB’ga aylantiradi.
  4. Sahifalash — make_pdf.py <pt> kitobni ReportLab yordamida A4 formatda, DejaVu Sans shriftida teradi. 18 pt va undan kattasida torroq hoshiyali yirik shriftli nashr yig‘iladi; kichikroq o‘lchamlar oddiy o‘qish nashrini beradi. Sarlavhalar asosiy matn o‘lchamiga mutanosib kattalashadi, sahifa boshida yoki oxirida yolg‘iz qolib ketadigan qatorlarning oldi olinadi, har bir sahifa raqamlanadi, navigatsiya uchun PDF mundarija xatcho‘plari qo‘shiladi.
  5. Muqova — make_cover.py asl titul sahifasini 300 dpi’da render qiladi, skan hoshiyalarini matn blokigacha qirqadi va uni 800×1200 JPEG ramkasiga joylaydi.

Birinchi kitobdagi natijalar

Konveyerni 250 sahifadan ortiq rus tilidagi skanerlangan menejment kitobida boshidan oxirigacha sinab ko‘rdik. Ajratib olish bosqichi 10 004 ta matn qatorini berdi; tuzilma bosqichi 1 589 ta xatboshi, 4 ta qism, 15 ta bob va 14 ta rasmni tikladi; natija bosqichi esa 29 ta bo‘lim va 1,6 MB hajmli EPUB yozdi. Har bir bosqich o‘z hisoblarini logga yozadi, shuning uchun katalogga biror narsa tushishidan oldin natijani tekshirish oson.

Tegishli ishlar

Bu vosita Knigopoisk uchun sun’iy intellekt integratsiyasi va avtomatlashtirish bo‘yicha boshqa ishlarimiz qatorida turadi, jumladan SI yordamida audiokitob yaratish konveyeri va Knigopoisk hamkorlik vidjeti.

Birga yaratamiz

Knigopoisk: yirik shriftli kitoblar konveyeri kabi loyiha kerakmi?

Mahsulotingiz nima qilishi kerakligini ayting. Ish hajmini belgilaymiz, muddatlarni rejalashtiramiz va qat’iy narx yuboramiz — bepul va davom ettirish majburiyatisiz.

Bepul konsultatsiya Majburiyatsiz Tezkor javob