Есть ли способ быстро проверить, какой процент строки соответствует регулярному выражению? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть вопрос о регулярных выражениях.

Моя проблема в том, что система OCR иногда возвращает строку, которая недопустима на 100%.Допустим, у нас есть номер телефона на картинке, и моя система OCR вернула:

69527l0563 вместо: 6952710563

Система решила, что 1 больше похоже на"L".ToLower().Мой вопрос: есть ли быстрый способ проверить, соответствует ли строка регулярному выражению с некоторым процентом?В этом примере я хотел бы получить информацию, что строка соответствует регулярному выражению, на 90%, потому что только один символ - это буква, а не число.И регулярное выражение выглядит так: Regex regexp = new Regex(@"^[0-9]+-?[0-9]+-?[0-9]+-?[0-9]+-?[0-9]*$ ");

Другой пример: мы хотим проверить, является ли строка, заданная системой OCR, номером автомобиля.Допустим, мы пишем регулярное выражение:

  1. Строка должна начинаться с двух букв, а за ней следуют 5 цифр.Если OCR вернет: P012345 вместо PO12345, я хотел бы знать, что эта строка соответствует регулярному выражению на уровне около 85%, потому что только один символ неверен.

Другой пример:

Строка должна начинаться с PO, может иметь 4 следующих числа и должна заканчиваться номером 5.Допустим, OCR вернет PO123A4, поэтому теперь строка верна только на 70%, потому что два символа неверны, но все равно 4 - это число в этом примере, хорошо, но мы только что сказали, что строка должна заканчиваться на 5.

Третий пример:

У нас есть регулярное выражение, которое говорит, что нам нужно найти строку: Posen (город в Польше).Теперь допустим, что OCR вернет: osen.Я хочу знать, что возвращаемая строка соответствует 80% с этим регулярным выражением (одна буква отсутствует).

Я придумал решение (я просто опишу упрощенную идею), то есть:

Позволяет получить строку, которая соответствует этому регулярному выражению, например: 0123456789, и теперь попытаться заменить каждую букву этой строки (0123 ...), сравнивая строку (695 ...).Тогда просто поймите, какие символы не правы, и сколько из них не соответствует регулярному выражению.

Или существует ли какой-либо другой глобальный способ решения существующих проблем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...