107 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?
 | 
						|
//
 | 
						|
//  Copyright (c) 2013 Mr. Gecko's Media (James Coleman). http://mrgeckosmedia.com/
 | 
						|
//
 | 
						|
//  Permission to use, copy, modify, and/or distribute this software for any purpose
 | 
						|
//  with or without fee is hereby granted, provided that the above copyright notice
 | 
						|
//  and this permission notice appear in all copies.
 | 
						|
//
 | 
						|
//  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
 | 
						|
//  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
 | 
						|
//  FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
 | 
						|
//  OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
 | 
						|
//  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 | 
						|
//  ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | 
						|
//
 | 
						|
if ($_MGM['path'][1]=="process") {
 | 
						|
	$file = (isset($_REQUEST['file']) ? $_REQUEST['file'] : "");
 | 
						|
	$hash = pathinfo($file, PATHINFO_FILENAME);
 | 
						|
	
 | 
						|
	echo "Hash: ".$hash."<br />\n";
 | 
						|
	
 | 
						|
	$descriptorspec = array(
 | 
						|
		0 => array("pipe", "r"),
 | 
						|
		1 => array("pipe", "w"),
 | 
						|
		2 => array("pipe", "w")
 | 
						|
	);
 | 
						|
	$process = proc_open("./ocr \"".$file."\"", $descriptorspec, $pipes, getcwd());
 | 
						|
	
 | 
						|
	fclose($pipes[0]);
 | 
						|
	$ocr = "";
 | 
						|
	while (is_resource($process)) {
 | 
						|
		$read = $pipes;
 | 
						|
		$write = null;
 | 
						|
		$except = null;
 | 
						|
		$result = stream_select($read, $write, $except, 30);
 | 
						|
		
 | 
						|
		if ($result==0) {
 | 
						|
			fclose($pipes[1]);
 | 
						|
			fclose($pipes[2]);
 | 
						|
			proc_terminate($process,9);
 | 
						|
			break;
 | 
						|
		} else if ($result>0) {
 | 
						|
			$line = fread($pipes[1], 8192);
 | 
						|
			if (strlen($line)==0) {
 | 
						|
				fclose($pipes[1]);
 | 
						|
				fclose($pipes[2]);
 | 
						|
				proc_close($process);
 | 
						|
				break;
 | 
						|
			}
 | 
						|
			$ocr .= $line;
 | 
						|
		}
 | 
						|
	}	
 | 
						|
	echo "OCR: ".$ocr."<br />\n";
 | 
						|
	
 | 
						|
	databaseQuery("UPDATE images SET ocr=%s WHERE hash=%s", $ocr, $hash);
 | 
						|
	exit();
 | 
						|
}
 | 
						|
$files = glob("./data/*");
 | 
						|
require_once("header.php");
 | 
						|
?>
 | 
						|
Processing...<br />
 | 
						|
<div id="result"></div>
 | 
						|
<script type="text/javascript">
 | 
						|
var files = new Array(<?
 | 
						|
	$array = "";
 | 
						|
	for ($i=0; $i<count($files); $i++) {
 | 
						|
		//if (in_array(pathinfo($files[$i], PATHINFO_EXTENSION), $allowedExtensions)) {
 | 
						|
		if ($array!="")
 | 
						|
			$array .= ",";
 | 
						|
		$array .= "\"".str_replace("\"", "\\\"", $files[$i])."\"";
 | 
						|
	}
 | 
						|
	echo $array;
 | 
						|
?>);
 | 
						|
var i=0;
 | 
						|
function processFiles() {
 | 
						|
	if (i<files.length) {
 | 
						|
		var status = document.createElement("p");
 | 
						|
		status.innerHTML = "Processing "+(i+1)+" of "+files.length+" files.";
 | 
						|
		document.getElementById("result").appendChild(status);
 | 
						|
		
 | 
						|
		var request = new XMLHttpRequest;
 | 
						|
		request.onreadystatechange = function() {
 | 
						|
			if (request.readyState==4) {
 | 
						|
				var status = document.createElement("p");
 | 
						|
				status.innerHTML = request.responseText;
 | 
						|
				document.getElementById("result").appendChild(status);
 | 
						|
				processFiles();
 | 
						|
			}
 | 
						|
		}
 | 
						|
		request.open("post", "<?=generateURL("re-ocr/process")?>", true);
 | 
						|
		request.setRequestHeader("Cache-Control", "no-cache");
 | 
						|
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
 | 
						|
		request.send("file="+encodeURIComponent(files[i]));
 | 
						|
		i++;
 | 
						|
	} else {
 | 
						|
		var completed = document.createElement("p");
 | 
						|
		completed.innerHTML = "Processing Completed.";
 | 
						|
		document.getElementById("result").appendChild(completed);
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
processFiles();
 | 
						|
</script>
 | 
						|
<?
 | 
						|
require_once("footer.php");
 | 
						|
exit();
 | 
						|
?>
 |