Move SSD OCR word bounds to typed Kotlin

ober

aa0832a0a956e649c7de850c106d852e7a53057d

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index 06d30f7..b3a52a0 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -128,13 +128,28 @@
 
     (typed-kotlin-file "com/sfb/ssdreview/OcrWord.kt"
       (typed-library (com sfb ssdreview)
-        (export make-OcrWord OcrWord? OcrWord-text OcrWord-conf OcrWord-bbox)
+        (export make-OcrWord OcrWord? OcrWord-text OcrWord-conf OcrWord-bbox
+                ocrWordFromBounds)
+        (type Int32)
         (type Float32)
         (type FloatArray)
         (record OcrWord
           ((text : String)
            (conf : Float32)
-           (bbox : FloatArray)))))
+           (bbox : FloatArray)))
+        (def (ocrWordFromBounds (text : String)
+                                (left : Int32)
+                                (top : Int32)
+                                (right : Int32)
+                                (bottom : Int32)) : OcrWord
+          (make-OcrWord
+            text
+            (float32 80.0)
+            (float-array
+              (float32 left)
+              (float32 top)
+              (float32 right)
+              (float32 bottom))))))
 
     (typed-kotlin-file "com/sfb/ssdreview/SsdCell.kt"
       (typed-library (com sfb ssdreview)
@@ -5155,11 +5170,7 @@
        "                        val box = element.boundingBox ?: line.boundingBox ?: block.boundingBox ?: return@forEach"
        "                        val text = element.text.trim()"
        "                        if (text.isNotBlank()) {"
-       "                            words.add(OcrWord("
-       "                                text = text,"
-       "                                conf = 80f,"
-       "                                bbox = floatArrayOf(box.left.toFloat(), box.top.toFloat(), box.right.toFloat(), box.bottom.toFloat())"
-       "                            ))"
+       "                            words.add(ocrWordFromBounds(text, box.left, box.top, box.right, box.bottom))"
        "                        }"
        "                    }"
        "                }"