Как превратить PDF в текстовый файл с возможностью поиска?

Результаты более отвратительны, чем apg или pwgen (даже с установленной опцией -s), но это более интересно:

head -c 8192 /dev/urandom  |   strings --bytes 8 | sed 's/\s//'

Я подозреваю, что ваш прецедент, если он отличается, но это что-то полезное для общих секретных ключей и других паролей, которые вы не вводите очень часто. Чтобы получить больший выбор, передайте больше байтов в head и чтобы получить более длинные строки результата, измените --bytes в strings (что дает минимальную длину). выражение sed вырезает полосы из пробелов и вкладок (представлено \s).

Однако в какой-то момент вы, вероятно, оцените приложения (например, pwgen, KeePassX или LastPass), которые дают вам возможность избежать легко смешиваемых символов, например 1 и l и I. Они могут выглядеть как 1Il или 1Il или хуже. Вы захотите использовать такой вариант, если вы сбросите чей-то пароль или предоставите одноразовый ключ доступа, который должен быть передан.

Stil, pwgen put дает это оговорку на своей странице руководства, описывая его вариант -B:

   -B, --ambiguous
          Don't use characters that could be confused  by  the  user  when
          printed,  such  as 'l' and '1', or '0' or 'O'.  This reduces the
          number of possible passwords significantly, and as such  reduces
          the  quality  of  the passwords.  It may be useful for users who
          have bad vision, but in general use of this option is not recom‐
          mended.

Это, конечно, орехи. Вероятно, вы знаете, когда это полезно или нет. И это, безусловно, лучше, чем использование «Pa $$ w0rD» для всего. Если есть сомнения, создайте более длинный пароль или передайте сгенерированный пароль в качестве входа в другой генератор или используйте многофакторную аутентификацию.

1
задан 13 April 2017 в 15:24

3 ответа

pdfsandwich выполняет именно эту работу. Я не знал, что в программном центре есть пакет, но я предоставляю ему пакеты debug Ubuntu на веб-сайте проекта (подробнее см. Http://www.tobias-elze.de/pdfsandwich/), в том числе самую последнюю версию (0.1.2), которая вряд ли будет находиться в любом программном центре.

Если у вас есть отсканированный файл scanned_file.pdf, просто вызовите

pdfsandwich scanned_file.pdf

, который генерирует файл scanned_file_ocr.pdf с распознанным текстом, добавленным на отсканированные страницы.

По сравнению с большинством существующих решений он автоматически определяет версию tesseract и соответствующим образом адаптирует ее поведение. Кроме того, он выполняет предварительную обработку отсканированных изображений до процесса OCR, таких как отслоение или удаление темных краев и т. Д., Что может значительно улучшить распознавание оптических символов.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я разработчик pdfsandwich и, следовательно, сильно предвзятый.

2
ответ дан 24 May 2018 в 07:12
  • 1
    Это звучит здорово, но почему версия pdfsandwich 0.1.4, установленная с помощью apt-get, преобразует каждый символ в черный прямоугольник для меня на Ubuntu 16.04? – Valentas 16 December 2016 в 20:04
  • 2
    Трудно ответить без дальнейших подробностей. Прежде всего, я рекомендую использовать более новую версию инструмента. Текущая версия - 0.1.6. Вы можете найти deb-пакеты для Ubuntu на веб-сайте. Во-вторых, если это не помогает, вы можете использовать опцию -verbose для получения дополнительной информации и использовать эти данные для подачи отчета об ошибке. – Tobias Elze 17 January 2017 в 05:39

@ don.joey ответил сценарием ocrmypdf.

sudo apt install ocrmypdf

Затем вам нужно установить необходимые языки ocrmypdf .

To список, языки которых уже находятся в вашей системе, введите:

tesseract --list-langs

Если вы пропустили один, установите его. Например,

sudo apt install tesseract-ocr-spa

Теперь вы можете создать PDF с возможностью поиска (качество которого будет варьироваться в зависимости от отсканированного документа) со следующей командой

ocrmypdf -l 'spa' old.pdf new.pdf

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

2
ответ дан 24 May 2018 в 07:12

У OCRfeeder есть ошибка в

/usr/lib/python2.7/dist-packages/reportlab/pdfgen/textobject.py

строка 436 должна быть прочитана:

            lines = asUnicode(stuff).strip().split('\n')
# bug here, was:
#            lines = '\n'.split(asUnicode(stuff).strip())

изменил это, и это сработало для меня

0
ответ дан 24 May 2018 в 07:12

Другие вопросы по тегам:

Похожие вопросы: