7

Я попытался запустить OCR на нескольких отсканированных листах с номерами, подобными этому изображению (все с одним фоном, только цифры):

Но все испытания провалились! Я пробовал использовать OCR в автономном режиме: Gocr, Tesseract и несколько онлайн-распознавателей; но все ПОЛНОСТЬЮ провалилось!

Что я должен делать?

3 ответа3

8

Сначала вы должны настроить эти изображения. Я рекомендую пакетный инструмент, такой как XnViewMP, который является бесплатным и мультиплатформенным.

У него есть файловый менеджер. Выберите все ваши изображения, затем перейдите в Инструменты - Пакетное преобразование. Добавьте действия, как я сделал:

XNViewMP - Пакетное преобразование - вкладка Действия

Вот мои действия:

  1. HLS - сделать его в оттенках серого:
    • Оттенок: 0
    • Легкость: 0
    • Насыщенность: -127
  2. Уровни - немного понизить уровень черного, чтобы серый шум исчез
    • Черная точка: 0
    • Белая точка: 212 - может варьироваться в зависимости от изображения
  3. Уменьшить шумовой фильтр
  4. Отрегулируйте для увеличения контрастности
    • Яркость: 0
    • Контраст: 127 - это важно
    • Гамма: 1,06
  5. Минимум для того, чтобы сделать черный толще
    • Размер фильтра: 5х5 - может варьироваться в зависимости от изображения

Не забудьте сохранить как tiff (см. Вкладку «Вывод »). После этого я запускаю tesseract:

tesseract test.tif text -psm 7

Примечание. Я выбрал режим PSM 7: обрабатывать изображение как одну текстовую строку. Если у вас несколько строк, вам, вероятно, потребуется использовать режим 6 или 3.

А вот содержимое выходного файла text.txt :

570 394 666 638 043
2

Я попытался узнать ваше изображение с помощью технологии OCR от ABBYY:Результат OCR SDK

Более подробную информацию о продуктах ABBYY вы можете найти на сайте abbyy.com.
Я работаю на ABBYY и готов помочь, если у вас есть вопросы.

0
  import cv2
  import numpy as np
  import pytesseract

  im= cv2.imread('noisyNumbers.png',cv2.IMREAD_GRAYSCALE)

  cv2.imshow('Gray', im)
  cv2.imwrite('noisyNumbers.jpg', im)

  print(pytesseract.image_to_string(Image.open('noisyNumbers.jpg')))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .