通过命令行应用批量 OCR

Apply batch OCR through command line

我完全不熟悉 cmd (Windows) 的批处理脚本。 我已经安装了 tesseract 作为命令行 OCR 工具。

现在我想 运行 对存储在文件夹中的 100 张图像进行 OCR。 我怎么能用 batch 做呢?

运行 图像正方体和 return 文本文件中的 OCR 文本的命令是:

"C:\OCR\tesseract" "C:\Image_to_OCR.jpg" "C:\out"

更多信息:http://chillyfacts.com/convert-image-to-text-using-cmd-prompt/

如您所见,我可能需要制作一个 for 循环,自动遍历图片数量并相应地更改命令中图片的名称,当然还有文本文件的输出名称。 ..但我不知道该怎么做。

任何帮助将不胜感激!

编辑:

正如斯蒂芬在回答中所建议的那样,我可以这样写:

for %%A in (C:\*.jpg) do "C:\OCR\tesseract.exe" "%%~fA" "C:\out"

然而,命令行 (cmd) 只是快速出现并立即关闭,没有任何反应。

我的文件不直接在 C:\ 中,而是在 "C:\Users\James\Desktop\" 中,因此我这样写命令:

for %%A in (C:\Users\James\Desktop\*.jpg) do "C:\OCR\tesseract.exe" "%%~fA" "C:\out"

...但如前所述,它无法正常工作。

此外,我可以像这样将输出文本名称更改为与输入图像名称相同吗?

for %%A in (C:\Users\James\Desktop\*.jpg) do "C:\OCR\tesseract.exe" "%%~fA" "%%~fA"

这有效:

我得到了两个很好的答案!非常感谢。最后起作用的是两个答案的混合:

@Echo off
PushD C:\Program Files (x86)\Tesseract-OCR || (Echo couldn't pushd C:\OCR & Exit /B 1)
for %%A in ("C:\Users\EPFL\Google Drive\EDx PDF Maker\Cellular Mechanisms of Brain Functions\Slides\*.jpg") do tesseract.exe "%%~fA" "%%~dpnxA" 

使用 for 循环遍历文件:

for %%A in (C:\*.jpg) do "C:\OCR\tesseract.exe" "%%~fA" "C:\out"

%%A 是文件名(每个 运行 循环一个),
%%~fA 是完全限定的文件名(只是为了确定)。

阅读 for /? 的输出以了解有关这些修饰符的更多信息。

注意:这是批处理文件语法。要直接在命令行上使用它,请将每个 %% 替换为单个 %

我不知道你的程序 C:\OCR\tesseract.exe 但我认为它需要支持 C:\OCR 文件夹中的 tools/files,所以你必须将该文件夹设置为当前文件夹或者将其包含在您的路径变量中。

@Echo off
PushD "C:\OCR" || (Echo couldn't pushd C:\OCR & Exit /B 1)
for %%A in ("C:\Users\James\Desktop\*.jpg") do tesseract.exe "%%~fA" "%%~dpnA.txt"

"%%~dpnA.txt" 将保存具有相同 drive/path/filename 和扩展名 .txt

的文本