Questo è stato discusso un anno fa qui:
OCR in batch per molti file PDF (non già OCR)?
Esiste un modo per raggruppare PDF OCR che non sono già stati sottoposti a OCR? Questo è, credo, lo stato attuale delle cose che affrontano due questioni:
PDF OCR in batch
finestre
Acrobat : questo è il motore ocr più diretto che raggrupperà l'OCR. L'unico problema sembra essere 1) non salterà i file che sono già stati OCR 2) provare a lanciarvi un mucchio di PDF (alcuni vecchi) e vederlo in crash. È un piccolo passeggino. Ti avvertirà ad ogni errore in cui si imbatte (anche se puoi dire al software di non avvisare. Ma di nuovo, muore orribilmente su alcuni tipi di PDF, quindi il tuo chilometraggio può variare.
ABBYY FineReader (Batch / Scansnap), Omnipage - Questi devono essere alcuni dei peggiori software programmati conosciuti dall'uomo. Se riesci a scoprire come automatizzare completamente (senza richiesta) l'OCR batch di PDF salvando con lo stesso nome , pubblica qui. Sembra che le uniche soluzioni che ho potuto trovare siano fallite da qualche parte: rinominare, non completamente automatizzato, ecc. Nella migliore delle ipotesi, c'è un modo per farlo, ma la documentazione e la programmazione sono così orribili che non lo scoprirai mai.
ABBYY FineReader Engine , ABBYY Recognition Server - Queste sono davvero più soluzioni aziendali, probabilmente faresti meglio a far funzionare Acrobat su una cartella e provare a eliminare i pdf che ti danno errori / crash del programma piuttosto che passare il fastidio di provare per installare un software di valutazione (supponendo che tu sia un semplice utente finale). Non sembra competitivo per i piccoli utenti.
** Stazione di lavoro DX Autobahn ** il costo di questo prodotto è così proibitivo che probabilmente potresti acquistare 6 copie di acrobat. Non proprio una soluzione per l'utente finale. Se sei un setup aziendale, questo potrebbe valerne la pena.
Linux
- WatchOCR - non più sviluppato e praticamente impossibile da eseguire su moderne distribuzioni Ubuntu
- pdfsandwich - non più sviluppato, praticamente impossibile da eseguire su moderne distribuzioni Ubuntu
- ** ABBY LINUX OCR ** - questo dovrebbe essere programmabile da script e sembra avere dei buoni risultati:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
Tuttavia, come molti di questi altri prodotti ABBYY che caricano sulla pagina, anche in questo caso potrebbe essere meglio provare a far funzionare Acrobat Batch OCR.
** Ocrad, GOCR, OCRopus, tesseract, ** - potrebbero funzionare ma ci sono alcuni problemi:
- I risultati OCR non sono così grandi come, per esempio, acrobata per alcuni di questi (vedi link sopra).
- Nessuno dei programmi contiene un file PDF e genera un file PDF. Devi creare uno script e suddividere prima il PDF ed eseguire i programmi su ciascuno di essi, quindi riassemblare il file come pdf
- Una volta fatto, potresti scoprire, come ho fatto io, che (tesseract) crea un livello OCR che viene spostato. Quindi, se cerchi la parola "the", otterrai un punto culminante della parte della parola accanto ad essa.
Batch DjVu → Converti in PDF: non l'ho mai esaminato, ma sembra un'orribile soluzione a tutto tondo.
in linea
- PDFcubed.com - dai, non proprio una soluzione batch.
- ABBYY Cloud OCR - non sei sicuro che questa sia davvero una soluzione batch, in entrambi i casi, devi pagare per pagina e questo potrebbe diventare piuttosto costoso.
Identificazione di PDF non OCR
Questo è un problema leggermente più semplice, che può essere risolto facilmente in Linux e tanto meno in Windows. Sono stato in grado di codificare uno script perl usando pdffont
per identificare se i caratteri sono incorporati per determinare quali file non sono OCR.
"Soluzioni" attuali
Utilizzare uno script per identificare i PDF non OCR (in modo da non rieseguire più di migliaia di PDF OCR) e copiarli in una directory temporanea (mantenendo l'albero di directory corretto) e quindi utilizzare Acrobat su Windows per eseguire questi sperando che i più piccoli i lotti non si arrestano in modo anomalo.
usa lo stesso script ma ottieni uno degli strumenti ocr di Linux per funzionare correttamente, rischiando la qualità degli ocr.
Penso che proverò # 1, sono solo troppo preoccupato per i risultati degli strumenti OCR di Linux (suppongo che nessuno abbia fatto un confronto) e spezzare i file e ricucirli insieme sembra non è necessario codificare se Adobe può effettivamente raggruppare l'OCR in una directory senza soffocare.
Se vuoi una soluzione completamente gratuita, dovrai usare uno script per identificare i pdf non OCR (o semplicemente eseguire nuovamente quelli OCR), quindi utilizzare uno degli strumenti linux per provare e OCR. Teseract sembra avere i migliori risultati, ma ancora una volta, alcuni di questi strumenti non sono supportati bene nelle versioni moderne di Ubuntu, anche se se riesci a configurarlo e risolvere il problema che ho avuto in cui il livello dell'immagine non corrisponde al livello di corrispondenza del testo ( con tesseract) allora avresti una soluzione abbastanza praticabile e ancora una volta Linux> Windows.
Hai una soluzione funzionante per automatizzare completamente, batch di PDF OCR , saltando i file già OCR mantenendo lo stesso nome, con alta qualità ? In tal caso, apprezzerei molto l'input.
Script Perl per spostare i file non OCR in una directory temporanea. Non posso garantire che funzioni e probabilmente debba essere riscritto, ma se qualcuno lo fa funzionare (supponendo che non funzioni) o funziona meglio, fammi sapere e pubblicherò una versione migliore qui.
#!/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\'`;
}
}
}
}
}