Недавно я собрал интерфейс для сканирования и загрузки документов с возможностью поиска в 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 страниц менее чем за минуту, почти идеально заботясь о макете страницы и ориентации текста (я понимаю, поэтому ABBYY стоит денег). К сожалению, использование этого программного обеспечения для сканирования является более сложным для пользователей и охватывает только шаги 1-3.
Мой вопрос заключается в том, должен ли я подходить к этому по-другому, возможно, полностью отделив OCR / upload от интерфейса сканирования, если есть какие-либо пакеты OCR или другие решения, которые я пропускаю, которые могут быть интегрированы в приложение Python. Может ли тот факт, что я вызываю внешнее приложение для выполнения работы, вызвать проблемы с производительностью?
Что бы я здесь ни делал, важно, чтобы у меня был контроль над шагом 4, поскольку требование пользователей вручную устанавливать тип и метаданные для каждого загруженного документа может быть проблемой.