OCR Qanday Ishlaydi — Ichki Arxitektura
Nega ichki tuzilishni bilish kerak?
Mashinani haydash uchun dvigatel qurilishini bilish shart emas. Lekin qaysi mashinani sotib olishni tanlayotganda — bilgan yaxshi. OCR bilan ham shunday: ichki arxitekturani tushunsangiz, "nega Tesseract jadvalni buzib o'qiyapti?", "nega VLM qo'lyozmani yaxshi o'qiydi?" degan savollarga o'zingiz javob topasiz.
To'rt bosqichli pipeline
Zamonaviy OCR tizimlari to'rt bosqichdan o'tadi:
Rasm | v [1. PREPROCESSING] rasmni tozalash va to'g'irlash | (kulrang, shovqin, qiyshiqlik) v [2. TEXT DETECTION] matn QAYERDA? — bloklarni topish | (har bir so'z/qator uchun ramka) v [3. TEXT RECOGNITION] matn NIMA deydi? — belgilarni o'qish | (har bir ramka ichini matnga aylantirish) v [4. POST-PROCESSING] xatolarni tuzatish | (til modeli, lug'at) v Matn
Har bir bosqichni ochib ko'ramiz.
1-bosqich: Preprocessing
Rasm sifatini oshirish: kulrang qilish, shovqinni olib tashlash, kontrastni kuchaytirish, qiyshiqlikni to'g'rilash. Bu bosqich shunchalik muhimki, unga alohida bob ajratganmiz (3-bob). Hozircha bitta raqam: yaxshi preprocessing aniqlikni 10-30% ga oshirishi mumkin.
2-bosqich: Text Detection — matn qayerda?
Sahifada matn qayerda joylashgan? Bu savol ko'ringanidan qiyin: matn ustunlarda bo'lishi, rasm atrofida oqishi, jadval ichida turishi, qiyshiq yozilgan bo'lishi mumkin.
Ikki avlod yechim:
- Klassik (Tesseract): sahifani qatlamlarga ajratish (layout analysis) — bo'sh joylar bo'yicha ustun/paragraf/qator chegaralarini topish. Toza hujjatda zo'r, murakkab dizaynda adashadi.
- Deep learning (CRAFT, DB): neyron tarmoq har bir piksel uchun "bu matnning bir qismimi?" deb baholaydi, keyin qo'shni piksellar so'z ramkalariga birlashtiriladi. EasyOCR va PaddleOCR shu usulda ishlaydi — egri, qiyshiq, sochilgan matnni ham topadi.
3-bosqich: Text Recognition — matn nima deydi?
Ramka ichidagi piksellar ketma-ketligini belgilarga aylantirish. Bu OCR ning "yuragi". Ikki asosiy yondashuv:
CTC (Connectionist Temporal Classification) — Tesseract 4+, PaddleOCR:
Rasm ustunlar ketma-ketligi sifatida o'qiladi (chapdan o'ngga): [ustun][ustun][ustun][ustun][ustun] ... | | | | | v v v v v CNN + LSTM har ustun uchun belgi ehtimolini beradi: S SS h a rr ... | v CTC decoding: takrorlarni birlashtirish "Shar..."
Tez va aniq, lekin qat'iy chapdan-o'ngga o'qiydi — murakkab layout va qo'lyozmada qiynaladi.
Attention / Transformer (TrOCR, VLM lar) — rasm patch larga bo'linadi, dekoder xuddi LLM matn generatsiya qilgandek belgilarni birma-bir chiqaradi, har qadamda rasmning kerakli joyiga "qaraydi" (attention). RAG qo'llanmasi 15-bobida ko'rgan attention mexanizmining o'zi — faqat matn tokenlariga emas, rasm bo'laklariga qaratilgan.
Bu oila kuchliroq: kontekstni ishlatadi ("Toshk_nt" ni ko'rib "Toshkent" deb o'qiydi), qo'lyozmani yaxshiroq tushunadi. Evaziga sekinroq.
4-bosqich: Post-processing
Xom natijani tuzatish:
- Lug'at tekshiruvi: "0'zbekist0n" → "O'zbekiston" (nol harfi O ga)
- Til modeli: "shaxtnoma" → "shartnoma" (kontekst bo'yicha)
- Format qoidalari: sana, raqam, seriya formatlarini tiklash
VLM larda bu bosqich "ichiga qurilgan" — model o'zi til modeli bo'lgani uchun o'qish paytidayoq tuzatadi. Bu ham kuch (toza natija), ham xavf (haddan ortiq "tuzatib", asl matnni o'zgartirib yuborishi mumkin — 6-bobda gaplashamiz).
Ikki avlod: yonma-yon
| Klassik (Tesseract) | Deep Learning / VLM | |
|---|---|---|
| Detection | Layout analysis (bo'sh joy) | Neyron tarmoq (CRAFT, DB) |
| Recognition | LSTM + CTC | Transformer + attention |
| Toza hujjat | ✅ Zo'r | ✅ Zo'r |
| Murakkab layout | ⚠️ Adashadi | ✅ Yaxshi |
| Qo'lyozma | ❌ Yomon | ✅ O'rtacha-yaxshi |
| Tezlik (CPU) | ✅ Tez | ⚠️ Sekin |
| Resurs | CPU yetadi | GPU tavsiya |
Xulosa
| Tushuncha | Asosiy fikr |
|---|---|
| 4 bosqich | Preprocessing → Detection → Recognition → Post-processing |
| Detection | Klassik: bo'sh joy tahlili; zamonaviy: piksel darajasida neyron tarmoq |
| CTC | Ustunma-ustun o'qish — tez, toza matn uchun ideal |
| Attention | LLM kabi generatsiya — kontekstni ishlatadi, qo'lyozmaga chidamli |
| Amaliy foyda | Muammoning qaysi bosqichda ekanini bilsangiz, to'g'ri yechim tanlaysiz |
Bu bobni bepul o'qidingiz.
Kitob o'rgatadi, lekin sizning kodingiz nega ishlamaganini ayta olmaydi. Kursda uy vazifangiz tekshiriladi.