Bu burada bir yıl önce tartışıldı:
Birçok PDF dosyası için toplu OCR (zaten OCRed değil)?
Daha önce OCR olmayan OCR PDF'lerini toplu hale getirmenin bir yolu var mı? Bu, bence iki meseleyle ilgili mevcut durumdur:
Toplu OCR PDF'leri
pencereler
Acrobat - Bu, OCR'yi harmanlayacak en açık ocr motorudur. Tek sorun 1 gibi gözüküyor) 1) zaten OCR'lı olan dosyaları atlamayacak 2) bir sürü PDF atmayı denemek (bazı eski) ve çökmesini izlemek. Bu küçük bir adam. Çalıştığı her hatada sizi uyaracaktır (yazılıma bildirmemesini söyleseniz de. Ancak yine de, belirli PDF türlerinde korkunç şekilde ölür, böylece kilometreniz değişebilir.
ABBYY FineReader (Toplu İş / Tarama), Omnipage - Bunlar, insanoğlunun bildiği en kötü programlanmış yazılım parçalarından biri olmalı. Tamamen nasıl bulursa otomatik toplu OCR (hiç sormadan) PDF'leri ile tasarruf aynı adı daha sonra buraya gönderin. Bir yerde başarısız bulabildiğim tek çözümler görünüyor - yeniden adlandırmak, tam otomatik değil, vb. En iyisi, bunu yapmanın bir yolu var, ancak dokümantasyon ve programlama asla öğrenemeyeceğiniz kadar korkunç.
ABBYY FineReader Motoru , ABBYY Tanıma Sunucusu - Bunlar gerçekten daha kurumsal çözümler. Muhtemelen acrobat'ı bir klasör üzerinden çalıştırıp denemenin zorluğundan geçmekten ziyade size hata veren / çökerten pdfs'leri denemek ve denemek ve denemek için daha iyi olurdu değerlendirme yazılımı yüklemek için (basit bir son kullanıcı olduğunuzu varsayarak). Küçük kullanıcılar için uygun maliyetli görünmüyor.
** Autobahn DX iş istasyonu ** bu ürünün maliyeti çok yasaklayıcı, muhtemelen 6 kopya akrobat satın alabilirsiniz. Gerçekten bir son kullanıcı çözümü değil. Kurumsal bir kuruluşsanız, bu sizin için değer olabilir.
Linux
- WatchOCR - artık gelişmemiş ve temelde modern Ubuntu dağıtımlarında çalışmak imkansız
- pdfsandwich - artık gelişmiş değil, temelde modern Ubuntu dağıtımlarını denemek imkansız
- ** ABBY LINUX OCR ** - Bu kodlanabilir olmalı ve bazı iyi sonuçlar doğuracak gibi görünüyor:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
Ancak, sayfa tarafından talep ettikleri diğer ABBYY ürünlerinin birçoğu gibi, yine Acrobat Batch OCR’i çalıştırmaya çalışmaktan daha iyi olabilirsiniz.
** Ocrad, GOCR, OCRopus, tesseract, ** - bunlar işe yarayabilir ancak birkaç problem vardır:
- OCR sonuçları, bazıları için akrobat kadar iyi değildir (yukarıdaki bağlantıya bakın).
- Programların hiçbiri bir PDF dosyasına girmiyor ve bir PDF dosyası çıkmıyor. Bir komut dosyası oluşturmanız ve önce PDF'yi parçalamanız, programları her biri üzerinde çalıştırmanız ve ardından dosyayı pdf olarak yeniden birleştirmeniz gerekir.
- Bunu yaptıktan sonra, yaptığım gibi, (tesseract) üzerine kaydırılan bir OCR katmanı oluşturduğunu görebilirsiniz. Bu nedenle '' kelimesini ararsanız, kelimenin yanındaki kısmına bir göz atarsınız.
Toplu DjVu → PDF'ye Dönüştür - içine bakmadım, ancak korkunç bir tur hakkında bir çözüm gibi görünüyor.
İnternet üzerinden
- PDFcubed.com - hadi, gerçekten bir toplu çözüm değil.
- ABBYY Cloud OCR - bunun gerçekten bir toplu çözüm olup olmadığından emin değilsiniz, her iki durumda da, sayfa tarafından ödeme yapmanız gerekir ve bu oldukça pahalı olabilir.
OCR’li olmayan PDF’leri belirleme
Bu, Linux'ta kolayca çözülebilecek ve Windows'ta çok daha az çözülebilecek, biraz daha kolay bir sorundur. pdffont
Hangi dosyaların OCR olmadığını belirlemek için fontların gömülü olup olmadığını belirlemek için bir perl betiğini kodlayabildim.
Güncel "çözümler"
OCRed olmayan pdfs'leri tanımlamak için bir komut dosyası kullanın (bu nedenle, binlerce OCRed PDF'ini yeniden çalıştırmazsınız) ve bunları geçici bir dizine (doğru dizin ağacını koruyarak) kopyalarsınız ve ardından Windows'ta Acrobat'ı kullanmak partiler çökmeyecek.
aynı betiği kullanın, ancak düzgün çalışabilmesi için linux ocr araçlarından birini alın, ocr kalitesini riske atın.
Sanırım # 1'i deneyeceğim, Linux OCR araçlarının sonuçları hakkında çok fazla endişeleniyorum (kimsenin bir karşılaştırma yapmadığını sanmıyorum) ve dosyaları parçalayıp tekrar bir araya dikiyorum gibi görünüyor. Adobe aslında bir dizini boğulmadan OCR dizisini topluyorsa, gereksiz kodlama olabilir.
Tamamen ücretsiz bir çözüm istiyorsanız, OCRed olmayan pdfs'leri tanımlamak için bir komut dosyası kullanmanız (veya yalnızca OCRed olanlar üzerinde yeniden çalıştırmanız) ve ardından bunları denemek ve OCR yapmak için linux araçlarından birini kullanmanız gerekir. Teseract en iyi sonuçlara sahip görünüyor, ancak yine de, bu araçların bazıları Ubuntu’nun modern sürümlerinde iyi desteklenmiyor, ancak sorunu ayarlayabilir ve görüntü katmanının metin eşleştirme katmanıyla eşleşmeyeceği bir sorunu çözebilirseniz ( tesseract ile) o zaman oldukça uygulanabilir bir çözüm olurdu ve bir kez daha Linux> Windows.
OCR PDF'lerini tamamen otomatikleştirmek, toplu işlemek, aynı adı taşıyan OCRed dosyalarını yüksek kalitede atlamak için çalışan bir çözümünüz var mı? Eğer öyleyse, girişi gerçekten takdir ediyorum.
OCRed olmayan dosyaları geçici bir dizine taşımak için Perl betiği. Bunun işe yarayacağını garanti edemez ve muhtemelen yeniden yazılması gerekir, ancak birisi çalışmasını sağlarsa (çalışmadığını varsayarsak) veya daha iyi çalışırsa, bana bildirin ve burada daha iyi bir sürüm yayınlayacağım.
#!/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\'`;
}
}
}
}
}