Чтение персонажа с картинки - PullRequest
7 голосов
/ 10 июня 2010

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

Скажи, что у меня есть image- employee1.jpg. На этом изображении будут две записи, написанные от руки: номер сотрудника и сумма, подлежащая выплате сотруднику. Я должен прочитать номер сотрудника с изображения и запросить базу данных для этого номера, обновить сотрудника с суммой, подлежащей оплате, как получено из изображения. Номер сотрудника и сумма, подлежащая выплате, указаны в двух полях в указанном месте на изображении.

Есть ли способ автоматизировать это. В основном я хочу решение в .net с использованием C #. Я знаю, что это можно сделать с помощью искусственных нейронных сетей.

Любые идеи будут высоко оценены.

Ответы [ 5 ]

3 голосов
/ 10 июня 2010

Вы можете использовать Microsoft Office Document Imaging Library (MODI), которая содержится в Office 2003 / 2007.

Ссылки:

1 голос
/ 11 июня 2010

Существует LeadTools SDK для OCR / ICR.Это очень удобно при распознавании рукописных символов.Я занимаюсь этим с техникой, и до сих пор думаю, что это сработает.LeadTools предоставил компоненты, которые можно использовать в вашем приложении, он поддерживает C, C ++, C #, VB.Net и т. д.

Для этого вы можете перейти по следующей ссылке: http://www.leadtools.com/downloads/default.htm?category=

1 голос
/ 10 июня 2010

Механизмы распознавания текста не обучены читать рукописный текст, поэтому у вас могут возникнуть проблемы с MODI. Вы хотите попытаться найти двигатель ICR. Тем не менее, лучшие из них имеют точность только 80% при хороших входных данных. Возможно, вам станет лучше, потому что вы знаете, что ваш текст всегда цифры.

Этот ТАК вопрос / ответ говорит, что у OCROpus есть ICR

FOSS Intelligent Character Recognition (ICR)

1 голос
/ 10 июня 2010

Я думаю, что это очень сложно автоматизировать. Проблема только в том, что вам нужно какое-то очень хорошее программное обеспечение для распознавания текста. И даже если вы получили это, что, если он читает что-то не так, из-за нечеткого почерка кого-то? Если идентификационный номер неверный, выплаченный зачисляется не тому сотруднику, а если сумма неверная, он получает неправильную зарплату!

Обе вещи, с которыми ты действительно не случишься. Просто чтобы показать вам, как трудно найти хороший ocr, просто посмотрите, как работает captcha . Принцип - не более чем изображение трудно читаемого текста.

Так что мое мнение таково, что вы не можете автоматизировать этот процесс. По крайней мере, вы можете написать программу для помощи человеку, введя значения вручную (также посмотрите на Amazon Mechanical Turk ):

  • Покажите справа изображение с рукописными значениями или, если они всегда находятся на одной и той же позиции или специально помечены (с рамкой вокруг них и т. Д.), Попробуйте автоматически найти эти места и показать их пользователю.
  • Слева предлагаются два текстовых поля, в которые пользователь может вводить значения.

Чтобы быстро и быстро справиться с этим, вы должны тщательно следить за тем, как пользователь может легко вводить значения, просто используя клавиатуру:

  • При отображении нового изображения установите фокус на текстовое поле id
  • Если идентификатор пользователя всегда имеет определенную длину, переключитесь на следующее поле, если все числа введены
    • (Если вы разрешите это, возврат в пустом следующем поле должен вернуться к предыдущему)
  • В противном случае можно перейти к следующему текстовому полю, нажав вкладку или return
  • Обычно эти текстовые поля располагаются друг над другом (не бок о бок), поэтому вам следует поддерживать переключение между ними с помощью клавиш со стрелками вверх-вниз.
  • После окончания записи в последнем текстовом поле автоматически показывается следующее изображение.
    • Также в этом случае новая новая запись (ничего уже не введено) позволяет легко переключиться на старую запись с помощью клавиши Backspace или левой стрелки)

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

Только последнее предложение:
Потому что это скучный процесс для человека, который может легко привести к ошибкам, возможно, пусть два человека введут эти значения и только если оба будут вводить то же самое, чем примут это значение как утвержденное. Это должно привести к правильной ставке где-то выше 99%. Если вам нужно абсолютно 100%, подумайте о том, чтобы разрешить 4-5 людям проверять одну запись, и только если все они вводят одинаковые значения, примите это как утверждено. Чтобы получить также сравнение того, насколько хорошим будет ваше программное обеспечение ocr, просто позвольте ему также работать с вашими изображениями и сравните эти результаты с введенными человеком значениями, чтобы понять, когда вы действительно можете рассчитывать только на ocr.

1 голос
/ 10 июня 2010

Распознавание образов является основным примером при изучении нейронных сетей.Я не знаю, есть ли какая-нибудь библиотека / фреймворк для работы с ИИ в C #.Если вы найдете один, сначала вам нужно обучить сеть (контролируемое обучение), и для этого вам нужно подготовить большой набор образцов изображений;больше примеров -> результат более точный.С другой стороны, вы можете использовать OpenCV (C / C ++, Python и Java), библиотеку, специализирующуюся на компьютерном зрении и имеющую модуль для реализации методов искусственного интеллекта.Оскар.

...