Example #1
0
 protected function runOcr()
 {
     try {
         $pages = $this->pdf->getPages();
     } catch (\Exception $e) {
         static::raiseError(get_class($this->pdf) . '::getPages() returned false!', false, $e);
         return false;
     }
     if (empty($pages)) {
         return true;
     }
     try {
         $storage = new \Mtlda\Controllers\StorageController();
     } catch (\Exception $e) {
         static::raiseError(__METHOD__ . '(), failed to load StorageController!', false, $e);
         return false;
     }
     if (!($tempDir = $storage->createTempDir('ocr_'))) {
         static::raiseError(get_class($storage) . '::createTempDir() returned false!');
         return false;
     }
     if (!file_exists($tempDir) || !is_dir($tempDir)) {
         static::raiseError(get_class($storage) . '::createTempDir() has not returned a valid directory!');
         return false;
     }
     foreach ($pages as $id => $page) {
         try {
             $objects = $page->getXObjects();
         } catch (\Exception $e) {
             $this->unlinkDirectory($tempDir);
             static::raiseError(get_class($page) . '::getXObjects() returned false!', false, $e);
             return false;
         }
         foreach ($objects as $id => $object) {
             if (!is_a($object, 'Smalot\\PdfParser\\XObject\\Image')) {
                 continue;
             }
             try {
                 $content = $object->getContent();
             } catch (\Exception $e) {
                 $this->unlinkDirectory($tempDir);
                 static::raiseError(get_class($object) . '::getContent() returned false!', false, $e);
                 return false;
             }
             if (!($tempFile = tempnam($tempDir, 'pdfcontent_'))) {
                 $this->unlinkDirectory($tempDir);
                 static::raiseError(__METHOD__ . '(), tempnam() returned false!');
                 return false;
             }
             if (!file_put_contents($tempFile, $content)) {
                 $this->unlinkDirectory($tempDir);
                 static::raiseError(__METHOD__ . '(), file_put_contents() returned false!');
                 return false;
             }
         }
     }
     if (($text = $this->ocr->scanDirectory($tempDir)) === false) {
         static::raiseError(get_class($this->ocr) . '::scanDirectory() returned false!');
         return false;
     }
     if (!$this->unlinkDirectory($tempDir)) {
         static::raiseError(__CLASS__ . '::unlinkDirectory() returned false!');
         return false;
     }
     if (!isset($text) || empty($text) || !is_array($text)) {
         return array();
     }
     return $text;
 }