Milan Todorovic

Let your iOS app read texts

Can your app read messy handwriting? Apple's Vision framework can, and it's easier than you think.

Let your iOS app read texts
#1about 4 minutes

Introduction to the Vision framework for text recognition

The Vision framework simplifies incorporating optical character recognition (OCR) into iOS and macOS applications using Swift.

#2about 4 minutes

Understanding the core Vision request workflow

The fundamental process involves creating an image request handler, defining a request, and then performing the handler to get results.

#3about 2 minutes

Simplifying text recognition with VNRecognizedTextRequest

The modern API streamlines text recognition by using the VNRecognizedTextRequest class, which returns candidate strings directly.

#4about 3 minutes

Choosing between fast and accurate recognition modes

A comparison of the 'fast' mode, which uses character detection, and the 'accurate' mode, which uses a neural network for whole-word recognition.

#5about 4 minutes

Implementing the full workflow with advanced options

A complete code walkthrough shows how to set up the request, handle completion, and improve results with language correction and custom lexicons.

#6about 6 minutes

Live demo of scanning printed text from a book

A practical demonstration using a sample app to scan a page from a printed book, showing the high accuracy of the Vision framework.

#7about 3 minutes

Demonstrating business card and receipt scanning

The demo continues by scanning a business card and a multi-language receipt, highlighting both successes and potential challenges with complex layouts.

#8about 3 minutes

Recognizing handwritten text and a brief code overview

The final demo shows the framework's capability to recognize handwritten text, followed by a quick look at the relevant Swift code in the sample project.

#9about 5 minutes

Resources and other capabilities of the Vision framework

Learn where to find documentation and tutorials, and discover other Vision features like hand and body pose detection or image classification.

#10about 3 minutes

On-device processing and cross-platform considerations

The benefits of on-device processing for speed, security, and privacy are discussed, along with potential alternatives for Android and Flutter developers.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

Related Articles

View all articles
CH
Chris Heilmann
With AIs wide open - WeAreDevelopers at All Things Open 2025
Last week our VP of Developer Relations, Chris Heilmann, flew to Raleigh, North Carolina to present at All Things Open . An excellent event he had spoken at a few times in the past and this being the “Lucky 13” edition, he didn’t hesitate to come and...
With AIs wide open - WeAreDevelopers at All Things Open 2025
BR
Benjamin Ruschin
Lessons for Vibe Coders and Developers
In late July 2025, the women-only dating-advice app Tea went viral for all the wrong reasons. Marketed as a safe, private space to anonymously flag men for “red-flag” behavior, hackers attacked the app, accessing over 70,000 user-submitted images in...
Lessons for Vibe Coders and Developers
DC
Daniel Cranney
Dev Digest 189: Open Phones, Be the Messenger and the USB-C of AI
Inside last week’s Dev Digest 189 . ⛑️ Discord and Red Hat data breaches 🤖 Making AI make sense of tables 🔧 CodeMender AI Agent to patch software automatically 🤔 Why MCP is the USB-C of AI 🤐 Vibe coding leaks secrets 🕷️ Check if AI crawlers access y...
Dev Digest 189: Open Phones, Be the Messenger and the USB-C of AI
DC
Daniel Cranney
Dev Digest 167: Open Source AI, Passwordless Microsoft and Vibe Coding
Inside last week’s Dev Digest 167 . 🖼️ Is vibe coding killing creativity? 🌳 Is ChatGPT not as bad for the environment as we think? ⚠️ 95% of AppSec fixes don’t reduce risks 🔑 Microsoft going passwordless 🧠 How to detect memory leaks in your apps 🟨 V...
Dev Digest 167: Open Source AI, Passwordless Microsoft and Vibe Coding

From learning to earning

Jobs that call for the skills explored in this talk.