2015-10-31 4 views
1

Я часто работаю со сканированными документами. В документах содержатся таблицы (похожие на таблицы Excel), которые мне нужно вводить вручную. Чтобы сделать задачу хуже, таблицы могут иметь разное количество столбцов. Вручную вводить их в Excel является, по меньшей мере, обычным.Обнаружение стола с OpenCV

Я думал, что смогу сэкономить неделю на работу, если смогу поставить программу на OCR. Можно ли обнаружить текстовые области заголовков с помощью OpenCV и OCR текста за координатами обнаруженного изображения.

Могу ли я достичь этого с помощью OpenCV или мне нужен совершенно другой подход?

Редактировать: Пример таблицы - это действительно стандартная таблица, аналогичная тому, что вы можете видеть в Excel и других приложениях с расширенными таблицами, см. Ниже.

enter image description here

+0

Да, вы можете. Но будет сложно получить 100% отличные результаты, если у вас нет четко определенных ограничений. Можете ли вы показать некоторые из ваших отсканированных таблиц? – Miki

+0

@Miki спасибо, я добавил пример. – Datageek

+0

Можете ли вы предоставить один или два отсканированных документов? Качество осколка оказывает большое влияние на конечный результат. – Miki

ответ

2

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

Для чтения текста с использованием любого двигателя OCR есть много Challanges в получении хорошей точности, которая включает в себя следующие основных случаев:

  1. Наличия шума из-за плохое качество изображения/нежелательные элементы/сгустки в области фона. Для этого потребуется некоторая предварительная обработка, например удаление шума, которую можно легко выполнить с использованием гауссовского фильтра или обычных медианных методов фильтрации. Они также доступны в opencv.

  2. Неправильная ориентация изображения: из-за неправильной ориентации двигатель OCR не может правильно отрезать линии и слова в изображении, что дает наихудшую точность.

  3. Наличие линий: при выполнении сегментирования слов или строк механизм OCR иногда также пытается объединить слова и строки вместе и, таким образом, обрабатывать неправильный контент и, следовательно, давать неправильные результаты. Существуют и другие проблемы, но они являются основными.

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

  1. Простая бинаризация изображения удаляет фоновое содержимое, оставляя только необходимый контент, как показано здесь. Binary image
  2. Теперь нам нужно удалить строки, которые в этом случае являются табличной сеткой. Это также можно определить с помощью подключенных компонентов и удаления больших подключенных компонентов. Таким образом, наше окончательное изображение, которое необходимо загрузить в OCR-движок, будет выглядеть так.

    enter image description here

  3. Для распознавания текста мы можем использовать Tesseract Open Source OCR Engine. Я получил следующие результаты от OCR:

    Подпись название

    заголовок!header2 header3

    row1cell1 row1cell2 row1cell3

    row2cell1 row2cell2 row2cell3

  4. Как мы видим здесь, что результат довольно точно, но есть некоторые вопросы, как заголовок!, который должен быть header1, это потому, что двигатель OCR неправильно понял! с 1. Эта проблема может быть решена путем дальнейшей обработки результата с использованием операций на основе Regex.

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

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

+0

Спасибо за подробный ответ @flamelite. Знаете ли вы какой-либо открытый исходный код, который может это сделать? Возможно, вы опубликовали свое решение? – Datageek

+1

Я не уверен в каком-либо конкретном приложении с открытым исходным кодом, которое выполняет все описанные выше шаги. Я не разработал приложение, которое делает все выше всего одним нажатием кнопки. – flamelite

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

  • Нет связанных вопросов^_^