A lightweight OCR toolkit for iOS built with UIKit.
ATOCR provides reusable UI components, camera handling, image compression, and OCR request helpers to simplify document scanning workflows.
- 📷 Camera capture manager
- 🧩 Ready-to-use OCR selection view
- 🖼 Image compression before upload
- 🔄 OCR result polling support
- ⚡ Protocol-oriented networking helpers
- 🎯 UIKit-first design
- iOS 13+
- Swift 5.9+
- UIKit
Add the package dependency:
dependencies: [
.package(
url: "https://github.com/your-username/ATOCR-iOS.git",
from: "1.0.0"
)
]Or in Xcode:
File → Add Packages
OCRView is a reusable UIKit component that displays OCR document options in a grid layout.
- Custom title
- Configurable typography
- Delegate-based selection
- Responsive collection view layout
let ocrView = OCRView()
ocrView.title = "Select Document"
ocrView.delegate = self
ocrView.setItems(items)Receive selection:
extension ViewController: OCRViewDelegate {
func ocrViewDidSelectItem(
_ item: OCRCollectionItem
) {
}
}ATOCRCameraManager provides a lightweight wrapper around UIImagePickerController.
let camera = ATOCRCameraManager()
camera.delegate = self
camera.openCamera(
from: self,
guid: "document-id"
)Receive captured image:
extension ViewController:
ATOCRCameraManagerDelegate {
func cameraManager(
_ manager: ATOCRCameraManager,
didCapture image: UIImage?,
guid: String?
) {
}
}Compress images before upload to reduce payload size.
let compressor =
ATOCRImageCompressor()
let data =
compressor.compress(image)let base64 =
compressor.compressBase64(image)let config =
ATOCRImageCompressor.Config(
maxSizeMB: 3,
minCompression: 0.2,
resizeStep: 0.9
)
let compressor =
ATOCRImageCompressor(
config: config
)Implement UploadNewCardOcrImagePO
to upload OCR images.
final class ViewModel:
UploadNewCardOcrImagePO {
}Start upload:
uploadNewCardOcrImage(
url: url,
input: input,
token: token
)Handle changes:
changeHandler = { change in
switch change {
case .didSuccess:
break
case .didError(let message):
print(message)
default:
break
}
}Implement GetCardOcrResultPO
to receive OCR results.
final class ViewModel:
GetCardOcrResultPO {
}Start request:
getCardOcrResult(
url: url,
input: input,
token: token
)The SDK automatically retries when
OCR status is pending.
Select Document
↓
Open Camera
↓
Capture Image
↓
Compress Image
↓
Upload Image
↓
Wait for OCR Result
↓
Receive OCR Data
Add this key to Info.plist:
<key>NSCameraUsageDescription</key>
<string>Camera access is required for OCR scanning.</string>- AyanTechNetworkingLibrary
MIT