Asosiy qismga o'tish

Tesseract — Klassik va Ishonchli

4-bob 5 kod bloki 659 so'z

Nega Tesseract?

100+ til, jumladan o'zbek (lotin va kirill) va rus. Bepul, ochiq kodli, CPU da tez, offline. Confidence (ishonch darajasi) beradi — production quality gate uchun oltin xususiyat. Kamchiliklari ham bor, lekin boshlang'ich nuqta har doim Tesseract: agar u yetarli bo'lsa, murakkabroq narsa kerak emas.

O'rnatish

bash8 qator
# Ubuntu / Debian / WSL
sudo apt install tesseract-ocr

# Til paketlari: rus, o'zbek lotin, o'zbek kirill
sudo apt install tesseract-ocr-rus tesseract-ocr-uzb tesseract-ocr-uzb-cyrl

# Python wrapper
pip install pytesseract pillow

O'rnatilgan tillarni tekshirish:

matn2 qator
tesseract --list-langs
# eng, osd, rus, uzb, uzb_cyrl

Asosiy ishlatish

python11 qator
import pytesseract
from PIL import Image

image = Image.open("scanned_page.png")

# Bitta til
text = pytesseract.image_to_string(image, lang="rus")

# Bir nechta til birga — O'zbekiston hujjatlari uchun tipik holat
text = pytesseract.image_to_string(image, lang="rus+uzb")
print(text)

Muhim nuance: lang="rus+uzb" — Tesseract har so'z uchun ikkala til modelini sinab, yaxshisini oladi. Lekin keraksiz til qo'shmang: har qo'shimcha til biroz sekinlashtiradi va adashish ehtimolini oshiradi. Hujjat faqat ruscha bo'lsa — faqat rus.

PSM — Page Segmentation Mode

Tesseract ga "sahifa qanday tuzilgan" degan maslahat. Noto'g'ri PSM — yomon natijaning eng ko'p uchraydigan sababi (preprocessing dan keyin):

PSM Ma'nosi Qachon ishlatish
3 To'liq avtomatik (default) Oddiy hujjat sahifasi
4 Turli o'lchamli bitta ustun Gazeta ustuni, kvitansiya
6 Bitta yaxlit matn bloki Paragraf skrini, kitob sahifasi
7 Bitta qator Yozuv, sarlavha, tablichka
8 Bitta so'z Captcha, shtamp ichi
11 Tartibsiz siyrak matn Sochilgan yozuvlar: forma, ID karta, shtamp. Bir ustunli chek uchun 4 yoki 6 (11-bob, 4-lab)
12 Siyrak matn + OSD Aralash yo'nalishli hujjat
python5 qator
# Kvitansiya: qatorlar tartibsiz, ustun tushunchasi yo'q
text = pytesseract.image_to_string(image, lang="rus", config="--psm 11")

# Bitta qatorli yozuv
text = pytesseract.image_to_string(sign, lang="uzb", config="--psm 7")

Amaliy maslahat: natija g'alati chiqsa (so'zlar aralashib ketgan, ustunlar qo'shilib ketgan) — birinchi navbatda PSM ni o'zgartirib ko'ring: 3 → 6 → 11.

Confidence — ishonch darajasi

image_to_string faqat matn beradi. image_to_data esa har so'z uchun koordinata + confidence (0-100) beradi. Bu production tizimning tayanchi:

python15 qator
data = pytesseract.image_to_data(image, lang="rus+uzb",
                                 output_type=pytesseract.Output.DICT)

words, confs = [], []
for word, conf in zip(data["text"], data["conf"]):
    conf = int(float(conf))            # yangi pytesseract "95.2" kabi satr beradi
    if conf > 0 and word.strip():      # -1 = bo'sh blok, tashlab yuboramiz
        words.append(word)
        confs.append(conf)

avg_conf = sum(confs) / max(1, len(confs))
low_words = [w for w, c in zip(words, confs) if c < 60]

print(f"O'rtacha ishonch: {avg_conf:.0f}%")
print(f"Shubhali so'zlar: {low_words[:10]}")

Confidence bilan nima qilamiz (8-bobda batafsil):

  • avg_conf > 80 — natijaga ishonamiz, to'g'ridan-to'g'ri RAG ga
  • 60-80 — ishlatamiz, lekin metadata ga belgilab qo'yamiz
  • < 60 — VLM bilan qayta o'qiymiz yoki manual review ga

Kuchli va zaif tomonlari

✅ Kuchli ❌ Zaif
Tez (~1 s/sahifa, CPU) Qo'lyozmani deyarli o'qiy olmaydi
uzb + uzb_cyrl + rus Jadvalni "oqizib" yuboradi (satr tartibida)
So'z darajasida confidence Murakkab layout da adashadi
Bepul, offline, yengil Past sifatli rasmga sezgir (preprocessing shart!)

Xulosa

Tushuncha Asosiy fikr
Default tanlov Har doim Tesseract dan boshlang — ko'p holatda yetarli
Tillar rus+uzb — lekin faqat keraklisini qo'shing
PSM Natija g'alati bo'lsa — birinchi PSM ni tekshiring (3 → 6 → 11)
Confidence image_to_data — production quality gate ning asosi
Chegara Qo'lyozma va jadval — Tesseract emas, VLM ishi (6-bob)

Bu bobni bepul o'qidingiz.

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

Telegramda yozish Narxlar