Asosiy qismga o'tish

Muammo — RAG Skanerlangan Hujjatni Ko'rmaydi

1-bob 3 kod bloki 518 so'z

RAG tizimining "ko'r nuqtasi"

RAG qo'llanmasida ko'rganimizdek, butun pipeline matn ustida quriladi: matnni chunk larga bo'lamiz, embedding qilamiz, qidiramiz. Lekin bitta yashirin shart bor — hujjatdan matnni olish imkoni bo'lishi kerak.

Real loyihada esa shunday hodisa yuz beradi:

python6 qator
Mijoz: "Mana 2000 ta shartnoma, hammasini bilim bazasiga qo'shing"
Siz:   pdfplumber bilan ochasiz...

    extract_text() -> ""     (bo'sh satr!)

Hamma PDF — skanerlangan. Matn qatlami yo'q.

Bu xato emas. PDF ikki xil bo'ladi, va farqini tushunish juda muhim.

PDF ning ikki turi: matn qatlami bor va yo'q

Digital PDF — Word/LaTeX dan eksport qilingan. Ichida haqiqiy matn bor: har bir harf, uning shrifti va koordinatasi saqlangan. Ctrl+F bilan qidirsa bo'ladi, sichqoncha bilan belgilab nusxa olsa bo'ladi.

Skanerlangan PDF — qog'oz hujjat skanerdan o'tgan. Ichida faqat rasm bor: har sahifa — bitta katta fotosurat. Kompyuter uchun bu piksellar to'plami, "matn" degan tushuncha umuman yo'q.

python4 qator
Digital PDF ichida:            Skanerlangan PDF ichida:
  "Shartnoma" (matn obyekti)     [1240 x 1754 piksel rasm]
  font: Times, x: 120, y: 340    matn qayerda? nima yozilgan?
                                 PDF buni BILMAYDI.

Tekshirish oson: PDF ni oching va matnni sichqoncha bilan belgilashga urinib ko'ring. Belgilanmasa — skanerlangan.

Bu muammo qayerda uchraydi?

O'zbekistondagi real ish muhitida — deyarli hamma joyda:

  • Davlat idoralari arxivi — buyruqlar, qarorlar, yozishmalar: 90% skanerlangan
  • Shartnomalar — imzo va muhr uchun chop etiladi, keyin skanerlanadi
  • Eski hujjatlar — 2010-yilgacha bo'lgan deyarli hamma narsa
  • Telefon suratlari — xodim hujjatni kamerada olib yuboradi
  • Rus va o'zbek aralash — bitta hujjatda ikki til, lotin va kirill aralash

Agar RAG tizimingiz bularni o'qiy olmasa, bilim bazasining kattagina qismi — shunchaki yo'q. Foydalanuvchi "2019-yilgi shartnomada nima deyilgan?" deb so'raydi, tizim esa "ma'lumot topilmadi" deydi. Ma'lumot bor edi — tizim uni ko'ra olmadi.

OCR nima?

OCR — Optical Character Recognition (optik belgilarni tanish) — rasm ichidagi harflarni topib, ularni oddiy matnga aylantirish texnologiyasi.

python5 qator
Kirish:  rasm (piksellar)          Chiqish: matn (satrlar)

  [skanerlangan sahifa.png]  -->   "ShARTNOMA № 45
                                    Toshkent sh.   2024-yil 15-yanvar
                                    «Nihol» MChJ nomidan..."

OCR — yangi texnologiya emas. Tesseract 1985-yilda HP laboratoriyasida boshlangan, 2006-yildan Google qo'llab-quvvatlaydi. Lekin oxirgi yillarda ikki inqilob yuz berdi:

  1. Deep learning — neyron tarmoqlar klassik algoritmlarni siqib chiqardi (aniqlik keskin oshdi)
  2. VLM (Vision Language Model) — endi LLM ning o'zi rasmni "ko'radi" va o'qiydi

Bu qo'llanmada ikkalasini ham o'rganamiz va qachon qaysi birini ishlatishni aniq bilib olamiz.

Bu qo'llanma nimani o'rgatadi

Yo'l xaritamiz — xuddi RAG qo'llanmasidagi kabi, muammodan production gacha:

Bob Mavzu Natija
2 OCR ichki arxitekturasi Texnologiyani tushunasiz
3 Preprocessing (OpenCV) Rasmni OCR uchun tayyorlaysiz
4 Tesseract Asosiy ish qurolini o'zlashtirasiz
5 EasyOCR va PaddleOCR Muqobillarni bilasiz
6 VLM bilan OCR Eng zamonaviy usulni qo'llaysiz
7 Skanerlangan PDF pipeline To'liq PDF oqimini qurasiz
8 OCR → RAG integratsiyasi RAG tizimiga ulaysiz
9 CER/WER — sifatni o'lchash Natijani raqam bilan baholaysiz
10 Hands-on: to'liq modul Production-ready kod yozasiz

Xulosa

Tushuncha Asosiy fikr
Ikki xil PDF Digital (matn bor) va skanerlangan (faqat rasm) — extract_text() bo'sh qaytarsa, skanerlangan
Muammo ko'lami Real arxivlarning katta qismi skanerlangan — usiz bilim bazasi chala
OCR Rasm → matn. Klassik (Tesseract) va zamonaviy (deep learning, VLM) avlodlari bor
Maqsad RAG ingestion pipeline'iga "ko'z" qo'shish

Bu bobni bepul o'qidingiz.

Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.

Telegramda yozish Narxlar