OCR путает ноль с «о» - как указать ноль или букву «о» в python регулярном выражении? - PullRequest
0 голосов
/ 27 мая 2020

Я использую OCR для чтения изображений и PDF-файлов, а затем пытаюсь извлечь из него определенные числа. В некоторых случаях алгоритмы OCR читают ноль как букву «o».

OCR дало мне эту строку:

Siabicbnenl| 033-7 | _o3300.81086 42000.000002 20852.301017 1 82510000030694



Prerfasa afesad

Если бы OCR прочитал это правильно, он бы выглядел так :

Siabicbnenl| 033-7 | _03300.81086 42000.000002 20852.301017 1 82510000030694



Prerfasa afesad

Я хочу поймать это 03300.81086 42000.000002 20852.301017 1 82510000030694

Мой шаблон (?s)\d{5}\.?\d{5}.*?\d{5}\.?\d{6}.*?\d{5}\.?\d{6}.*?\d.*?\d{14} работал бы нормально, если бы OCR прочитал его правильно, но здесь я связался с новым ситуация:

OCR перепутала ноль с «o»

Есть ли способ исправить мой шаблон, чтобы также рассматривать «o» как ноль, или мне нужно будет сделать if 'didnt find anything': str.replace("o",0) и снова запустить?

1 Ответ

1 голос
/ 27 мая 2020

Символьный класс \d эквивалентен [0-9] для ввода ASCII. Если вы также хотите включить строчную букву «o», вы можете использовать [0-9o] везде, где вы используете \d сейчас.

Если вы ожидаете, что ввод содержит символы di git, кроме ASCII от 0 до 9, вы можете комбинировать \d с o в (захватывающей) группе с двумя альтернативами: (\d|o). Если хотите, можете сделать и без захвата: (?:\d|o).

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