Buat PDF yang dapat dicari (OCR) yang ada melalui baris perintah / skrip

21

Saya mencari alat skrip offline yang membuat file PDF yang ada dapat dicari dengan menjalankan OCR di atasnya, mengganti file asli yang tidak dapat dicari dengan versi yang dapat dicari, dan dapat berjalan tanpa pengawasan.

Misalnya, www.pdfscannerapp.com - melakukan persis seperti yang saya butuhkan, tetapi hanya GUI - tidak dapat skrip.

Saya menyadari bahwa Evernote membuat file PDF dapat dicari, tetapi mereka hanya dapat dicari saat berada di dalam Evernote.

Saya tidak mencari OCR yang sempurna, bahkan OCR yang dapat diterima cukup baik, tetapi saya lebih suka utilitas kecil daripada paket perangkat lunak besar.

(Saya mengetahui pertanyaan serupa, namun berbeda tentang AD: Mencari Perangkat Lunak untuk dipindai atau Dikonversi ke PDF yang Dapat Ditelusuri dan Dapat Ditandatangani - namun, saya tidak perlu menandatangani atau mengisi PDF, dan persyaratan saya adalah bahwa solusinya dapat skrip)

EDIT:

1) Beberapa utilitas memungkinkan ekstraksi teks terstruktur, namun untuk diekstraksi, teks harus ada di sana; Saya terutama mengacu pada PDF yang dibungkus bitmap, seperti halnya dengan PDF biasa yang dihasilkan oleh scanner.

2) Saya belum tentu mencari solusi gratis, dan saya akan sangat senang membayar untuk utilitas yang baik yang hanya melakukan apa yang saya butuhkan, tetapi saya tidak mencari aplikasi besar dengan sejuta fitur yang mencakup fitur OCR tetapi yang biayanya tidak membenarkan membelinya hanya untuk fungsi OCR.

3) Seperti yang dinyatakan di atas, saya tidak mencari OCR yang sempurna, hanya OCR yang cukup dapat diterima. Sayangnya, dalam pengalaman saya, tesseract benar-benar di bawah ambang batas itu. Saya mendefinisikan "cukup diterima" OCR yang dapat, katakanlah, OCR tagihan utilitas sehingga setidaknya nomor akun (nomor pelanggan) dikenali dengan benar.

EDIT: "scriptable" atau "automatable", yaitu, dapat dipicu secara otomatis dan dijalankan tanpa pengawasan manusia apa pun.

magma
sumber
2
... tidak tahu bagaimana sulitnya akan lakukan tapi Tesseract OCR sering disebutkan code.google.com/p/tesseract-ocr dan OCR di Unix.SE .
hhh
1
Ada pertanyaan serupa di sini , apakah jawabannya sesuai dengan kebutuhan Anda?
nohillside
1
Anda menyebutkan OCR. Apakah persyaratan Anda termasuk menangani gambar dalam PDF, atau memindai file PDF? Untuk file yang memiliki teks di dalamnya sebagai postscript sederhana, maka konverter PDF ke teks seperti "PDF2Text Pilot" mungkin bekerja untuk Anda.
Tim B
@patrix Saya mencari utilitas yang lebih kecil, tidak harus gratis tetapi dalam kisaran harga yang berbeda. Tetap saja, ini solusi yang mungkin, terima kasih.
magma
@TimothyButler sayangnya saya sedang berurusan dengan pindaian PDF (gambar). Tapi, petunjuk yang bagus, terima kasih.
magma

Jawaban:

5

Tidak sepenuhnya jelas bagi saya apa persyaratan Anda untuk dapat "skrip" ini dari "baris perintah".

Jika Anda berbicara tentang otomatisasi, maka itu dimungkinkan dengan sejumlah utilitas.

ABBYY FineReader Express + Keyboard Maestro + Hazel

Saya menggunakan ABBYY FineReader Express + Keyboard Maestro + Hazel seperti:

  1. Hazel memonitor folder yang diberikan untuk setiap PDF baru

  2. jika PDF ditemukan, dibuka di "ABBYY FineReader Express"

  3. Keyboard Maestro kemudian mengotomatiskan proses mengubah PDF menjadi PDF (OCR) yang dapat dicari dan menyimpan file ke direktori yang berbeda.

Sekarang, jika Anda belum memiliki Hazel dan Keyboard Maestro, biaya awal Anda akan naik cukup cepat (walaupun saya sangat bergantung pada keduanya, saya menganggapnya sebagai tawaran).

PDFPen + Tindakan AppleScript + Folder

Anda bisa melakukan sesuatu yang mirip dengan PDFPen (atau PDFPenPro) dan tindakan folder dan AppleScript. Lihat https://gist.github.com/prenagha/1355037 untuk satu contoh.

Marco Arment melakukan survei aplikasi OCR untuk Mac dan menemukan bahwa PDFPen memiliki hasil yang bagus dan mudah diotomatisasi.

Pencarian google untuk "PDFpen applescript OCR" akan menghasilkan sejumlah alternatif.

TJ Luoma
sumber
jawaban yang bagus TJ. Hazel luar biasa, saya memilikinya dan saya sangat menikmati menggunakannya. Saat ini saya tidak memiliki abbyy / maestro keyboard, tetapi Hazel + PDFPen adalah kombo yang luar biasa. Secara keseluruhan, sementara semua jawaban di sini umumnya sangat baik, dan melayani audiens yang sedikit berbeda, saya pikir Hazel + PDFPen cocok untuk masalah aslinya. Diterima
magma
+1 di ABBYYFineReader Express, dengan mudah OCR terbaik di luar sana saat ini dan saya telah melalui hampir selusin untuk proyek saya sendiri
TechZen
12

Yang Anda inginkan adalah Tesseract OCR. Ini adalah OCR open source yang dikelola oleh Google dan mendukung berbagai platform. Ini juga memiliki antarmuka baris perintah asli. Ini persis seperti yang Anda cari dan tersedia dari proyek port Mac dan juga homebrew .

Home Project: https://github.com/tesseract-ocr

Cara menginstal di OS X: http://blog.matt-swain.com/post/26419042500/installing-tesseract-ocr-on-mac-os-x-lion

Contoh Penggunaan: tesseract -l eng input.pdf output

Daniel Kocevski
sumber
Proyek yang bagus. Dalam tes saya, pengakuan buruk, tapi saya yakin itu tergantung pada ketidakmampuan saya untuk menyempurnakannya. Saya mencari solusi yang lebih malas, tetapi ini mungkin pilihan yang baik terutama jika Anda ingin lebih banyak kontrol dan dapat mendedikasikan waktu untuk itu.
magma
tesseract tidak menjadi sangat baik dibandingkan dengan aplikasi berpemilik saat ini. Secara khusus memiliki masalah dengan pengkodean dan matematika, sering kali menghasilkan banyak karakter Yunani.
TechZen
Apakah versi OS X memungkinkan input PDF? Versi windows tidak.
Doug
8

Penafian: BUKAN SOLUSI OCR (tapi jawaban ini masih berguna untuk mengekstrak teks dari pdf)

Ada proyek Yayasan Perangkat Lunak Apache bernama Apache Tika :

Toolkit mendeteksi dan mengekstrak metadata dan konten teks terstruktur dari berbagai dokumen menggunakan parser libraries yang ada

Mereka mendukung ekstraksi teks PDF menggunakan PDFBox :

memungkinkan pembuatan dokumen PDF baru, manipulasi dokumen yang ada dan kemampuan untuk mengekstraksi konten dari dokumen. Apache PDFBox juga mencakup beberapa utilitas baris perintah

Dan mereka baru-baru ini juga menambahkan dukungan untuk OCR (via Tesserac)

Untuk solusi berbasis teks, PDFBox sangat mudah untuk mengekstrak teks dari PDF:

Ini juga memiliki beberapa opsi bagus lain yang dapat Anda lihat di dokumen ExtractText .

brutuscat
sumber
Jelas opsi yang bagus untuk mengekstraksi teks, tetapi tidak ada kemampuan OCR yang bisa saya lihat.
magma
1
@magma OCR berarti "pengenalan karakter optik", pasti ada "kemampuan OCR". Sekarang Anda perlu mengklarifikasi: apakah masalah Anda untuk mengekstrak teks dari gambar dengan resolusi buruk seperti yang dihasilkan dengan kamera VGA, pemindai yang buruk atau gambar yang jauh? Maka masalah Anda berbeda dan membutuhkan pertimbangan fisik hal-hal seperti resolusi super. Tolong, ajukan pertanyaan yang lebih spesifik dan lebih pendek sehingga mereka dapat dijawab. Saya sarankan Anda untuk menyederhanakan pertanyaan ini ke satu fitur yang Anda inginkan. Jika Anda menginginkan sesuatu yang lebih, tanyakan pertanyaan baru.
hhh
3
@ hhh, satu hal mengekstraksi teks dari file biner (seperti PDF) sehingga dapat digunakan dan dibaca, dengan mem-parsing format biner. tidak ada yang optik tentang hal itu. teks sudah ada di sana, utilitas ini hanya mengekstraknya sehingga mudah di mata Anda, sehingga untuk berbicara. pengenalan karakter optik berbeda karena mencoba mengenali pola piksel dalam bitmap dan cukup membuatnya masuk akal sehingga dapat menghasilkan fragmen teks yang sesuai.
magma
Ini tidak menjawab pertanyaan awal. AFAICT, pdfbox-app tidak melakukan OCR.
Feuermurmel
5

Saya akan merekomendasikan DEVONThink Pro Office . Ini adalah aplikasi yang sangat baik dan memiliki dukungan AppleScript yang sangat baik. Sayangnya hanya versi 'Pro Office' yang memiliki kemampuan OCR - jadi Anda harus mengeluarkan £ 100 ($ 150).

Akan berlebihan jika Anda hanya menggunakannya untuk skrip OCR - tetapi ini adalah aplikasi yang sangat bagus.

[sunting] - ah baru saja membaca kembali posting Anda - itu pasti akan berlebihan!

Jika Anda hanya ingin OCR dari shell, Anda dapat mencoba berbicara dengan ABBY yang mesinnya DEVON melisensikan:

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

Diggory
sumber
Meskipun DEVONThink Pro Office di OS X adalah kerja keras, itu menarik. Jika pengembang mendesainnya di atas OS X dan iOS, itu mungkin bekerja (menjaga UI lebih sederhana) - apakah Anda tahu hal seperti itu? Ide yang keren - jadi versi Pro secara otomatis menambahkan lapisan OCR ke semua jenis hal seperti tangkapan layar dan PDF? Dan entah bagaimana pengguna dapat "skrip" itu?
hhh
2
Ya - aplikasi ini memiliki Kamus AppleScript yang baik, yang di antaranya, memungkinkan Anda untuk mengkonversi gambar yang disimpan dalam aplikasi menjadi PDF yang dapat dicari.
Diggory
Misalkan saya mengambil gambar dengan iPhone atau tangkapan layar dengan OS X dan meletakkannya di folder ProjectA, apakah DEVONThink menambahkan lapisan OCR secara otomatis bahkan tanpa menentukan bahasanya? Misalkan Anda meletakkannya di DropBox dan kemudian membuat DEVONThink di OSX untuk memeriksa folder secara otomatis, Anda bisa menggunakannya dengan OS X dan iOS? Ini adalah konsep yang menarik jika dilakukan dengan ... +1
hhh
Di satu sisi, ini terdengar seperti EverNote di mana EverNote menambahkan OCR tetapi tidak mengizinkannya mengekspor seperti itu. Apakah mungkin untuk mengekspor proyek Anda dari perangkat lunak ini dengan OCR? Jika tidak, beberapa lib OCR yang sangat sederhana dan kemudian beberapa lib analisis linguistik mungkin bekerja paling baik. Mungkin yang lain adalah ABBY, saya belum tahu.
hhh
2
Itu dapat dikenali dalam beberapa bahasa: i.stack.imgur.com/buDLI.png
Diggory
5

Anda dapat membuat PDF yang ada dapat dicari dengan mengonversinya menjadi file teks. Anda memerlukan setidaknya Imagemagick , Ghostscript (untuk konversi PDF) dan alat Tesseract OCR.

Beberapa contoh baris perintah:

$ 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

Ini dapat diperpanjang lebih lanjut dengan kebutuhan Anda.

Untuk menginstal alat yang diperlukan, pada OSX Anda dapat menginstalnya melalui Homebrew :

brew install imagemagick jpeg libpng ghostscript tesseract

Di Linux gunakan apt-getatau yumbukan brew.

Untuk alat OCR lainnya, periksa: OCR di sistem Linux

Terkait:

kenorb
sumber
4

Solusi yang mudah diimplementasikan dan memberikan output pdf dengan kualitas yang sama dari file input plus ukuran yang masuk akal adalah OCRmyPDF:

https://github.com/jbarlow83/OCRmyPDF

pengguna127022
sumber
Sepertinya solusi yang keren, walaupun saya telah menemukan backend OCR, Tesseract, agak mengecewakan (tentu saja karena keterbatasan saya sendiri dalam mengkonfigurasi dengan benar).
magma
Saya suka OCRmyPDF, lihat jawaban saya di bawah ini yang menjelaskan cara menginstal dan drag-and-drop mengotomatiskannya dengan cepat dan tanpa rasa sakit dengan buruh pelabuhan.
thadk
1

Stackoverflow memiliki pertanyaan terkait dalam parsing PDF yang mencakup hal-hal seperti PDFBox dan TIKA Apache yang digunakan PDFBox. Kode ruby ​​di bawah ini mengekstrak tulisan dari PDF. Anda harus memiliki resolusi yang cukup baik agar kode jenis ini dapat bekerja dengan baik. Jadi, dapatkan pemindai yang cukup bagus dengan resolusi besar dan kemudian lihat apakah beberapa perangkat lunak berfungsi.

Contohnya

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

Jadi utas

  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

[Sunting]

Saya tidak yakin apakah saya mengerti masalah Anda sekarang. Anda ingin menambahkan lapisan OCR ke berbagai jenis bahan seperti foto acak, tangkapan layar, PDF tanpa lapisan OCR dan sebagainya? Saya tidak tahu solusinya tetapi saya yakin ada yang tahu, jadi saya mengajukan pertanyaan spesifik bagaimana melakukannya dengan Automator dan beberapa perangkat lunak OCR:

Automator-script dengan perangkat lunak OCR untuk secara otomatis menambahkan OCR ke materi?

hhh
sumber
Sekali lagi: Saya tidak mencari untuk menguraikan atau mengekstrak teks yang sudah ada di sana. Saya mencari untuk mengenali teks (OCR) dalam file PDF yang pada dasarnya adalah gambar, bitmap; mereka awalnya tidak mengandung teks apa pun.
magma
@magma tolong, lihat pembaruan saya. Anda ingin mengotomatiskan penambahan lapisan OCR sehingga Anda dapat mencari berbagai jenis dokumen bahkan tanpa "teks yang dapat ditelusuri"? Jika Anda bisa melakukan ini, Anda bisa mencari semua dokumen di Finder - Anda mengerti? Saya terkejut jika Apple tidak melakukan ini dalam peningkatan mendatang ...
hhh
seperti yang dinyatakan dalam pertanyaan saya, ya.
magma
1

Untuk aplikasi mandiri ini, saya penggemar Hazel.

Itu membuatnya sangat mudah untuk skrip tindakan tanpa perlu mempelajari alat yang lebih berorientasi pada baris perintah seperti perl atau python dan dipasangkan dengan mesin OCR pilihan Anda (milik saya saat ini PDF Pen Pro) Anda seharusnya tidak memiliki masalah dalam memproses file Anda dengan minimal kehebohan.

Keduanya adalah perangkat lunak berbayar, tetapi utilitas keduanya jauh melampaui kasus yang satu ini. Dalam situasi saya, dengan tenaga kerja yang terlibat dalam mendigitalkan catatan scan saya di masa lalu (dan kertas yang sedang berlangsung), harga ini jauh melebihi waktu saya akan menghabiskan pemrograman ini di tempat lain dan sekarang saya memiliki kedua alat, saya dapat melakukan banyak tugas lain dengan mereka.

bmike
sumber
0

PDFScannerApp memang memiliki dukungan skrip tidak resmi. Hubungi penulis untuk tindakan Automator.

ndf
sumber
0

Saya menggunakan Adobe acrobat ke OCR dalam batch. Duplex scanner saya dapat OCR setelah pemindaian tetapi teknologi OCR di acrobat lebih akurat menurut saya. Saya hanya menunjuk ke sana folder yang tidak memiliki OCR kemudian acrobat menyimpan kembali PDF sebagai PDF yang dapat dicari sekarang termasuk layer teks. Jika saya ingin OCR melalui baris perintah, saya tidak tahu cara tetapi saya bisa mengotomatiskan akhir GUI dengan menggunakan Autohotkey. Tidak dapat diandalkan atau secepat baris perintah, tetapi berhasil setelah Anda menyiapkan tindakan alur kerja untuk meminimalkan interaksi GUI.

Untuk Mac, skrip apel melakukan apa yang Autohotkey lakukan pada PC meskipun saya belum mencoba pada Mac saya.

Tombol pintas otomatis dilengkapi dengan perekam sehingga sebagian besar penulisan skrip adalah makan malam untuk Anda dengan sedikit pengeditan untuk penyempurnaan dan mungkin pengulangan jika Anda menginginkannya.

Saya telah bereksperimen dengan gambar OCRing tetapi belum mengotomatiskan proses sepenuhnya melalui acrobat. Baris perintah sangat ideal tetapi belum menemukan mesin OCR berkualitas yang melebihi acrobat jadi saya tetap menggunakan acrobat untuk saat ini.

Matahari
sumber
0

Saya menemukan ini baru-baru ini: http://ocrkit.com/faq.html

Anda harus membayar setelah 14 hari

Charlton
sumber
1
Selamat Datang di Tanya Berbeda! Kami berusaha menemukan jawaban terbaik dan jawaban itu akan memberikan info mengapa mereka yang terbaik. Jelaskan mengapa menurut Anda perangkat lunak yang Anda rekomendasikan lebih baik daripada yang lain di luar sana. Secara umum, jawaban tautan saja rentan dihapus sehingga Anda selalu ingin menjadikan jawaban Anda termasuk semua info yang relevan. Lihat Cara Menjawab tentang cara memberikan jawaban yang berkualitas.
fsb
0

Saya mendapat konversi Drag & Drop berkualitas tinggi yang bekerja menggunakan Docker.

Jika kamu:

  1. instal Docker untuk Mac Anda dan
  2. kemudian buat aplikasi Automator baru
  3. dengan konten ini di dalam tindakan "Run a Shell Script". Pilih Masukan Lulus:"as arguments"

/bin/bash teks skrip:

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"

Maka Anda harus baik untuk drag-and-drop PDF ke dalamnya dan dan Anda akan mendapatkan PDF dengan nama yang sama dengan "-ocr" yang ditambahkan ke nama file.

Saya membayangkan itu dapat dengan mudah dimodifikasi untuk mengembalikan file ke Automator untuk menyalin di suatu tempat juga. Lebih detail tentang paket buruh pelabuhan OCRmyPDF yang bagus. dan alat utama (juga disebutkan dalam jawaban yang berbeda).

Anda dapat mengujinya di Automator sendiri dengan tindakan "Dapatkan item Pencari yang ditentukan" sebagai masukan untuk ini.

Saat pertama kali dijalankan, diperlukan lebih banyak waktu karena perlu mengunduh gambar Docker untuk OCRmyPDF (tanpa terlihat). Di Terminal, Anda dapat menjalankan sebagai alternatif docker pull jbarlow83/ocrmypdfuntuk mempercepat proses pertama. Jalankan khas membutuhkan sekitar 10 detik per halaman DPI tinggi tetapi memiliki hasil text-to-speachable secara otomatis bahkan jika ada tabel atau diagram. Sebelum OCRing, saya memotong menggunakan Sejda sehingga kata-kata margin yang tidak masuk akal dari halaman lain dihapus.

The --force-ocrArgumen memberitahu alat untuk mengabaikan dan menimpa sebelumnya OCR upaya, yang dalam kasus saya biasanya hanya parsial dan tidak berguna.

thadk
sumber
0

OCRKit memiliki dukungan AppleScript dan CLI. Dari halaman bantuan mereka :

AppleScript

Anda juga dapat membuat skrip OCRKit untuk mengintegrasikannya ke dalam alur kerja spesifik Anda. Misalnya memproses file yang masuk, melalui folder bersama, dari mesin fotokopi MFP, dll. Dan cukup beri tahu OCRKit untuk membuka dan dengan demikian prosesnya adalah melalui 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 

Garis komando

Karena OCRKit versi 2.5 skrip baris perintah langsung didukung. Ini sangat menyederhanakan penggunaan OCRKit dalam pemrosesan batch, memungkinkan untuk mengatur lebih banyak opsi dan juga lebih kuat dan lintas-platform daripada AppleSCript.

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

Karena OCRKit versi 16.9 opsi baris perintah tambahan didukung:

-r, --recursive directory

Pindai direktori secara rekursif untuk file-file baru. Melompati file dari OCRKit, dengan layer teks atau grafik vektor.

--pattern "regex"

Pola yang digunakan untuk mencocokkan nama file selama pemindaian rekursif. Secara default %.pdf$, rekomendasi untuk TIFF adalah%.tiff?$

--log file

Tulis informasi dan statistik file log selama pemindaian rekursif ke file.

--password secret

Gunakan kata sandi rahasia untuk mendekripsi file PDF selama pemrosesan batch.

--test-run [ fast ]

Hanya jalankan pemrosesan kumpulan uji dalam mode uji untuk menguji file PDF atau untuk mendapatkan jumlah halaman untuk memperkirakan total waktu pemrosesan. "fast" hanya akan memeriksa halaman pertama dari setiap file, alih-alih melalui semua halaman untuk analisis gambar dan vektor.

--tag name

Gunakan nama atribut yang diperluas untuk menandai status pemrosesan file selama pemrosesan batch. macos:OCRKit (%s)sebagai gantinya akan menggunakan tag asli macOS Finder, atau macos:OCRKittidak menyertakan atribut state. Urutan atribut negara adalah: started, analyzed, processed, dan juga bisa encrypted.

xilopaint
sumber