У меня есть вопрос о регулярных выражениях.
Моя проблема в том, что система OCR иногда возвращает строку, которая недопустима на 100%.Допустим, у нас есть номер телефона на картинке, и моя система OCR вернула:
69527l0563
вместо: 6952710563
Система решила, что 1
больше похоже на"L".ToLower()
.Мой вопрос: есть ли быстрый способ проверить, соответствует ли строка регулярному выражению с некоторым процентом?В этом примере я хотел бы получить информацию, что строка соответствует регулярному выражению, на 90%, потому что только один символ - это буква, а не число.И регулярное выражение выглядит так: Regex regexp = new Regex(@"^[0-9]+-?[0-9]+-?[0-9]+-?[0-9]+-?[0-9]*$ ");
Другой пример: мы хотим проверить, является ли строка, заданная системой OCR, номером автомобиля.Допустим, мы пишем регулярное выражение:
- Строка должна начинаться с двух букв, а за ней следуют 5 цифр.Если OCR вернет:
P012345
вместо PO12345
, я хотел бы знать, что эта строка соответствует регулярному выражению на уровне около 85%, потому что только один символ неверен.
Другой пример:
Строка должна начинаться с PO, может иметь 4 следующих числа и должна заканчиваться номером
5
.Допустим, OCR вернет
PO123A4
, поэтому теперь строка верна только на 70%, потому что два символа неверны, но все равно 4 - это число в этом примере, хорошо, но мы только что сказали, что строка должна заканчиваться на 5.
Третий пример:
У нас есть регулярное выражение, которое говорит, что нам нужно найти строку:
Posen
(город в Польше).Теперь допустим, что OCR вернет:
osen
.Я хочу знать, что возвращаемая строка соответствует 80% с этим регулярным выражением (одна буква отсутствует).
Я придумал решение (я просто опишу упрощенную идею), то есть:
Позволяет получить строку, которая соответствует этому регулярному выражению, например: 0123456789, и теперь попытаться заменить каждую букву этой строки (0123 ...), сравнивая строку (695 ...).Тогда просто поймите, какие символы не правы, и сколько из них не соответствует регулярному выражению.
Или существует ли какой-либо другой глобальный способ решения существующих проблем?