2014-02-01 4 views
7

Мне нужно преобразовать изображение в текст. Но это немного легче, чем кажется.OCR на скриншоте

Изображение, о котором я говорю, не является отсканированным документом или чем-то, что повернуто, перекошено и вверх-вниз. Это чистый скриншот из игры (аналогично снятию снимка какого-то текста в блокноте). Я также точно знаю, насколько большой текст и где он находится, также очень легко удалить фон и сделать черным на белом.

Шрифт всегда будет оставаться неизменным (однако, я не знаю, какой шрифт). так что, может быть, я смогу научить его читать этот конкретный шрифт?

Мне также нужно, чтобы это вызывалось из приложения C#. поэтому я ищу способ в C# сказать: вот битмап (или путь к растровому изображению), дайте мне то, что он говорит в виде простого текста.

Я уже пробовал, что tesseract ocr, но кажется, что я делаю что-то неправильно, потому что это почти всегда неправильно. Единственный, у кого были хорошие результаты (только небольшая ошибка с «at» становится «t»), была Capture2Text, но я понятия не имею, как использовать это в C#.

вот небольшой пример того, что он должен быть в состоянии прочитать: http://i.imgur.com/PdEGznk.png

+0

Проверьте это, это может помочь ... http://stackoverflow.com/a/21496107/3051661 – pankeel

+0

Точного OCR является нерешенной проблемой. Работает разумно на печатном тексте, который отображается с 2400 точек на дюйм и сканируется с разрешением не менее 600 dpi. Скриншоты - 96 точек на дюйм, часто намеренно размытые из-за сглаживания. И меньше, ваши буквы имеют только 6 пикселей. Программа, подобная Capture2Text, была специально спроектирована для скриншотов, поэтому, вероятно, она будет достаточно аккуратной, чтобы сделать снимок. Не делай этого. –

ответ

5

я использую Tesseract.NET распознавать ваш образец изображения и получил «Evorvze SWOYG»; после перемасштабирования его до 300DPI, получил «Бронзовый меч».

+0

Я не могу поверить, что все, что мне нужно было сделать, это изменить размер изображения ... – user2839747

+0

Tesseract Wiki ([FAQ] (http://code.google.com/p/tesseract-ocr/wiki/FAQ), [ImproveQuality ] (http://code.google.com/p/tesseract-ocr/wiki/ImproveQuality)) рекомендует эту резолюцию. – nguyenq

+0

300 dpi - рекомендуемая настройка в целом для любой обработки изображений, связанных с OCR. –

0

Я только что добавил, что код масштабирования изображения в два раза больше, и он отлично распознает числа!

Bitmap b = new Bitmap(width * 2, height * 2); 
using (Graphics g1 = Graphics.FromImage((Image)b)) 
{ 
    g1.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; 
    g1.DrawImage(newBitmap, 0, 0, width * 2, height * 2); 
} 
0

На самом деле я настоятельно рекомендую не переучивать до 300 DPI, это создаст много сглаживания. Что не подходит для OCR. Некоторые двигатели, такие как Nuance и ABBYY, достаточно умны, чтобы знать, как обращаться со шрифтами на 72 dpi.

Устройство OCR в библиотеке MODI использует старую версию Nuance, которая будет значительно лучше, чем Capture2Text и Tesseract.

Смежные вопросы