我读了一些其他帖子,建议他们在3.00中添加多线程支持。但我不确定它是否在3.00发布后添加。
除了多线程之外,运行多个tesseract进程是实现并发的可行选择吗?
感谢。
答案 0 :(得分:8)
我做过的一件事就是调用GNU Parallel来运行Tess *的多个实例,因为多核系统能够将多页文档转换为单页图像。
这是一个简短的程序,很容易在大多数Linux发行版上编译(我使用的是OpenSuSE 11.4)。
这是我使用的命令行:
/usr/local/bin/parallel -j 4 \
/usr/local/bin/tesseract -psm 1 -l eng {} {.} \
::: /tmp/tmp/*.jpg
-j 4并行使用我在服务器上使用的所有四个CPU核心。
如果你运行它,并在另一个终端做一个'top',你一次最多可以看到四个进程,直到它通过指定目录中的所有JPG进行搜索。
您的负载不应超过系统中的CPU核心数(如果您运行Linux)。
这是GNU Parallel的链接:
答案 1 :(得分:5)
没有。您可以在http://code.google.com/p/tesseract-ocr/source/browse/中浏览代码。主干中的当前代码似乎都没有使用多线程。 (至少查看基类,api和神经网络类)
答案 2 :(得分:2)
我确实在Centos上使用parallel
,这样:
ls | parallel --gnu "tesseract {} {.}"
我使用了stdout日志中建议的--gnu
选项:
parallel: Warning: YOU ARE USING --tollef. IF THINGS ARE ACTING WEIRD USE --gnu.
{}
和{.}
是并行的占位符:在这种情况下,您告诉tesseract使用列为第一个参数的文件,并且相同的文件名没有扩展名作为第二个参数 - 一切都是在平行的手册中很好地解释了。
现在,如果你有三个.tif
个文件,你运行tesseract
三次,每个文件一个,总结执行时间,然后用{{运行上面的命令在time
之前,您可以轻松检查加速。