Я ищу определенную строку в элементе массива Struct, если я ее нахожу, я добавляю к доверительному числу в Struct, и если я его не нахожу, я добавляю его в Struct.Если он находится в структуре, но не во входной строке, то я убираю уверенность.Возможно, я смогу объяснить это лучше, если перейду к варианту использования и рабочему процессу:
Я создаю программу оптического распознавания на iOS, которая сканирует текст для определенных ключевых библиографий, и после того, как она приобрела достаточную уверенность, она выбранавверх по всем ссылкам на экране представление перейдет к таблице библиографий.Рабочий процесс выглядит примерно так:
- Запуск оптического распознавания (работает)
- Передача вывода OCR через регулярное выражение и построение массива String из идентифицированных элементов.Давайте назовем его «identifReferencesThisLoop» (работает)
- При первом проходе он помещает весь вывод OCR в массив Struct, который имеет два члена: String и уровень достоверности (начинается с 5).Давайте назовем этот массив Struct «identifReferences» (работает)
- . На следующих проходах он просматривает член выходного массива OCR по элементам и определяет, находится ли он в массиве Struct «identifReferences».
- Если есть новая ссылка, она помещает ее в массив Struct (работает)
- Если ссылка существует, она добавляет уверенности (не работает!)
- Если ссылка существует в Структуре, но отсутствует в identifReferencesThisLoop, то она отнимает 0,5 от Доверия (не реализовано!)
- Если ссылка когда-либо достигает Доверия 0, то она удаляется из Структуры
- Если определенное количество членов массива Struct имеет достаточно высокую достоверность, тогда массив Struct передается в Segue, который отображает Struct в виде таблицы.
Большая проблема, с которой я столкнулся, заключается в том, что я не могу понять, как работать с элементом структуры в цикле.
Я пытался использовать whiles и fors, а .filter и .mapи $ 0 - мне удалось перекрестно ссылаться на таблицы, чтобы ДОБАВИТЬ запись, но я не знаю, как оштрафовать запись за то, что она редко отображается в OCR, или как придать уверенность той, которая постоянно отображается, или какудалить запись с низкой достоверностью.
Определение структуры:
struct referenceIdentified {
var reference: String?
var confidence: Int
}
В классе:
private var references: [referenceIdentified] = []
В частной функции:
let referencesThisLoop = OCROutput.regexFunction() // outputs [String]
for index in referencesThisLoop {
if self.references.filter({ $0.reference == index }).first != nil {
references.confidence(at: index) += 1 // gives error "Value of type '[referenceIdentified]' has no member 'confidence'"
print(index + " found")
} else {
self.references.append(referenceIdentified(reference: index, confidence: 5))
print(index + " not found, added.")
}
}
В конце таблица выходит неплохо, но все значения доверия равны 5, что бессмысленно, и в итоге в таблице появляется множество неверных записей.