Ini telah dibahas setahun yang lalu di sini:
Batch OCR untuk banyak file PDF (belum OCR)
Apakah ada cara untuk batch OCR PDF yang belum OCRed? Ini, saya pikir, keadaan saat ini berurusan dengan dua masalah:
Batch OCR PDF
Windows
Acrobat - Ini adalah mesin OCR paling lurus yang akan batch OCR. Satu-satunya masalah tampaknya 1) ia tidak akan melewatkan file yang sudah OCRed 2) mencoba melemparkan banyak PDF ke dalamnya (beberapa yang lama) dan melihatnya macet. Agak buggy. Ini akan memperingatkan Anda pada setiap kesalahan yang dihadapinya (meskipun Anda dapat memberi tahu perangkat lunak untuk tidak memberi tahu. Tetapi sekali lagi, perangkat ini mati mengerikan pada jenis PDF tertentu sehingga jarak tempuh Anda mungkin bervariasi.
ABBYY FineReader (Batch / Scansnap), Omnipage - Ini harus menjadi beberapa bagian dari perangkat lunak terprogram terburuk yang diketahui manusia. Jika Anda dapat menemukan cara untuk mengotomatisasi sepenuhnya (tanpa diminta) batch OCR dari penyimpanan PDF dengan nama yang sama maka silakan posting di sini. Tampaknya satu-satunya solusi yang saya temukan gagal di suatu tempat - penggantian nama, tidak sepenuhnya otomatis, dll. Yang terbaik, ada cara untuk melakukannya, tetapi dokumentasi dan pemrogramannya begitu mengerikan sehingga Anda tidak akan pernah mengetahuinya.
ABBYY FineReader Engine , ABBYY Recognition Server - Ini benar-benar lebih banyak solusi perusahaan, Anda mungkin lebih baik mendapatkan acrobat untuk melindas folder dan mencoba dan menghapus pdf yang memberi Anda kesalahan / crash program daripada harus repot mencoba untuk menginstal perangkat lunak evaluasi (dengan asumsi Anda adalah pengguna akhir yang sederhana). Tampaknya tidak kompetitif untuk pengguna kecil.
** Autobahn DX workstation ** biaya produk ini sangat mahal, Anda mungkin bisa membeli 6 salinan acrobat. Bukan solusi pengguna akhir. Jika Anda pengaturan perusahaan, ini mungkin layak untuk Anda.
Linux
- WatchOCR - tidak lagi dikembangkan, dan pada dasarnya tidak mungkin dijalankan pada distro Ubuntu modern
- pdfsandwich - tidak lagi dikembangkan, pada dasarnya tidak mungkin dijalankan pada distro Ubuntu modern
- ** ABBY LINUX OCR ** - ini harus dapat skrip, dan tampaknya memiliki beberapa hasil yang baik:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
Namun, seperti banyak produk ABBYY lain yang mereka tetapkan oleh halaman, sekali lagi, Anda mungkin lebih baik mencoba membuat Acrobat Batch OCR untuk bekerja.
** Ocrad, GOCR, OCRopus, tesseract, ** - ini dapat bekerja tetapi ada beberapa masalah:
- Hasil OCR tidak sebesar, katakanlah, acrobat untuk beberapa di antaranya (lihat tautan di atas).
- Tidak ada program yang mengambil file PDF dan menghasilkan file PDF. Anda harus membuat skrip dan memisahkan PDF terlebih dahulu dan menjalankan program di atas masing-masing dan kemudian memasang kembali file sebagai pdf
- Setelah melakukannya, Anda mungkin menemukan, seperti yang saya lakukan, bahwa (tesseract) menciptakan lapisan OCR yang bergeser. Jadi, jika Anda mencari kata 'the', Anda akan mendapatkan sorotan dari bagian kata di sebelahnya.
Batch DjVu → Konversi ke PDF - belum melihat ke dalamnya, tetapi sepertinya solusi putaran-a-pertarungan yang mengerikan.
On line
- PDFcubed.com - ayolah, bukan solusi batch.
- ABBYY Cloud OCR - tidak yakin apakah ini benar-benar solusi batch, bagaimanapun, Anda harus membayar berdasarkan halaman dan ini bisa menjadi sangat mahal.
Mengidentifikasi PDF non-OCRed
Ini adalah masalah yang sedikit lebih mudah, yang dapat diselesaikan dengan mudah di Linux dan apalagi di Windows. Saya dapat mengkodekan skrip perl menggunakan pdffont
untuk mengidentifikasi apakah font tertanam untuk menentukan file mana yang tidak-OCR.
"Solusi" saat ini
Gunakan skrip untuk mengidentifikasi pdf non-OCR (sehingga Anda tidak menjalankan ulang lebih dari ribuan PDF OCR) dan menyalinnya ke direktori sementara (mempertahankan pohon direktori yang benar) dan kemudian menggunakan Acrobat pada Windows untuk menjalankan lebih dari ini berharap bahwa semakin kecil batch tidak akan crash.
gunakan skrip yang sama tetapi dapatkan salah satu alat ocr linux agar berfungsi dengan baik, mempertaruhkan kualitas ocr.
Saya pikir saya akan mencoba # 1, saya hanya khawatir terlalu banyak tentang hasil dari alat-alat Linux OCR (saya kira tidak ada yang melakukan perbandingan) dan memecah file dan menjahit bersama lagi tampaknya menjadi pengkodean yang tidak perlu jika Adobe benar-benar dapat membuat batch direktori OCR tanpa tersedak.
Jika Anda menginginkan solusi yang benar-benar gratis, Anda harus menggunakan skrip untuk mengidentifikasi pdf non-OCRed (atau hanya menjalankan kembali yang OCRed), dan kemudian menggunakan salah satu alat linux untuk mencoba dan OCR mereka. Teseract tampaknya memiliki hasil terbaik, tetapi sekali lagi, beberapa alat ini tidak didukung dengan baik di versi modern Ubuntu, meskipun jika Anda dapat mengaturnya dan memperbaiki masalah yang saya miliki di mana lapisan gambar tidak cocok dengan lapisan pencocokan teks ( dengan tesseract) maka Anda akan memiliki solusi yang cukup bisa diterapkan dan sekali lagi Linux> Windows.
Apakah Anda memiliki solusi yang berfungsi untuk mengotomatisasi sepenuhnya, batch OCR PDF , melompati file yang sudah OCR dengan nama yang sama, dengan kualitas tinggi ? Jika demikian, saya akan sangat menghargai masukannya.
Script Perl untuk memindahkan file non-OCR ke direktori temp. Tidak dapat menjamin ini berfungsi dan mungkin perlu ditulis ulang, tetapi jika seseorang membuatnya bekerja (dengan asumsi itu tidak berfungsi) atau bekerja lebih baik, beri tahu saya dan saya akan memposting versi yang lebih baik di sini.
#!/usr/bin/perl
# move non-ocred files to a directory
# change variables below, you need a base dir (like /home/joe/), and a sourcedirectory and output
# direcotry (e.g books and tempdir)
# move all your pdfs to the sourcedirectory
use warnings;
use strict;
# need to install these modules with CPAN or your distros installer (e.g. apt-get)
use CAM::PDF;
use File::Find;
use File::Basename;
use File::Copy;
#use PDF::OCR2;
#$PDF::OCR2::CHECK_PDF = 1;
#$PDF::OCR2::REPAIR_XREF = 1;
my $basedir = '/your/base/directory';
my $sourcedirectory = $basedir.'/books/';
my @exts = qw(.pdf);
my $count = 0;
my $outputroot = $basedir.'/tempdir/';
open( WRITE, >>$basedir.'/errors.txt' );
#check file
#my $pdf = PDF::OCR2->new($basedir.'/tempfile.pdf');
#print $pdf->page(10)->text;
find(
{
wanted => \&process_file,
# no_chdir => 1
},
$sourcedirectory
);
close(WRITE);
sub process_file {
#must be a file
if ( -f $_ ) {
my $file = $_;
#must be a pdf
my ( $dir, $name, $ext ) = fileparse( $_, @exts );
if ( $ext eq '.pdf' ) {
#check if pdf is ocred
my $command = "pdffonts \'$file\'";
my $output = `$command`;
if ( !( $output =~ /yes/ || $output =~ /no/ ) ) {
#print "$file - Not OCRed\n";
my $currentdir = $File::Find::dir;
if ( $currentdir =~ /$sourcedirectory(.+)/ ) {
#if directory doesn't exist, create
unless(-d $outputroot.$1){
system("mkdir -p $outputroot$1");
}
#copy over file
my $fromfile = "$currentdir/$file";
my $tofile = "$outputroot$1/$file";
print "copy from: $fromfile\n";
print "copy to: $tofile\n";
copy($fromfile, $tofile) or die "Copy failed: $!";
# `touch $outputroot$1/\'$file\'`;
}
}
}
}
}
Jawaban:
Saya juga telah mencari cara untuk batch-OCR banyak PDF secara otomatis, tanpa banyak keberuntungan. Pada akhirnya saya telah menemukan solusi yang bisa diterapkan mirip dengan Anda, menggunakan Acrobat dengan skrip sebagai berikut:
Salin semua PDF yang relevan ke direktori tertentu.
Hapus PDF yang sudah mengandung teks (dengan asumsi mereka sudah OCRd atau sudah teks - tidak ideal saya tahu, tetapi cukup baik untuk saat ini).
Gunakan AutoHotKey untuk secara otomatis menjalankan Acrobat, pilih direktori tertentu, dan OCR semua dokumen, tambahkan "-ocr" ke nama file mereka.
Pindahkan OCRd PDF kembali ke lokasi aslinya, menggunakan keberadaan file "-ocr.pdf" untuk menentukan apakah itu berhasil.
Ini agak Heath Robinson , tetapi sebenarnya bekerja cukup baik.
sumber
Saya percaya Anda perlu menyadari bahwa ABBYY FineReader adalah solusi pengguna akhir yang dirancang untuk memberikan OCR out-of-the-box yang cepat & akurat.
Berdasarkan pengalaman saya, proyek-proyek OCR memiliki detail yang sangat berbeda setiap kali dan tidak ada cara membuat soulition di luar kotak untuk setiap kasus unik. Tetapi saya dapat menyarankan Anda alat yang lebih profesional yang dapat melakukan pekerjaan untuk Anda:
Lihatlah ABBYY Recognition Server , ini adalah produk profesional untuk otomatisasi OCR.
Ketika datang ke linux, lihat di http://ocr4linux.com , ini adalah utilitas baris perintah yang mungkin cocok untuk Anda juga.
Untuk tugas yang lebih kompleks, ABBYY memiliki SDK yang sangat fleksibel seperti ABBYY FineReader Engine (in-house host) atau ABBYY Cloud OCR SDK (berdasarkan Microsoft Azure cloud), yang memungkinkan Anda memilih pemrosesan OCR seperti yang Anda inginkan.
Saya adalah bagian dari tim pengembangan front-end untuk layanan cloud yang ditentukan di atas dan dapat memberikan lebih banyak info tentang itu jika perlu.
Mengingat pencarian lapisan teks dalam PDF, saya tidak bisa memberikan saran tentang itu, karena tugas ini sedikit mengesampingkan OCR yang merupakan spesialisasi saya, jadi saya menemukan pendekatan Anda menggunakan skrip eksternal sangat masuk akal. Mungkin Anda akan menemukan diskusi ini bermanfaat: http://forum.ocrsdk.com/questions/108/check-if-pdf-is-scanned-image-or-contains-text
sumber
Di linux
Cara terbaik dan termudah di luar sana adalah menggunakannya
pypdfocr
tidak mengubah pdfPada akhirnya Anda akan memiliki
your_document_ocr.pdf
cara lain yang Anda inginkan dengan teks yang dapat dicari. Aplikasi tidak mengubah kualitas gambar. Menambah ukuran file sedikit dengan menambahkan teks overlay.Untuk mengumpulkan pdf
Jika PDF ada di dalam sub-folder:
Pembaruan 3 November 2018:
pypdfocr
tidak lagi didukung sejak 2016 dan saya melihat beberapa masalah karena tidak dibimbing.ocrmypdf
( modul ) melakukan pekerjaan similiar dan dapat digunakan seperti ini:Untuk memasang:
atau
jadi perintah itu akan menjadi
sumber
Saya memiliki beberapa keberhasilan pada awal 2015 melakukan OCR batch sepenuhnya menggunakan Nuance OmniPage Ultimate di windows. Tidak gratis, daftar harga $ 500. Gunakan program batch "DocuDirect" yang disertakan. Ini memiliki opsi "Jalankan pekerjaan tanpa konfirmasi" yang tampaknya merupakan jawaban langsung untuk pertanyaan awal Anda.
Saya menggunakan DocuDirect untuk menghasilkan satu file PDF yang dapat dicari untuk setiap gambar input (yaitu, tidak dapat dicari) file PDF; dapat dikatakan untuk mereplikasi pohon direktori input di folder output serta nama file input asli (hampir - lihat di bawah). Menggunakan beberapa core juga. Akurasi adalah yang terbaik dari paket yang saya evaluasi. Dokumen yang dilindungi kata sandi dilewati (tanpa menghentikan pekerjaan, tanpa menunjukkan dialog).
Peringatan 1: Hampir nama file aslinya - akhiran ".PDF" menjadi ".pdf" (yaitu, dari huruf besar ke huruf kecil) karena hei, semuanya sama di windows. (Ugh.)
Peringatan 2: Tidak ada file log sehingga mendiagnosis file mana yang gagal selama pengenalan - yang pasti mereka lakukan - kembali pada Anda. DocuDirect akan dengan senang hati menghasilkan output yang kacau seperti seluruh halaman hilang begitu saja. Saya menulis skrip python menggunakan modul PyPDF2 untuk mengimplementasikan validasi mentah: menguji bahwa jumlah halaman output cocok dengan jumlah halaman input. Lihat di bawah.
Peringatan 3: File gambar input fuzzy, tidak jelas akan menyebabkan OmniPage menggantung selamanya, tidak menggunakan CPU apa pun; itu tidak pernah pulih. Ini benar-benar menggagalkan pemrosesan batch dan saya tidak menemukan solusi. Saya juga melaporkan ini ke Nuance, tetapi tidak berhasil.
@ Jo benar tentang perangkat lunak yang diprogram dan didokumentasikan dengan buruk. Saya perhatikan inti dari OmniPage memiliki teknologi sihir pengenal karakter yang luar biasa, tetapi cangkang luar (GUI & pemrosesan batch) sudah cukup untuk membuat Anda menarik rambut Anda.
Saya mendukung saran @ Joe dan @ Kiwi untuk menyaring file menggunakan skrip, sehingga untuk menyajikan paket OCR hanya dengan dokumen gambar yang tidak dilindungi.
Afiliasi saya satu-satunya dengan Nuance adalah sebagai pelanggan yang tidak sepenuhnya puas - Saya memiliki banyak tiket dukungan yang belum terselesaikan untuk membuktikannya :)
@ Jo: Jawaban terlambat, tapi mungkin masih relevan. Komunitas @SuperUser: Saya harap Anda merasa ini ada pada topik.
** Pembaruan ** paket penggantinya adalah Nuance PowerPDF Advanced, daftar harga hanya $ 150. Saya bahkan lebih sukses dengan ini, itu sama akurat tetapi jauh lebih stabil.
Skrip python validasi pohon pra / pasca-OCR berikut.
sumber
Anda dapat mempertimbangkan Aquaforest Autobahn DX: http://www.aquaforest.com/en/autobahn.asp
Ini dirancang untuk memproses kumpulan PDF dan memiliki beragam opsi (mis. Lewati atau lewati file OCR) serta opsi untuk penanganan cerdas PDF yang mungkin menawarkan hasil yang lebih baik (misalnya jika PDF memiliki beberapa halaman gambar dan beberapa halaman teks, bisa saja OCR halaman gambar)
sumber
Pada
Mac
atauLinux
:parallel --tag -j 2 ocrmypdf '{}' 'output/{}' ::: *.pdf
Dari sini .
sumber