【发布时间】:2017-07-11 09:48:05
【问题描述】:
我想编写一个脚本,在文本文件写入后运行OCR pdfs 的命令,删除生成的图像。
我要组合的两个命令如下。
此命令创建文件夹,从每个PDF 中提取pgm 并将它们添加到每个文件夹中:
time find . -name \*.pdf | parallel -j 4 --progress 'mkdir -p {.} && gs -dQUIET -dINTERPOLATE -dSAFER -dBATCH -dNOPAUSE -dPDFSETTINGS=/screen -dNumRenderingThreads=4 -sDEVICE=pgmraw -r300 -dTextAlphaBits=4 -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -dOverrideICC -o {.}/{.}-%03d.pgm {}'
此命令执行 OCR 并删除生成的图像 (pgm):
time find . -name \*.pgm | parallel -j 4 --progress 'tesseract {} {.} -l deu_frak && rm {.}.pgm'
我想组合这两个命令,以便脚本在每个 OCR 之后删除 pgm 图像。如果我运行上述命令,第一个命令将提取图像并占用我的磁盘空间,然后第二个命令将执行 OCR,并且仅在最后一步删除图像。
所以,
- 创建文件夹
- 从 PDF 中提取 PGM
- 从 PGM 到 txt 的 OCR
- 删除刚刚使用过的 PGM 图像(缺失)
基本上,我希望按此顺序对每个分隔的PDF 执行这 4 个步骤,而不是一次对所有PDF 执行。我该怎么做?
编辑:
我第一次尝试解决我的问题是创建以下命令:
time find . -name \*.pdf | parallel -j 4 -m --progress --eta 'mkdir -p {.} && gs -dQUIET -dINTERPOLATE -dSAFER -dBATCH -dNOPAUSE -dPDFSETTINGS=/screen -dNumRenderingThreads=4 -sDEVICE=pgmraw -r300 -dTextAlphaBits=4 -sProcessColorModel=DeviceGray -sColorConversionStrategy=Gray -dOverrideICC -o {.}/{.}-%03d.pgm {}' && time find . -name \*.pgm | parallel -j 4 --progress --eta 'tesseract {} {.} -l deu_frak && rm {.}.pgm'
但是,tesseract 找不到语言包。
【问题讨论】:
标签: pdf parallel-processing ocr tesseract pgm