humanemulator.net — справка.
Продукт, демо и покупка — на
хуманэмулятор.рф
|
Демо
|
Купить
|
API
|
Changelog
preprocess_for_ocr
preprocess_for_ocr($inpath,$outpath,$image_size=1800,$binary_treshhold=180,$need_deskew=true); - Преобразовать картинку перед передачей OCRФункция на вход принимает параметры:
После выполнения функции возвращаемое значение будет равно одному из двух :
Пример использования
<?php // Scenario: Preprocess an image to improve OCR (Optical Character Recognition) accuracy. This function applies various image enhancement techniques to make text more readable for OCR engines. $xhe_host = getenv("RPABOT_HOST_URL"); if (!isset($path)){ // Path to the init.php file for connecting to the XHE API $path = "../../../Templates/init.php"; // Including init.php grants access to all classes and functionality for working with the XHE API require($path); } // Create output directory if it doesn't exist $outputDir = "output"; if (!is_dir($outputDir)) { mkdir($outputDir, 0777, true); echo "Created output directory: $outputDir\n"; } // Check if the source image exists $sourceImage = "document_for_ocr.png"; if (file_exists($sourceImage)) { // Preprocess the image for OCR $outputPath = "$outputDir/preprocessed_for_ocr.png"; echo "Preprocessing image for OCR: $sourceImage\n"; $result = DOM::$image->preprocess_for_ocr($sourceImage, $outputPath); if ($result) { echo "Image preprocessed successfully for OCR and saved to: $outputPath\n"; // Check if the file was actually created if (file_exists($outputPath)) { echo "File size: " . filesize($outputPath) . " bytes\n"; // Example of using the preprocessed image for OCR echo "\nPerforming OCR on the preprocessed image...\n"; $ocrResult = DOM::$image->recognize_captcha($outputPath, false); if ($ocrResult) { echo "OCR result:\n$ocrResult\n"; } else { echo "OCR processing failed\n"; } } else { echo "Warning: Preprocessed image file was not created despite success return value\n"; } } else { echo "Failed to preprocess image for OCR\n"; } // Example with different parameters echo "\nPreprocessing image for OCR with different parameters...\n"; $outputPath2 = "$outputDir/preprocessed_for_ocr_custom.png"; $result2 = DOM::$image->preprocess_for_ocr($sourceImage, $outputPath2, 1.5, 100, 50); if ($result2) { echo "Custom preprocessing successful, saved to: $outputPath2\n"; // Perform OCR on the custom preprocessed image echo "\nPerforming OCR on the custom preprocessed image...\n"; $ocrResult2 = DOM::$image->recognize_captcha($outputPath2, false); if ($ocrResult2) { echo "OCR result on custom preprocessed image:\n$ocrResult2\n"; } else { echo "OCR processing failed on custom preprocessed image\n"; } } else { echo "Failed to preprocess image for OCR with custom parameters\n"; } } else { echo "Source image does not exist: $sourceImage\n"; } // Quit the application WINDOW::$app->quit(); ?>
# Additional paths import sys sys.path.insert(0, '../../../Templates PY/') xhe_host = "127.0.0.1:3035" from xweb_human_emulator import * # начало echo("<hr><font color=blue>image.xxxxxxxxx</font><hr>") # 1 echo("1. Вытащим MRZ регион из скана паспорта : "); echo(image.get_mrz_image("E:/zp1.png","E:/mrz_image.png")); # 2 echo("\n2. Преобработаем MRZ перед распознанием: "); echo(image.preprocess_for_ocr("E:/mrz_image.png","E:/mrz_image_prproceeded.png")); # 3 echo("\n3. Распознаем текст на картинке : \n"); tesseractOCR.set_allowed_chars("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789><"); mrz = tesseractOCR.recognize("E:/mrz_image_prproceeded.png","mrz",5); mrz = mrz.replace(" ",""); echo(mrz.replace("<","<") +"\n\n"); # 4 echo("\n3. Разберем MRZ : \n"); mrzObj=image.parse_mrz(mrz); if mrzObj!=None: echo(mrzObj) app.shell_execute("open","E:/mrz_image_prproceeded.png"); # конец echo("<hr><br>") # Quit app.quit()
#region using using System; using System.Diagnostics; using System.Collections.Generic; using System.Linq; using System.IO; using System.Text; using System.Threading; using XHE; using XHE.XHE_DOM; using XHE.XHE_System; using XHE.XHE_Window; using XHE.XHE_Web; #endregion class Program:XHEScript { static void Main(string[] args) { // init XHE server = Environment.GetEnvironmentVariable("RPABOT_HOST_URL"); InitXHE(); // начало echo("<hr><font color=blue>image.add_image</font><hr>"); // 1 echo("1. Вытащим MRZ регион из скана паспорта : "); echo(image.get_mrz_image("E:/zp1.png","E:/mrz_image.png")); // 2 echo("\n2. Преобработаем MRZ перед распознанием: "); echo(image.preprocess_for_ocr("E:/mrz_image.png","E:/mrz_image_prproceeded.png")); // 3 echo("\n3. Распознаем текст на картинке : \n"); tesseractOCR.set_allowed_chars("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789><"); var mrz = tesseractOCR.recognize("E:/mrz_image_prproceeded.png","mrz",5); mrz = mrz.Replace(" ",""); echo(mrz.Replace("<","<") +"\n\n"); // 4 echo("\n3. Разберем MRZ : \n"); var mrzObj=image.parse_mrz(mrz); if (mrzObj!=null) { echo(mrzObj.ToString()); /*echo("Тип: "+mrzObj.Fields[0].Value+"\n"); echo("Страна: "+mrzObj.Fields[1].Value+"\n"); echo("ФИО: "+mrzObj.Fields[2].Value+"\n"); echo("Серия и номер: "+mrzObj.Fields[3].Value+"\n"); echo("Дата рождения: "+mrzObj.Fields[6].Value+"\n"); echo("Пол: "+mrzObj.Fields[8].Value+"\n"); echo("Годен до : "+mrzObj.Fields[9].Value+"\n"); echo("Дата выдачи : "+mrzObj.Fields[12].Value+"\n"); echo("Код подразделения : "+mrzObj.Fields[13].Value+"\n");*/ } else echo("не распознали"); app.shell_execute("open","e:/mrz_image_prproceeded.png"); // конец echo("\n\n"); app.quit(); } }
// подключим функциональные объекты, если еще не подключен xhe_host="127.0.0.1:3035"; echo=require("../../../Templates JS/init.js"); // начало echo("<hr><font color=blue>image.add_image</font><hr>"); // 1 echo("1. Вытащим MRZ регион из скана паспорта : "); echo(image.get_mrz_image('E:\zp1.png',"e:/mrz.png")+"\n"); // 2 echo("2. Покажем результат : "); echo(app.shell_execute("open","e:/mrz.png")); // конец echo("\n"); // Quit app.quit();
=============================================
Image Объекты DOM System Vision Web Window
=============================================
Если что-то непонятно или необходимо узнать или считаете что надо добавить по работе этой функции, пишите в комментарии или на наш форум.