react-native-rectangle-doc-scanner 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ios/RNRDocScannerView.swift +32 -19
- package/package.json +1 -1
|
@@ -66,7 +66,7 @@ class RNRDocScannerView: UIView, AVCaptureVideoDataOutputSampleBufferDelegate, A
|
|
|
66
66
|
guard let self else { return }
|
|
67
67
|
|
|
68
68
|
session.beginConfiguration()
|
|
69
|
-
session.sessionPreset = .
|
|
69
|
+
session.sessionPreset = .high
|
|
70
70
|
|
|
71
71
|
defer {
|
|
72
72
|
session.commitConfiguration()
|
|
@@ -165,34 +165,41 @@ class RNRDocScannerView: UIView, AVCaptureVideoDataOutputSampleBufferDelegate, A
|
|
|
165
165
|
isProcessingFrame = false
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
|
|
169
|
-
|
|
168
|
+
let request = VNDetectRectanglesRequest { [weak self] request, error in
|
|
169
|
+
guard let self else { return }
|
|
170
170
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
171
|
+
if let error {
|
|
172
|
+
NSLog("[RNRDocScanner] detection error: \(error)")
|
|
173
|
+
self.lastObservation = nil
|
|
174
|
+
self.handleDetectedRectangle(nil, frameSize: frameSize)
|
|
175
|
+
return
|
|
176
|
+
}
|
|
177
177
|
|
|
178
|
-
guard let observations = request.results as? [VNRectangleObservation],
|
|
179
|
-
lhs.boundingBox.width * lhs.boundingBox.height < rhs.boundingBox.width * rhs.boundingBox.height
|
|
180
|
-
}) else {
|
|
178
|
+
guard let observations = request.results as? [VNRectangleObservation], !observations.isEmpty else {
|
|
181
179
|
self.lastObservation = nil
|
|
182
180
|
self.handleDetectedRectangle(nil, frameSize: frameSize)
|
|
183
181
|
return
|
|
184
182
|
}
|
|
185
183
|
|
|
186
|
-
|
|
184
|
+
let weighted = observations.sorted { lhs, rhs in
|
|
185
|
+
lhs.confidence * lhs.boundingBox.area > rhs.confidence * rhs.boundingBox.area
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
guard let best = weighted.first else {
|
|
189
|
+
self.lastObservation = nil
|
|
190
|
+
self.handleDetectedRectangle(nil, frameSize: frameSize)
|
|
191
|
+
return
|
|
192
|
+
}
|
|
193
|
+
self.lastObservation = best
|
|
187
194
|
self.missedDetectionFrames = 0
|
|
188
|
-
self.handleDetectedRectangle(
|
|
195
|
+
self.handleDetectedRectangle(best, frameSize: frameSize)
|
|
189
196
|
}
|
|
190
197
|
|
|
191
|
-
request.maximumObservations =
|
|
192
|
-
request.minimumConfidence = 0.
|
|
193
|
-
request.minimumAspectRatio = 0.
|
|
194
|
-
request.maximumAspectRatio =
|
|
195
|
-
request.minimumSize = 0.
|
|
198
|
+
request.maximumObservations = 2
|
|
199
|
+
request.minimumConfidence = 0.4
|
|
200
|
+
request.minimumAspectRatio = 0.08
|
|
201
|
+
request.maximumAspectRatio = 2.2
|
|
202
|
+
request.minimumSize = 0.05
|
|
196
203
|
if #available(iOS 13.0, *) {
|
|
197
204
|
request.quadratureTolerance = 45
|
|
198
205
|
}
|
|
@@ -506,3 +513,9 @@ enum RNRDocScannerError: Error {
|
|
|
506
513
|
}
|
|
507
514
|
}
|
|
508
515
|
}
|
|
516
|
+
|
|
517
|
+
private extension CGRect {
|
|
518
|
+
var area: CGFloat {
|
|
519
|
+
width * height
|
|
520
|
+
}
|
|
521
|
+
}
|