【发布时间】:2015-04-28 08:54:24
【问题描述】:
我正在网络服务器上开发一个 php 页面。它通过以下三个步骤工作:
- 使用 POST 方法从 HTML 表单中获取上传的图像; 执行tesseract把图片变成文字;
- 执行tesseract把图片变成文字;
- 在屏幕上打印文本;
现在我相信 2. 和 3. 步骤是正确的,因为如果我在网络服务器上使用本地 jpg 文件,一切正常。但是,如果我使用 HTML 表单发布图像文件,则没有响应。有什么建议吗?
HTML 文件
<!DOCTYPE html>
<body>
<form enctype="multipart/form-data" method="POST" action="<webserver>/try.php">
<input type="file" name="myimg"></input>
<input type="submit"></input>
</form>
</body>
</html>
web 服务器上的 try.php 文件
<?php
$im=$_FILES['myimg'];
echo exec('/usr/bin/tesseract $im stdout', $msg);
print_r($msg);
?>
实际上,我认为错误在于我如何使用 $im 变量,对吧?
【问题讨论】:
-
图像是否已提交到文件?
www-data(假设这是 apache)是否有权读取文件? -
$im不是文件位置,它是文件本身的上传变量..您需要先处理文件..然后将路径名传递给 exec 函数.. -
你可以使用(我认为)
$im['tmp_name'],因为这是特定于你的系统的,所以它是clean -
我已将 php 代码更改为
$im=$_FILES['myimg']['tmp_name'];,但仍然没有运气。 tesseract 是否可能只接受以 .jpg 或 .tif 结尾的文件?