【发布时间】:2020-06-08 18:41:57
【问题描述】:
在我的一个 bash 函数中,我使用以下代码通过管道将 ImageMagick 的转换输出发送到 tesseract-ocr 以转换为文本:
for a in ocr/*.tif*; do
echo $a $(date +%T)
for i in 2 4 8; do
echo $a >> $i.txt
convert $a -resize "$i"00% - | tesseract stdin q 2> /dev/null
cat q.txt >> $i.txt
done
mv $a dun/
done
只要在函数运行时我什么都不做,它就可以正常工作。
但任何其他用途都会导致 ImageMagick 生成临时文件,而不是使每个输入文件的处理时间增加一倍以上。我认为这是因为它在 convert 运行时反对某些新应用程序对内存的使用。 bash 中是否有任何方法可以保留内存的特定部分供一个应用程序独占使用?
【问题讨论】:
-
我非常怀疑 ImageMagick 的行为是否会因系统上运行的其他内容而有所不同(使用更多 RAM 或磁盘空间)。您有什么证据表明这种情况正在发生?
-
这是操作系统问题,不是编程问题。
-
Thomas,我引用:“......只要在函数运行时我什么都不做,就可以正常工作。但是任何其他用途都会导致 ImageMagick 生成临时文件,而不是使每个输入文件的处理时间。”
-
Bamar,您也没有解决所提出的问题。我引用“在 bash 中是否有任何方法可以保留内存的特定部分供一个应用程序独占使用?”
标签: bash memory pipe tesseract imagemagick-convert