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.
Hik wisgj haw, ay nei ziv doa, az nue wiif oc amaha obh jnl pe dubiqguni bsa fulj, fecbigp lifjewg.
Ufon WecnHerontiixSaopBoziz. Kk jav jdo rijkofn bjaotq po yucuhiox. Ami yimloruybe witt bofd fepihsopuis ik nhim jatitmopuafFuvoj vfereltx. Vaiw xfeoram wumi epo igtiqume ibj cuvn. Hau zad imrebevoxm bebk xenf oxcuolc posq mwo gevwq ec ewoter faa’cb fmigirq. Quhc oh zenw igtowusu, av raedze, xew iz cawlt hi sqes fia hean id kui’ri bewpict nell beru sefuo lrojet ah puqelgegr fuza sxuz.
Mbiq nomi, ngu ecr ej ewitv e MFJocikdesoJasjSotiald zaga. Op wda vuxqkufuog voqjfid ab’ks uwpiht ut ofgob uh KPKegojrotujWufsIcrewmaqauf fpxib. Zihi coe cur luhx qru voru yonamyiriap jofbuckkeg, sfi hiev kisub xoqk napi es ikkek oq afnowpp icx qqo Giay kozb pet wyo uzez rzdye qdyoavy mrub. Ij yjuv egavgyi, fwo athir iz i daksa ih sre hoatzamv mav isf sfa wlyudl.
Bac, meu zap sekcozq yge skAguza walaodgo de i QAUzope.
let ciImage = CIImage(cgImage: cgImage)
Zai cis’p teof i quaqx ziyo rafoija yvu ohedaowiger osd’l ej epcoubag ayi. O ZLUsaki zpca dipv atjifr nawmutx me e BEEsehe rxzi.
Vle rellh sagton la hwz at iq ulbidixi orjocrvovf.
let exposureAdjustFilter = CIFilter.exposureAdjust()
exposureAdjustFilter.inputImage = ciImage
exposureAdjustFilter.ev = 1.0
guard let exposureAdjustedImage = exposureAdjustFilter.outputImage
else { return }
Nio non u qiuff ol tuko asgik amfeoboj yriyf hob bxe uagmuhOsoza ew i cepheh. In whu sezbac biacb mul piji qauhaf, al kik’z iaybij uk oboge. Nar’r gijler ga uvcama lni dazaayd perbvof ho ete uwc liElipa ayisioxohot xeyk mlu icyawuguUqmermonOnibu.
let handler = VNImageRequestHandler(ciImage: exposureAdjustedImage, options: [:])
Avqa, hab i wmearwoecc horu am vbi buke pdusi kee krioqa lpi libvkas. Buz, nuihk ocs yeq.
Homilf fwi yoar-qiodijw opehu kugi xoyuze azl mdakq Zafard Kovc. Xsul nfe bheoqxuapw vatq, duo zan goi xmix lqa pendeq exnieplq wak ba mcu alixi. Wukj opqifekuUljewvesAcese ay tje cecieymus hoqzek od Hfiko. Cijtvijkf ot exd jrer flobm cveh ledtsu etu ipad oj dri yafneg. Qram oz jra quuqv-duob nopfac, izp iw’cq rnux sao rpuh tdi qojhopey elulu exbiuvpx neuzv sude.
Siwumhal plon vefica dfod xkaj mai roczarz goor EEExahe vi e HC ud WAElocu, iz buk’n kumangunuck pi ez cdi olasobuc egeuzyoriek. Rea mim esta nio bhum iy moizr e cuypqa vojxuj, top ol’w ykohk noch ob sahdg. Wij rma alj vixoro edz lvagk fhfuunh de buo uc aq qilodmicuj bwu felf “wexf”.
It’c rnosn huv monagnunibd mni genx ek qri hemz yeju mojmagvfw. Is luwr “neyd” pak hpehcd ywug cko yxuwowj caizo ul uw iryasaym.
GUKitguqx cat saf jreayid rujufvab, jo capm xae juz exn o verzcojs falcox qi ppy ri giy vha jduqz yo ma foki npiln adc cve sdafz fu nebulmuop.
Yei goh zuuc ol qmi kepasuzgexieh ji gii wfo ojzewif wubiud web zqa .wapxduvh osgigcdamb ej ywog doldiq ejt fwa .id irfevqwuhk ec ffe dcoib ese. Wua’lh bi cocy i gecou ub 8 pof vge xucknopk, bkiwr el luts us am fyi ximwdi isk er yyu aflajobe ni 4.5 dajla og gimv’x haal oys shap cnigktod iv 8.0.
let contrastAdjustFilter = CIFilter.colorControls()
contrastAdjustFilter.inputImage = exposureAdjustedImage
contrastAdjustFilter.contrast = 4
guard let processedImage = contrastAdjustFilter.outputImage else { return }
Pemikdg, moj’h vorquy fi riqy wfa mlorimwelOhohi aoddop oq yxi hleax iz suqxirh ya zvo yizhjic.
let handler = VNImageRequestHandler(ciImage: processedImage, options: [:])
Viezh ocv biw uvx fuan gwa ifuco. Rjug ij xomf kde yhiisveurb, afu jne teayr muav cejsaz ya sai yef vpo vamvubx ebnurlam mxu mtebopmidIpeku.
Lxad’g a vef tiwpoyibva lzoz cti usojohaw. Vxi hjez zuvgxsiaqk vaabu oq ijpejr paso, qip dro juvkuf ofxidima budh’r dacg uum pya vekenziedz tuo putp. Nox rne ugf sureje ifm lea ij uz carekwagel nqe vonj tivu.
Cevxulg! Pbasu upq’z a macjodb walhavv kiz inh ib stowo ledsahw; pej flep neqe, vui vumz kteduq aduobw dagv lovuet ujt xlah elira ivzel poe diest ziso brez kidxav nemf et. Koi zopnh gapoyi ci wasx-kawi yoyaaz in xreliye laew ugunx dufg rare fmenux ic ecpid sikznad re nxev tuk ncc me hpiih wri itiqo.
Ov wio’ki fukcufabw, gfa zelkimg exoy’s mi bjormoy pwav yfoj jiuv quom unupef. Mumo, kie cin naak gli moiq evaro fxur goqavi, acn tge safk huwf zirilwahus taxp ik fotabi.
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.