Batch-OCR безліч PDF-файлів


20

Про це йшлося рік тому тут:

Пакетний OCR для багатьох файлів PDF (ще не OCRed)?

Чи є спосіб отримати PDF-файли OCR, які ще не були OCRed? Це, на мій погляд, сучасний стан речей, які стосуються двох питань:

Пакетні PDF-файли OCR

Windows

  • Acrobat - Це найпростіший двигун ocr, який здійснюватиме обробку OCR. Єдина проблема, здається, полягає в тому, що вона не пропускає файли, які вже були OCRed. 2) спробуйте кинути в неї купу PDF-файлів (деякі старі) і спостерігати, як вона виходить з ладу. Це трохи баггі. Він попередить вас при кожній помилці, на яку він зіткнеться (хоча ви можете сказати програмному забезпеченню не повідомляти. Але знову ж таки, він жахливо гине на певних типах PDF-файлів, тому ваш пробіг може змінюватися.

  • ABBYY FineReader (Batch / Scansnap), Omnipage - Це повинні бути одні з найгірших програмованих програм, відомих людині. Якщо ви можете дізнатися, як повністю автоматизувати (без спонукання) пакетну OCR збереження PDF-файлів з тим самим іменем, будь ласка, опублікуйте тут. Здається, єдине рішення, яке я міг десь знайти, не вдалося - перейменування, не повністю автоматизоване тощо. У кращому випадку є спосіб це зробити, але документація та програмування настільки жахливі, що ви ніколи не дізнаєтесь.

  • ABBYY FineReader Engine , сервер розпізнавання ABBYY - це справді більше корпоративних рішень, вам, мабуть, було б краще просто отримати акробат для запуску папки та спробувати вилучити файли pdfs, які дають вам помилки / збої в роботі програми, ніж переживати проблеми встановити програмне забезпечення для оцінки (якщо припустити, що ви простий кінцевий користувач). Не здається економічно конкурентоспроможним для маленького користувача.

  • ** Робоча станція Autobahn DX ** вартість цього продукту настільки непомітна, що ви, ймовірно, могли придбати 6 примірників акробату. Насправді не для кінцевих користувачів. Якщо ви налаштовані на підприємство, це, можливо, варто для вас.

Linux

  • WatchOCR - більше не розроблений і в основному неможливий запуск сучасних дистрибутивів Ubuntu
  • pdfsandwich - більше не розвинений, в основному неможливий запуск сучасних дистрибутивів Ubuntu
  • ** ABBY LINUX OCR ** - це має бути сценарієм, і, здається, має хороші результати:

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

Однак, як і багато інших цих продуктів ABBYY, які вони заряджають на сторінці, знову ж таки, вам може бути краще спробувати змусити Acrobat Batch OCR працювати.

  • ** Ocrad, GOCR, OCRopus, tesseract, ** - це може працювати, але є кілька проблем:

    1. Результати OCR не такі великі, як, скажімо, акробат для деяких із них (див. Вище посилання).
    2. Жодна з програм не приймає PDF-файл і не виводить PDF-файл. Ви повинні створити сценарій і розбити PDF спочатку і запустити програми над кожним, а потім зібрати файл у форматі PDF
    3. Як тільки ви це зробите, ви можете виявити, як я зробив, що (tesseract) створює шар OCR, який переміщується. Отже, якщо ви будете шукати слово "the", ви отримаєте виділення частини слова поруч.
  • Пакетна DjVu → Перетворити в PDF - не розглядала, але здається, що це жахливе рішення навколо.

Інтернет

  • PDFcubed.com - давай, не дуже пакетне рішення.
  • ABBYY Cloud OCR - не впевнений, чи справді це пакетне рішення, так чи інакше, вам доведеться платити сторінкою, і це може стати досить дорогим.

Ідентифікація PDF-файлів, що не мають OCRed

Це дещо простіша проблема, яку можна легко вирішити в Linux і тим більше в Windows. Мені вдалося кодувати сценарій perl, використовуючи, pdffontщоб визначити, чи вбудовані шрифти, щоб визначити, які файли не є OCRed.


Поточні "рішення"

  1. Використовуйте сценарій для ідентифікації pdfs, що не мають OCRed (щоб ви не повторювали більше тисяч OCRed PDF-файлів) і скопіюйте їх у тимчасовий каталог (зберігши правильне дерево каталогів), а потім використовуйте Acrobat для Windows, щоб перейти на ці сподівання, що менший партії не впадуть.

  2. використовуйте той самий сценарій, але отримайте один з інструментів lrrrrrrr для належної роботи, ризикуючи якістю ocr.

Я думаю, що я спробую №1, я занадто сильно переживаю за результати інструментів Linux OCR (я не думаю, що хтось зробив порівняння), і розбиття файлів на частини та зшивання їх знову, здається, не зайвим буде кодування, якщо Adobe насправді може пакетно використовувати каталог OCR без задухи.

Якщо ви хочете отримати абсолютно безкоштовне рішення, вам доведеться скористатися сценарієм для ідентифікації pdfs, що не мають OCRed (або просто перезапустити їх над OCRed), а потім скористатися одним із інструментів linux, щоб спробувати їх скасувати. Здається, що Teseract має найкращі результати, але знову ж таки, деякі з цих інструментів не підтримуються добре в сучасних версіях Ubuntu, хоча якщо ви можете налаштувати його та виправити проблему, у мене було місце, коли шар зображення не відповідає шару відповідності тексту ( з tesseract), тоді ви отримаєте досить працездатне рішення і ще раз Linux> Windows.


Чи є у вас робоче рішення для цілком автоматизованої, пакетної роботи PDF-файлів OCR , пропускаючи вже якісь файли 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\'`;
                }
            }

        }

    }
}

Здрастуйте, чи можете ви поділитися своїм сценарієм Windows для виявлення pdfs, що не мають OCRed (...), і скопіюйте їх у тимчасовий каталог (із збереженням правильного дерева каталогу) заздалегідь дякую;)
Ерб

@David добре, що все. Я попереджаю вас, що він може працювати неправильно з першого разу. Це взагалі не пошкодить ваш pdfs (він просто копіює, не торкається оригіналів), але я маю на увазі те, що вам, можливо, доведеться змінювати сценарій. Якщо ви знаєте, Perl це був би легкий вітер, якщо не дайте мені знати, або ви зможете самостійно налагодити його та внести необхідні зміни.
Джо

Велике дякую. Я спробую змусити його працювати (навіть якщо я новачок у perl). Спасибі.
Ерб

Можливо, ще одна ідея в Windows (працювала в XP)? Я раніше це використовував для того, щоб "видалити з папки (з підпапками) всі файли PDF, у яких немає паролів". Ідея полягала в тому, щоб зберегти всі PDF-файли, захищені паролем. Скопіюйте безкоштовно програмою Syncback всі pdf (із відповідними підпапками) у нову папку (C: \ 5 \ "). Додайте pdftotext.exe і цей текстовий файл перейменований у del_pdf_no_password.bat. Вміст:" ДЛЯ / RC: \ 5 \% % x IN (* .PDF) DO (pdftotext %% x NUL && DEL %% x) ", де" C: \ 5 \ "- папка, яку потрібно змінити. Потім запустіть файл pdftotext.exe і тільки потім .bat файл.
Ерб

Детальніше: вам потрібно буде видалити порожні пробіли (+ спеціальні характеристики, такі як "," ...) всередині імен папок із безкоштовним перейменуванням (як-от приклади: alternativeto.net/software/renamer ). Інакше це не буде працювати для всіх папок! Ps: Я не писав цього сценарію (мені хтось допомагав у ... 2004!)
Ерб

Відповіді:


3

Я теж шукав спосіб автоматичного завантаження багатьох файлів PDF в OCR без особливої ​​долі. Врешті-решт я придумав дієве рішення, подібне до вашого, використовуючи Acrobat із сценарієм наступним чином:

  1. Скопіюйте всі відповідні PDF-файли в певний каталог.

  2. Видаліть PDF-файли, які вже містять текст (припустимо, що вони вже OCRd або вже текст - це не ідеально, я знаю, але на сьогодні достатньо хороший).

  3. Використовуйте AutoHotKey для автоматичного запуску Acrobat, вибору конкретного каталогу та OCR всіх документів, додавши до назви файлу "-ocr".

  4. Перемістіть PDF-файли OCRd назад до їх початкового місця, використовуючи наявність файлу "-ocr.pdf", щоб визначити, чи був він успішним.

Це трохи Хіт Робінсон , але насправді працює досить добре.


Чому вам потрібно використовувати AutoHotKey, якщо Acrobat вже буде пакетно ocr каталог? Якщо ви турбуєтесь про повторення процесу, якщо акробат виходить з ладу, змінена часова мітка файлу покаже вам, де ви зупинилися. Якщо ви хочете зберегти оригінали, ви можете просто скопіювати каталог. Якщо ви просто хочете -ocr в кінці, ви можете просто змінити назву партії, коли закінчите.
Джо

1
Привіт, на щастя, ви могли поділитися тим, як ви робите пункти 2. та 3. в Windows? Дякую заздалегідь;)
Ерб

2

Я вважаю, що вам потрібно усвідомити, що ABBYY FineReader - це рішення для кінцевих споживачів, призначене для забезпечення швидкого та точного OCR поза коробкою.

Виходячи з мого досвіду, проекти OCR щоразу мають суттєво різні деталі, і немає жодного способу створити загальну форму для кожного унікального випадку. Але я можу запропонувати вам більше професійних інструментів, які можуть виконати роботу за вас:

  • Погляньте на сервер розпізнавання ABBYY , це професійний продукт для автоматизації OCR.

  • Якщо мова йде про Linux, подивіться на http://ocr4linux.com , це може допомогти вам і утиліта командного рядка.

  • Для більш складних завдань ABBYY має дуже гнучкі SDK, такі як ABBYY FineReader Engine (власний розміщений) або ABBYY Cloud OCR SDK (заснований на хмарі Microsoft Azure), які дозволяють вам розробити обробку OCR так, як вам потрібно.

Я був частиною передової команди розробників для хмарної служби, зазначеної вище, і за потреби можу надати більше інформації про неї.

Враховуючи пошук текстового шару в PDF, я не можу дати жодних порад щодо цього, оскільки це завдання трохи не відповідає OCR, що є моєю спеціальністю, тому я вважаю ваш підхід використання зовнішнього скрипту дуже розумним. Можливо, ця дискусія стане вам корисною: http://forum.ocrsdk.com/questions/108/check-if-pdf-is-scanned-image-or-contains-text


1
Принаймні, ми знаємо, що ABBYY не вистачає документації або функціональних можливостей (які можна знайти в Acrobat), щоб легко створити пакет OCR в папці PDF. Простий пакетний OCR папки документів, що не належать до OCRed, є надзвичайно бажаною особливістю (набагато більше, ніж деякі інші функції ABBYY). Просто google, щоб дізнатись, як надзвичайно поширене це бажання, якщо ні, я можу навести цитати. Дякую за інші варіанти, я вивчу їх, але поки нехай кожен, хто приходить сюди, шукаючи, як виконати цю ДУЖЕ загальну задачу (цитати), знає, що ми почули це з вуст коня, що ABBYY цього не може зробити.
Джо

Пакетний OCR доступний у ABBYY FineReader Professional. У своєму запитанні ви заявляєте про необхідність повністю автоматизувати OCR. Тепер вам потрібна лише пакетна обробка. Будь ласка, уточнюйте, що саме вам потрібно.
Микола

Прочитайте вище. Я сказав: "EASILY batch OCR", "SIMPLE batch ocr of folder". Далі вгору: "Якщо ви можете дізнатися, як повністю автоматизувати (без спонукань) пакетну відеореєстрацію ..". Цілком очевидно, що я хочу. Тож давайте зрозуміти всім, хто відвідує цю сторінку: * Якщо ви хочете "обробити пакетну папку" папки pdfs, використовуючи жахливий, складний інтерфейс з жахливими параметрами збереження у важкому інтенсивному користувальницькому процесі, ABBYY може працювати для вас * Якщо ви хочете до 'EASILY пакетної OCR', 'простої пакетної програми' з мало взаємодією користувачів, як тисячі інших, як це вже робить Acrobat, ABBYY Finereader не для вас.
Джо

2

У Linux

Найкращий і найпростіший спосіб використання - pypdfocrце не змінювати PDF- файл

pypdfocr your_document.pdf

Зрештою, у вас з’явиться інший your_document_ocr.pdfспосіб, як ви хочете, з текстом для пошуку. Додаток не змінює якість зображення. Трохи збільшує розмір файлу, додаючи текст накладання.

Для партії pdfs

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

Якщо PDF-файли знаходяться в підпапках:

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

Оновлення 3 листопада 2018 року:

pypdfocrбільше не підтримується з 2016 року, і я помітив деякі проблеми через те, що його не пропускають. ocrmypdf( модуль ) виконує подібну роботу і може використовуватися так:

ocrmypdf in.pdf out.pdf

Щоб встановити:

pip install ocrmypdf

або

apt install ocrmypdf

так команда стала б

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

1

Я мав певний успіх на початку 2015 року, роблячи повністю віддалений пакетний OCR з використанням Nuance OmniPage Ultimate на windows. Не безкоштовно, ціна 500 доларів. Використовуйте пакетну програму "DocuDirect", яка входить у комплект. У ньому є опція "Запустити роботу без будь-яких підказок", яка здається прямою відповіддю на ваше первісне запитання.

Я використовував DocuDirect для виведення одного файлу PDF, який можна шукати, для кожного вхідного зображення (тобто, не підлягає пошуку) PDF-файл; можна сказати повторити дерево вхідного каталогу у папці виводу, а також оригінальні імена вхідних файлів (майже - див. нижче). Також використовується кілька ядер. Точність була найкращою з пакетів, які я оцінював. Документи, захищені паролем, пропускаються (без зупинки завдання, без відображення діалогового вікна).

Застереження 1: Майже оригінальні назви файлів - суфікс ".PDF" стає ".pdf" (тобто, з верхнього та нижнього регістру), оскільки так, все одно на Windows. (Цьфу)

Caveat 2: Жоден файл журналу, щоб діагностувати, які файли виходять з ладу під час розпізнавання - що вони, безумовно, роблять - знову на вас. DocuDirect із задоволенням створюватиме гарні виводи, як-от цілі сторінки просто відсутні. Я написав сценарій python, використовуючи модуль PyPDF2, щоб здійснити грубу перевірку: тестування, що кількість вихідних сторінок збігається з кількістю вхідних сторінок. Дивіться нижче.

Caveat 3: Нечіткий, невиразний файл вхідного зображення призведе до того, що OmniPage повіситься назавжди, не використовуючи жодного ЦП; він просто ніколи не одужує. Це дійсно зіштовхує пакетну обробку, і я не знайшов жодних обхідних шляхів. Я також повідомив про це Нюансу, але нікуди не потрапив.

@Joe має рацію з приводу того, що програмне забезпечення погано запрограмоване та документоване. Зауважу, ядро OmniPage має дивовижну магічну технологію розпізнавання персонажів, але зовнішньої оболонки (GUI та пакетної обробки) достатньо, щоб ви вивели волосся.

Я схвалюю пропозицію @ Joe та @ Kiwi екранувати файли за допомогою скриптів, щоб представити пакет OCR лише із незахищеними документами із зображеннями.

Єдина моя приналежність до Nuance - це не зовсім задоволений клієнт - у мене є партія невирішених квитків на підтримку, щоб довести це :)

@Joe: Пізня відповідь, але, можливо, все ще актуальна. @SuperUser спільнота: Сподіваюся, ви відчуваєте, що це стосується теми.

** Оновлення ** пакету-наступника Nuance PowerPDF Advanced, ціна лише 150 доларів. Я мав ще кращий успіх у цьому, це так само точно, але набагато стабільніше.

Наступний сценарій python для перевірки дерев до / після OCR.

'''
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:])

Я щойно бачив ваше оновлення. Я спробую. Я сподіваюся, що це робить OCR мовчки і без збоїв! (Ух! 1 Гб завантаження файлу!)
Ерб

0

Ви можете розглянути питання про Autobahn DX Aquaforest: http://www.aquaforest.com/en/autobahn.asp

Він призначений для обробки пакетів PDF-файлів і має різноманітні опції (наприклад, пропуск або проходження файлів OCRed), а також варіанти розумного поводження з PDF-файлами, які можуть запропонувати кращий результат (наприклад, якщо PDF має кілька сторінок зображень, а деякі - текстові сторінки, вони можуть просто OCR сторінки зображень)


Якщо ви пов’язані з цим продуктом, будь ласка, скажіть це прямо, відредагувавши своє запитання.
slhck

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.