
На этой неделе в AppStore должна появиться новая версия лучшего сканера документов ScanBot с поддержкой OCR для 60 языков (пока не видел, входит ли в них русский).
В связи с этим я решил опубликовать так и не дописанную до конца старую заметку про сканеры документов и OCR с tesseract.
Я часто фотографирую всякие бумажки, объявления на дверях и т.д. Можно всё это делать в Evernote, но мы рассмотрим гиковский workflow, который может быть кому-то пригодится.
Идея в том, чтобы на сфотографированные телефоном документы накладывался текстовый слой (для поиска в spotlight) и геометка (очень часто лучшим способом поиска документа является место съемки).
Программы для сканирования на iOS и workflow в общем
Можно просто фотографировать всё встроенной камерой, в таком случае с геометками всё понятно – они просто есть из коробки у каждой фотографии. В общем случае можно обойтись просто фотографиями, но специальные сканеры документов на iOS позволяют автоматически обрезать фотографию по границе документа и сгруппировать несколько фотографий в один документ. Документ, например, будет автоматически сохраняться в Dropbox. А на стороне OS X на фотографию будет автоматически накладываться текстовый слой.
Разработчики часто для повышения рейтингов раздают свои приложения бесплатно или со скидкой, благодаря этому у меня на iPhone оказалось три сканера документов: ABBY FineScanner (регулярно раздается за $1), DocScanner PRO и Scanbot.
DocScanner PRO
Программа со стремным интерфейсом и сломанной кнопкой open with (разработчики в курсе и обещают поправить). Из плюсов – добавление геометки и OCR. Правда геометка все равно не экспортируется в PDF, а OCR хоть и дружит с русским языком, но распознает очень плохо. В общем эту программу я сразу удалил.
ABBY FineScanner
Хорошая качественная программа с аккуратным интерфейсом. Делаем одну или несколько фотографий, программа сама определяет границы документов и обрезает их, затем у нас есть выбор: просто сохранить документ в программе, или отправить куда-нибудь. Жаль только гео-метки она не делает, даже в самой программе. Эту программу я не удалил и буду следить за обновлениями, которые у неё выходят не редко.
Scanbot
Остановился на этой программе из-за классной фичи – она может автоматически заливать все сделанные документы в облако. Т.е. просто делаем снимки и забываем – документ будет залит на ноутбук через Dropbox и на него автоматически будет наложен текстовый слой.
Гео-метки эта программа, к сожалению, тоже не делает. Зато у неё очень красивый и удобный интерфейс, она позволяет делать аннотации в документах и ставить подпись. В общем – наш выбор!
Другие программы для iOS
Также пробовал программы paperless и ABBY Text Grabber.
Paperless служит в основном для фотографирования чеков. Её особенность в том, что при экспорте в PDF она размещает фотографию не на весь лист, а на половину. А справа от фото добавляет дату, описание и геометку.
ABBY Text Grabber – OCR на iOS со встроенным переводчиком. Т.е. фотографируем бумажку, получаем распознанный текст. Далее можно перевести его на другой язык или сохранить куда-нибудь.
OCR и наложение текстового слоя на PDF
Итак, я фотографирую документы в scanbot, он заливает их в Dropbox. На маке Hazel мониторит директорию с входящими PDF и запускает скрипт, который добавляет к ним текстовый слой. Но Hazel покупать не нужно, можно обойтись встроенным в ОС Automator. После этого они отправляются в моё хранилище и доступны для поиска в spotlight. На самом деле там есть ещё небольшая часть workflow в которой к документу добавляются теги, но это будет отдельная тема.
Для OCR я прикрутил свободный пакет tesseract. Вывод в pdf появился только в текущем релиз-кандидате и вот инструкция по сборке tesseract:
Сначала ставим leptonica 1.70:
brew edit leptonica
# меняем там версию на 1.70 и комментируем строку sha1
устанавливаем с tiff
Устанавливаем HEAD версию tesseract:
brew install tesseract --all-languages --HEAD --debug
Устанавливаем ghostscript:
gs -q -dNOPAUSE -r1200 -sDEVICE=tiff24nc -sOutputFile=test.tiff test.pdf -c quit
tesseract -l rus+eng test.tiff test2 pdf
А вот сам скрипт:
export LANG=ru_RU.UTF-8
export name="`basename \"${1}\" .pdf`"
if [ -f "${HOME}/Desktop/${name}" ]; then
export name="${name}-`uuidgen`"
fi
/usr/local/bin/gs -q -dNOPAUSE -r1200 -sDEVICE=tiff24nc -sOutputFile=/tmp/ocr.tiff "${1}" -c quit
/usr/local/bin/tesseract -l rus+eng /tmp/ocr.tiff "${HOME}/Desktop/${name}" pdf
rm /tmp/ocr.tiff
FineReader
Как вариант FineReader может сам импортировать фотки с iOS и делать из них документ.
P.S. Вопрос с гео-метками остается открытым.