在我的一个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 生成临时文件,这使每个输入文件的处理时间增加了一倍多。我想这是因为它反对一些新的应用程序在转换运行时使用内存。在bash中是否有什么方法可以保留一部分内存供一个应用程序专用?
显然,"nice "命令是解决这个问题的工具。我是在注意到这个命令的处理时间后发帖提问的。
convert $a -resize "$i"00% - | tesseract stdin q 2> /dev/null
从系统没有其他活动的情况下,每个输入文件约1.5分钟,变成了当我同时对我的网页浏览器进行多张截图时,每个输入文件约3.3分钟。
所以我把命令改为
sudo nice -n -20 convert $a -resize "$i"00% - | tesseract stdin q 2> /dev/null
为最新一批,看到我的平均输入文件时间从1分钟左右变成了1.25分钟,同时再次对浏览器进行多次截图。