Tesseract не получил маленькие ярлыки

Я установил tesseract в среду linux.

Он работает, когда я выполняю что-то вроде

# tesseract myPic.jpg /output

Но у моего pic есть несколько небольших надписей, и tesseract их не видел.

Имеется ли опция для установки высоты тона или что-то в этом роде?

Пример текстовых меток:

введите описание изображения здесь

С помощью этого рисунка tesseract не распознает значения...

Но с этим рисунком:

введите описание изображения здесь

У меня есть следующий вывод:

J8

J7A-J7B P7 \

2
40 50 0 180 190

200

P1 P2 7

110 110
\ l

Например, в этом случае 90 (вверху слева) не видно tesseract...

Я думаю, что это просто вариант определить или что-то вроде этого, нет?

спасибо

Ответ 1

Чтобы получить точные результаты от Tesseract (а также любого движка OCR), вам нужно будет следовать некоторым рекомендациям, как можно увидеть в моем ответе на этот пост: Нежелательные результаты при использовании Tesseract OCR и tess-two

Вот его суть:

  • Используйте изображение с высоким разрешением (при необходимости) 300 DPI минимум

  • Убедитесь, что на изображении нет теней или изгибов

  • Если есть какой-либо перекос, вам нужно будет исправить изображение в коде до ocr

  • Используйте словарь, чтобы получить хорошие результаты

  • Отрегулируйте размер текста (идеальный шрифт 12 pt)

  • Устраните изображение и используйте алгоритмы обработки изображений, чтобы удалить шум

Также рекомендуется потратить некоторое время на обучение движку OCR, чтобы получить лучшие результаты, как показано в этой ссылке: Training Tesseract

Я взял 2 изображения, которые вы поделили, и выполнил некоторую обработку изображений на них с помощью LEADTOOLS SDK (отказ от ответственности: я сотрудник эта компания) и смог получить лучшие результаты, чем вы получали с обработанными изображениями, но поскольку исходные изображения не самые большие - это все равно не было 100%. Вот код, который я использовал для исправления изображений:

//initialize the codecs class
using (RasterCodecs codecs = new RasterCodecs())
{
   //load the file
   using (RasterImage img = codecs.Load(filename))
   {
      //Run the image processing sequence starting by resizing the image
      double newWidth = (img.Width / (double)img.XResolution) * 300;
      double newHeight = (img.Height / (double)img.YResolution) * 300;
      SizeCommand sizeCommand = new SizeCommand((int)newWidth, (int)newHeight, RasterSizeFlags.Resample);
      sizeCommand.Run(img);

      //binarize the image
      AutoBinarizeCommand autoBinarize = new AutoBinarizeCommand();
      autoBinarize.Run(img);

      //change it to 1BPP
      ColorResolutionCommand colorResolution = new ColorResolutionCommand();
      colorResolution.BitsPerPixel = 1;
      colorResolution.Run(img);

      //save the image as PNG
      codecs.Save(img, outputFile, RasterImageFormat.Png, 0);
   }
}

Вот выходные изображения из этого процесса:

image1 обработан image2 обработан