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\'`;
}
}
}
}
}