Найти таблицу в документе, без строк - PullRequest
0 голосов
/ 26 сентября 2019

У меня следующая проблема:

Мне нужно извлечь таблицу предметов из чеков, как те, которые вы получаете в супермаркетах.Это не чистый счет А4, где в таблицах обычно есть строки.

Я получаю символы вместе с ограничивающими прямоугольниками из механизма OCR.Затем я выровняю его по оси X.Теперь мне нужно найти таблицы.

Я не хочу использовать для этого глубокое обучение, так как это будет очень большой проект, очень рискованный, очень сложный для отладки, и мне не хватаетданные (несколько сотен).Хо, и у меня недостаточно опыта в обучении RNNs ...

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

Кроме того, в чем заключается особенностьвектор для такой контролируемой ОД?у меня есть квитанции с 2 строками и квитанции с 10 строками.

Кстати, когда я говорю "линия", я имею в виду позицию.каждый элемент может быть записан в две строки.

Любой совет, как решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Эта проблема относится к области обработки естественного языка / классификации текста

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

Я рекомендую (Natural Language Toolkit) NLTK , пакет Python, который помогает вам выполнять обработку естественного языка обычным способом машинного обучения.Следующие шаги могут сформировать конвейер для вашей проблемы (некоторые ваши примерные данные были бы хорошими):

  1. Удалить пунктуацию (если это не добавляет к получению информации)
  2. Токенизация(Разделите текст на единицы, слова или предложения)
  3. Удалите стоп-слова (мне подходит плавание или бег >> Плавание Бег отлично)
  4. Стемминг или лемматизация (Сокращение слов до их основы>> Плавать)
  5. Векторизовать данные, например, Bag of Words (Кодировать текст как целые числа)
  6. Извлечение признаков, например, длина строки, ключевые слова в строке и т. Д.Извлечение шаблона (используйте сгенерированные функции для классификации вашей строки или всего текста, подумайте о том, какие метки должны иметь ваши строки или ваш текст)

Дополнительное чтение и пример кода с NLTK можно найти здесь .

1 голос
/ 29 сентября 2019

В OCR API переключатель isTable = true запускает логику сканирования таблицы, с помощью которой вы можете прочитать таблицу и получить все строки.

В любом случае, если вы используете с открытым исходным кодом, он будет иметь меньшую точность.Когда мы говорим о коммерческом оптическом распознавании символов, таком как ABBYY или Opentext OCR, он обеспечит вам точность до 99% + из коробки и автоматически обнаружит таблицы.Никаких тренировок, ничего, просто работает.

...