通过命令行应用批处理OCR

时间:2018-07-24 15:23:11

标签: batch-file ocr

我对cmd的批处理脚本(Windows)完全陌生。 我已经安装了tesseract以用作命令行OCR工具。

现在,我想对存储在文件夹中的100张图像运行OCR。 我该如何批量处理?

在图像上运行tesseract并在文本文件中返回OCR文本的命令是:

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

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

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

任何帮助将不胜感激!

编辑:

正如斯蒂芬(Stephan)的回答所建议的,我可以写:

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

但是,命令行(cmd)只能快速终止并关闭imidiatley,什么也没发生。

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

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

...但是如前所述,它不起作用。

还可以像这样将输出txt名称更改为与输入图像名称相同吗?

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\1\*.jpg") do tesseract.exe "%%~fA" "%%~dpnxA" 

2 个答案:

答案 0 :(得分:1)

使用for循环遍历文件:

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

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

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

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

答案 1 :(得分:1)

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

@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"将使用相同的驱动器/路径/文件名和扩展名.txt保存文本