1

В дополнение к более раннему посту, который предоставил решение для скрипта:

По моему вопросу можно сказать, что я пользователь компьютера и не имею знаний в области программирования.

У меня есть сотни PDF-файлов с возможностью поиска и поиска в различных папках и подпапках на внешнем жестком диске.

У меня есть компьютеры под управлением Windows 7 и Ubuntu 14.04

Как можно изменить этот сценарий, указав родительскую папку, а также выполнить поиск по подпапкам, а затем создать отчет с указанием имен файлов и местоположений?

Если пожелания сбудутся, то это будет содержаться в графическом интерфейсе и скопировать текстовые файлы в общую папку, из которой Abbyy Pro сможет выполнять пакетное распознавание текста.

1 ответ1

0

Вероятно, вы должны были опубликовать это как комментарий к другому вопросу, но, опять же, вам понадобится больше репутации, чтобы сделать это.

Сценарий @ davidgo уже рекурсивный (он будет проходить через папки и подпапки). Вам нужно всего лишь изменить echo "$each NOT searchable" чтобы изменить то, что он делает, находя файл без возможности поиска. Это должно сделать трюк:


Изменить: Были некоторые проблемы с тем, как скрипт обрабатывает пробелы в именах файлов и некоторые другие проблемы здесь и там. Я решил пересмотреть оригинальный сценарий Давидго, чтобы вы увидели еще несколько изменений, чем я говорил выше.


#! /bin/bash

if [[ ! "$#" = "2" ]]
  then
      echo "Usage: $0 /path/to/PDFDirectory /path/to/TARGETDirectory"
      exit 1
fi

PDFDIRECTORY="$1"
TARGETDIR="$2"

while IFS= read -r -d $'\0' FILE; do
    PDFFONTS_OUT="$(pdffonts "$FILE" 2>/dev/null)"
    RET_PDFFONTS="$?"
    FONTS="$(( $(echo "$PDFFONTS_OUT" | wc -l) - 2 ))"
    if [[ ! "$RET_PDFFONTS" = "0" ]]
      then
          READ_ERROR=1
          echo "Error while reading $FILE. Skipping..."
          continue
    fi
    if [[ "$FONTS" = "0" ]]
      then
          echo "NOT SEARCHABLE: $FILE -- Copying to $TARGETDIR."
          cp -v "$FILE" "$TARGETDIR/${FILE##*/}"
      else
          echo "SEARCHABLE: $FILE"
      fi
done < <(find "$PDFDIRECTORY" -type f -name '*.pdf' -print0)

echo "Done."
if [[ "$READ_ERROR" = "1" ]]
  then
      echo "There were some errors."
fi

Сохраните этот скрипт в новом пустом файле, назовите его как copy_image_pdf и сделайте его исполняемым через свойства файла (я предполагаю, что вы сделаете это в Ubuntu).

Затем запустите его из терминала, указав каталог PDF и каталог назначения, куда следует скопировать файлы PDF изображений, например:

copy_image_pdf /media/data/pdffiles /media/data/pdffiles-to-be-ocred

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .