如何从命令提示符对同一文件夹中的多个文件进行 tesseract?
Posted
技术标签:
【中文标题】如何从命令提示符对同一文件夹中的多个文件进行 tesseract?【英文标题】:How to tesseract multiple files in the same folder from command prompt? 【发布时间】:2015-10-19 05:43:12 【问题描述】:我知道如何在 OS X 上使用终端对同一目录中的多个文件进行 Tesseract。
for i in *.tif ; do tesseract $i outtext; done;
是否有人对如何在运行 Windows 的计算机上的命令提示符上执行此操作有建议?
【问题讨论】:
对于登陆这里的人来说一点——这将尝试将所有输出转储到同一个文件并覆盖它。 (Joe W 在下面的回答中也提到了这一点)。您可能更喜欢以for i in *.tif ; do tesseract $i "txtfolder/$i"; done;
执行此操作,这会将所有输出文件放在文件夹 txtfolder 中
【参考方案1】:
什么是 Windows 等效的 Unix for i
命令?
如果不确切知道 tesseract 命令在 Unix 上的作用与 Windows 相比,很难给出全面的答案。
在 Windows 上,您可以使用 for
命令对多个文件执行命令。
从命令行:
for %i in (*.tif) do tesseract %i outtext
在批处理文件中:
for %%i in (*.tif) do tesseract %%i outtext
进一步阅读
An A-Z Index of the Windows CMD command line - Windows cmd 行相关的所有内容的绝佳参考。 for - 有条件地对多个文件执行命令。【讨论】:
【参考方案2】:在上面的例子中:
for %%i in (*.tif) do tesseract %%i outtext
Tesseract 将在每次迭代中覆盖相同的输出文件outtext.txt
。您最终将得到一个文件 (outtext.txt
),其中仅包含最后一张图像中的文本。您需要唯一命名每个输出文件。您可以将字符串 outtext
替换为 %%i
,如下所示。
for %%i in (*.tif) do tesseract %%i %%i
但是,如果您想要一个不同的输出文件名,您可以使用set
命令分配一个附加变量。然后为每次迭代增加这个变量。
set /a j=1
for %%i in (*.tif) do (
tesseract %%i output_file%j%
set /a j+=1
)
但是,%j%
将在每次迭代中扩展为“1”。您最终会得到一个名为outputfile1.txt
的文件。 %j%
在循环开始时展开一次,每次迭代都使用相同的值。使用setlocal enabledelayedexpansion
命令并将%j%
替换为!j!
将强制Windows 为每次迭代扩展!j!
。要恢复以前的环境设置,应发出匹配的endlocal
命令。
setlocal enabledelayedexpansion
set /a j=1
for %%i in (*.tif) do (
tesseract %%i output_file!j!
set /a j+=1
)
endlocal
我在 Microsoft Windows 7 家庭高级版上成功测试了这一点。希望对你有帮助。
【讨论】:
当我执行第一个和第二个示例时,我在意外标记 `(' '' 附近得到一个错误''syntax error。它是什么?【参考方案3】:for %i in (*.tif) do (tesseract %i stdout 1>> out.txt)
将找到所有 tif 文件并将标准输出通过管道传输到目标 out.txt
【讨论】:
【参考方案4】:dir "folder_path\*.tif" /s /b > "folder_path\input.txt"
"tesseract_path\tesseract" "folder_path\input.txt" "folder_path\output"
【讨论】:
以上是关于如何从命令提示符对同一文件夹中的多个文件进行 tesseract?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用命令“copy/b*.tdl hb1.mp4”对这些*.tdl文件进行合并?
xcode 8 xcodebuild 从命令行对多个配置文件进行手动代码签名