我如何更新此递归目录文件搜索的输入和名称输出来处理以下情况

我如何更新此递归目录文件搜索的输入和名称输出来处理以下情况

我正在更新一个脚本,该脚本递归地遍历目录并对 pdf 进行 ocrs 并更新 pdf。

在其简单版本中,它可以工作。

ocrmypdf -l vie --deskew --clean --force-ocr --sidecar vietnamese_website.txt Vietnamese\ Website.jpg Vietnamese\ Website.pdf --verbose 1

我想让它递归地遍历一个文件夹并使用各种文件类型,因此我将 find 扩展为:

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \)

示例批处理和并行处理示例如下:

find .  -name '*.pdf' | parallel --tag -j 2 ocrmypdf -l languages --deskew --clean --force-ocr --verbose 1 '{}' '{}'

我的问题分为两部分:

“语言”是受支持的超正方训练数据的完整列表的别名。只需在 macOS 上的 shell 中输入即可展开:alias languages='eng+rus+vie+ukr+fra+spa+afr+amh+ara+asm+aze+aze_cyrl+bel+ben+bod+bos+bre+bul+猫+ceb+ces+chi_sim+chi_sim_vert+chi_tra+chi_tra_vert+chr+cos+cym+dan+dan_frak+deu+deu_frak+div+dzo+ell+eng+enm+epo+equ+est+eus+fao+fas+ fil+fin+fra+frk+frm+fry+gla+gle+glg+grc+guj+hat+heb+hin+hrv+hun+hye+ik...等等 - ocrmypdf 认为它的语言是这样的工作。我想 --sidecar 输出一个文本文件,'{}.txt' 抱怨没有这样的文件。这就是我所在的地方。

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \) | parallel --tag -j 2 ocrmypdf -l languages --deskew --clean --force-ocr --sidecar '{}.txt' '{}' '{}' --verbose 1

哪里 find 得到了我需要的东西,但是 --sidecar 不高兴。那么如何处理别名和'$1.txt'呢?

答案1

我认为有两点。

  • 别名扩展仅适用于第一个单词,不适用于选项。
  • 您需要对 提供的名称进行一些修改find

虽然可以在find命令行中完成所有操作,但我认为为此目的创建一个脚本更容易,我们将其称为ocrmypdf.sh

#!/bin/bash

languages='eng+rus+vie+...'
base="${1%.*}
ocrmypdf -l "$languages" --deskew --clean --force-ocr --sidecar "$base.txt" "$1" "$base.pdf --verbose 1

然后你可以运行它

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \) | parallel --tag -j 2 ocrmypdf.sh '{}'

答案2

因此,在 user-ralfiedl 的指导下,以下内容适用于 MacOSX 上最新的基于 LSTM 的 Tessearct 4.0。

更新:我能够弄清楚如何将所有这些推入 .profile 或 . bashrc 这就是我首先想要的地方...以下内容不需要 txt 文件的变量。

function do_ocr () {
    #find . -name '*.pdf' -o -name '*.jpg' -o -name '*.tif' -o -name '*.png' -o -name '*.jpeg' -o -name '*.tiff'
    find_all_formats | parallel --tag -j 2 \
    ocrmypdf -l ori+por+srp+hin+chi_sim+spa+uzb_cyrl+mar+swa+ces+urd+nep+cat+mya+lit+dan+mlt+enm+bod+tir+tgl+tha+fas+hrv+ukr+lao+ben+eus+eng+dzo+nld+vie+ita+kir+pus+msa+heb+slv+kaz+rus+eng+vie+ukr+spa \
    --clean --deskew --rotate-pages --image-dpi 300 --jpeg-quality 75 --png-quality 75 \
    -i -f -O 2 --sidecar - --force-ocr '{}' '{}' --verbose 1

}

注意:您必须手动重建 4.0 的每个训练集,如brew install Tessearact 4.0 -Github 链接到安装 4.0 TrainingData 的说明

更新:有一个 Tesseract 4.0 的 docker 文件,您必须添加语言数据和 MacOSX 分步安装说明 - 这确保您共同安装了 Java 8 并且在 ScrollViewer.jar 的环境中。如果你得到这个,那么上面的函数可以让你使用所有语言“自动检测”,然后如果可能的话ocr图像,转换为PDF,并生成内容的sidecar txt文件(以原始语言)。

我的下一步工作将是制作一些能够获取语言 Office 文档并翻译它们的东西,并使用机器学习通过向文本文件添加更多数据来对图像进行 OCR 处理。

相关内容