Text Recognition alkalmazásokban — mi ez, OCR és Vision

Szerző: IT Sectr Megjelenés: 2026-07-18 Olvasási idő: 10 perc

Text Recognition (OCR — Optical Character Recognition) — ez a technológia nyomtatott vagy kézzel írt szöveg kinyerésére képekből és videófolyamból. Mobilfejlesztésben a Text Recognition-t dokumentumok digitalizálására, rendszámtáblák felismerésére, névjegykártyák olvasására és szöveg valós idejű fordítására használják. A fő mobil OCR-megoldások: ML Kit Text Recognition (Google), Vision Framework (Apple), Tesseract OCR (open-source). A Google ML Kit, 2025 adatai szerint a Text Recognition V2 egy képkockát 10–30 ms alatt dolgoz fel 96%-os pontossággal latin írásnál és 91%-os pontossággal cirill írásnál.

Főbb pontok

  • Text Recognition — szöveg kinyerése képekből és videóból (OCR)
  • ML Kit Text Recognition — 45+ nyelv, 96% pontosság (latin), 10–30 ms
  • Apple Vision — VNRecognizeTextRequest, 13+ nyelv, natív iOS
  • Tesseract — open-source OCR, 100+ nyelv, 50–200 ms, CPU
  • Real-time — akár 30 FPS CameraX/AVFoundation segítségével modern eszközökön

Mi az a Text Recognition: OCR elvek

Text Recognition (OCR) — számítógépes látás folyamata, amely a szöveg képét géppel olvasható karakterekké alakítja. Az OCR szakaszokból áll: kép előfeldolgozása (binarizálás, deskew, dőlés korrigálása), szegmentálás (sorokra, szavakra, karakterekre bontás), felismerés (minden karakter osztályozása) és utófeldolgozás (szótárral való ellenőrzés, hibák javítása). A modern OCR-rendszerek (ML Kit, Vision) end-to-end neurális hálózatokat használnak, amelyek egyesítik az összes szakaszt.

OCR típusai: nyomtatott szöveg (printed text) — gépi szöveg felismerése dokumentumokból, táblákról, képernyőkről — pontosság 95–99%; kézzel írt szöveg (handwriting) — kézírás felismerése — pontosság 80–90% latin, 70–80% cirill írásnál; kontextus szöveg (scene text) — szöveg természetes jelenetekben: házszámok, útjelző táblák, üzletnevek — a legnehezebb a perspektíva torzulások és tükröződések miatt.

CRNN + CTC Loss — a modern OCR-modellekben használt architektúra. A Convolutional Recurrent Neural Network (CNN + LSTM) kinyeri a kép jellemzőit, a Connectionist Temporal Classification pedig dekódolja a karaktersorozatot anélkül, hogy előzetes szegmentálásra lenne szükség. A CRNN bármilyen hosszúságú szöveggel működik, ellenáll a dőléseknek és torzulásoknak. Az arXiv (2025) szerint a CRNN-modellek 97.5%-os pontosságot érnek el az ICDAR 2019 benchmarkon.

OCR MegoldásPontosságSebességNyelvekPlatform
ML Kit V296%10–30 ms45+Android, iOS
Apple Vision95%10–40 ms13+iOS, macOS
Tesseract 590%50–200 ms100+Többplatformos
Google Cloud Vision98%500–1000 ms200+Szerver (API)

CRNN mobileszközökhöz — Az ML Kit a MobileNetV2 + CRNN modellt használja INT8 kvantálással. A modell 2–5 MB-ot (latent) foglal, és GPU/NPU-n fut a TFLite Delegate-en keresztül. A Tesseract-tól (klasszikus pipeline) eltérően a neurális hálózatos OCR nem igényel külön karakterszegmentálást, és ellenállóbb a zajjal szemben. Hátrány: GPU-t vagy NPU-t igényel a valós idejű működéshez — tiszta CPU-n a sebesség 5–10 FPS-re csökken.

ML Kit Text Recognition Androidon és iOS-en

ML Kit Text Recognition — a fő OCR-eszköz mobilalkalmazásokhoz. Két verzióban érhető el: V2 (Latin-based — latin, cirill, számjegyekre optimalizálva) és V1 (Latin + CJK — japán, kínai, koreai, de lassabb). A V2 end-to-end CRNN modellt használ, a V1 — régebbi CNN + LSTM-et. A Google a V2-t ajánlja minden esetben, kivéve ha CJK-felismerésre van szükség.

Az ML Kit eredményének szerkezete: Text → TextBlock → Line → Element (Word/Symbol). Minden szint rendelkezik bounding box-szal, confidence-szel (0..1) és recognised text-tel. Text — gyökérobjektum fullText-tel (az összes felismert szöveg egy sorban). TextBlock — szöveg logikai blokkja (bekezdés, oszlop). Line — szövegsor. Element — szó vagy szimbólum. Használja a confidence-t a pontatlan felismerések szűrésére.

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 */ }

Text Recognition iOS-en ML Kitchen keresztül: API hasonló az Androidhoz, de UIImage/CVPixelBuffer-t használ az InputImage helyett. Az ML Kit automatikusan használja az Apple Neural Engine-t A12+ esetén a Core ML Delegate-en keresztül. Az iOS-en az ML Kit Text Recognition V2 15–30 ms sebességet mutat iPhone 15 Pro-n. A maximális teljesítmény érdekében konvertálja a UIImage-t CVPixelBuffer-ré küldés előtt — ez csökkenti a konverziós többletterhelést.

Apple Vision Framework: VNRecognizeTextRequest

Apple Vision Framework natív OCR-t biztosít a VNRecognizeTextRequest (iOS 13+) segítségével. A Vision OCR az Apple Neural Engine-t (ANE) használja, és nem igényel további SDK-kat. 13 nyelvet támogat (EN, FR, IT, DE, ES, PT, ZH, JP, KO, RU, AR, TH, VI). A Vision automatikusan meghatározza a szöveg nyelvét (language correction), és több nyelvet is támogat egyetlen képkockában. Sebesség — 10–40 ms A16+-on.

A Vision OCR jellemzői: recognitionLevel (fast vs accurate), automaticLanguageDetection, customWords (specifikus kifejezések hozzáadása), top candidates támogatás (több felismerési variáns homályos szöveghez). A fast mód 90% pontosságot ad 10–20 ms alatt, az accurate — 95%-ot 30–50 ms alatt. Éles környezetben használja az accurate módot confidence >= 0.5 szűréssel.

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])

Vision vs ML Kit iOS-en: A Vision gyorsabb régebbi eszközökön (iPhone X–13) a beépített ANE-nek köszönhetően. Az ML Kit pontosabb összetett jelenetekben (torzulások, dőlések, tükröződések) a Google modelljének köszönhetően, amelyet milliónyi scene text képen tanítottak. A Vision nem támogatja a confidence-t egyedi karakterekhez (csak szavakhoz), ami korlátozza a szűrést. Dokumentumokhoz — Vision (gyorsabb), scene text-hez — ML Kit (pontosabb).

Tesseract OCR: open-source alternatíva

Tesseract OCR — open-source szövegfelismerő motor, amelyet a HP fejlesztett (1985–1998) és a Google folytat (2006+). A Tesseract 5 (LSTM-based) a CRNN neurális hálózati architektúrát használja, ami jelentős pontosságnövekedést ad a Tesseract 4-hez (klasszikus + LSTM) képest. A Tesseract 100+ nyelvet támogat, beleértve a cirillt, arabot, héberet és a CJK-t. Androidhoz — tess-two (fork), iOS-hez — swift-tesseract.

A Tesseract hátrányai: sebesség 50–200 ms képkockánként (CPU-only, nincs GPU-gyorsítás), a kép előfeldolgozását igényli (binarizálás, deskew, orientáció meghatározása) a motornak való átadás előtt, nincs beépített szövegdetekció — a képterületet kell átadni (gyakran az OpenCV Text Detection vagy EAST párjában). A Tesseract 90% pontosságot ad tiszta dokumentumokon és ~70%-ot scene text-en.

Mikor válassza a Tesseract-ot: ha az alkalmazás Google Play nélküli eszközökön fut (Huawei), ritka nyelvek (szanszkrit, héber) támogatása szükséges, vagy az OCR pipeline teljes testreszabása (saját betűtípusokon való tanítás) szükséges. Minden más esetben az ML Kit vagy a Vision gyorsabb, pontosabb és kevesebb kódot igényel. A Tesseract csak akkor indokolt választás, ha korlátozások vannak a harmadik féltől származó SDK-kra.

kotlin
// Tesseract OCR tess-two-n keresztül
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) // Binarizálás + deskew

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

Előfeldolgozás a Tesseract-hoz kötelező: konvertálás grayscale-be, binarizálás (Otsu vagy Adaptive), dőlés korrigálása (deskew), zaj eltávolítása (median blur). Előfeldolgozás nélkül a Tesseract pontossága 50–60%-ra csökken. Használja az OpenCV-t az előfeldolgozáshoz: Imgproc.cvtColor → Imgproc.threshold → Imgproc.erode/dilate → Core.rotate (deskew). Egyenletes hátterű dokumentumokhoz a binarizálás elegendő, scene text-hez — teljes pipeline.

Képek előfeldolgozása OCR-hez

Képminőség — az OCR pontosságának fő tényezője. Az ML Kit és a Vision beépített előfeldolgozással rendelkezik, de összetett esetekben (sötét fotók, elmosódás, túlvilágítás) a további feldolgozás 10–15%-kal növeli a pontosságot. Fő technikák: kontraszt növelése (CLAHE), elmosódás eltávolítása (unsharp mask), perspektíva korrekció (perspective transform), árnyékok és tükröződések eltávolítása.

CLAHE (Contrast Limited Adaptive Histogram Equalization) — kontrasztkorlátozott adaptív hisztogram-kiegyenlítés, amely javítja a helyi területek kontrasztját. A CLAHE hatékony egyenetlen megvilágítású dokumentumfotókhoz (egy rész árnyékban, egy rész fényben). Az OpenCV Core.createCLAHE clipLimit=2.0 és tileGridSize=(8,8) paraméterekkel optimális eredményt ad OCR-hez. A CLAHE után az ML Kit pontossága sötét dokumentumokon 70%-ról 88%-ra nő.

Perspektíva korrekció — kötelező a szögben fotózott dokumentumokhoz. Használja az OpenCV findHomography + warpPerspective funkciót a dokumentum igazításához. A dokumentum széleinek automatikus észleléséhez használja a Canny edge detection + findContours + approxPolyDP-t. A perspektíva korrekció után az OCR pontossága 20–30%-kal nő a >30°-os szögben készült felvételeknél.

kotlin
// CLAHE + OpenCV előfeldolgozás
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)

Szövegdetekció OCR előtt — scene text-hez használja a EAST (Efficient Accurate Scene Text Detector) vagy a CRAFT (Character Region Awareness for Text Detection) eszközt az OCR-nek való átadás előtt. A EAST 5–15 ms alatt érzékeli a szöveg bounding box-át a jelenetben. A CRAFT pontosabb (97%), de lassabb (50–100 ms). A szövegdetekció lehetővé teszi a szöveg nélküli területek levágását és csak a releváns részek OCR-be küldését, ami felgyorsítja a teljes feldolgozást.

OCR alkalmazása mobilalkalmazásokban

Dokumentumok szkennelése — az OCR legelterjedtebb alkalmazása. A szkennelő alkalmazások (CamScanner, Adobe Scan, Google Drive) az ML Kit vagy a Vision segítségével ismerik fel a szöveget dokumentumfotókról. Tipikus pipeline: dokumentum széleinek észlelése → perspektíva korrekció → CLAHE feldolgozás → OCR → formázás (PDF, DOCX). Az ML Kit Text Recognition V2 egy A4-es oldalt 100–200 ms alatt dolgoz fel.

Szöveg valós idejű fordítása — az OCR és a gépi fordítás kombinációja. A Google Translate, Microsoft Translator, Yandex Translate az ML Kit vagy a Vision segítségével ismeri fel a szöveget a kamerából, és a fordítást az eredeti szöveg fölé helyezi (AR fordítás). Követelmény: latency < 200 ms a kényelmes UX-hez. Az ML Kit V2 + NNAPI 30–80 ms-ot ad képkockánként, tartalékot hagyva a fordításra és renderelésre.

Automatikus adatbevitel — OCR adatok kinyerésére névjegykártyákról, bankkártyákról, személyazonosító okmányokról. Az ML Kit felismeri a szöveget, majd az utófeldolgozás elemzi a struktúrát: név, telefon, e-mail (névjegykártyák) vagy kártyaszám, lejárati idő, CVV (fizetési kártyák). Névjegykártyákhoz használjon reguláris kifejezéseket OCR után. Bankkártyákhoz — speciális ML-modellek (fizetős, ~99% pontosság).

swift
// OCR + AR fordítás (egyszerűsített)
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
        // Fordítás és AR renderelés téglalap felett
        DispatchQueue.main.async {
            overlayView.showTranslation(text, at: rect)
        }
    }
}
request.recognitionLevel = .fast
request.usesLanguageCorrection = false

OCR látássérült emberek számára — Segítő Technológia: az alkalmazások felolvassák a szöveget csomagolásokról, menükből, táblákról. ML Kit OCR + Text-to-Speech (Android TTS / iOS AVSpeechSynthesizer) használatával. Kulcskövetelmény — valós idejű működés alacsony késleltetéssel (< 100 ms). A Seeing AI (Microsoft) és az Envision AI ezt a megközelítést használja. Hozzáférhetőségi alkalmazásokhoz használja a fast recognition módot, és ne szűrjön confidence alapján — minden szöveg fontos a felhasználónak.

Gyakran Ismételt Kérdések

Mi az a Text Recognition (OCR) mobilalkalmazásokban?

Text Recognition (OCR) — technológia, amely lehetővé teszi az alkalmazás számára, hogy „olvassa" a szöveget fényképekről és videókról. Az okostelefon kamerája rögzíti a képet, az eszközön lévő neurális hálózat felismeri a karaktereket, és géppel olvasható szöveget ad vissza. Mobilalkalmazásokban az OCR-t dokumentumok szkennelésére, kamerával történő fordításra, névjegykártyák adatainak bevitelére és látássérült emberek számára elérhető interfészek létrehozására használják.

Melyik OCR jobb Androidra: ML Kit vagy Tesseract?

ML Kit Text Recognition — a legjobb választás Androidra: 96% pontosság, 10–30 ms sebesség, 45 nyelv, GPU-gyorsítás NNAPI-n keresztül, bármilyen tájolású szöveget megtalál. A Tesseract — open-source alternatíva (90% pontosság, 100+ nyelv, CPU), alkalmas Google Play nélküli eszközökhöz vagy ritka nyelvekhez. A projektek 95%-ában válassza az ML Kit-et — gyorsabb, pontosabb, és nem igényel kép-előfeldolgozást.

Szükséges-e internet az OCR-hez mobileszközön?

Nem, az ML Kit Text Recognition, az Apple Vision és a Tesseract teljesen on-device működik. Az ML Kit letöltheti a modellt az első indításkor (downloaded mode), ezután offline működik. Az Apple Vision be van építve az iOS-be, nem igényel internetet. A Tesseract teljesen offline. A Cloud OCR (Google Cloud Vision, AWS Textract) interneten keresztül működik, de nem használják valós idejű mobilalkalmazásokban.

Milyen nyelveket támogat az ML Kit Text Recognition?

Az ML Kit Text Recognition V2 45+ nyelvet támogat a latin és cirill csoportból: angol, orosz, német, francia, spanyol, olasz, portugál, lengyel, ukrán, román, török és mások. A V1 (CJK) ezen felül támogatja a kínait, japánt, koreait. A teljes lista a TextRecognizerOptions dokumentációjában található. Arab vagy héber felismeréséhez használja a Tesseract-ot (>100 nyelv).

Hogyan javítható az OCR pontossága dokumentumfotókon?

Fő módszerek: a dokumentum igazítása (perspektíva korrekció OpenCV-vel), kontraszt javítása (CLAHE), elmosódás eltávolítása (unsharp mask), jó megvilágítás (continuous auto-exposure), kamera stabilizálása (OIS/EIS). Az ML Kit maga kezeli az alapvető torzulásokat, de a perspektivikus torzulásokkal rendelkező dokumentumoknál (>30°) az előfeldolgozás 20–30%-kal növeli a pontosságot. Videóhoz használja a fast recognition módot.

Összefoglalás

  • Text Recognition — OCR mobileszközökön: nyomtatott, kézzel írt, scene text
  • ML Kit V2 — 96% pontosság, 45+ nyelv, 10–30 ms, GPU/NPU gyorsítás
  • Apple Vision — natív iOS OCR (iOS 13+), 13 nyelv, ANE-n keresztül
  • Tesseract 5 — open-source, 100+ nyelv, 50–200 ms (CPU), fallback Huawei-hez
  • Előfeldolgozás — CLAHE, deskew, perspektíva korrekció 10–30%-kal növeli a pontosságot
  • Real-time — akár 30 FPS CameraX/AVFoundation segítségével ML Kit vagy Vision használatával
  • On-device — minden számítás lokális, adatvédelem garantált

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is