Проблемы с производительностью с использованием Tesseract OCR из приложения Python
Вопрос
Недавно я собрал интерфейс для сканирования и загрузки документов, доступных для поиска в KnowledGetree, нашу систему управления документами. У нас есть доступ к множеству отдельных инструментов для разных частей этого процесса, но я хотел объединить все в один интерфейс, чтобы сделать вещи простыми для пользователей.
Вот платформа:
# OS: Ubuntu Desktop 10.04
# GUI Toolkit: wxPython
# OCR package: Tesseract 3.00 (compiled executable)
А вот основной процесс:
# 1. Retrieve individual page images from scanner
# 2. Call Tesseract OCR executable to produce HOCR data for each page
# 3. Run extracted words against English dictionary to guess if page orientation is correct
# 3a. If word matches are below threshold, rotate page 90 degrees and try again
# 4. Detect document type and retrieve metadata from HOCR data
# 5. Merge scanned pages and HOCR data into a finished PDF
# 6. Upload PDF and attached metadata to document management system through KnowledgeTree's API
Он работает красиво, за исключением того, что шаг 2 очень медленно на определенных типах документов. Он проходит прямо через базовые текстовые отчеты с фиксированной шириной, но бросает там несколько логотипов, линий и другого нечитаемого контента, и иногда он может тратить минуты на одной странице. Не говоря уже о том, что он может повторить это до 4 раза, если он попытается переориентироваться. Для сравнения, программное обеспечение, упакованное с сканером, использует Abbyy OCR, и может сократить 50+ страниц менее чем за минуту, почти идеально заботясь о макете страницы и ориентации текста (я понимаю, почему Эбби стоит деньги). К сожалению, использование этого программного обеспечения для сканирования является более сложным для пользователей и самостоятельно охватывает только шаги 1-3.
Мой вопрос заключается в том, должен ли я полностью подходить к этому по -другому, возможно, путем полностью отделения OCR/загрузки от интерфейса сканирования, если есть какие -либо пакеты OCR или другие решения, которые я упускаю из виду, которые могут быть интегрированы в приложение Python. Будет ли тот факт, что я называю внешнее приложение для выполнения работы с работой?
Что бы я ни делал здесь, важно, чтобы я контролировал шаг 4, поскольку потребование, чтобы пользователи вручную устанавливали тип, и метаданные для каждого загруженного документа могли быть проблемой.
Решение
Проблема, которую у вас возникает, заключается в том, что Tesseract - это программный обеспечение для анализа макетов страниц. А Сайт Tesseract говорит, что версия 3.0, вероятно, будет включать анализ макета страниц.
Я знаю, что в предыдущих версиях это хорошо отвечает, только если есть один столбец текста.
Я думаю, что вам нужно поместить на шаг 1.5, который проведет некоторый анализ макета и попытаться найти блоки изображений, логотипов, неразборчивого текста.
Вы можете посмотреть Ocrfeeder, чтобы увидеть его решение.