Ilovalarda Text Recognition — bu nima, OCR va Vision

Muallif: IT Sectr Nashr etilgan: 2026-07-18 O'qish vaqti: 10 daq

Text Recognition (OCR — Optical Character Recognition) — bu tasvirlar va video oqimidan bosma yoki qo'lyozma matnni ajratib olish texnologiyasidir. Mobil dasturlashda Text Recognition hujjatlarni raqamlashtirish, davlat raqam belgilarini aniqlash, vizitka kartalarini o'qish va matnni real vaqtda tarjima qilish uchun ishlatiladi. Asosiy mobil OCR yechimlari: ML Kit Text Recognition (Google), Vision Framework (Apple), Tesseract OCR (open-source). Google ML Kit, 2025 ma'lumotlariga ko'ra, Text Recognition V2 kadrni 10–30 ms da qayta ishlaydi, lotin alifbosida 96% va kirill alifbosida 91% aniqlik bilan.

Asosiy fikrlar

  • Text Recognition — tasvirlar va videodan matnni ajratish (OCR)
  • ML Kit Text Recognition — 45+ til, 96% aniqlik (lotin), 10–30 ms
  • Apple Vision — VNRecognizeTextRequest, 13+ til, native iOS
  • Tesseract — open-source OCR, 100+ til, 50–200 ms, CPU
  • Real-time — zamonaviy qurilmalarda CameraX/AVFoundation bilan 30 FPS gacha

Text Recognition nima: OCR tamoyillari

Text Recognition (OCR) — matn tasvirini mashina o'qiy oladigan belgilarga aylantiruvchi kompyuter ko'rish jarayonidir. OCR bosqichlardan iborat: tasvirni oldindan qayta ishlash (binarizatsiya, deskew, qiyalikni tuzatish), segmentatsiya (qatorlar, so'zlar, belgilarga bo'lish), aniqlash (har bir belgini tasniflash) va keyingi ishlov berish (lug'at bilan tekshirish, xatolarni tuzatish). Zamonaviy OCR tizimlari (ML Kit, Vision) barcha bosqichlarni birlashtirgan end-to-end neyron tarmoqlaridan foydalanadi.

OCR turlari: bosma matn (printed text) — hujjatlar, belgilar, ekranlardan mashina matnini aniqlash — aniqlik 95–99%; qo'lyozma matn (handwriting) — qo'lda yozilgan matnni aniqlash — lotin alifbosida 80–90%, kirillda 70–80% aniqlik; kontekst matni (scene text) — tabiiy sahnalardagi matn: uy raqamlari, yo'l belgilari, do'kon nomlari — perspektiv buzilishlar va yorqinlik tufayli eng murakkab.

CRNN + CTC Loss — zamonaviy OCR modellarida qo'llaniladigan arxitektura. Convolutional Recurrent Neural Network (CNN + LSTM) tasvir xususiyatlarini ajratadi, Connectionist Temporal Classification esa oldindan segmentatsiyaga ehtiyoj sezmasdan belgilar ketma-ketligini dekodlaydi. CRNN istalgan uzunlikdagi matnlar bilan ishlaydi, qiyalik va buzilishlarga chidamli. arXiv (2025) ma'lumotlariga ko'ra, CRNN modellari ICDAR 2019 benchmarkida 97.5% aniqlik beradi.

OCR YechimiAniqlikTezlikTillarPlatforma
ML Kit V296%10–30 ms45+Android, iOS
Apple Vision95%10–40 ms13+iOS, macOS
Tesseract 590%50–200 ms100+Ko'p platformali
Google Cloud Vision98%500–1000 ms200+Server (API)

Mobil qurilmalar uchun CRNN — ML Kit INT8 kvantlash bilan MobileNetV2 + CRNN modelidan foydalanadi. Model 2–5 MB (latent) joy egallaydi va TFLite Delegate orqali GPU/NPU da bajariladi. Tesseract-dan (klassik pipeline) farqli o'laroq, neyron tarmoq OCR alohida belgi segmentatsiyasini talab qilmaydi va shovqinga chidamliroq. Kamchilik: real-time uchun GPU yoki NPU talab qilinadi — sof CPU da tezlik 5–10 FPS gacha tushadi.

Android va iOS da ML Kit Text Recognition

ML Kit Text Recognition — mobil ilovalar uchun asosiy OCR vositasidir. Ikki versiyada mavjud: V2 (Latin-based — lotin, kirill, raqamlar uchun optimallashtirilgan) va V1 (Latin + CJK — yapon, xitoy, koreys, lekin sekinroq). V2 end-to-end CRNN modelidan, V1 esa eskiroq CNN + LSTM dan foydalanadi. Google CJK aniqlash zarurati bo'lmagan barcha hollar uchun V2 ni tavsiya qiladi.

ML Kit natijasining tuzilishi: Text → TextBlock → Line → Element (Word/Symbol). Har bir daraja bounding box, confidence (0..1) va recognised text ga ega. Text — fullText bilan ildiz obyekt (barcha aniqlangan matn bir qatorda). TextBlock — matnning mantiqiy bloki (paragraf, ustun). Line — matn qatori. Element — so'z yoki belgi. Noto'g'ri aniqlashlarni filtrlash uchun confidence dan foydalaning.

kotlin
// ML Kit Text Recognition V2
val recognizer = TextRecognition.getClient(
    TextRecognizerOptions.DEFAULT_OPTIONS
)

recognizer.process(inputImage)
    .addOnSuccessListener { text ->
        val fullText = text.text
        text.textBlocks.forEach { block ->
            val blockText = block.text
            val blockRect = block.boundingBox
            block.lines.forEach { line ->
                line.elements.forEach { element ->
                    val word = element.text
                    val confidence = element.confidence
                }
            }
        }
    }
    .addOnFailureListener { error -> /* error */ }

iOS da ML Kit orqali Text Recognition: API Android ga o'xshaydi, lekin InputImage o'rniga UIImage/CVPixelBuffer ishlatadi. ML Kit avtomatik ravishda Core ML Delegate orqali A12+ da Apple Neural Engine dan foydalanadi. iOS uchun ML Kit Text Recognition V2 iPhone 15 Pro da 15–30 ms tezlikni ko'rsatadi. Maksimal ishlash uchun UIImage ni uzatishdan oldin CVPixelBuffer ga aylantiring — bu konvertatsiya yukini kamaytiradi.

Apple Vision Framework: VNRecognizeTextRequest

Apple Vision Framework VNRecognizeTextRequest (iOS 13+) orqali native OCR ni ta'minlaydi. Vision OCR Apple Neural Engine (ANE) dan foydalanadi va qo'shimcha SDK talab qilmaydi. 13 tilni qo'llab-quvvatlaydi (EN, FR, IT, DE, ES, PT, ZH, JP, KO, RU, AR, TH, VI). Vision avtomatik ravishda matn tilini aniqlaydi (language correction) va bir kadrda bir nechta tilni qo'llab-quvvatlaydi. Tezlik — A16+ da 10–40 ms.

Vision OCR xususiyatlari: recognitionLevel (fast vs accurate), automaticLanguageDetection, customWords (maxsus atamalarni qo'shish), top candidates qo'llab-quvvatlashi (noaniq matn uchun bir nechta aniqlash varianti). Fast rejimi 10–20 ms da 90% aniqlik, accurate esa 30–50 ms da 95% aniqlik beradi. Ishlab chiqarishda confidence >= 0.5 bilan filtrlash bilan accurate dan foydalaning.

swift
import Vision

let request = VNRecognizeTextRequest { request, error in
    guard let observations = request.results as? [VNRecognizedTextObservation] else { return }
    for observation in observations {
        let topCandidate = observation.topCandidates(1).first
        let text = topCandidate?.string ?? ""
        let confidence = topCandidate?.confidence ?? 0
        let boundingBox = observation.boundingBox
    }
}
request.recognitionLevel = .accurate
request.usesLanguageCorrection = true

let handler = VNImageRequestHandler(cgImage: cgImage, orientation: .up)
try handler.perform([request])

iOS da Vision vs ML Kit: Vision eski qurilmalarda (iPhone X–13) o'rnatilgan ANE tufayli tezroq. ML Kit millionlab scene text tasvirlari ustida o'qitilgan Google modeli tufayli murakkab sahnalarda (buzilishlar, qiyaliklar, yorqinliklar) aniqroq. Vision alohida belgilar uchun confidence ni qo'llab-quvvatlamaydi (faqat so'zlar uchun), bu filtrlashni cheklaydi. Hujjatlar uchun — Vision (tezroq), scene text uchun — ML Kit (aniqroq).

Tesseract OCR: open-source alternativa

Tesseract OCR — HP tomonidan ishlab chiqilgan (1985–1998) va Google tomonidan rivojlantirilgan (2006+) open-source matnni aniqlash mexanizmidir. Tesseract 5 (LSTM-based) CRNN neyron tarmoq arxitekturasidan foydalanadi, bu Tesseract 4 (klassik + LSTM) bilan solishtirganda sezilarli aniqlik o'sishini beradi. Tesseract 100+ tilni, jumladan kirill, arab, ivrit va CJK ni qo'llab-quvvatlaydi. Android uchun — tess-two (fork), iOS uchun — swift-tesseract.

Tesseract ning kamchiliklari: kadr uchun 50–200 ms tezlik (CPU-only, GPU tezlashuvi yo'q), mexanizmga uzatishdan oldin tasvirni oldindan qayta ishlashni talab qiladi (binarizatsiya, deskew, orientatsiyani aniqlash), o'rnatilgan matn deteksiyasi yo'q — tasvir maydonini uzatish kerak (ko'pincha OpenCV Text Detection yoki EAST bilan birga). Tesseract toza hujjatlarda 90% va scene text da ~70% aniqlik beradi.

Qachon Tesseract ni tanlash kerak: agar ilova Google Play bo'lmagan qurilmalarda (Huawei) ishlasa, noyob tillarni (sanskrit, ivrit) qo'llab-quvvatlash zarur bo'lsa yoki OCR pipeline ini to'liq sozlash talab qilinsa (o'z shriftlarida o'qitish). Boshqa barcha hollarda ML Kit yoki Vision tezroq, aniqroq va kamroq kod talab qiladi. Tesseract faqat uchinchi tomon SDK lariga cheklovlar mavjud bo'lganda oqlangan tanlovdir.

kotlin
// Tesseract OCR tess-two orqali
val tess = TessBaseAPI()
tess.init(dataPath, "rus+eng")
tess.pageSegMode = TessBaseAPI.PageSegMode.PSM_AUTO

val bitmap = BitmapFactory.decodeResource(resources, R.drawable.text)
val gray = Bitmap.createBitmap(bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888)
OpenCV.process(bitmap, gray) // Binarizatsiya + deskew

tess.setImage(gray)
val result = tess.utF8Text
tess.recycle()

Tesseract uchun oldindan qayta ishlash majburiy: grayscale ga aylantirish, binarizatsiya (Otsu yoki Adaptive), qiyalikni tuzatish (deskew), shovqinni olib tashlash (median blur). Oldindan qayta ishlashsiz Tesseract ning aniqligi 50–60% gacha tushadi. Qayta ishlash uchun OpenCV dan foydalaning: Imgproc.cvtColor → Imgproc.threshold → Imgproc.erode/dilate → Core.rotate (deskew). Bir tekis fonli hujjatlar uchun binarizatsiya yetarli, scene text uchun — to'liq pipeline.

OCR uchun tasvirlarni oldindan qayta ishlash

Tasvir sifati — OCR aniqligining asosiy omilidir. ML Kit va Vision o'rnatilgan oldindan qayta ishlashga ega, ammo murakkab hollarda (qorong'i fotosuratlar, xiralik, yorqinlik) qo'shimcha ishlov berish aniqlikni 10–15% oshiradi. Asosiy texnikalar: kontrastni oshirish (CLAHE), xiralikni bartaraf etish (unsharp mask), perspektivni tuzatish (perspective transform), soya va yorqinliklarni olib tashlash.

CLAHE (Contrast Limited Adaptive Histogram Equalization) — kontrast bilan cheklangan adaptiv histogram tenglashtirish, mahalliy hududlarning kontrastini yaxshilaydi. CLAHE notekis yoritilgan hujjat fotosuratlari uchun samarali (bir qismi soyada, bir qismi yorug'likda). clipLimit=2.0 va tileGridSize=(8,8) bilan OpenCV Core.createCLAHE OCR uchun optimal natija beradi. CLAHE dan keyin qorong'i hujjatlarda ML Kit aniqligi 70% dan 88% gacha ko'tariladi.

Perspektivni tuzatish — burchak ostida olingan hujjat fotosuratlari uchun majburiy. Hujjatni tekislash uchun OpenCV findHomography + warpPerspective dan foydalaning. Hujjat chegaralarini avtomatik aniqlash uchun Canny edge detection + findContours + approxPolyDP dan foydalaning. Perspektivni tuzatishdan keyin OCR aniqligi >30° burchak ostidagi suratlar uchun 20–30% ga oshadi.

kotlin
// CLAHE + OpenCV preprocessing
val mat = Mat()
Utils.bitmapToMat(bitmap, mat)
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_RGB2GRAY)

val clahe = Imgproc.createCLAHE(2.0, Size(8.0, 8.0))
clahe.apply(mat, mat)

Imgproc.GaussianBlur(mat, mat, Size(3.0, 3.0), 0.0)
Imgproc.threshold(mat, mat, 0.0, 255.0, Imgproc.THRESH_BINARY or Imgproc.THRESH_OTSU)

val processedBitmap = Bitmap.createBitmap(mat.cols(), mat.rows(), Bitmap.Config.ARGB_8888)
Utils.matToBitmap(mat, processedBitmap)

OCR dan oldin matn deteksiyasi — scene text uchun OCR ga uzatishdan oldin EAST (Efficient Accurate Scene Text Detector) yoki CRAFT (Character Region Awareness for Text Detection) dan foydalaning. EAST sahnadagi matnning bounding box ini 5–15 ms da aniqlaydi. CRAFT aniqroq (97%), lekin sekinroq (50–100 ms). Matn deteksiyasi matnsiz hududlarni kesish va OCR ga faqat tegishli qismlarni uzatish imkonini beradi, bu umumiy ishlov berishni tezlashtiradi.

OCR ni mobil ilovalarda qo'llash

Hujjatlarni skanerlash — OCR ning eng ommaviy qo'llanilishi. Skanerlash ilovalari (CamScanner, Adobe Scan, Google Drive) hujjat fotosuratlaridan matnni aniqlash uchun ML Kit yoki Vision dan foydalanadi. Odatdagi pipeline: hujjat chegaralarini deteksiya qilish → perspektivni tuzatish → CLAHE ishlov berish → OCR → formatlash (PDF, DOCX). ML Kit Text Recognition V2 A4 sahifasini 100–200 ms da qayta ishlaydi.

Matnni real vaqtda tarjima qilish — OCR va mashina tarjimasining kombinatsiyasi. Google Translate, Microsoft Translator, Yandex Translate kameradan matnni aniqlash uchun ML Kit yoki Vision dan foydalanadi va tarjimani asl matn ustiga qo'yadi (AR tarjima). Talab: qulay UX uchun latency < 200 ms. ML Kit V2 + NNAPI kadr uchun 30–80 ms beradi, tarjima va render uchun zaxira qoldiradi.

Avtomatik ma'lumot kiritish — vizitkalar, bank kartalari, shaxsiy guvohnomalardan ma'lumotlarni ajratish uchun OCR. ML Kit matnni aniqlaydi, keyin post-processing tuzilmani tahlil qiladi: ism, telefon, email (vizitkalar) yoki karta raqami, muddat, CVV (to'lov kartalari). Vizitkalar uchun OCR dan keyin muntazam ifodalardan foydalaning. Bank kartalari uchun — ixtisoslashtirilgan ML modellari (pullik, ~99% aniqlik).

swift
// OCR + AR tarjima (soddalashtirilgan)
let request = VNRecognizeTextRequest { req, _ in
    guard let results = req.results as? [VNRecognizedTextObservation] else { return }
    for observation in results {
        let text = observation.topCandidates(1).first?.string ?? ""
        let rect = observation.boundingBox
        // Tarjima va AR render to'rtburchak ustida
        DispatchQueue.main.async {
            overlayView.showTranslation(text, at: rect)
        }
    }
}
request.recognitionLevel = .fast
request.usesLanguageCorrection = false

Ko'rish qobiliyati cheklangan odamlar uchun OCR — Assistive Technology: ilovalar paketlar, menyular, belgilardan matnni ovozli o'qishni ta'minlaydi. ML Kit OCR + Text-to-Speech (Android TTS / iOS AVSpeechSynthesizer) dan foydalanadi. Asosiy talab — past kechikish bilan real vaqt (< 100 ms). Seeing AI (Microsoft) va Envision AI bu yondashuvdan foydalanadi. Mavjudlik ilovalari uchun fast recognition rejimidan foydalaning va confidence bo'yicha filtrlashmang — foydalanuvchi uchun har qanday matn muhim.

Ko'p beriladigan savollar

Mobil ilovalarda Text Recognition (OCR) nima?

Text Recognition (OCR) — ilovaga fotosuratlar va videodan matnni "o'qish" imkonini beruvchi texnologiya. Smartfon kamerasi tasvirni oladi, qurilmadagi neyron tarmoq belgilarni aniqlaydi va mashina o'qiy oladigan matnni qaytaradi. Mobil ilovalarda OCR hujjatlarni skanerlash, kamera orqali tarjima qilish, vizitkalardan ma'lumot kiritish va ko'rish qobiliyati cheklangan odamlar uchun qulay interfeyslar yaratish uchun ishlatiladi.

Android uchun qaysi OCR yaxshiroq: ML Kit yoki Tesseract?

ML Kit Text Recognition — Android uchun eng yaxshi tanlov: 96% aniqlik, 10–30 ms tezlik, 45 til, NNAPI orqali GPU tezlashuvi, istalgan yo'nalishdagi matnni topadi. Tesseract — open-source alternativa (90% aniqlik, 100+ til, CPU), Google Play bo'lmagan qurilmalar yoki noyob tillar uchun mos. Loyihalarning 95 foizida ML Kit ni tanlang — u tezroq, aniqroq va tasvirni oldindan qayta ishlashni talab qilmaydi.

Mobil qurilmada OCR uchun internet kerakmi?

Yo'q, ML Kit Text Recognition, Apple Vision va Tesseract to'liq on-device ishlaydi. ML Kit modelni birinchi ishga tushirishda yuklab olishi mumkin (downloaded mode), keyin esa oflayn ishlaydi. Apple Vision iOS ga o'rnatilgan, internet talab qilmaydi. Tesseract to'liq oflayn. Cloud OCR (Google Cloud Vision, AWS Textract) internet orqali ishlaydi, lekin mobil real vaqt ilovalarida ishlatilmaydi.

ML Kit Text Recognition qaysi tillarni qo'llab-quvvatlaydi?

ML Kit Text Recognition V2 lotin va kirill guruhidan 45+ tilni qo'llab-quvvatlaydi: ingliz, rus, nemis, fransuz, ispan, italyan, portugal, polyak, ukrain, rumin, turk va boshqalar. V1 (CJK) qo'shimcha ravishda xitoy, yapon, koreys tillarini qo'llab-quvvatlaydi. To'liq ro'yxat TextRecognizerOptions hujjatlarida. Arab yoki ivrit tilini aniqlash uchun Tesseract dan foydalaning (>100 til).

Hujjat fotosuratlarida OCR aniqligini qanday yaxshilash mumkin?

Asosiy usullar: hujjatni tekislash (OpenCV orqali perspective correction), kontrastni yaxshilash (CLAHE), xiralikni bartaraf etish (unsharp mask), yaxshi yoritish (continuous auto-exposure), kamera stabilizatsiyasi (OIS/EIS). ML Kit asosiy buzilishlarni o'zi qayta ishlaydi, lekin perspektiv buzilishlari bo'lgan hujjatlar uchun (>30°) oldindan qayta ishlash aniqlikni 20–30% oshiradi. Video uchun fast recognition rejimidan foydalaning.

Xulosa

  • Text Recognition — mobil qurilmalarda OCR: bosma, qo'lyozma, scene text
  • ML Kit V2 — 96% aniqlik, 45+ til, 10–30 ms, GPU/NPU tezlashuvi
  • Apple Vision — native iOS OCR (iOS 13+), 13 til, ANE orqali
  • Tesseract 5 — open-source, 100+ til, 50–200 ms (CPU), Huawei uchun fallback
  • Oldindan qayta ishlash — CLAHE, deskew, perspektivni tuzatish aniqlikni 10–30% oshiradi
  • Real-time — ML Kit yoki Vision bilan CameraX/AVFoundation orqali 30 FPS gacha
  • On-device — barcha hisoblar lokal, ma'lumot maxfiyligi kafolatlangan

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing