1.4.2 (build 48): OCR de screenshots en Share Extension

El extension acepta ahora imágenes además de texto: al compartir un screenshot
del banco/broker, Vision reconoce el texto EN EL DISPOSITIVO (la imagen nunca
sale del teléfono), extrae los importes candidatos y rellena el más prominente
visualmente (en las UIs bancarias el balance es el número más grande). El resto
de candidatos se ofrecen como chips de un toque. Percentajes y años se filtran.

- ExtImageAmountScanner.swift: VNRecognizeTextRequest + ranking por altura de
  bounding box + dedup por valor
- ShareViewController: carga UIImage/URL/Data del provider, estado de escaneo,
  sección de candidatos
- Info.plist: NSExtensionActivationSupportsImageWithMaxCount=1
- Strings nuevas en los 7 idiomas (ext_scanning_image, ext_detected_amounts,
  ext_ocr_no_amounts)
- PredictionEngine: troceado ternario que agotaba el type-checker en Debug
- Bump a 1.4.2 build 48

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WoScpmHdVj1aUf4rAp6hbe
This commit is contained in:
alexandrev-tibco
2026-07-08 15:59:54 +02:00
parent a953af2da0
commit 19b1408c55
12 changed files with 290 additions and 41 deletions
@@ -115,10 +115,13 @@ class PredictionEngine {
var smoothed = values[0]
for i in 1..<values.count { smoothed = alpha * values[i] + (1 - alpha) * smoothed }
let trend: Double = values.count >= 2
? (values.suffix(3).reduce(0, +) / Double(min(3, values.count)) -
values.prefix(3).reduce(0, +) / Double(min(3, values.count))) / Double(values.count)
: 0
var trend = 0.0
if values.count >= 2 {
let window = Double(min(3, values.count))
let recentAvg: Double = values.suffix(3).reduce(0, +) / window
let earlyAvg: Double = values.prefix(3).reduce(0, +) / window
trend = (recentAvg - earlyAvg) / Double(values.count)
}
let stdDev = calculateStdDev(values: values)
return (1...monthsAhead).compactMap { month in