BbitbbitBook Dev Log #7 — Highlighting Photos: OCR and Image Editing

Most People Won't Type Out Passages
There are several ways to capture something while reading.
Copy a quote into text. Write your thoughts briefly. Take a photo of the page.
The most common by far: the photo. When you find a sentence worth keeping, photographing the page is the fastest and most natural response.
When designing the app, photo capture was the primary memo method from the start. Text input exists, but photos had to be the core.
OCR: Photo to Text
The obvious extension: convert the text in a book page photo into searchable text.
This helps when you want to search for a specific sentence later, or when you want to use the extracted text in a note.
iOS provides OCR natively through the Vision framework. No third-party library required — this is Apple's own capability.
VNRecognizeTextRequest recognizes text in images and returns the results. Korean language is supported. Accuracy on printed text — like book pages — is high.
Image Loading: Kingfisher
For handling book cover images and memo photos throughout the app, the Kingfisher library handles image loading.
Kingfisher is one of the most widely used iOS image loading libraries. It downloads images asynchronously from URLs and manages caching automatically.
Book covers from API URLs need to be shown repeatedly. Downloading them on every display would be slow. Kingfisher caches already-downloaded images and retrieves them quickly on subsequent requests.
Markup: ZLImageEditor
Taking photos and saving them was the starting point. But ideally, users could mark up those photos — the way you annotate a physical book.
Highlighting important passages, drawing underlines, writing a short note directly on the page photo. These features require touch event handling, drawing capabilities, color selection, and undo support. When I tried to build this from scratch, the scope expanded quickly.
I found an open-source library called ZLImageEditor — a Swift-based image editing library with drawing, text annotation, stickers, and cropping built in.
I built BbitbbitBook's memo editing feature on top of this library. The initial integration used basic functionality; subsequent updates added custom highlighter and underline tools with more refined editing controls.
What Rich Reading Records Make Possible
Text notes, photos, OCR-extracted text, and annotated images — together, these capture the full texture of reading a book.
A year later, looking back at a memo from a book you read, you can reconstruct not just what was written but what you were thinking when you read it.
That was the original reason for building the app.