เรื่องนี้ถูกพูดถึงเมื่อปีที่แล้วที่นี่
Batch OCR สำหรับไฟล์ PDF จำนวนมาก (ยังไม่ได้ทำ OCR)
มีวิธีใดในการแบทช์ไฟล์ PDF OCR ที่ยังไม่ได้ทำ OCR อยู่แล้ว? ฉันคิดว่าสถานะปัจจุบันของสิ่งต่าง ๆ ที่เกี่ยวข้องกับสองประเด็น:
Batch OCR PDF
ของ windows
Acrobat - นี่คือเอ็นจิ้น Oocr ที่ตรงที่สุดที่จะทำการ OCR ปัญหาเดียวน่าจะเป็น 1) มันจะไม่ข้ามไฟล์ที่ OCRed 2 ไปแล้ว) ลองขว้าง PDF เป็นไฟล์ (มันเก่า) แล้วดูมันพัง มันเป็นรถเล็ก ๆ น้อย ๆ มันจะเตือนคุณเมื่อเกิดข้อผิดพลาดแต่ละครั้ง (แม้ว่าคุณจะสามารถบอกให้ซอฟต์แวร์ไม่แจ้งเตือนได้ แต่อีกครั้งมันเสียชีวิตอย่างน่ากลัวใน PDF บางประเภทดังนั้นระยะของคุณอาจแตกต่างกันไป
ABBYY FineReader (Batch / Scansnap), Omnipage - สิ่งเหล่านี้จะต้องเป็นบางส่วนของโปรแกรมที่แย่ที่สุดของซอฟต์แวร์ที่มนุษย์รู้จัก หากคุณสามารถค้นหาวิธีการทำให้ OCR แบทช์ของการบันทึกPDF แบบอัตโนมัติ (ไม่มีการแจ้งเตือน) ด้วยชื่อเดียวกันกรุณาโพสต์ที่นี่ ดูเหมือนว่าวิธีแก้ไขปัญหาเดียวที่ฉันพบว่าล้มเหลวบางแห่ง - การเปลี่ยนชื่อไม่ได้ทำโดยอัตโนมัติอย่างสมบูรณ์ ฯลฯ และอื่น ๆ ที่ดีที่สุดมีวิธีที่จะทำได้ แต่เอกสารและการเขียนโปรแกรมเป็นสิ่งที่น่ากลัวมาก
ABBYY FineReader Engine , เซิร์ฟเวอร์ตัวรู้จำ ABBYY - นี่คือโซลูชันระดับองค์กรที่มากขึ้นคุณอาจจะดีกว่าที่จะได้รับ acrobat เพื่อเรียกใช้ผ่านโฟลเดอร์และลองและกำจัดไฟล์ PDF ที่ให้ข้อผิดพลาด / ผิดพลาดของโปรแกรมมากกว่าจะยุ่งยาก เพื่อติดตั้งซอฟต์แวร์ประเมินผล (สมมติว่าคุณเป็นผู้ใช้ขั้นปลายง่าย ๆ ) ดูเหมือนจะไม่คุ้มค่ากับการแข่งขันสำหรับผู้ใช้รายย่อย
** เวิร์คสเตชั่น Autobahn DX ** ราคาของผลิตภัณฑ์นี้เป็นสิ่งต้องห้ามดังนั้นคุณอาจซื้อ acrobat ได้ 6 ชุด ไม่ใช่ทางออกสำหรับผู้ใช้จริงๆ หากคุณเป็นการตั้งค่าระดับองค์กรนี่อาจจะคุ้มค่าสำหรับคุณ
ลินุกซ์
- WatchOCR - ไม่ได้รับการพัฒนาอีกต่อไปและเป็นไปไม่ได้ที่จะทำงานบน distros Ubuntu รุ่นใหม่
- pdfsandwich - ไม่ได้รับการพัฒนาอีกต่อไปโดยทั่วไปไม่สามารถทำงานบน distros Ubuntu รุ่นใหม่
- ** ABBY LINUX OCR ** - ควรเป็นสคริปต์และดูเหมือนว่าจะได้ผลลัพธ์ที่ดี:
http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison
อย่างไรก็ตามเช่นเดียวกับผลิตภัณฑ์อื่น ๆ ของ ABBYY ที่พวกเขาเรียกเก็บจากหน้าเว็บอีกครั้งคุณอาจจะดีกว่าถ้าพยายามให้ Acrobat Batch OCR ทำงาน
** Ocrad, GOCR, OCRopus, tesseract, ** - สิ่งเหล่านี้อาจใช้ได้ แต่มีปัญหาเล็กน้อย:
- ผลลัพธ์ของ OCR นั้นไม่ดีเท่ากับ acrobat สำหรับบางตัว (ดูลิงค์ด้านบน)
- ไม่มีโปรแกรมใดที่ใช้ไฟล์ PDF และส่งออกไฟล์ PDF คุณต้องสร้างสคริปต์และแยก PDF ก่อนแล้วจึงเรียกใช้โปรแกรมบนแต่ละไฟล์จากนั้นประกอบไฟล์เป็นไฟล์ pdf อีกครั้ง
- เมื่อคุณทำเช่นนั้นคุณอาจพบว่าฉันทำอย่างนั้น (tesseract) จะสร้างเลเยอร์ OCR ที่เปลี่ยนไป ดังนั้นหากคุณค้นหาคำว่า 'the' คุณจะได้รับไฮไลต์ของส่วนของคำถัดจากคำนั้น
Batch DjVu →แปลงเป็น PDF - ยังไม่ได้ตรวจสอบ แต่ดูเหมือนว่าเป็นทางออกแบบรอบต่อนาทีที่น่ากลัว
ออนไลน์
- PDFcubed.com - มาแล้วไม่ใช่โซลูชันแบบกลุ่ม
- ABBYY Cloud OCR - ไม่แน่ใจว่านี่เป็นโซลูชั่นแบบแบตช์ไม่ว่าจะด้วยวิธีใดคุณต้องชำระเงินตามหน้าเว็บและอาจมีราคาแพง
การระบุ PDF ที่ไม่ใช่ OCR
นี่เป็นปัญหาที่ง่ายขึ้นเล็กน้อยซึ่งสามารถแก้ไขได้อย่างง่ายดายใน Linux และใน Windows ฉันสามารถโค้ดสคริปต์ perl ที่ใช้pdffont
เพื่อระบุว่ามีการฝังฟอนต์เพื่อระบุไฟล์ที่ไม่ได้เป็น OCR
"โซลูชั่น" ปัจจุบัน
ใช้สคริปต์เพื่อระบุไฟล์ PDF ที่ไม่ใช่ OCRed (เพื่อให้คุณไม่ต้องรันซ้ำ OCRed PDF หลายพันรายการ) และคัดลอกไฟล์เหล่านี้ไปยังไดเรกทอรีชั่วคราว (เก็บแผนผังไดเรกทอรีที่ถูกต้อง) จากนั้นใช้ Acrobat บน Windows เพื่อเรียกใช้ไฟล์เหล่านี้ กระบวนการจะไม่ผิดพลาด
ใช้สคริปต์เดียวกัน แต่รับหนึ่งในเครื่องมือ linux ocr เพื่อทำงานอย่างถูกต้องเสี่ยงต่อคุณภาพ ocr
ฉันคิดว่าฉันจะลอง # 1 ฉันแค่กังวลมากเกินไปเกี่ยวกับผลลัพธ์ของเครื่องมือ Linux OCR (ฉันไม่คิดว่าจะมีใครทำการเปรียบเทียบ) และแยกไฟล์ออกเป็นชิ้น ๆ เป็นการเข้ารหัสที่ไม่จำเป็นหาก Adobe สามารถแบตช์ OCR ไดเรกทอรีโดยไม่สำลัก
หากคุณต้องการโซลูชันที่ไม่ต้องเสียค่าใช้จ่ายคุณจะต้องใช้สคริปต์เพื่อระบุไฟล์ PDF ที่ไม่ใช่ OCRed (หรือเรียกใช้ซ้ำกับ OCRed) จากนั้นใช้เครื่องมือ linux เพื่อลองและ OCR ดูเหมือนว่า Teseract จะให้ผลลัพธ์ที่ดีที่สุด แต่เครื่องมือเหล่านี้บางอย่างไม่ได้รับการสนับสนุนใน Ubuntu รุ่นใหม่แม้ว่าคุณจะสามารถตั้งค่าและแก้ไขปัญหาที่ฉันมีเมื่อเลเยอร์รูปภาพไม่ตรงกับเลเยอร์การจับคู่ข้อความ ( ด้วย tesseract) จากนั้นคุณจะมีโซลูชันที่ใช้งานได้และ Linux> Windows อีกครั้ง
คุณมีวิธีแก้ปัญหาในการทำงานโดยอัตโนมัติแบตช์ OCR PDFข้ามไฟล์ OCRed ที่มีชื่อเดียวกันด้วยคุณภาพสูงไปหรือไม่? ถ้าเป็นเช่นนั้นฉันจะขอบคุณอินพุตจริงๆ
สคริปต์ Perl เพื่อย้ายไฟล์ที่ไม่ใช่ OCRed ไปยังไดเรกทอรีชั่วคราว ไม่สามารถรับประกันได้ว่างานนี้และอาจต้องเขียนใหม่ แต่ถ้ามีคนทำให้มันใช้งานได้ (สมมติว่ามันใช้งานไม่ได้) หรือทำงานได้ดีขึ้นแจ้งให้เราทราบและฉันจะโพสต์รุ่นที่ดีกว่าที่นี่
#!/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\'`;
}
}
}
}
}