Tesseract-OCR可以在Windows cmd的所有子文件夹中批处理文件?

时间:2019-06-05 10:35:10

标签: batch-file tesseract

我正在尝试使用Tesseract-OCR读取和OCR所有.png文件,不仅在当前文件夹中(有相应的答案),还包括在所有子文件夹中。 这适用于文件夹:

for %%A in ("C:\Users\x\AppData\Local\Tesseract-OCR\temp\*.png") do C:\Users\x\AppData\Local\Tesseract-OCR\tesseract.exe "%%~fA" "%%~dpnxA"

我尝试使用它来遍历“ temp”文件夹中的所有子文件夹:

(for /r %%a in (*.png) do C:\Users\x\AppData\Local\Tesseract-OCR\tesseract.exe "%%~nxa" "%%~dpnxA")

但是我收到每个文件的错误:

C:\Users\x\AppData\Local\Tesseract-OCR\temp>C:\Users\x\AppData\Local\Tesseract-OCR\tesseract.exe "01.png" "%~dpnxA"
Tesseract Open Source OCR Engine v4.1.0-elag2019 with Leptonica
Error, cannot read input file 01.png: No such file or directory
Error during processing.

很明显,该脚本可以在所有子文件夹中找到所有文件,但是由于某种原因,它随后无法读取?

此外,此脚本适用于一个文件夹,但是当我尝试与/ r结合使用时,它不会遍历所有子文件夹:

:Start
   @Echo off
   Set _SourcePath=C:\Users\x\AppData\Local\Tesseract-OCR\temp\*.png
   Set _OutputPath=C:\Users\x\AppData\Local\Tesseract-OCR\temp\
   Set _Tesseract="C:\Users\x\AppData\Local\Tesseract-OCR\tesseract.exe"
:Convert
   For %%A in (%_SourcePath%) Do Echo Converting %%A...&%_Tesseract% %%A %_OutputPath%%%~nA 
:End   
   Set "_SourcePath="
   Set "_OutputPath="
   Set "_Tesseract="

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

也许您正在寻找这种东西

@Echo Off
SetLocal DisableDelayedExpansion

Set "_SourcePath=%LocalAppData%\Tesseract-OCR\temp"
Set "_SourceMask=*.png"
Set "_OutputPath=%LocalAppData%\Tesseract-OCR\temp"
Set "_TesserFile=%LocalAppData%\Tesseract-OCR\tesseract.exe"

For /F "Delims=" %%A In (
    '""%__AppDir__%where.exe" /R "%_SourcePath%" "%_SourceMask%" 2>Nul"'
) Do Echo Converting %%A...& "%_TesserFile%" "%%A" "%_OutputPath%\%%~nA"

注意,这假设允许指定输出目录并接受双引号的字符串等。它还假定您打算将所有输出文件放置在%_OutputPath%中。

如果您希望它们与它们各自的.png并排放置,那么也许可以这样做:

@Echo Off
SetLocal DisableDelayedExpansion

Set "_SourcePath=%LocalAppData%\Tesseract-OCR\temp"
Set "_SourceMask=*.png"
Set "_TesserFile=%LocalAppData%\Tesseract-OCR\tesseract.exe"

For /F "Delims=" %%A In (
    '""%__AppDir__%where.exe" /R "%_SourcePath%" "%_SourceMask%" 2>Nul"'
) Do Echo Converting %%A...& "%_TesserFile%" "%%A" "%%~nA"