Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中从图像读取文本_Php - Fatal编程技术网

在PHP中从图像读取文本

在PHP中从图像读取文本,php,Php,我使用OCR读取图像的文本,但它给出了一个错误,PHPUnit_Framework_TestCase类找不到,为此我做了很多尝试。使用其他不同的代码实现,但没有输出。是否有人有一个工作的例子,这是PHP网站。如果是这样,请帮助我。我在为这个问题寻找解决办法时遇到了困难。我使用了以下代码: require_once dirname(__FILE__).'/../tesseract_ocr/tesseract_ocr.php'; class TesseractOCRTest extends

我使用OCR读取图像的文本,但它给出了一个错误,PHPUnit_Framework_TestCase类找不到,为此我做了很多尝试。使用其他不同的代码实现,但没有输出。是否有人有一个工作的例子,这是PHP网站。如果是这样,请帮助我。我在为这个问题寻找解决办法时遇到了困难。我使用了以下代码:

  require_once dirname(__FILE__).'/../tesseract_ocr/tesseract_ocr.php';

  class TesseractOCRTest extends PHPUnit_Framework_TestCase {


  var $imagesPath;

   function setUp() {
     $path = getenv('PATH');
     putenv("PATH=$path:/usr/local/bin");
     $this->imagesPath = dirname(__FILE__).'/images';
  }

  function testTextRecognition() {
    $images = array(
    'denver-marathon_bibs.jpg' => '253',
      'image1.jpg' => 'Hello, Tesseract!',
      'image2.gif' => 'Works with a GIF image',
      'image3.png' => 'A PNG? Recognizes too!'
    );
    foreach($images as $path => $text){
     $this->assertEquals(
        TesseractOCR::recognize("\"{$this->imagesPath}/$path\""),
        $text
     );
    }
  }

  function testInducingRecognition() {
   $this->assertEquals(
     TesseractOCR::recognize("\"{$this->imagesPath}/617.jpg\"", range('A','Z')),
     'GIT'
    );
   $this->assertEquals(
     TesseractOCR::recognize("\"{$this->imagesPath}/gotz.jpg\"", range(0,9)),
     '6072'
    );
  }
 }
tesseract_ocr.php文件如下所示:

<?php
ob_start();


 class TesseractOCR {

  function recognize($originalImage) {
    echo $originalImage;
     $tifImage       = TesseractOCR::convertImageToTif($originalImage);
     $configFile     = TesseractOCR::generateConfigFile(func_get_args());
     $outputFile     = TesseractOCR::executeTesseract($tifImage, $configFile);
     $recognizedText = TesseractOCR::readOutputFile($outputFile);
     TesseractOCR::removeTempFiles($tifImage, $outputFile, $configFile);
     return $recognizedText;
   }

   function convertImageToTif($originalImage) {
   $tifImage = sys_get_temp_dir().'tesseract-ocr-tif-'.rand().'.tif';
   exec("convert -colorspace gray +matte $originalImage $tifImage");
   return $tifImage;
 }

  function generateConfigFile($arguments) {
$configFile = sys_get_temp_dir().'tesseract-ocr-config-'.rand().'.conf';
exec("touch $configFile");
$whitelist = TesseractOCR::generateWhitelist($arguments);
if(!empty($whitelist)) {
  $fp = fopen($configFile, 'w');
  fwrite($fp, "tessedit_char_whitelist $whitelist");
  fclose($fp);
}
return $configFile;
 }

  function generateWhitelist($arguments) {
array_shift($arguments); //first element is the image path
$whitelist = '';
foreach($arguments as $chars) $whitelist.= join('', (array)$chars);
return $whitelist;
 }

  function executeTesseract($tifImage, $configFile) {
  echo sys_get_temp_dir();
$outputFile = sys_get_temp_dir().'tesseract-ocr-output-'.rand();
exec("tesseract $tifImage $outputFile nobatch $configFile 2> /dev/null");
return $outputFile.'.txt'; //tesseract appends txt extension to output file
  }

  function readOutputFile($outputFile) {
 return trim(file_get_contents($outputFile));
  }

  function removeTempFiles() { array_map("unlink", func_get_args()); }
}
?>


您的PHP包含路径中是否安装了PHP单元?它在我的xampp文件夹中,但在这个PHPUnit中,我没有找到相同的类:(