ব্যাচ-ওসিআর অনেকগুলি পিডিএফ


20

এক বছর আগে এখানে এখানে আলোচনা করা হয়েছে:

অনেক পিডিএফ ফাইলের জন্য ব্যাচের ওসিআর (ইতিমধ্যে ওসিআর করা হয়নি)?

ওসিআর পিডিএফগুলির ব্যাচ করার কোনও উপায় কি ইতিমধ্যে ওসিআর করা হয়নি? এটি আমার ধারণা, দুটি বিষয় নিয়ে কাজ করার বর্তমান অবস্থা:

ব্যাচের ওসিআর পিডিএফ

উইন্ডোজ

  • অ্যাক্রোব্যাট - এটি সর্বাধিক সরল ওসিআর ইঞ্জিন যা ওসিআর ব্যাচ করবে b একমাত্র সমস্যাটি মনে হয় 1) এটি ইতিমধ্যে ওসিআর করা ফাইলগুলিকে এড়িয়ে যাবে না 2) এটিতে কিছু পিডিএফ (কিছু পুরানো) ফেলে দেওয়ার চেষ্টা করুন এবং এটি ক্রাশ দেখুন sh এটা একটু বগি। এটি প্রতিটি ত্রুটি এটির দিকে সতর্ক করে দেবে (যদিও আপনি সফ্টওয়্যারকে অবহিত না করতে বলতে পারেন। তবে আবার, এটি নির্দিষ্ট ধরণের পিডিএফগুলিতে মারাত্মকভাবে মারা যায় যাতে আপনার মাইলেজটি আলাদা হতে পারে।

  • অ্যাবিবিওয়াই ফাইনআডার (ব্যাচ / স্ক্যানস্যাপ), ওমনিপেজ - এগুলি মানুষের কাছে পরিচিত কিছু সফ্টওয়্যারগুলির মধ্যে সবচেয়ে খারাপ প্রোগ্রামে পরিণত হয়েছে। আপনি যদি একই নামের সাথে পিডিএফগুলি সংরক্ষণ করার জন্য ব্যাচের ওসিআর সম্পূর্ণরূপে স্বয়ংক্রিয় করতে (কোনও প্রম্প্টিং নয়) তা জানতে পারেন তবে দয়া করে এখানে পোস্ট করুন। এটি কোথাও ব্যর্থ হতে পারে এমন একমাত্র সমাধান বলে মনে হচ্ছে - নামকরণ, পুরোপুরি স্বয়ংক্রিয় না হওয়া ইত্যাদি best সর্বোপরি, এটি করার একটি উপায় রয়েছে তবে ডকুমেন্টেশন এবং প্রোগ্রামিংটি এতই ভয়াবহ যে আপনি কখনই খুঁজে পাবেন না।

  • ABBYY FineReader ইঞ্জিন , ABBYY রিকগনিশন সার্ভার - এগুলি সত্যই আরও এন্টারপ্রাইজ সমাধান, আপনি সম্ভবত কোনও ফোল্ডার চালানোর জন্য অ্যাক্রোব্যাট পেয়ে চেষ্টা করে ঝামেলা পেরিয়ে প্রোগ্রামটি ক্র্যাশ করার চেয়ে পিডিএফগুলি ছাড়ে যা ভাল হবে better মূল্যায়ন সফ্টওয়্যার ইনস্টল করতে (আপনি সাধারণ একটি সাধারণ ব্যবহারকারী হিসাবে ধরে নিচ্ছেন)। ছোট ব্যবহারকারীর জন্য ব্যয় প্রতিযোগিতামূলক বলে মনে হচ্ছে না।

  • ** অটোবাহান ডিএক্স ওয়ার্কস্টেশন ** এই পণ্যটির ব্যয়টি এতটা নিষিদ্ধ, আপনি সম্ভবত অ্যাক্রোব্যাটের 6 টি অনুলিপি কিনতে পারবেন। আসলেই কোনও শেষ ব্যবহারকারী সমাধান নয়। আপনি যদি কোনও এন্টারপ্রাইজ সেটআপ করেন তবে এটি আপনার পক্ষে উপযুক্ত হতে পারে।

লিনাক্স

  • ওয়াচসিআর - আর উন্নত নয় এবং আধুনিক উবুন্টু ডিস্ট্রোজে চালানো মূলত অসম্ভব
  • পিডিএফসানডউইচ - আধুনিক উবুন্টু ডিস্ট্রোজে চালানো অসম্ভব অসম্ভব
  • ** এবি লিনাক্স ওসিআর ** - এটি স্ক্রিপ্টযোগ্য হওয়া উচিত এবং এর কিছু ভাল ফলাফল বলে মনে হচ্ছে:

http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison

যাইহোক, এই পৃষ্ঠাটি দ্বারা তারা অন্যান্য চার্জযুক্ত ABBYY পণ্যগুলির মতো আবারও, অ্যাক্রোব্যাট ব্যাচের ওসিআরকে কাজ করার চেষ্টা করার চেয়ে আপনি আরও ভাল হতে পারেন।

  • ** ওক্রেড, জিওসিআর, ওসিআরকোপস, পরীক্ষার, ** - এগুলি কাজ করতে পারে তবে কয়েকটি সমস্যা রয়েছে:

    1. ওসিআরের ফলাফলগুলি এর মধ্যে কয়েকটি হিসাবে অ্যাক্রোব্যাট হিসাবে বলার মতো দুর্দান্ত নয় (উপরের লিঙ্কটি দেখুন)।
    2. কোনও প্রোগ্রামই পিডিএফ ফাইল নেয় না এবং পিডিএফ ফাইল আউটপুট দেয়। আপনাকে একটি স্ক্রিপ্ট তৈরি করতে হবে এবং প্রথমে পিডিএফটি বিচ্ছিন্ন করতে হবে এবং প্রতিটিটির উপরে প্রোগ্রামগুলি চালনা করতে হবে এবং তারপরে পিডিএফ হিসাবে ফাইলটি পুনরায় জমা করতে হবে
    3. একবার আপনি এটি করার পরে, আপনি পেতে পারেন, যেমন আমি করেছি, যে (পরীক্ষক) একটি ওসিআর স্তর তৈরি করে যা উপরের দিকে সরানো হয়। সুতরাং আপনি যদি '' শব্দটি অনুসন্ধান করেন, আপনি তার পাশের শব্দের অংশটির একটি হাইলাইট পাবেন।
  • ব্যাচ ডিজেভি → পিডিএফ এ রূপান্তর করুন - এটি সন্ধান করেন নি, তবে এটি একটি ভয়ঙ্কর গোল-আ-বাউট সমাধানের মতো মনে হচ্ছে।

অনলাইন

  • PDFcubed.com - আসুন, আসলে একটি ব্যাচের সমাধান নয়।
  • এবিওয়াই ক্লাউড ওসিআর - নিশ্চিত না যে এটি সত্যই কোনও ব্যাচের সমাধান কিনা, কোনওভাবেই, আপনাকে পৃষ্ঠাটি প্রদান করতে হবে এবং এটি বেশ মূল্যবান হতে পারে।

অ-ওসিআরবিহীন পিডিএফ সনাক্তকরণ

এটি একটি সামান্য সহজ সমস্যা, এটি লিনাক্সে সহজেই সমাধান করা যেতে পারে এবং উইন্ডোজ থেকে খুব কম। pdffontকোন ফাইল-ওসিআর হয় না তা নির্ধারণ করতে হরফ এম্বেড করা হয়েছে কিনা তা সনাক্ত করে আমি পার্ল স্ক্রিপ্ট কোড করতে সক্ষম হয়েছি ।


বর্তমান "সমাধান"

  1. নন-ওসিআরড পিডিএফগুলি সনাক্ত করার জন্য একটি স্ক্রিপ্ট ব্যবহার করুন (যাতে আপনি হাজার হাজার ওসিআর পিডিএফ পুনরায় চালু করবেন না) এবং এগুলি একটি অস্থায়ী ডিরেক্টরিতে (সঠিক ডিরেক্টরি ট্রি ধরে রাখা) অনুলিপি করুন এবং তারপরে উইন্ডোজে অ্যাক্রোব্যাট ব্যবহার করুন এই আশা করে যে আরও ছোট ব্যাচ ক্রাশ হবে না।

  2. একই স্ক্রিপ্টটি ব্যবহার করুন তবে ওসিআর গুণমানকে ঝুঁকির সাথে সঠিকভাবে কাজ করতে একটি লিনাক্স ওসিআর সরঞ্জাম পান।

আমি মনে করি যে আমি # 1 চেষ্টা করতে যাচ্ছি, আমি লিনাক্স ওসিআর সরঞ্জামগুলির ফলাফল সম্পর্কে খুব বেশি চিন্তিত (আমি মনে করি না যে কারও তুলনা করা হয়েছে) এবং ফাইলগুলি পৃথকভাবে ভেঙে আবার এক সাথে সেলাই করে মনে হচ্ছে অযৌক্তিক কোডিং থাকুন যদি অ্যাডোব আসলে দম বন্ধ না করে ওসিআর কোনও ডিরেক্টরিকে ব্যাচ করতে পারে।

আপনি যদি একটি সম্পূর্ণ নিখরচায় সমাধান চান তবে আপনাকে নন-ওসিআরড পিডিএফগুলি সনাক্ত করার জন্য একটি স্ক্রিপ্ট ব্যবহার করতে হবে (বা কেবল ওসিআরডগুলি দিয়ে পুনরায় পুনরায় চালু করতে হবে) এবং তারপরে চেষ্টা করার জন্য ও ওসিআরের জন্য একটি লিনাক্স সরঞ্জাম ব্যবহার করতে হবে। টিজার্টের সর্বোত্তম ফলাফল রয়েছে বলে মনে হয় তবে আবার উবুন্টুর আধুনিক সংস্করণগুলিতে এই কয়েকটি সরঞ্জাম ভালভাবে সমর্থন করে না তবে আপনি যদি এটি সেট আপ করতে পারেন এবং সমস্যাটি সমাধান করতে পারেন তবে আমার যেখানে ইমেজ স্তরটি টেক্সট-ম্যাচিং লেয়ারের সাথে মেলে না ( পরীক্ষার সাথে) তারপরে আপনার কাছে একটি দুর্দান্ত কার্যক্ষম সমাধান হবে এবং আবার লিনাক্স> উইন্ডোজ।


আপনার কি সম্পূর্ণরূপে স্বয়ংক্রিয়ভাবে ব্যাচ করার , ব্যাচের ওসিআর পিডিএফগুলি , উচ্চ মানের সহ একই নাম রেখে ইতিমধ্যে ওসিআরড ফাইলগুলি এড়িয়ে যাওয়ার কোনও সমাধান সমাধান রয়েছে ? যদি তা হয় তবে আমি সত্যই ইনপুটটির প্রশংসা করব।


অ-ওসিআরড ফাইলগুলিকে একটি অস্থায়ী ডিরেক্টরিতে সরানোর জন্য পার্ল স্ক্রিপ্ট। এই কাজের গ্যারান্টি দিতে পারে না এবং সম্ভবত নতুন করে লেখা দরকার, তবে যদি কেউ এটিকে কাজ করে (ধরে নিলে এটি কাজ করে না) বা আরও ভাল কাজ করে তবে আমাকে জানান এবং আমি এখানে আরও ভাল সংস্করণ পোস্ট করব।


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

        }

    }
}

হ্যালো, আপনি কি দয়া করে আপনার উইন্ডোজ "স্ক্রিপ্টটি অ-ওসিআরড পিডিএফগুলি (...) সনাক্ত করতে এবং একটি অস্থায়ী ডিরেক্টরিতে (সঠিক ডিরেক্টরি ট্রি ধরে রাখতে পারেন) অনুলিপি করতে পারেন? আগাম ধন্যবাদ;)
এরব

@ ডেভিড ঠিক আছে এটি শেষ। আমি আপনাকে সতর্ক করে দিয়েছি এটি সম্ভবত প্রথমবার সঠিকভাবে চলবে না। এটি আপনার পিডিএফগুলি মোটেও ক্ষতিগ্রস্থ করবে না (এটি কেবল অনুলিপি করে, এটি মূলগুলি স্পর্শ করে না) তবে আমার অর্থ হ'ল আপনাকে স্ক্রিপ্টটি সংশোধন করতে হবে। আপনি যদি পার্লটি জানেন তবে এটি বাতাসের মতো হবে, যদি আমাকে না জানায় বা আপনি নিজে এটি ডিবাগ করতে এবং ছোটখাটো সম্পাদনাগুলি প্রয়োজনীয় করে তুলতে সক্ষম হতে পারেন।
জো

অনেক ধন্যবাদ. আমি এটি কার্যকর করার চেষ্টা করব (যদিও আমি পার্ল দিয়ে নতুন)। ধন্যবাদ।
এরব

উইন্ডোজ হতে পারে অন্য ধারণা (এক্সপি মধ্যে কাজ)? আমি অতীতে এটি ব্যবহার করেছি "কোনও ফোল্ডার (সাবফোল্ডার সহ) মুছে ফেলার জন্য (সমস্ত পিডিএফ ফাইল যার পাসওয়ার্ড নেই" থেকে সরানোর জন্য)। ধারণাটি ছিল যে সমস্ত পিডিএফ ফাইল যা পাসওয়ার্ড সুরক্ষিত থাকে। একটি নতুন ফোল্ডারে সিঙ্কব্যাক ফ্রিওয়্যারের সাথে সমস্ত পিডিএফ (সম্পর্কিত সাবফোল্ডার সহ) অনুলিপি করুন (সি: \ 5 \ ")। pdftotext.exe যুক্ত করুন এবং এই পাঠ্য ফাইলটির নাম বদলে দেওয়া হয়েছে__ddd___assus.bat এর বিষয়বস্তু:" ফর / আরসি: \ 5 \% % x IN (* .PDF) do (pdftotext %% x NUL &&L%% x) "যেখানে" C: \ 5 \ "ফোল্ডারটি পরিবর্তন করতে হবে। তারপরে pdftotext.exe শুরু করুন এবং কেবলমাত্র .bat ফাইলটি শুরু করুন
এরব

আরও বিশদ: আপনাকে ফ্রিওয়্যার পুনর্নামকরণকারী যেকোন ফোল্ডারের নামের ভিতরে ফাঁকা স্থান (+ বিশেষ ক্যার্যাকটারগুলি "," ... ...) সরিয়ে ফেলতে হবে (উদাহরণস্বরূপ: বিকল্পের.টোন / সফটওয়্যার / গ্রামীণ )। অন্যথায় এটি সমস্ত সাবফোল্ডারগুলির জন্য কাজ করবে না! পিএস: আমি এই স্ক্রিপ্টটি লিখিনি (আমাকে কেউ ... 2004 এর দ্বারা সহায়তা করেছিল!)
এরব

উত্তর:


3

আমিও অনেক ভাগ্য ছাড়াই স্বয়ংক্রিয় পদ্ধতিতে অনেকগুলি পিডিএফ-ব্যাচ-ওসিআর করার সন্ধান করেছি। শেষ পর্যন্ত আমি আপনার অনুরূপ একটি কার্যক্ষম সমাধান নিয়ে এসেছি, অ্যাক্রোব্যাটকে স্ক্রিপ্টের সাহায্যে নিম্নরূপ ব্যবহার করছি:

  1. সমস্ত সম্পর্কিত পিডিএফ একটি নির্দিষ্ট ডিরেক্টরিতে অনুলিপি করুন।

  2. ইতিমধ্যে পাঠ্য সম্বলিত পিডিএফগুলি সরিয়ে ফেলুন (ধরে নিবেন তারা ইতিমধ্যে ওসিআরডি হয়েছে বা ইতিমধ্যে পাঠ্য রয়েছে - আমি জানি না আদর্শ, তবে আপাতত যথেষ্ট ভাল)।

  3. অ্যাক্রোব্যাট স্বয়ংক্রিয়ভাবে চালনার জন্য অটোহটকি ব্যবহার করুন, নির্দিষ্ট ডিরেক্টরিটি নির্বাচন করুন এবং ওসিআর সমস্ত নথিগুলি, তাদের ফাইলের নামটিতে "-ocr" যুক্ত করুন।

  4. ওসিআরডি পিডিএফগুলি "-ocr.pdf" ফাইলের উপস্থিতি ব্যবহার করে এটি সফল হয়েছে কিনা তা নির্ধারণের জন্য তাদের মূল স্থানে ফিরে যান।

এটি কিছুটা স্বাস্থ্য রবিনসন , তবে বাস্তবে এটি বেশ ভালভাবে কাজ করে।


যদি অ্যাক্রোব্যাট ইতিমধ্যে ব্যাচার ডিরেক্টরিতে ডিরেক্টরি তৈরি করে তবে অটোহটকি ব্যবহার করার দরকার নেই কেন? যদি আপনি প্রক্রিয়াটি পুনরাবৃত্তি করতে উদ্বিগ্ন হন তবে অ্যাক্রোব্যাট ফাইলটি ক্র্যাশ করলে সংশোধিত টাইমস্ট্যাম্প আপনাকে বলবে আপনি কোথায় চলে গিয়েছিলেন। যদি আপনি মূলগুলি রাখতে চান তবে আপনি কেবল ডিরেক্টরিটি অনুলিপি করতে পারেন। আপনি যদি শেষে-ওসিআর চান তবে আপনি সম্পন্ন হওয়ার পরে কেবল একটি ব্যাচের নাম পরিবর্তন করতে পারেন।
জো

1
হ্যালো, ভাগ্যক্রমে আপনি কীভাবে উইন্ডোজে আপনি 2 এবং 3 পয়েন্টটি ভাগ করে নিতে পারেন? অগ্রিম ধন্যবাদ;)
এরব

2

আমি বুঝতে পারি যে আপনার বুঝতে হবে যে ABBYY FineReader একটি শেষ-ব্যবহারকারী সমাধান যা বাক্সের বাইরে ওসিআরটি দ্রুত এবং নির্ভুলভাবে সরবরাহ করার জন্য ডিজাইন করা হয়েছে।

আমার অভিজ্ঞতার উপর ভিত্তি করে, ওসিআর প্রকল্পগুলিতে প্রতিবার তাত্পর্যপূর্ণভাবে আলাদা আলাদা বিশদ থাকে এবং প্রতিটি অনন্য মামলার জন্য বক্স সান্টিশনের বাইরে কোনও উপায় তৈরি করার উপায় নেই i তবে আমি আপনাকে আরও পেশাদার সরঞ্জামগুলির পরামর্শ দিতে পারি যা আপনাকে কাজ করতে পারে:

  • কটাক্ষপাত আছে ABBYY স্বীকৃতি সার্ভার , এই OCR করুন automatiation একজন পেশাদার পণ্য।

  • লিনাক্সের ক্ষেত্রে, http://ocr4linux.com এ একবার দেখুন , এটি একটি কমান্ড লাইন ইউটিলিটি যা আপনাকেও ফিট করতে পারে।

  • আরও জটিল কাজের জন্য ABBYY এর মতো খুব নমনীয় SDKs রয়েছে যেমন ABBYY FINReader ইঞ্জিন (অভ্যন্তরীণ হোস্ট করা) বা ABBYY ক্লাউড OCR SDK (মাইক্রোসফ্ট অ্যাজুরি মেঘের উপর ভিত্তি করে), যাতে আপনি ওসিআরকে যেভাবে চান প্রক্রিয়াকরণ করতে দেবেন।

আমি উপরে উল্লিখিত মেঘ পরিষেবার জন্য ফ্রন্ট-এন্ড ডেভেলপমেন্ট টিমের একটি অংশ ছিলাম এবং প্রয়োজনে এটিতে আরও তথ্য সরবরাহ করতে পারি।

পিডিএফে একটি পাঠ্য স্তরের সন্ধানের বিষয়টি বিবেচনা করে, আমি এ বিষয়ে কোনও পরামর্শ দিতে পারি না, কারণ এই কাজটি ওসিআর থেকে কিছুটা আলাদা যা আমার বিশেষত্ব, তাই আমি বাহ্যিক স্ক্রিপ্টটি ব্যবহার করার আপনার পদ্ধতির বিষয়টি খুব যুক্তিসঙ্গত বলে মনে করি। হতে পারে আপনি এই আলোচনাটি সহায়ক খুঁজে পেতে পারেন: http://forum.ocrsdk.com/questions/108/check-if-pdf-is-scanned-image-or-contains-text


1
ওয়েল কমপক্ষে আমরা জানি যে ABBYY সহজেই পিডিএফ-র একটি ফোল্ডার ওসিআর ব্যাচ করতে ডকুমেন্টেশন বা কার্যকারিতা (যা অ্যাক্রোব্যাটে পাওয়া যায়) এর অভাব রয়েছে। নন-ওসিআরড ডক্সের ফোল্ডারের সাধারণ ব্যাচের ওসিআর একটি অত্যন্ত কাঙ্ক্ষিত বৈশিষ্ট্য (এবিবিওয়াইয়ের অন্যান্য বৈশিষ্ট্যের তুলনায় অনেক বেশি)। এই ইচ্ছাটি কতটা অপ্রতিরোধ্যভাবে সাধারণ তা খুঁজে পেতে কেবল গুগল, যদি তা না হয় তবে আমি উদ্ধৃতি সরবরাহ করতে পারি। অন্যান্য অপশনগুলির জন্য ধন্যবাদ, আমি সেগুলি সন্ধান করব, তবে আপাতত যে কেউ এই অতি সাধারণ কাজটি (উদ্ধৃতি হিসাবে উপলব্ধ) কীভাবে সম্পন্ন করবেন সন্ধানে এখানে আসেন তা জানতে দিন যে আমরা ঘোড়ার মুখ থেকে শুনেছি যে এবিওয়াইওয়াই এটি করতে পারে না।
জো

ব্যাচের ওসিআর অ্যাবিবিওয়াই ফাইনআরডার পেশাদারে উপলব্ধ in আপনার প্রশ্নে আপনি ওসিআরকে পুরোপুরি স্বয়ংক্রিয় করার প্রয়োজনের কথা জানিয়েছেন। এখন আপনার প্রয়োজন মাত্র একটি ব্যাচ প্রক্রিয়াজাতকরণ। আপনার ঠিক কী প্রয়োজন তা পরিষ্কার করুন।
নিকলে

উপরে পড়ুন। আমি বলেছিলাম 'সহজে ব্যাচের ওসিআর', 'ফোল্ডারের সিম্পল ব্যাচ ওসিআর'। আরও আপ: "আপনি যদি সম্পূর্ণরূপে স্বয়ংক্রিয়ভাবে (কোনও প্রম্প্টিং নয়) ব্যাচের ওসিআর কীভাবে আবিষ্কার করতে পারেন তবে .."। আমি যা চাই তা বেশ স্পষ্ট। সুতরাং এই পৃষ্ঠাটি দেখার জন্য যে কেউ স্পষ্ট হয়ে উঠুন: * আপনি যদি ভারী ব্যবহারকারী-নিবিড় প্রক্রিয়াতে ভয়ঙ্কর সংরক্ষণ বিকল্পগুলির সাথে একটি ভয়ঙ্কর, জটিল ইন্টারফেস ব্যবহার করে একটি পিডিএফগুলির ফোল্ডারটি 'ব্যাচ প্রক্রিয়া' করতে চান তবে ABBYY আপনার পক্ষে কাজ করতে পারে * আপনি যদি চান 'সহজ ব্যাচের ওসিআর', 'সহজ ব্যাচের ওসিআর' ব্যবহারকারীর সাথে হাজার হাজারের মতো অল্প ব্যবহারকারীর ইন্টারঅ্যাকশন যেমন অ্যাক্রোব্যাট ইতিমধ্যে করেছে, এবিওয়াইওয়াই ফিনারিডার আপনার পক্ষে নয়।
জো

2

লিনাক্সে

সবচেয়ে ভাল ও সহজ উপায় হ'ল pypdfocrএটি পিডিএফ পরিবর্তন করে না use

pypdfocr your_document.pdf

শেষে আপনি your_document_ocr.pdfঅনুসন্ধানযোগ্য পাঠ্যের সাহায্যে এটি অন্যভাবে চাইবেন। অ্যাপ্লিকেশনটি চিত্রের মান পরিবর্তন করে না। ওভারলে লেখাটি যুক্ত করে ফাইলের আকারটি কিছুটা বাড়ায়।

পিডিএফএস ব্যাচ করতে

ls ./p*.pdf | xargs -L1 -I {}  pypdfocr {}

পিডিএফগুলি যদি সাব-ফোল্ডারে থাকে:

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {}  pypdfocr {}

3 য় নভেম্বার 2018 আপডেট করুন:

pypdfocr২০১ since সালের পরে আর সমর্থিত নয় এবং মানসিক না হওয়ার কারণে আমি কিছু সমস্যা লক্ষ্য করেছি। ocrmypdf( মডিউল ) একটি অচেনা কাজ করে এবং এটি ব্যবহার করা যেতে পারে:

ocrmypdf in.pdf out.pdf

স্থাপন করা:

pip install ocrmypdf

অথবা

apt install ocrmypdf

সুতরাং আদেশটি হয়ে যাবে

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {}  ocrmypdf {} {}_ocr.pdf 

1

২০১৫ এর গোড়ার দিকে উইন্ডোজগুলিতে ন্যুয়েন্স ওমনিপেজ আলটিমেট ব্যবহার করে সম্পূর্ণ হ্যান্ডস অফ ব্যাচের ওসিআর করে আমার কিছুটা সাফল্য ছিল। বিনামূল্যে নয়, তালিকার দাম list 500 $ অন্তর্ভুক্ত ব্যাচ প্রোগ্রাম "ডকুডায়ারেক্ট" ব্যবহার করুন। এটিতে একটি বিকল্প রয়েছে "কোনও প্রম্পট ছাড়াই চাকরী চালান" যা আপনার মূল প্রশ্নের সরাসরি উত্তর বলে মনে হচ্ছে।

আমি প্রতিটি ইনপুট চিত্রের (যেমন, অন্বেষণযোগ্য) পিডিএফ ফাইলের জন্য একটি অনুসন্ধানযোগ্য পিডিএফ ফাইল আউটপুট দিতে ডকুডাইরেক্ট ব্যবহার করেছি; এটি আউটপুট ফোল্ডারে ইনপুট ডিরেক্টরি গাছের পাশাপাশি মূল ইনপুট ফাইলের নাম (প্রায় - নীচে দেখুন) প্রতিলিপি করতে বলা যেতে পারে। একাধিক কোর ব্যবহার করে। নির্ভুলতা আমি যে প্যাকেজগুলির মূল্যায়ন করেছি তার মধ্যে সেরা ছিল। পাসওয়ার্ড-সুরক্ষিত নথিগুলি এড়ানো হয় (কাজটি না থামিয়ে, কোনও ডায়ালগ না দেখিয়ে)।

ক্যাভেট ১: প্রায়শই মূল ফাইলের নাম - প্রত্যয় ".পিডিএফ" ".পিডিএফ" হয়ে যায় (অর্থাত্, উপরের থেকে নীচের ক্ষেত্রে) কারণ ওহে, উইন্ডোতে এটি সব একই রকম। (বিতৃষ্ণা।)

ক্যাভেট ২: কোনও লগ ফাইল এতক্ষণ নির্ণয় করছে না যে স্বীকৃতি দেওয়ার সময় কোন ফাইলগুলি ব্যর্থ হয় - যা তারা অবশ্যই করেন - আপনার কাছে ফিরে আসে। ডকুডাইরেক্ট সুখের সাথে পুরো পৃষ্ঠাগুলির মতো গার্ল্ড আউটপুটগুলি উত্সাহিত করবে simply অপরিশোধিত বৈধতা প্রয়োগ করতে পাইপডিএফ 2 মডিউলটি ব্যবহার করে আমি পাইথন স্ক্রিপ্ট লিখেছিলাম: পরীক্ষা করে যে আউটপুট পৃষ্ঠার গণনাটি ইনপুট পৃষ্ঠা গণনাটির সাথে মিলেছে। নিচে দেখ.

ক্যাভেট 3: একটি অস্পষ্ট, স্বতন্ত্র ইনপুট চিত্র ফাইলের ফলে কোনও সিপিইউ ব্যবহার না করে ওমনিপেজ চিরতরে স্তব্ধ হয়ে যাবে; এটা ঠিক পুনরুদ্ধার হয় না। এটি সত্যই ব্যাচের প্রক্রিয়াকরণটিকে লেনদেন করেছে এবং আমি কোনও কাজের সন্ধান পাইনি। আমি নুয়েন্সকে এটিও জানিয়েছি, কিন্তু কোথাও পেলাম না।

সফটওয়্যারটি খারাপ প্রোগ্রাম করা এবং ডকুমেন্টেড হওয়া সম্পর্কে @ জো ঠিকই বলেছেন। আমি নোট কোর OmniPage এর আশ্চর্যজনক চরিত্র-স্বীকৃতি যাদু প্রযুক্তি আছে, কিন্তু বাইরের শেল (গুই & ব্যাচ প্রসেসিং) আপনার চুল উঠিয়ে ফেলবেন করতে যথেষ্ট।

স্ক্রিপ্টগুলি ব্যবহার করে ফাইলগুলি স্ক্রিন আউট করার জন্য আমি @ জো এবং @ কিউইর পরামর্শটিকে সমর্থন করি, যাতে কেবল অরক্ষিত চিত্র নথি সহ ওসিআর প্যাকেজ উপস্থাপন করা যায়।

নুন্যান্সের সাথে আমার একমাত্র অনুমোদিততা হ'ল একেবারে-সন্তুষ্ট গ্রাহক হিসাবে - এটি প্রমাণ করার জন্য আমার কাছে একটি ব্যাচ অমীমাংসিত সমর্থনের টিকিট রয়েছে :)

@ জো: শেষ উত্তর, তবে এখনও প্রাসঙ্গিক হতে পারে। @ সুপার ইউজার সম্প্রদায়: আমি আশা করি আপনারা মনে করেন এটি বিষয়টিতে রয়েছে।

** আপডেট ** উত্তরসূরি প্যাকেজ হ'ল নুয়েন্স পাওয়ারপিডিএফ অ্যাডভান্সড, তালিকার দাম মাত্র 150 ডলার। আমার এটির সাথে আরও ভাল সাফল্য ছিল, এটি ঠিক যেমন সঠিক তবে আরও স্থিতিশীল।

প্রাক / ওসিআর-পরবর্তী বৃক্ষের বৈধতা পাইথন স্ক্রিপ্টটি অনুসরণ করে।

'''
Script to validate OCR outputs against inputs.
Both input and output are PDF documents in a directory tree.
For each input document, checks for the corresponding output
document and its page count.

Requires PyPDF2 from https://pypi.python.org/pypi/PyPDF2
'''

from __future__ import print_function
from PyPDF2 import PdfFileReader
import getopt
import os
import stat
import sys

def get_pdf_page_count(filename):
    '''
    Gets number of pages in the named PDF file.
    Fails on an encrypted or invalid file, returns None.
    '''
    with open(filename, "rb") as pdf_file:
        page_count = None
        err = None
        try:
            # slurp the file
            pdf_obj = PdfFileReader(pdf_file)
            # extract properties
            page_count = pdf_obj.getNumPages()
            err = ""
        except Exception:
            # Invalid PDF.
            # Limit exception so we don't catch KeyboardInterrupt etc.
            err = str(sys.exc_info())
            # This should be rare
            print("Warning: failed on file %s: %s" % (filename, err), file=sys.stderr)
            return None

    return page_count

def validate_pdf_pair(verbose, img_file, txt_file):
    '''
    Checks for existence and size of target PDF file;
    number of pages should match source PDF file.
    Returns True on match, else False.
    '''
    #if verbose: 
    #    print("Image PDF is %s" % img_file)
    #    print("Text PDF is %s" % txt_file)

    # Get source and target page counts
    img_pages = get_pdf_page_count(img_file)
    txt_pages = get_pdf_page_count(txt_file)
    if img_pages is None:
        # Bogus PDF, skip.
        print("Warning: failed to get page count for %s" % img_file, file=sys.stderr)
        return None
    if txt_pages is None:
        # Bogus PDF, skip.
        print("Warning: failed to get page count for %s" % txt_file, file=sys.stderr)
        return None

    retval = True
    if img_pages != txt_pages:
        retval = False
        print("Mismatch page count: %d in source %s, %d in target %s" % (img_pages, img_file, txt_pages, txt_file), file=sys.stderr)

    return retval


def validate_ocr_output(verbose, process_count, total_count, img_dir, txt_dir):
    '''
    Walks a tree of files to compare against output tree, calling self recursively.
    Returns a tuple with PDF file counts (matched, non-matched).
    '''
    # Iterate over the this directory
    match = 0
    nonmatch = 0
    for dirent in os.listdir(img_dir):
        src_path = os.path.join(img_dir, dirent)
        tgt_path = os.path.join(txt_dir, dirent)
        if os.path.isdir(src_path):
            if verbose: print("Found source dir %s" % src_path)
            # check target
            if os.path.isdir(tgt_path):
                # Ok to process
                (sub_match, sub_nonmatch) = validate_ocr_output(verbose, process_count + match + nonmatch, total_count, 
                                         src_path, tgt_path)
                match += sub_match
                nonmatch += sub_nonmatch
            else:
                # Target is missing!?
                print("Fatal: target dir not found: %s" % tgt_path, file=sys.stderr)

        elif os.path.isfile(src_path):
            # it's a plain file
            if src_path.lower().endswith(".pdf"):
                # check target
                # HACK: OmniPage changes upper-case PDF suffix to pdf;
                # of course not visible in Windohs with the case-insensitive 
                # file system, but it's a problem on linux.
                if not os.path.isfile(tgt_path):
                    # Flip lower to upper and VV
                    if tgt_path.endswith(".PDF"):
                        # use a slice
                        tgt_path = tgt_path[:-4] + ".pdf"
                    elif tgt_path.endswith(".pdf"):
                        tgt_path = tgt_path[:-4] + ".PDF"
                # hopefully it will be found now!
                if os.path.isfile(tgt_path):
                    # Ok to process
                    sub_match = validate_pdf_pair(verbose, src_path, tgt_path)
                    if sub_match:
                        match += 1
                    else:
                        nonmatch += 1
                    if verbose: print("File %d vs %d matches: %s" % (process_count + match + nonmatch, total_count, sub_match))

                else:
                    # Target is missing!?
                    print("Fatal: target file not found: %s" % tgt_path, file=sys.stderr)
                    nonmatch += 1

        else:
            # This should never happen
            print("Warning: not a directory nor file: %s" % src_path, file=sys.stderr)
    return (match, nonmatch)

def count_pdfs_listdir(verbose, src_dir):
    '''
    Counts PDF files in a tree using os.listdir, os.stat and recursion.
    Not nearly as elegant as os.walk, but hopefully very fast on
    large trees; I don't need the whole list in memory.
    '''
    count = 0
    for dirent in os.listdir(src_dir):
        src_path = os.path.join(src_dir, dirent)
        # stat the entry just once
        mode = os.stat(src_path)[stat.ST_MODE]
        if stat.S_ISDIR(mode):
            # It's a directory, recurse into it
            count += count_pdfs_listdir(verbose, src_path)
        elif stat.S_ISREG(mode):
            # It's a file, count it
            if src_path.lower().endswith('.pdf'):
                count += 1
        else:
            # Unknown entry, print an error
            print("Warning: not a directory nor file: %s" % src_path, file=sys.stderr)
    return count

def main(args):
    '''
    Parses command-line arguments and processes the named dirs.
    '''
    try:
        opts, args = getopt.getopt(args, "vi:o:")
    except getopt.GetoptError:
        usage()
    # default values
    verbose = False
    in_dir = None
    out_dir = None
    for opt, optarg in opts:
        if opt in ("-i"):
            in_dir = optarg
        elif opt in ("-o"):
            out_dir = optarg
        elif opt in ("-v"):
            verbose = True
        else:
            usage()
    # validate args
    if in_dir is None or out_dir is None: usage()
    if not os.path.isdir(in_dir):
        print("Not found or not a directory: %s" % input, file=sys.stderr)
        usage()
    if not os.path.isdir(out_dir):
        print("Not found or not a directory: %s" % out_dir, file=sys.stderr)
        usage()
    if verbose: 
        print("Validating input %s -> output %s" % (in_dir, out_dir))
    # get to work
    print("Counting files in %s" % in_dir)
    count = count_pdfs_listdir(verbose, in_dir)
    print("PDF input file count is %d" % count)
    (match,nomatch) = validate_ocr_output(verbose=verbose, process_count=0, total_count=count, img_dir=in_dir, txt_dir=out_dir) 
    print("Results are: %d matches, %d mismatches" % (match, nomatch))

def usage():
    print('Usage: validate_ocr_output.py [options] -i input-dir -o output-dir')
    print('    Compares pre-OCR and post-OCR directory trees')
    print('    Options: -v = be verbose')
    sys.exit()

# Pass all params after program name to our main
if __name__ == "__main__":
    main(sys.argv[1:])

আমি সবেমাত্র আপনার আপডেট দেখেছি। আমি এটা চেষ্টা করব. আমি আশা করি এটি নিঃশব্দে এবং ক্রাশ ছাড়াই ওসিআর করে! (বাহ! 1 গিগাবাইট ডাউনলোড ফাইল!)
এরব

0

আপনি অ্যাকোয়াফ্রস্টের অটোবাহন ডিএক্স বিবেচনা করতে পারেন: http://www.aquaforest.com/en/autobahn.asp

এটি পিডিএফগুলির ব্যাচগুলি প্রক্রিয়া করার জন্য ডিজাইন করা হয়েছে এবং এতে বিভিন্ন ধরণের বিকল্প রয়েছে (যেমন, স্কিপ করুন বা ওসিআরড ফাইলগুলি ছাড়ুন) পাশাপাশি পিডিএফগুলির স্মার্ট চিকিত্সার বিকল্প রয়েছে যা আরও ভাল ফলাফল দিতে পারে (উদাহরণস্বরূপ যদি পিডিএফের কিছু চিত্রের পৃষ্ঠা থাকে এবং কিছু থাকে) পাঠ্য পৃষ্ঠাগুলি, এটি কেবল চিত্রের পৃষ্ঠাগুলিকে ওসিআর করতে পারে)


আপনি যদি সেই পণ্যটির সাথে যুক্ত হন তবে আপনার প্রশ্নটি সম্পাদনা করে স্পষ্টভাবে তা বলুন ।
slhck

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.