Зробіть пошук у форматі PDF (OCR) за допомогою командного рядка / сценарію


21

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

Наприклад, www.pdfscannerapp.com - робить саме те, що мені потрібно, але це лише GUI - не сценарій.

Мені відомо, що Evernote робить PDF-файли в пошуку, але вони залишаються в пошуку лише в межах Evernote.

Я не шукаю ідеального OCR, навіть помірно прийнятний OCR - це добре, але я вважаю за краще невелику утиліту, а не об'ємний пакет програм.

(Мені відомо про подібне, але інше питання щодо AD: Шукаю програмне забезпечення для сканування або перетворення на PDF, який можна шукати і підписувати. Однак мені не потрібно підписувати чи заповнювати PDF-файли, і моя вимога полягає в тому, щоб рішення було написано сценарієм )

Редагувати:

1) Деякі утиліти дозволяють структуроване вилучення тексту, однак для того, щоб бути вилученим, текст повинен бути там; Я в основному маю на увазі PDF-файли, які обертають растрові карти, як це стосується звичайних PDF-файлів, створених сканерами.

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

3) Як було сказано вище, я не шукаю ідеального OCR, просто помірно прийнятного OCR. На жаль, на мій досвід, tesseract дійсно нижче цього порогу. Я визначаю "помірно прийнятний" OCR, який може, скажімо, OCR рахунку за комунальні послуги, щоб принаймні номер рахунку (номер клієнта) був розпізнаний правильно.

EDIT: "сценарій" або "автоматизований", тобто може бути запущений автоматично і запускатися без нагляду без будь-якого вступу людини.


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 + Hazel

Я використовую ABBYY FineReader Express + Keyboard Maestro + Hazel так:

  1. Hazel відстежує задану папку для будь-яких нових PDF-файлів

  2. якщо файл PDF знайдений, він відкриється в "ABBYY FineReader Express"

  3. Клавіатура Maestro потім автоматизує процес перетворення PDF-файлу в PDF-файл, який шукається, і зберігає файл у іншій папці.

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

Дії PDFPen + AppleScript + Folder

Ви можете зробити щось подібне за допомогою PDFPen (або PDFPenPro) та дій з папками та AppleScript. Дивіться https://gist.github.com/prenagha/1355037 для одного прикладу.

Марко Arment зробив огляд OCR додатків для Mac і виявили , що PDFPen мав відмінні результати і легко автоматизувати.

Пошук в Google для "PDFpen applescript OCR" знайде ряд альтернатив.


хороша відповідь TJ. Hazel дивовижна, я володію нею і мені подобається користуватися нею надзвичайно. Наразі я не є власником maestro в abbyy / клавіатурі, але Hazel + PDFPen - це дивовижне комбо. В цілому, хоча всі відповіді тут, як правило, дуже хороші і служать трохи різній аудиторії, я думаю, що Hazel + PDFPen добре підходить для початкової проблеми. Прийнято.
магма

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

12

Те, що ви хочете, це Tesseract OCR. Це OCR з відкритим кодом, який підтримується Google і підтримує різні платформи. Він також має власний інтерфейс командного рядка. Це саме те, що ви шукаєте та доступне для проекту портів Mac, а також домашнього перекладу .

Головна проекту: https://github.com/tesseract-ocr

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

Приклад використання: tesseract -l eng input.pdf output


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

tesseract не дуже хороший порівняно з більш актуальними власними програмами. Зокрема, у нього проблеми з кодуванням і математикою, часто витісняючи безліч грецьких символів.
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 .


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

1
@magma OCR означає "оптичне розпізнавання символів", безумовно, є "OCR здатність". Тепер вам потрібно уточнити: чи є вашою проблемою витягнути текст із зображення поганої роздільної здатності, наприклад, створеного за допомогою відеокамери VGA, поганого сканера або віддаленого зображення? Тоді ваша проблема інша і вимагає фізичного розгляду речей, таких як суперрозв’язання. Будь ласка, задайте більш конкретні та короткі запитання, щоб на них можна було відповісти. Я пропоную вам спростити це питання до однієї потрібної вам функції. Якщо ви хочете чогось більшого, задайте нове запитання.
hhh

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

Це не дає відповіді на початкове запитання. AFAICT, програма pdfbox не робить OCR.
Feuermurmel

5

Я рекомендую DEVONThink Pro Office . Це відмінне додаток і має дуже гарну підтримку AppleScript. На жаль, лише версія Pro Office має функцію OCR - тому вам доведеться викласти 100 фунтів стерлінгів (150 доларів).

Це буде надмірно, якщо ви використовуєте його лише для сценарію OCR - але це дуже хороший додаток.

[редагувати] - ах просто перечитайте свою публікацію - це безумовно буде зайвим!

Якщо ви просто хочете отримати OCR з оболонки, ви можете спробувати поговорити з ABBY, чий двигун DEVON має ліцензії:

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


Хоча DEVONThink Pro Office в OS X є надмірним, це цікаво. Якщо розробники розробляли його через OS X і iOS, він може працювати (зберігаючи інтерфейс більш простим) - чи знаєте ви щось подібне? Хоча чудова ідея - тому версія Pro автоматично додає шар OCR до всіх видів речей, таких як скріншоти та PDF-файли? І користувач може якось його "скриптувати"?
hhh

2
Так - у додатку є хороший словник AppleScript, який, крім іншого, дозволяє перетворювати зображення, збережені в додатку, в PDF-файли, які можна шукати.
Diggory

Припустимо, я сфотографуюсь із iPhone або скріншоти з OS X і поміщу їх у папку ProjectA, чи DEVONThink автоматично додає до них шар OCR, навіть не вказуючи мову? Припустимо, ви помістите їх у DropBox і потім зробите DEVONThink в OSX, щоб автоматично перевірити папку, ви могли б потім працювати з нею через OS X та iOS? Це захоплююча концепція, якщо зроблено добре ... +1
год-год

Певним чином це звучить як EverNote, коли EverNote додає OCR, але не дозволяє його експортувати так. Чи можливо експортувати ваші проекти з цього програмного забезпечення за допомогою OCR? Якщо ні, то дуже прості ліцензії OCR, а потім деякі лінгвістичні аналітичні роботи можуть працювати найкраще. Можливо, інше - ABBY, я ще не знаю.
hhh

2
Він може розпізнавати на декількох мовах: i.stack.imgur.com/buDLI.png
Діггорі

5

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

Деякі приклади командного рядка:

$ 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

Рішення, яке легко реалізується та забезпечує вихідний PDF з однаковою якістю вхідного файлу плюс розумний розмір - OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF


Це виглядає як прикольне рішення, хоча я знайшов OCR резервним, Tesseract, досить розчаровуючим (цілком звичайно через мої власні обмеження в правильній його налаштуванні).
магма

Я люблю OCRmyPDF, дивіться мою відповідь нижче, де пояснюється, як встановити та перетягнути автоматизовано це швидко та безболісно за допомогою докера.
thadk

1

Stackoverflow має відповідні питання під час розбору PDF, що охоплюють такі речі, як PDFBox та TIKA Apache, якими користується PDFBox. Код рубіну нижче витягує письмовий текст із PDF. Вам потрібно мати достатньо хорошу роздільну здатність для цього типу кодів, щоб надійно працювати. Тож отримайте достатньо хороший сканер з великою роздільною здатністю, а потім подивіться, чи працює якийсь із програмних засобів.

Приклади

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

SO нитки

  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:

Автоматизатор-скрипт з програмою OCR для автоматичного додавання OCR до матеріалу?


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

@magma, будь ласка, дивіться моє оновлення. Ви хочете автоматизувати додавання шару OCR, щоб ви могли шукати різні види документів, навіть без "текстового пошуку"? Якщо ви могли це зробити, ви могли шукати всі документи в Finder - ви розумієте? Я здивований, якщо Apple цього не зробить у майбутніх оновленнях ...
hhh

як сказано в моєму запитанні, так.
магма

1

Для цього типу самонаправлених додатків я великий фанат Hazel.

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

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


0

PDFScannerApp має неофіційну підтримку сценаріїв. Зверніться до автора для дії "Автоматизатор".


0

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

Для Mac яблучний сценарій робить те, що робить Autohotkey на ПК, хоча я ще не пробував на своєму Mac.

Автоматична гаряча клавіша постачається з диктофоном, тому більша частина написання сценарію - це вечеря для вас з невеликим редагуванням для уточнення і, можливо, циклічним, якщо ви цього хочете.

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


0

Я натрапив на це нещодавно: http://ocrkit.com/faq.html

Платити доведеться через 14 днів


1
Ласкаво просимо в "Запитайте різних"! Ми намагаємось знайти найкращі відповіді, і ці відповіді дадуть інформацію про те, чому вони найкращі. Поясніть, чому ви вважаєте, що програмне забезпечення, яке ви рекомендували, краще, ніж інші. Загалом, відповіді, що стосуються лише посилань, можуть бути видалені, тому ви завжди хочете робити свою відповідь усією відповідною інформацією. Див. Як відповісти про те, як надати якісну відповідь.
fsb

0

Я отримав високу якість перетворення Drag & Drop, працюючи за допомогою Docker.

Якщо ти:

  1. встановити Docker для вашого Mac та Windows
  2. потім створіть нову програму Automator
  3. з цим вмістом всередині дії "Запустити сценарій оболонки". Виберіть Pass 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. і основний інструмент (також згадується в іншій відповіді).

Ви можете перевірити його в самому Автоматизаторі, виконавши дію "Отримати вказані елементи Finder" як вхід до цього.

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

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


0

OCRKit має підтримку AppleScript та CLI. З їх довідкової сторінки :

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

Оскільки OCRKit версії 16.9 підтримуються додаткові параметри командного рядка:

-r, --recursive directory

Рекурсивно скануйте каталог на наявність нових файлів. Пропускає файли з OCRKit, з текстовим шаром або векторною графікою.

--pattern "regex"

Шаблон, який використовується для узгодження імен файлів під час рекурсивних сканувань. За замовчуванням %.pdf$рекомендація для TIFF є%.tiff?$

--log file

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

--password secret

Використовуйте секретний пароль для розшифрування PDF-файлів під час пакетної обробки.

--test-run [ fast ]

Запускайте лише тестову пакетну обробку в тестовому режимі для тестування файлів PDF або для отримання кількості сторінок для оцінки загального часу обробки. "швидкий" перевірятиме лише першу сторінку кожного файлу, замість того, щоб переходити на всі сторінки для аналізу зображень та векторів.

--tag name

Використовуйте розширене ім’я атрибута, щоб позначити стан обробки файлів під час пакетної обробки. macos:OCRKit (%s)використовуватиме натотні теги Finder macOS або просто macos:OCRKitне включає атрибут state. Порядок державного атрибута: started, analyzed, processed, а також може бути encrypted.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.