Сделайте существующий PDF доступным для поиска (OCR) через командную строку / скрипт


21

Я ищу автономный инструмент с поддержкой сценариев, который делает доступным для поиска существующий файл PDF, запустив на нем OCR, заменив исходный файл без возможности поиска на версию с возможностью поиска, и может запускаться без присмотра.

Например, www.pdfscannerapp.com - делает именно то, что мне нужно, но это только графический интерфейс - не поддерживает скрипты.

Мне известно, что Evernote делает файлы PDF доступными для поиска, но они остаются доступными для поиска только в Evernote.

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

(Мне известен похожий, но другой вопрос по AD: в поисках программного обеспечения для сканирования или преобразования в PDF с возможностью поиска и подписью - однако мне не нужно подписывать или заполнять PDF-файлы, и мое требование заключается в том, чтобы решение было пригодным для сценариев)

РЕДАКТИРОВАТЬ:

1) Несколько утилит позволяют извлекать структурированный текст, однако для того, чтобы его можно было извлечь, текст должен быть там; Я в основном имею в виду PDF-файлы, которые являются растровыми растровыми изображениями, как в случае с обычными PDF-файлами, созданными сканерами.

2) Я не обязательно ищу бесплатное решение, и я был бы более чем рад заплатить за хорошую утилиту, которая просто делает то, что мне нужно, но я не ищу громоздких приложений с миллионом функций, которые включают функцию OCR, но чья стоимость не оправдывает покупку их только для функциональности OCR.

3) Как указано выше, я не ищу идеальное OCR, просто умеренно приемлемое OCR. К сожалению, по моему опыту, tesseract действительно ниже этого порога. Я определяю «умеренно приемлемый» OCR, который может, скажем, OCR оплатить коммунальные услуги, чтобы хотя бы номер счета (номер клиента) распознавался правильно.

РЕДАКТИРОВАТЬ: «сценарий» или «автоматизируемый», то есть, может быть запущен автоматически и запускаться без участия человека.


2
... не знаю , как трудно было бы сделать , но Tesseract OCR часто упоминается code.google.com/p/tesseract-ocr и OCR в Unix.SE .
HHH

1
Существует аналогичный вопрос здесь , ответ соответствует вашим требованиям делает?
nohillside

1
Вы упоминаете OCR. Ваши требования включают обработку изображений в PDF или отсканированных PDF-файлов? Для файлов, в которых есть текст в виде простого постскрипта, вам может подойти конвертер PDF в текст, такой как «PDF2Text Pilot».
Тим Б

@patrix Я искал небольшую утилиту, не обязательно бесплатную, но в другом ценовом диапазоне. Тем не менее, это возможное решение, спасибо.
магма

@TimothyButler, к сожалению, я имею дело с отсканированными PDF-файлами (изображениями). Но, хороший совет, спасибо.
магма

Ответы:


5

Мне не совсем понятно, каковы ваши требования для возможности «написать» это из «командной строки».

Если вы говорите об автоматизации, то это возможно с любым количеством утилит.

ABBYY FineReader Express + Клавиатура Maestro + Хейзел

Я использую ABBYY FineReader Express + Keyboard Maestro + Hazel так:

  1. Хейзел контролирует данную папку для любых новых PDF-файлов

  2. если PDF-файл найден, он открывается в «ABBYY FineReader Express»

  3. Затем Keyboard Maestro автоматизирует процесс преобразования PDF-файла в PDF с возможностью поиска (OCR) и сохраняет файл в другом каталоге.

Теперь, если у вас уже нет Hazel и Keyboard Maestro, ваши первоначальные затраты будут расти довольно быстро (хотя я настолько зависим от обоих, что считаю их выгодной сделкой).

PDFPen + AppleScript + Действия с папками

Вы можете сделать что-то подобное с PDFPen (или PDFPenPro) и действиями с папками и AppleScript. См. Https://gist.github.com/prenagha/1355037 для одного примера.

Марко Армент (Marco Arment) провел обзор приложений OCR для Mac и обнаружил, что PDFPen показал отличные результаты и его легко автоматизировать.

Поиск в Google по запросу "PDFpen applecript OCR" найдет несколько альтернатив.


хороший ответ TJ. Хейзел удивительна, она мне принадлежит, и мне очень нравится ее использовать. В настоящее время я не владею Abbyy / Keyboard Maestro, но Hazel + PDFPen - потрясающая комбинация. В целом, хотя все ответы здесь, как правило, очень хорошие и обслуживают немного другую аудиторию, я думаю, что Hazel + PDFPen хорошо подходит для исходной задачи. Принятый.
магма

+1 на ABBYYFineReader Express, легко лучший OCR, прямо сейчас, и я прошел через дюжину для моего собственного проекта
TechZen

12

То, что вы хотите, это Tesseract OCR. Это OCR с открытым исходным кодом, который поддерживается Google и поддерживает различные платформы. Он также имеет собственный интерфейс командной строки. Это именно то, что вы ищете и доступно из проекта портов Mac, а также homebrew .

Домашняя страница проекта: https://github.com/tesseract-ocr

Как установить на OS X: http://blog.matt-swain.com/post/26419042500/install-tesseract-ocr-on-mac-os-x-lion

Пример использования: tesseract -l eng input.pdf output


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

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

Разрешает ли версия OS X ввод PDF? Версия для Windows - нет.
Дуг

8

Отказ от ответственности: НЕ РЕШЕНИЕ OCR (но этот ответ все еще полезен для извлечения текста из PDF)

Существует проект Apache Software Foundation под названием Apache Tika :

Инструментарий обнаруживает и извлекает метаданные и структурированный текст из различных документов с использованием существующих библиотек синтаксического анализатора.

Они поддерживают извлечение текста PDF с помощью PDFBox :

позволяет создавать новые документы PDF, манипулировать существующими документами и возможностью извлекать контент из документов. Apache PDFBox также включает в себя несколько утилит командной строки

И недавно они также добавили поддержку OCR (через Tesserac)

Для текстового решения PDFBox позволяет очень просто извлечь текст из PDF:

  • Загрузите pdfbox-appпакет с https://pdfbox.apache.org/downloads.html
  • запустите ExtractTextкоманду на нем:

    java -jar pdfbox-app-xyzjar ExtractText myNiceBook.pdf myNiceBook.txt

Он также имеет несколько других приятных опций, которые вы можете увидеть в документации ExtractText .


Определенно хороший вариант для извлечения текста, но я не вижу возможности распознавания текста.
магма

1
@magma OCR означает «оптическое распознавание символов», определенно есть «возможность OCR». Теперь вам нужно уточнить: является ли вашей проблемой извлечение текста из изображения с низким разрешением, например, созданного с помощью VGA-камеры, плохого сканера или удаленного изображения? Тогда ваша проблема другая и требует физического рассмотрения таких вещей, как сверхразрешение. Пожалуйста, задавайте более конкретные и короткие вопросы, чтобы на них можно было ответить. Я предлагаю вам упростить этот вопрос до одной функции, которую вы хотите. Если вы хотите чего-то большего, задайте новый вопрос.
HHH

3
@hhh, одна вещь - это извлечение текста из двоичного файла (такого как PDF), чтобы его можно было использовать и читать, анализируя двоичный формат. в этом нет ничего оптического. текст уже есть, эти утилиты просто извлекают его, чтобы вам было проще сказать, так сказать. Оптическое распознавание символов отличается тем, что оно пытается распознать узоры пикселей в растровом изображении и понять их достаточно, чтобы создать соответствующий фрагмент текста.
магма

Это не отвечает на оригинальный вопрос. AFAICT, pdfbox-app не делает OCR.
Feuermurmel

5

Я бы порекомендовал DEVONThink Pro Office . Это отличное приложение и имеет очень хорошую поддержку AppleScript. Увы, только версия Pro Office имеет возможность распознавания текста, поэтому вам придется выложить £ 100 ($ 150).

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

[править] - ах, просто перечитайте свой пост - это определенно будет излишним!

Если вы просто хотите получить OCR из оболочки, вы можете попробовать поговорить с ABBY, чей движок DEVON лицензирует:

http://www.abbyy-developers.com/en:tech:samples:commandline_ocr


Хотя DEVONThink Pro Office в OS X является излишним, это интересно. Если разработчики разработали его для OS X и iOS, он может работать (сохраняя UI более простым) - знаете ли вы что-нибудь подобное? Хотя это крутая идея - так что Pro версия автоматически добавляет слой OCR ко всем видам вещей, таким как скриншоты и PDF? А пользователь может как-то «скрипт» это?
HHH

2
Да, в приложении есть хороший словарь AppleScript, который, помимо прочего, позволяет преобразовывать изображения, хранящиеся в приложении, в PDF-файлы с возможностью поиска.
Диггори

Предположим, что я делаю снимки с iPhone или снимки экрана с OS X и помещаю их в папку ProjectA, автоматически ли DEVONThink добавляет к ним слой оптического распознавания текста даже без указания языка? Предположим, вы поместили их в DropBox, а затем сделали DEVONThink в OSX для автоматической проверки папки, тогда вы могли бы работать с ней поверх OS X и iOS? Это увлекательная концепция, если все сделано хорошо ... +1
ччh

В некотором смысле это звучит как EverNote, где EverNote добавляет OCR, но не разрешает его экспорт таким образом. Можно ли экспортировать ваши проекты из этого программного обеспечения с помощью OCR? Если нет, то некоторые очень простые библиотеки OCR, а затем некоторые библиотеки лингвистического анализа могут работать лучше всего. Возможно, другой - ЭББИ, я пока не знаю.
HHH

2
Он может распознавать на нескольких языках: i.stack.imgur.com/buDLI.png
Diggory

5

Вы можете сделать свой существующий PDF доступным для поиска, преобразовав его в текстовый файл. Для этого вам понадобятся как минимум Imagemagick , Ghostscript (для преобразования PDF) и Tesseract OCR.

Пример командной строки:

$ wget http://www.fmwconcepts.com/misc_tests/pdf_tests/test.pdf
$ convert -density 300 -depth 8 test.pdf test.png
$ tesseract test*.png test.txt
$ grep -i --color=auto the test*.txt
**The** details as told by surviving crew members, to **the** German publication Spiegel and published on ABC's

Это может быть расширено до ваших потребностей.

Чтобы установить необходимые инструменты, на OSX вы можете установить его через Homebrew :

brew install imagemagick jpeg libpng ghostscript tesseract

На Linux используйте apt-getили yumвместо brew.

Для получения дополнительных инструментов OCR, проверьте: OCR в системах Linux

Связанный:


4

OCRmyPDF - это решение, которое легко реализуемо и обеспечивает выходной pdf с тем же качеством входного файла и приемлемым размером:

https://github.com/jbarlow83/OCRmyPDF


Это похоже на классное решение, хотя я считаю, что бэкенд OCR, Tesseract, довольно разочаровывает (вполне определенно из-за моих собственных ограничений в правильной настройке).
магма

Мне нравится OCRmyPDF, см. Мой ответ ниже, в котором объясняется, как устанавливать и перетаскивать, автоматизировать его быстро и безболезненно с помощью докера.
Спасибо

1

Stackoverflow имеет связанные вопросы при разборе PDF, охватывающие такие вещи, как PDFBox и Apache TIKA, которые использует PDFBox. Рубиновый код ниже извлекает записи из PDF. Вы должны иметь достаточно хорошее разрешение для этого типа кодов, чтобы работать надежно. Поэтому приобретите достаточно хороший сканер с большим разрешением, а затем посмотрите, работает ли какое-либо программное обеспечение.

Примеры

  1. https://github.com/yob/pdf-reader/tree/master/examples

ТАК темы

  1. /programming/5217783/pdf-parse-to-text-in-java

  2. /programming/8149179/alternative-to-tika-pdfbox-for-parsing-pdf-in-solr-any-version-later-than-1-4

  3. /programming/320621/ruby-pdf-parsing-gem-library

  4. /programming/15186740/haskell-parsing-reading-content-of-pdf-files

[Редактировать]

Я не уверен, понял ли я вашу проблему сейчас. Вы хотите добавить слой OCR к различным материалам, таким как случайные фотографии, снимки экрана, PDF-файлы без слоя OCR и т. Д.? Я не знаю решения, но я уверен, что кто-то знает, поэтому задал конкретный вопрос, как это сделать с Automator и некоторым программным обеспечением OCR:

Automator-скрипт с OCR-программным обеспечением для автоматического добавления OCR в материал?


Опять же: я не хочу разбирать или извлекать текст, который уже есть. Я хочу распознать текст (OCR) в PDF-файл, который по сути изображения, растровые изображения; они изначально не содержат никакого текста.
магма

@magma пожалуйста, посмотрите мое обновление. Вы хотите автоматизировать добавление слоя OCR, чтобы вы могли осуществлять поиск по различным типам документов даже без «доступного для поиска текста»? Если бы вы могли сделать это, вы могли бы искать по всем документам в Finder - вы понимаете? Я удивлен, если Apple не сделает этого в следующих обновлениях ...
чч

как указано в моем вопросе, да.
магма

1

Для этого типа самостоятельного применения я большой поклонник Хейзел.

Это позволяет чрезвычайно легко создавать сценарии действий без необходимости изучать более ориентированный на командную строку инструмент, такой как perl или python, и в сочетании с выбранным вами механизмом OCR (мой в настоящее время PDF Pen Pro), у вас не должно возникнуть проблем при обработке файлов с минимальным возня.

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


0

PDFScannerApp имеет неофициальную поддержку сценариев. Свяжитесь с автором для действия Automator.


0

Я использую Adobe Acrobat для OCR в пакетном режиме. Мой дуплексный сканер может распознавать после сканирования, но технология распознавания текста в acrobat, на мой взгляд, более точная. Я просто указываю на папку, в которой нет OCR, а затем Acrobat сохраняет PDF как документ с возможностью поиска, включая текстовый слой. Если бы я хотел OCR через командную строку, я не знаю способа, но я могу автоматизировать завершение GUI с помощью Autohotkey. Не такой надежный и быстрый, как командная строка, но он выполняет свою работу после настройки действия рабочего процесса для минимизации взаимодействия с графическим интерфейсом.

Для Mac скрипт Apple делает то же, что и Autohotkey на ПК, хотя я еще не пробовал на своем Mac.

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

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


0

Я наткнулся на это недавно: http://ocrkit.com/faq.html

Вы должны заплатить через 14 дней, хотя


1
Добро пожаловать, чтобы спросить другого! Мы пытаемся найти лучшие ответы, и эти ответы предоставят информацию о том, почему они лучшие. Объясните, почему вы считаете, что рекомендованное вами программное обеспечение лучше других. Как правило, ответы, содержащие только ссылки, могут быть удалены, поэтому вы всегда хотите, чтобы ваш ответ включал всю необходимую информацию. См. Как ответить о том, как предоставить качественный ответ.
ФСБ

0

Я получил высококачественное преобразование Drag & Drop, работающее с помощью Docker.

Если ты:

  1. установите Docker для вашего Mac и
  2. затем создайте новое приложение Automator
  3. с этим содержимым внутри действия «Выполнить сценарий оболочки». Выберите Pass Input:"as arguments"

/bin/bash текст сценария:

cd "`dirname "$1"`"
/usr/local/bin/docker run --rm -v "$(pwd):/home/docker" jbarlow83/OCRmyPDF --force-ocr "`basename "$1"`" "`basename -s .pdf "$1"`-ocr.pdf"

Тогда вам следует перетаскивать PDF-файлы на него, и вы получите PDF-файл с аналогичным именем, к которому добавляется «-ocr».

Я полагаю, что его можно легко изменить, чтобы он возвращал файл в Automator для копирования в другое место. Подробнее о пакете докера OCRmyPDF. и основной инструмент (также упоминается в другом ответе).

Вы можете проверить это в самом Automator с действием «Получить указанные элементы Finder» в качестве входных данных для этого.

При первом запуске это займет больше времени, так как потребуется загрузить образы Docker для OCRmyPDF (незаметно). В Терминале вы можете поочередно бежать, docker pull jbarlow83/ocrmypdfчтобы ускорить первый запуск. Типичный прогон занимает около 10 секунд на страницу с высоким DPI, но автоматически выводит текст в речь, даже если есть таблицы или диаграммы. Перед распознаванием я обрезаю с помощью Сейды, чтобы убрать лишние слова с других страниц.

--force-ocrАргумент указывает инструмент игнорировать и перезаписывать более ранние попытки распознавания, которые в моих случаях, как правило лишь частично и бесполезно.


0

OCRKit имеет поддержку AppleScript и интерфейс командной строки. С их страницы помощи :

AppleScript

Вы также можете написать скрипт OCRKit, чтобы интегрировать его в свой рабочий процесс. Например, обрабатывать входящие файлы через общую папку, с копировального устройства MFP и т. Д. И просто сказать OCRKit открыть, и, таким образом, процесс выполняется через AppleScript:

tell application "OCRKit"
   -- the wonders of AppleScript POSIX path handling, ...
   open "Users:admin:Desktop:orderform.pdf"
   open POSIX path of "/Users/Admin/Desktop/orderform.pdf"
end tell 

Командная строка

Начиная с версии OCRKit 2.5 поддерживается прямой сценарий командной строки. Это значительно упрощает использование OCRKit в пакетной обработке, позволяет устанавливать больше параметров, а также является более надежным и кроссплатформенным, чем AppleSCript.

OCRKit.app/Contents/MacOS/OCRKit \ 
    --lang en | de | fr | es | ... \
    --format pdf | html | rtf | text \
    --no-progress \
    --output out-file in-file

Начиная с версии 16.9 OCRKit поддерживаются дополнительные параметры командной строки:

-r, --recursive directory

Сканирование каталога рекурсивно для новых файлов. Пропускает файлы из OCRKit с текстовым слоем или векторной графикой.

--pattern "regex"

Шаблон, используемый для сопоставления имен файлов во время рекурсивного сканирования. По умолчанию %.pdf$рекомендуется TIFF%.tiff?$

--log file

Записать информацию файла журнала и статистику во время рекурсивного сканирования в файл.

--password secret

Используйте секретный пароль для расшифровки файлов PDF во время пакетной обработки.

--test-run [ fast ]

Запускайте тестовую пакетную обработку только в тестовом режиме, чтобы проверить файлы PDF или получить количество страниц для оценки общего времени обработки. «fast» будет проверять только первую страницу каждого файла, вместо того чтобы проходить все страницы для анализа изображений и векторов.

--tag name

Используйте расширенное имя атрибута, чтобы пометить состояние обработки файлов во время пакетной обработки. macos:OCRKit (%s)вместо этого будет использовать собственные теги macOS Finder или просто macos:OCRKitне включать атрибут состояния. Порядок государственного атрибута: started, analyzed, processed, а также может быть encrypted.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.