我确定StackOverflow中是否允许使用这种Q,但我主要是在寻求建议。
我有一个网络应用程序接受PDF上传,将它们转换为TIFF,然后使用Tesseract进行OCR。
这些PDF长度超过50 - 200页。我的服务器为少于6页的PDF完成此操作。
结果TIFF为1.2GB。 PDF只有98KB。我们有一些已经有数百MB的PDF,所以谁知道它们最终会转换成什么样的结果。这个大小似乎是错误的,但现在让我们把它放在一边。
一旦我们开始讨论200页的PDF,就没有任何作用。我收到错误:
exec(): Unable to fork [tesseract '/home/forge/default/storage/app/ocr/1.tiff' /tmp/tesseractbO7aur -psm 3 2>&1]
即使使用大型PDF,TIFF转换也能正常工作。但是当PDF超过6页时,Tesseract总是会出现这个错误。
也许我只需要更多的记忆。我的问题是:
如何确定要点击的限制/最大值是什么?我如何知道这是RAM问题,CPU问题还是其他问题?
你会如何运行?我应该将它保留在我们的网络服务器上并且只是显着增加规格吗?或者你会制作另一台专门用于生产OCR的机器吗?他们不需要立即响应用户事件 - 如果他们上传并且OCR甚至需要几个小时就可以。我已经习惯了需要大量时间的应用程序,而不是完全死亡。只要过程不会失败,OCR就可以花很长时间。
我只使用简单的网络应用程序,用户发出请求并显示页面。我不习惯这种东西。我正在使用Laravel作为应用程序,因此如果应该使用它,我可以访问Redis队列等。我在AWS上使用Nginx。我确实考虑过AWS Lambada,但我认为这不能达到我的需要。
谢谢,我希望有人可以提供帮助。
萨姆
答案 0 :(得分:0)
我怀疑这与PHP无关。
首先,您需要确保可以直接在命令行上使用Tesseract运行此过程。
打开两个SSH sesssions,在一次运行中使用htop来监控服务器资源,然后在第二次尝试手动运行转换过程。
如果您看到资源使用情况和负载平均值在htop中疯狂,那么您就知道您需要更强大的服务器,或者找到更有效的方法来运行任务。
只有在您知道它可以在命令行上手动工作时,如果您尝试通过PHP实现此功能。
即使使用PHP,我也建议使用某种作业队列来安排转换任务。
答案 1 :(得分:0)
我通过在庞大的AWS EC2实例上运行它来解决这个问题。较小的EC2实例也会出现同样的问题。通过转换运行500页PDF,OCR适用于计算优化的c4.4xlarge(600美元/月)。