Как передать несколько файлов в tesseract-ocr из цикла - PullRequest
0 голосов
/ 09 апреля 2019

Я ищу способ последовательно добавлять файлы (входные PNG-файлы) в документ PDF (через tesseract-3).Идея состоит в том, чтобы отсканировать PNG, оптимизировать его (optipng) и передать его через поток в tesseract, который добавляет его в постоянно растущий PDF.Время между сканированиями составляет 20-40 секунд, и сканирование идет на сотни, поэтому я хочу использовать время ожидания между сканированиями, чтобы уже сделать OCR.

Я думаю, что это работает так:

while ! $finished
do
  get_scanned_image_to_png_named_scannumber
  optipng $scannumber.png
  check_for_finishing_condition #all this works fine already
  sleep 30s
  #do some magic piping into a single tesseract instance here
done #or here?

Источником вдохновения для этого послужило следующее:

https://github.com/tesseract-ocr/tesseract/wiki/FAQ#how-to-ocr-streaming-images-to-pdf-using-tesseract

Большое спасибо за любой намек,

Joost

Редактирование:

ОС: OpenSuse Tumbleweed

Сканирование: больше из серии "изображений", приводящих к одному PNG каждый (не настоящий сканер);продолжаться не менее нескольких часов.

FollowUp: Этот вид работает при выполнении

while ! $finished
do
  get_scanned_image_to_png_named_scannumber
  optipng $scannumber.png
  check_for_finishing_condition #all this works fine already
  sleep 30s

  echo "$capnum.png"

done | tesseract -l deu+eng -c stream_filelist=true - Result pdf

, хотя PDF-файл поврежден при попытке открыть его между добавлениями сканирования или остановить этоцикл с, например, Ctrl-C.Я не вижу способа получить не поврежденный PDF.

1 Ответ

0 голосов
/ 10 апреля 2019

попробуйте это:

while ! $finished
do
  get_scanned_image_to_png_named_scannumber
  optipng $scannumber.png
  check_for_finishing_condition #all this works fine already
  sleep 30s
done | tesseract -c stream_filelist=true - - pdf > output.pdf
...