Asosiy qismga o'tish

EasyOCR va PaddleOCR — Deep Learning Avlodi

5-bob 4 kod bloki 497 so'z

Natijalar hali qayta tekshirilmagan

Bu kitobning kodi saytga qo'yishdan oldin qayta ishga tushirilmagan, shuning uchun ayrim natija va raqamlar qo'lda yozilgan bo'lishi mumkin. Kodni o'zingiz ishga tushirib ko'ring — farq topsangiz, Telegramda yozing.

Ikkinchi avlod nima beradi?

Tesseract klassik pipeline: layout analysis + LSTM. EasyOCR va PaddleOCR esa to'liq neyron tarmoqli detection (CRAFT/DB) ishlatadi — qiyshiq, egri, sochilgan, fotosuratdagi matnni ham topadi. Ko'cha belgilari, mahsulot etiketkalari, ekran suratlari — bu ularning maydoni.

EasyOCR — eng oson boshlash

PyTorch asosida, 80+ til. API haqiqatan ham oson:

python10 qator
import easyocr

# Model birinchi chaqiruvda yuklanadi (~100 MB), keyin keshda
reader = easyocr.Reader(["ru", "en"])

results = reader.readtext("photo_document.jpg")

for bbox, text, conf in results:
    if conf > 0.5:
        print(f"{conf:.2f}  {text}")

Har natija: bounding box + matn + confidence. Bbox — matn rasmning qayerida ekani: forma maydonlarini ajratish, hujjat strukturasini tiklash uchun asqotadi.

matn3 qator
0.98  ДОГОВОР № 45
0.87  г. Ташкент
0.91  15 января 2024 г.

Kuchli tomoni: telefon suratlari, murakkab fon, egri matn. Zaif tomoni: CPU da sekin (~10 s/sahifa), o'zbek tili rasman yo'q (rus va ingliz bor).

PaddleOCR — jadval va struktura ustasi

Baidu ning PP-OCR seriyasi. Eng qimmatli xususiyati — PP-Structure: jadvalni jadval sifatida tanib, strukturasini qaytaradi:

python9 qator
from paddleocr import PaddleOCR

# angle_cls: teskari/yon o'girilgan matnni avtomatik to'g'rilaydi
ocr = PaddleOCR(use_angle_cls=True, lang="ru")

result = ocr.ocr("scanned_page.png")
for line in result[0]:
    bbox, (text, conf) = line
    print(f"{conf:.2f}  {text}")

Jadvalli hujjat uchun PP-Structure alohida modul: jadvalni topadi, kataklarga bo'ladi, HTML/Excel qilib qaytaradi. Klassik OCR jadvalni satrma-satr "oqizib" yuborishini eslasak — bu jiddiy ustunlik.

Uchlik taqqoslash

Tesseract EasyOCR PaddleOCR
Texnologiya LSTM + CTC CRAFT + CRNN DB + CRNN (PP-OCR)
O'zbek lotin ✅ uzb ❌ ❌
O'zbek kirill ✅ uzb_cyrl ❌ ❌
Rus ✅ ✅ ✅
CPU tezligi ✅ ~1 s ❌ ~10 s ⚠️ ~5 s
GPU kerakmi Yo'q Tavsiya Tavsiya
Toza skan ✅✅ ✅ ✅
Telefon surati ⚠️ ✅✅ ✅✅
Jadval strukturasi ❌ ❌ ✅ PP-Structure
Bbox koordinatalar ✅ ✅ ✅

O'zbek tili muammosi

Muhim va achchiq fakt: EasyOCR ham, PaddleOCR ham o'zbek tilini rasman qo'llab-quvvatlamaydi.

Amaliy oqibatlar:

  • O'zbek lotin matni: en modeli harflarni o'qiydi, lekin o' g' sh ch birikmalari va diakritikalarda xato ko'p
  • O'zbek kirill: ru modeli o'qiydi, lekin ў қ ғ ҳ harflarini rus harflariga "aylantirib" yuboradi

Shuning uchun O'zbekiston hujjatlari uchun amaliy formula:

python4 qator
O'zbek matn (lotin yoki kirill)  ->  Tesseract yoki VLM
Rus matn, toza skan              ->  Tesseract (tez) 
Rus matn, telefon surati         ->  EasyOCR / PaddleOCR
Jadvalli hujjat                  ->  PaddleOCR (PP-Structure) yoki VLM

Xulosa

Tushuncha Asosiy fikr
EasyOCR Eng oson API, telefon suratlari va murakkab fon uchun; GPU siz sekin
PaddleOCR PP-Structure — jadvalni struktura bilan oladi; sanoat darajasi
O'zbek tili Ikkalasida ham rasman yo'q — uzb uchun Tesseract yoki VLM
Tanlov Toza skan → Tesseract; surat → EasyOCR/Paddle; jadval → Paddle yoki VLM

Bu bobni bepul o'qidingiz.

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

Telegramda yozish Narxlar