コマンドライン/スクリプトで既存のPDFを検索可能(OCR)にします


21

OCRを実行して既存のPDFファイルを検索可能にし、元の検索不能ファイルを検索可能バージョンに置き換えて、無人で実行できるオフラインスクリプト可能ツールを探しています。

たとえば、www.pdfscannerapp.com-私が必要とするものを正確に実行しますが、GUIのみです-スクリプト化できません。

EvernoteはPDFファイルを検索可能にすることを知っていますが、それらはEvernote内でのみ検索可能です。

私は完璧なOCRを探していません。適度に受け入れられるOCRでも問題ありませんが、かさばるソフトウェアパッケージよりも小さなユーティリティを好むでしょう。

(ADに関する同様の、しかし異なる質問を認識しています:スキャンまたは検索および署名可能なPDFに変換するソフトウェアを探しています-ただし、私はPDFに署名または記入する必要はなく、私の要件はソリューションがスクリプト可能であることです)

編集:

1)いくつかのユーティリティは、構造化テキストの抽出を許可しますが、抽出するためにはテキストがそこになければなりません。主に、スキャナーで生成されたプレーンPDFの場合のように、ラップされたビットマップであるPDFを参照しています。

2)必ずしも無料のソリューションを探しているわけではなく、必要なことだけを行う優れたユーティリティに喜んで支払いますが、OCR機能を含む100万の機能を備えたかさばるアプリケーションは探していませんが、そのコストは、OCR機能のためだけに購入することを正当化するものではありません。

3)上記のように、私は完璧なOCRを探しているのではなく、適度に受け入れられるOCRを探しています。残念ながら、私の経験では、tesseractは実際にそのしきい値を下回っています。少なくとも口座番号(顧客番号)が正しく認識されるように、たとえば公共料金の請求書をOCRできるOCRを「適度に受け入れられる」と定義します。

編集:「スクリプト可能」または「自動化可能」、つまり、自動的にトリガーされ、人間の入力なしで無人で実行できます。


2
...それがどれほど難しいかはわかりませんが、Tesseract OCRはUnix.SEのcode.google.com/p/tesseract-ocrとOCR についてよく言及していました
hhh

1
ここにも同様の質問がありますが、答えは要件に合っていますか?
nohillside

1
あなたはOCRに言及しています。要件には、PDF内の画像の処理、またはスキャンされたPDFファイルが含まれますか?テキストが単純なポストスクリプトとして含まれているファイルの場合、「PDF2Text Pilot」などのPDFからテキストへのコンバーターが機能する場合があります。
ティムB

@patrix私は小さなユーティリティを探していました。必ずしも無料ではありませんが、異なる価格帯にあります。それでも、それは可能な解決策です、ありがとう。
マグマ

@TimothyButler残念ながら、スキャンしたPDF(画像)を扱っています。しかし、素敵なヒント、ありがとう。
マグマ

回答:


5

「コマンドライン」からこれを「スクリプト化」できるようにするための要件が​​何であるかは、私には完全には明らかではありません。

自動化について話している場合、それは任意の数のユーティリティで可能です。

ABBYY FineReader Express +キーボードマエストロ+ハシバミ

私はABBYY FineReader Express + Keyboard Maestro + Hazelを次のように使用します:

  1. Hazelは、新しいPDFがないか指定されたフォルダーを監視します

  2. PDFが見つかった場合、「ABBYY FineReader Express」で開かれます

  3. Keyboard Maestroは、PDFを検索可能なPDF(OCR)に変換するプロセスを自動化し、ファイルを別のディレクトリに保存します。

現在、HazelとKeyboard Maestroをまだ所有していない場合、初期コストは非常に急速に上昇します(両方に依存しているにもかかわらず、それらはお買い得だと考えています)。

PDFPen + AppleScript +フォルダーアクション

PDFPen(またはPDFPenPro)およびフォルダーアクションとAppleScriptで同様のことができます。1つの例については、https://gist.github.com/prenagha/1355037を参照してください

Marco ArmentはMac用のOCRアプリの調査を行い、PDFPenは素晴らしい結果をもたらし、自動化が容易であることがわかりました。

「PDFpen applescript OCR」をグーグルで検索すると、いくつかの選択肢が見つかります。


TJの良い答え。ハシバミは素晴らしいです、私はそれを所有し、私はそれを非常に使用することを楽しみます。私は現在、アビー/キーボードマエストロを所有していませんが、Hazel + PDFPenは素晴らしいコンボです。全体として、ここでのすべての回答は一般的に非常に優れており、わずかに異なる対象者にサービスを提供していますが、Hazel + PDFPenは元の問題に適していると思います。受け入れられました。
マグマ

ABBYYFineReader Expressで+1、簡単にすぐに使用できる最高のOCRであり、私自身のプロジェクトで
TechDen

12

必要なのはTesseract OCRです。これは、Googleが管理し、さまざまなプラットフォームをサポートするオープンソースのOCRです。また、ネイティブコマンドラインインターフェイスも備えています。それはまさにあなたが探しているものであり、Macのportsプロジェクトやhomebrewから入手できます。

プロジェクトホーム: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


素敵なプロジェクト。私のテストでは、認識は貧弱でしたが、それを微調整することができないことに依存していると確信しています。私は怠ierな解決策を探していましたが、これは特により多くの制御が必要で、それに時間を割くことができる場合には良い選択かもしれません。
マグマ

tesseractは、最新のプロプライエタリアプリと比べてあまり良くありません。特に、エンコードと数学に問題があり、多くのギリシャ文字が乱れています。
TechZen

OS XバージョンはPDF入力を許可しますか?Windowsバージョンはサポートしていません。
ダグ

8

免責事項: OCRソリューションではありません(ただし、この回答はPDFからテキストを抽出するのに役立ちます)

Apache TikaというApache Software Foundationプロジェクトがあります。

ツールキットは、既存のパーサーライブラリを使用して、さまざまなドキュメントからメタデータと構造化テキストコンテンツを検出および抽出します。

PDFBoxを使用したPDFテキスト抽出をサポートします。

新しいPDFドキュメントの作成、既存のドキュメントの操作、およびドキュメントからコンテンツを抽出する機能を許可します。Apache PDFBoxには、いくつかのコマンドラインユーティリティも含まれています

また、最近、OCRのサポートも追加されました(Tesserac経由)

テキストベースのソリューションの場合、PDFBoxを使用すると、PDFからテキストを非常に簡単に抽出できます。

また、ExtractText docsで見ることができる他の素晴らしいオプションもいくつかあります。


テキストを抽出するための間違いなく素晴らしいオプションですが、私が見ることができるOCR機能はありません。
マグマ

1
@magma OCRは「光学式文字認識」を意味し、間違いなく「OCR機能」があります。ここで明確にする必要があります:VGAカム、貧弱なスキャナーまたは遠い画像で生成されたような低解像度の画像からテキストを抽出する問題はありますか?その場合、問題は異なり、超解像などの事柄を物理的に考慮する必要があります。より具体的で短い質問に答えてください。この質問を1つの機能に単純化することをお勧めします。さらに何かが必要な場合は、新しい質問をしてください。
hhh

3
@ hhh、1つのことは、バイナリ形式を解析することで、使用可能かつ読み取り可能なように、バイナリファイル(PDFなど)からテキストを抽出することです。それについて光学的なものは何もありません。テキストはすでにそこにあります。これらのユーティリティは、単に目で見やすいように抽出するだけです。光学式文字認識は、ビットマップ内のピクセルのパターンを認識し、対応するテキストフラグメントを生成できるほど十分に理解しようとする点で異なります。
マグマ

これは元の質問には答えません。AFAICT、pdfbox-appはOCRを実行しません。
Feuermurmel

5

DEVONThink Pro Officeをお勧めします。これは優れたアプリケーションであり、AppleScriptのサポートが非常に優れています。残念ながら、OCR機能を備えているのは「Pro Office」バージョンのみです。そのため、100ポンド(150米ドル)を支払う必要があります。

スクリプト化されたOCRにのみ使用している場合、それは過剰になりますが、非常に優れたアプリです。

[編集]-投稿を読み直してください-間違いなくやり過ぎです!

シェルからOCRが必要な場合は、エンジンDEVONがライセンスを取得しているABBYと話してみてください。

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


OS XのDEVONThink Pro Officeはやり過ぎですが、興味深いです。開発者がOS XおよびiOSで設計した場合、動作する可能性があります(UIをよりシンプルに保つ)-そのようなことをご存知ですか?しかし、クールなアイデア-Proバージョンでは、スクリーンショットやPDFなどのあらゆる種類のものにOCRレイヤーが自動的に追加されますか?そして、ユーザーはそれを何らかの形で「スクリプト」できますか
hhh

2
はい-アプリには優れたAppleScript辞書があります。これにより、アプリに保存されている画像を検索可能なPDFに変換できます。
ディゴリー

iPhoneで写真を撮るか、OS Xでスクリーンショットを撮ってProjectAフォルダーに入れると、DEVONThinkは言語を指定しなくてもOCRレイヤーを自動的に追加しますか?それらをDropBoxに入れてから、OSXでDEVONThinkを作成してフォルダーを自動的にチェックするとします。OSXとiOSで作業できますか?それがうまくいけば魅力的なコンセプトです... +1
hhh

ある意味では、EverNoteはOCRを追加するが、そのようなエクスポートを許可しないEverNoteのように聞こえます。OCRを使用して、このソフトウェアからプロジェクトをエクスポートできますか?そうでない場合、非常に単純なOCRライブラリと言語分析ライブラリが最適に機能する場合があります。おそらくもう1つはABBYかもしれませんが、まだわかりません。
hhh

2
:これは、いくつかの言語で認識することができ i.stack.imgur.com/buDLI.png
Diggory

5

テキストファイルに変換することで、既存のPDFを検索可能にすることができます。そのためには、少なくともImagemagickGhostscript(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ツールについては、チェック:LinuxシステムのOCR

関連:


4

簡単に実装でき、同じ品質の入力ファイルと適切なサイズの出力PDFを提供するソリューションはOCRmyPDFです。

https://github.com/jbarlow83/OCRmyPDF


OCRバックエンドであるTesseractがかなり期待はずれであることがわかりましたが、それはクールなソリューションのように見えます(確かに、正しく構成する上での私自身の制限のためです)。
マグマ

私はOCRmyPDFが大好きです。以下の回答を参照してください。これは、Dockerを使用してすばやく簡単にインストールしてドラッグアンドドロップする方法を説明しています。
thadk

1

Stackoverflowには、PDFBoxやPDFBoxが使用するApacheのTIKAなどをカバーするPDF解析関連の質問があります。以下のルビーコードは、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ソフトウェアを備えたAutomatorスクリプト?


繰り返しますが、すでに存在するテキストを解析または抽出するつもりはありません。基本的に画像、ビットマップであるPDFファイル内のテキスト(OCR)を認識しようとしています。元々テキストは含まれていません。
マグマ

@magma、更新をご覧ください。「検索可能なテキスト」がなくても、さまざまな種類のドキュメントを検索できるように、OCRレイヤーの追加を自動化したいですか?これを行うことができれば、Finderですべてのドキュメントを検索できます-わかりましたか?Appleが今後のアップグレードでこれを行わない場合は驚きです
...-hhh

私の質問で述べたように、はい。
マグマ

1

このタイプの自己指示型アプリケーションでは、私はHazelの大ファンです。

perlやpythonなどのコマンドライン指向のツールを学び、選択したOCRエンジン(現在はPDF Pen Pro)と組み合わせることなく、アクションをスクリプト化することが非常に簡単になります。ファイルを最小限で処理するのに問題はないはずです。大騒ぎ。

これらは両方とも有料ソフトウェアですが、両方のユーティリティはこの1つのケースをはるかに超えています。私の状況では、過去のスキャンされた記録(および進行中の紙)のデジタル化に伴う労力により、これらの価格は他の場所でプログラミングに費やす時間をはるかに上回り、現在両方のツールを所有しているため、他の多くのタスクを実行できますそれら。


0

PDFScannerAppには非公式のスクリプトサポートがあります。Automatorアクションの作成者に連絡してください。


0

バッチでOCRにAdobe acrobatを使用します。私の両面スキャナーはスキャン後にOCRを実行できますが、アクロバットのOCRテクノロジーは私の意見ではより正確です。OCRがないフォルダーをポイントすると、acrobatがテキストレイヤーを含む検索可能なPDFとしてPDFを再保存します。コマンドライン経由でOCRを実行したい場合、方法はわかりませんが、Autohotkeyを使用してGUIの終了を自動化できます。コマンドラインほど信頼性も高速もありませんが、GUI操作を最小限に抑えるためにワークフローアクションを設定した後は、ジョブを実行します。

Macの場合、AppleスクリプトはPCでAutohotkeyが行うことを行いますが、Macではまだ試していません。

オートホットキーにはレコーダーが付属しているため、スクリプト作成のほとんどは夕食会で、少し編集して微調整し、必要に応じてループすることもできます。

私はOCR画像を実験してきましたが、アクロバットを介してプロセスをまだ完全に自動化していません。コマンドラインは理想的ですが、acrobatを超える高品質のOCRエンジンを見つけていないので、今のところacrobatを使い続けます。


0

私は最近これにつまずいた:http : //ocrkit.com/faq.html

あなたはしかし14日後に支払う必要があります


1
Ask Differentへようこそ!私たちは最良の答えを見つけようとしていますが、それらの答えはなぜ彼らが最高なのかについての情報を提供します。推奨するソフトウェアが他のソフトウェアより優れていると思う理由を説明してください。一般に、リンクのみの回答は削除される可能性が高いため、常にすべての関連情報を含めて回答を作成する必要があります。質の高い回答を提供する方法については、回答方法をご覧ください。
fsb

0

Dockerを使用して高品質のドラッグアンドドロップ変換が機能するようになりました。

もし、あんたが:

  1. MacにDockerをインストールし
  2. 次に、新しいAutomatorアプリを作成します
  3. これらの内容は「シェルスクリプトの実行」アクション内にあります。パス入力を選択:"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をその上にドラッグアンドドロップすると、ファイル名に「-ocr」が追加された同様の名前のPDFが得られます。

ファイルをAutomatorに返してどこかにコピーするように簡単に変更できると思います。細かいOCRmyPDFドッカーパッケージの詳細。そして、メインツールは(も異なるの回答で述べました)。

Automator自体で、「指定されたFinderアイテムを取得」アクションを入力としてテストできます。

OCRmyPDFのDockerイメージを(目に見えないように)ダウンロードする必要があるため、初めて実行する場合は、さらに時間がかかります。ターミナルでは、代わりに実行docker pull jbarlow83/ocrmypdfして最初の実行を高速化できます。通常の実行では、高DPIページごとに約10秒かかりますが、表や図があっても自動的にテキストを音声に変換できる結果になります。OCRを実行する前に、Sejdaを使用してクロップするため、他のページからの意味のないマージンワードは削除されます。

この--force-ocr引数は、以前の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)代わりにネイティブmacOS Finderタグを使用するか、単にmacos:OCRKitstate属性を含めません。状態属性の順序は次のとおりです。startedanalyzedprocessed、とすることもできますencrypted

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.