@@ -35,7 +35,7 @@ class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSo
35
35
let images = [
36
36
ImageDisplay ( file: " do-not-feed-birds " , name: " Image 1 " ) ,
37
37
ImageDisplay ( file: " walk-on-grass " , name: " Image 2 " ) ,
38
- ]
38
+ ]
39
39
40
40
override func viewDidLoad( ) {
41
41
super. viewDidLoad ( )
@@ -57,8 +57,6 @@ class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSo
57
57
runCloudTextRecognition ( with: imageView. image!)
58
58
}
59
59
60
-
61
-
62
60
// MARK: Text Recognition
63
61
64
62
func runTextRecognition( with image: UIImage ) {
@@ -71,57 +69,60 @@ class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSo
71
69
func runCloudTextRecognition( with image: UIImage ) {
72
70
let visionImage = VisionImage ( image: image)
73
71
cloudTextDetector. detect ( in: visionImage) { features, error in
72
+ if let error = error {
73
+ print ( " Received error: \( error) " )
74
+ return
75
+ }
76
+
74
77
self . processCloudResult ( from: features, error: error)
75
78
}
76
79
}
80
+
77
81
78
82
// MARK: Image Drawing
79
83
80
84
func processResult( from text: [ VisionText ] ? , error: Error ? ) {
81
85
removeFrames ( )
82
- if let features = text, let image = imageView. image {
83
- for text in features {
84
- if let block = text as? VisionTextBlock {
85
- for line in block. lines {
86
- for element in line. elements {
87
- self . addFrameView (
88
- featureFrame: element. frame,
89
- imageSize: image. size,
90
- viewFrame: self . imageView. frame,
91
- text: element. text
92
- )
93
- }
86
+ guard let features = text, let image = imageView. image else {
87
+ return
88
+ }
89
+ for text in features {
90
+ if let block = text as? VisionTextBlock {
91
+ for line in block. lines {
92
+ for element in line. elements {
93
+ self . addFrameView (
94
+ featureFrame: element. frame,
95
+ imageSize: image. size,
96
+ viewFrame: self . imageView. frame,
97
+ text: element. text
98
+ )
94
99
}
95
100
}
96
101
}
97
102
}
98
103
}
104
+
99
105
100
106
func processCloudResult( from text: VisionCloudText ? , error: Error ? ) {
101
107
removeFrames ( )
102
- if let features = text, let image = imageView. image, let pages = features. pages {
103
- for page in pages {
104
- if let blocks = page. blocks {
105
- for block in blocks {
106
- if let paragraphs = block. paragraphs {
107
- for paragraph in paragraphs {
108
- if let words = paragraph. words {
109
- for word in words {
110
- self . addFrameView (
111
- featureFrame: word. frame,
112
- imageSize: image. size,
113
- viewFrame: self . imageView. frame
114
- )
115
- }
116
- }
117
- }
118
- }
108
+ guard let features = text, let image = imageView. image, let pages = features. pages else {
109
+ return
110
+ }
111
+ for page in pages {
112
+ for block in page. blocks ?? [ ] {
113
+ for paragraph in block. paragraphs ?? [ ] {
114
+ for word in paragraph. words ?? [ ] {
115
+ self . addFrameView (
116
+ featureFrame: word. frame,
117
+ imageSize: image. size,
118
+ viewFrame: self . imageView. frame
119
+ )
119
120
}
120
121
}
121
-
122
122
}
123
123
}
124
124
}
125
+
125
126
126
127
/// Converts a feature frame to a frame UIView that is displayed over the image.
127
128
///
@@ -184,10 +185,10 @@ class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSo
184
185
textLayer. string = text
185
186
textLayer. fontSize = 12.0
186
187
textLayer. foregroundColor = Constants . lineColor
187
- let center = CGPoint ( x: rect. midX, y: rect. midX )
188
+ let center = CGPoint ( x: rect. midX, y: rect. midY )
188
189
textLayer. position = center
189
- textLayer. isHidden = false
190
- textLayer. alignmentMode = kCAAlignmentLeft
190
+ textLayer. frame = rect
191
+ textLayer. alignmentMode = kCAAlignmentCenter
191
192
textLayer. contentsScale = UIScreen . main. scale
192
193
frameSublayer. addSublayer ( textLayer)
193
194
}
0 commit comments