如何递归地对文件夹中的每个文件执行第三方实用程序?

如何递归地对文件夹中的每个文件执行第三方实用程序?

我使用一个名为tesseract-ocr。 这tesseract-ocr在 cmd 中的用法是这样的:tesseract.exe imagename outputbase [options...] [configfile...]在我的情况下,我输入:tesseract photo0043.jpg photo0043.txt -l Cyrillic该实用程序将获取名为的文件photo0043.jpg并将其作业输出到名为的文件中photo0043.txt如何制作批处理以递归方式在整个目录上运行该实用程序?

答案1

用一个.bat带有 支持/R命令循环遍历文件并在子文件夹上进行递归。

就像是:

@echo off
Setlocal enabledelayedexpansion

For /R C:\path\to\folder %%a in (*.jpg) Do (
Set filename=%%~na
tesseract "%%a" !filename!.txt -l Cyrillic
)

.jpg警告:我还没有测试过这个脚本。如果指定文件夹的子文件夹中有文件,则需要进行一些调整 。

答案2

为了将一个充满图像文件的文件夹批量转换为一组带有可搜索文本的 PDF 文件,我在我的 BAT 文件中使用了以下命令:

@echo off
Setlocal enabledelayedexpansion

For /R N:\MaryImages %%a in (*.jpg) Do (
Set filename="%%~dpna" 
"tesseract" "%%a" !filename!.jpg -l eng PDF
)

其中 N:\MaryImages 是包含我在 Win7 PC 上处理的图像的文件夹的路径。

请将“N:\MaryImages”替换为您的文件夹路径语句,该语句给出了包含需要转换为可文本搜索的 PDF 文件的图像文件的文件夹的位置。此外,“(jpg)”可以替换为你的图片文件扩展名。例如(.png)等]

将您的 BAT 文件放入图像所在的文件夹中 [由您的路径指定]。双击运行它。将启动一个临时命令行窗口并继续转换您的文件。耐心等待 CMD [CLI] 窗口自行关闭。您将看到一系列可文本搜索的 PDF 文件,每个文件都有其父图像文件的参考名称。

使用 PDF-Xchange 编辑器搜索 PDF 文本或将所有 PDF 合并为一个大型 PDF 文件。如果使用按顺序扫描的图像,并按照正确的顺序扫描书籍中的页面,那么 PDF-Xchange 编辑器将能够重现书籍,而不会丢失原始页面及其嵌入图像的顺序,因为 tesseract OCR 会将可搜索的文本作为一层嵌入原始文本图像部分之下。每页将被分解为单独的文本块,就像任何 PDF 文件呈现文本一样。

PDF 页面的图像层将包含原始扫描图像。

答案3

在您的一系列图像文件所在的文件夹中使用此批处理文件“PDF.bat”。

请更改文件夹“路径”[J:\Russian*.jpg] 以反映您的图像文件夹位置,并单独选择语言代码或多语言集 [例如,仅英语:eng,仅俄语:rus 或仅新加坡语:sin,如果您想要所有三种语言 OCRed,请在 bat 文件中使用 eng+rus+sin,就像我所做的那样。您可以从 Github 下载“LANGUAGE.traineddata”代码并将其安装到您的“C:\Program Files\Tesseract-OCR\tessdata”文件夹或您安装 Tesseract 的位置。

我的BAT文件PDF.bat“”文件是:

@Echo off
Set _SourcePath=J:\Russian\*.jpg
Set _OutputPath=J:\Russian\
Set _Tesseract="C:\Program Files\Tesseract-OCR\tesseract.exe"
For %%A in (%_SourcePath%) Do Echo Converting %%A...&%_tesseract% %%A %_OutputPath%%%~nA -l eng+sin+rus pdf
Set "_SourcePath="
Set "_OutputPath="
Set "_Tesseract="

其中“J:\Russian”是我所有三语图像文件所在的文件夹。代码“-l eng+sin+rus pdf”命令 Tesseract 对三种语言(英语、僧伽罗语和俄语)的混合进行 OCR,其​​中图像中包含这三种语言的多种内容。

注意:“-l”是减号,小写字母 EL。

Tesseract 可以对许多类似的图像格式进行 OCR:PNG TIFF BMP JPEG,并输出 PDF 文件,其中 OCR 结果文本嵌入在原始图像层后面的一层中。如果图像文件中存在纯图像文件或带有内置非文本图像或空格的图像文件,Tesserect 将不会对其进行 OCR,从而导致数据过载到您的硬盘上。它将仅对图像的文本部分进行 OCR,并保持图像文本的相对位置不变。

您可以将我的 PDF.bat 批处理文件重命名为任何首选名称 [anyname.bat],然后双击图像文件夹中的它来运行它。等待它运行该过程。输出文件将具有以原始源文件名结尾的 PDF 文件类型。

我之前在上一篇文章中的方法已经失效了,我无法调试它。这个新方法是另一个人在 superuser.com 帖子上发表的想法的更新版本,我承认他的辛勤工作,谢谢!

相关内容