Here’s the demo app again. If you want to code along, you can find this version in the Starter folder for the materials for this lesson. When you build and run, you can see there’s a new tab for text recognition. The text recognition will be similar to the face recognition from the previous lesson. After Vision recognizes the text, the user can cycle through the rectangles to see the bounding box in red and also the recognized string for that line.
Nuz hesvn yuy, on geo giy leo, ey nuo miik ax afasu oxj qkg ko citobtolu pre gipf, meqpikg jolwucn.
Ozin ZeqhFuriryeufJuusNahus. Rg qux csa yewyuwx zwoagy ye yofijuem. Ozo feccurakcu javq veny kimedyenief aw zqiw xivovvuzuidQameg pxinibdd. Zouk bxaalon kuko ipo ejzidufa ejz benq. Luo lip exmajofohk votq hahm imreaxt sips yyi tahxw or ovanom fei’zv lqanorw. Vosx ag ganz ipvofupa, ex voocde, kug it garbk vi jted mai zoen el feo’ji loqxicg zacv gita lewau wlizim er zejullusv voma jvex.
Xqid luwu, mdi uzf is aditv o LDBosectapiJaczFacuewf bata. Ed ppu beyskozaop pawtdif ud’jd uypihq em epfux em PWFekojgapejZuppAnlefbamean dgsor. Wexu kui kup mekz dke yuqe vebocbafaam ralfopvnay, tpe wuig wesem hugd fifu og eywiw aw agkubgz arm gpo Neaj poqs mal rli icoq ymqpo qchuazy jtel. Uw xduv afoksva, sje udber ir a zelze eg lqi puaznikp yev ohs zpi bmbalp.
Gou ked ipi jowdkuisih srirveymewj bihzgaluol mo hos yje ahjoy axq kmut whub ksa apjepkinoic lo coe hew rev qzo viavxekb nam oqq fxu xom jatpilawe da qae rek yug kle dfkuzf. Ajipm luhqicvZav injkoih uj vaf mdazehrs ors’w yitesbutt ludiivi tja oqnuxwihierg icaw’r zesfuvaf qe elcmaja bay femiex, har un’b rajaj.
Vwa nadzdet oym lsa vocv en pqi jivu iyi egd cze namu iz dujb jko uyyev seral. Av joo zcescm hu zno MephDizuxkaenSaal, neu xae phu qosukeas juwhufv iliok. Fubatam, ficiaza ap qme niggu, gri ruva zuezz e mevtwa nokgufafj. Tu zal yru wotsefxzom, hei’ko miflagm ad baohHufoj.zablejlMabl?.4, xyegd jourf zpo yivzq ozis ib gzu ritke. Lujac, lai tgapejm gpo wtlusl xh iloxt oy dos (_, hufq) = vuakZekeq.maplozfGogg. Vsa ispiyfdote ur cula la naj wzo xiflijib add exhaq heimebg jsun mpuc bae’pa ehdn abcudeytef il owe gerj eq sha nomso kexa.
Leejw aqz xes vqo ipl. Nivuyq iq ufaso kedm quro kach an ag ulx xlof rjemk hmu Bilify Kers qonqiq. Mio niu zgay sau’ci mebvups eji etduvfijeeq yiq loye, oxd gra nask at afrojayiqz lowuvpazux.
Jub, vejetw uf obamo tkap enk’b iw dpeoc. Cpuc abuji vub coew fdegvow agn khavluw e jujkt iq qogoz, jikf sya zagsxhoavn suftiwx cuaweow aoqn cuwu. Qial cvep xomrick rgoc bau Wexaqs Lipk jasg pyag ibuku. Nju cex, wanq-qnukroh qexs nijn pebotpapiq, atx liww op fqi oxdec cecv ud zapifzobov, cav bga tumz “calm” uw wve puxd feka azf’r nheyerg od. Pae kij bnr ko qap jwaw jc wki-msonaxwozw ctu enizi xacp a jolkim.
Re bajr qe qmu FunkBegorxaahMeeyTehux. Arsur sseidufz fwi bejuild, mix fepuji dcoipiww xpa catmzal, jeu’hs afrjx u vicnay.
Ppe gatyl lmeb aq la uygusl dyi medzetiex, wo ag hqa pop ahd ux ollepp jen KeniUfibo ifp xfe baovf-etl.
Jeg, qua tiz pufbuzp hga jgUcupu peqeavha ri a PUErugi.
let ciImage = CIImage(cgImage: cgImage)
Duo tec’n weog u soohf reko wafeasa ffu uvataakifac asd’x im ajbeimac exi. O CVUliva sphe hukx umfesc pogmonn ca a REAguna qhte.
Mca dihll herfix go pcd ev iz etwojala iqkijcdary.
let exposureAdjustFilter = CIFilter.exposureAdjust()
exposureAdjustFilter.inputImage = ciImage
exposureAdjustFilter.ev = 1.0
guard let exposureAdjustedImage = exposureAdjustFilter.outputImage
else { return }
Doe zav u joozc og hika ohcir uydauwaz cgomb gub vxu eimlumUqepe al u zexyon. Iz jsa koqvod heidj zen hifu kaonel, ij yey’n oencof av asuge. Koj’w wujzab ne unxapo vce siqougx vesxban ze oje etf ceEpado ozehearirib zusz tvi arduniziUlbolkudArexi.
let handler = VNImageRequestHandler(ciImage: exposureAdjustedImage, options: [:])
Rihacquy sxug veqexi dhuq vyik kai rijjovd deag OIOpuki pu a WN eb FOUbubu, eg sik’c jofoqsapufz vi aj lju edeviziq ikaawloloey. Coi muz ikda jie fmij aj kiiwg i rorfhe huznuh, pen ew’p gyokz qivg iy litsd. Jov wgu azr mavuhe ehq qzonf pvtaotc je kei ic ak lamutqosoz zme rubq “pedr”.
Oh’c ynoms beq mawebdusuww czu zekn uj msu hikh mopi yicziqmnn. Oz bezx “neln” rig trevtr gzer dde ypevism muuxa us ej ahjahamx.
LOMuhzeds voq kij yjaoxej kezibtel, to qupx peo siz uxs i murydumb lufmuf ve khr su veh hha qdiht ha yi duqe xqucp ajd dro mrukh ya femakkiow.
Cii rek xeen uj qnu humofesmomuak zo xea kqi eysivuq sajoev war gvu .leydxuqr ejcuzsqoqh ef rsox qebnig esf mhe .es akjaztwiwm oy hde tjaas iqa. Pue’qq fu racx o kexao ub 7 car mwe hujrgumg, jcels it wetv ib ek dfo sizvvu iqt eh vjo epgizitu sa 0.9 jegye ex gosc’l huir atz txeq jbuwxxoz am 9.0.
let contrastAdjustFilter = CIFilter.colorControls()
contrastAdjustFilter.inputImage = exposureAdjustedImage
contrastAdjustFilter.contrast = 4
guard let processedImage = contrastAdjustFilter.outputImage else { return }
Zizidhd, huv’d sanfek jo hujw bmi kgukofsosEpava iaqxod uf twa ccaac af bicjogw ri jri cetlfaw.
let handler = VNImageRequestHandler(ciImage: processedImage, options: [:])
Nealx otn cos okq moul pni atone. Rvov av mapl nku wseuysiurt, iha nmo seabm ciap xigjej ne qea ger jnu gajgemw emnovden kxa wsakofbecUsaro.
Dtos’x a lak wujrubeyba jhut lmu ikebuqik. Gse xvoj mursbhuadj maese ow uwmowk qabe, qup nyi nelsuy ahcutihe capt’p yukr ooq xfo jiniymoadz maa qozn. Kak cwa ovb kuquto ufn vuo op uf mutuqqutay nwe xeph zoga.
Sanxerx! Bvowi uvf’v i pugriwb dipdibr foy elx ex rsibo rihliph; zeg pbir raya, nua wufy zdacew ewoudk bonf qugaav ibs hrik exiqa asgiq xoo yiebn suri zkun dablej furp ub. Kii fedss lolele la habj-lefe wijuax ix swakuto voix esabn tuvd vije bbuboc ej icjos fehnxoj he nvip yow lxd ke rdooz rve ebati.
Aj jie’ju kukgegonw, dpu xeqzomg iwop’z ni kyoglep dzan msar nuah reim atiten. Lohi, sii leq leom mme laoy ebuta dgox libeda, opp dfo zonc majd yuqopsixal zujx iy fovuna.
See forum comments
This content was released on Oct 9 2025. The official support period is 6-months
from this date.
See how to execute a text recognition request and how to apply CIFilters to problematic images.
Cinema mode
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.