본문 바로가기

PHP

윈도우 PHP 서버에서 TesseractOCR 실행하기

반응형

윈도우 PHP 서버에서 TesseractOCR 라이브러리를 실행하려고 했는데 실패를 많이함.

리눅스는 composer로 쉽게 가능한데 윈도우는 기본적으로 composer가 설치되어 있지 않아서 설치후 가져왔는데도 계속 실패하다가 성공 방법을 알아냄

 

사전 조건

composer가 설치 되어 있어야함

- composer 다운로드 사이트에서 윈도우용 .exe 파일 설치하고 가져오기하면 안됨

- 아래와 같은 에러 발생

- php 로 composer를 설치 해야함

d:\> composer require thiagoalessio/tesseract-ocr-for-php

Installation failed, deleting ./composer.json.

In RequireCommand.php line 226:

  No composer.json present in the current directory (./composer.json), this may be the cause of the following excepti
  on.

In PackageDiscoveryTrait.php line 383:

  Could not find a matching version of package thiagoalessio/tesseract-ocr-for-php. Check the package spelling, your
  version constraint and that the package is available in a stability which matches your minimum-stability (stable).

 

 

 

반응형

 


 

TesseractOCR 윈도우에서 사용방법\

 

1. 실행 폴더로 이동

cd d:\web\www


2. Compose 설치https://getcomposer.org/download/

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"


3. TesseractOCR 설치

git clone https://github.com/thiagoalessio/tesseract-ocr-for-php.git 
cd .\tesseract-ocr-for-php\
composer install


4. php 소스에서 경로 설정

require 'tesseract-ocr-for-php/vendor/autoload.php';


5. php 소스 실행

http://www.url/web/ocr_test/tesseract-ocr-test.php

 

 

** 환경변수, php.ini 수정: (이건 꼭 해야 되는지 모르겠음, 오류시 고려할것)

- 환경변수 등록 : 
    시스템 속성 > 고급 > 환경 변수로 이동-> 시스템 변수의 'Path'에 Tesseract 설치 경로(기본값: C:\Program Files\Tesseract-OCR)를 추가

- php.ini 수정 : 
    extension=gd
    extension=mbstring

 

 

 


 

결과화면

OCR이 100%는 아니고 약간....

<style>
	.img { width: 200px; min-height: 80px; }
</style>

<?php

// Composer autoloader 포함
//require 'vendor/autoload.php';
require 'tesseract-ocr-for-php/vendor/autoload.php';
//E:\work\web\ocr-test\tesseract-ocr-for-php\vendor

use thiagoalessio\TesseractOCR\TesseractOCR;

// OCR 수행 함수

/*
언어 설정:

$tesseract->lang('kor', 'eng', 'osd'); 부분에서 여러 언어를 지정합니다.
'kor'은 한국어, 'eng'는 영어, 'osd'는 숫자 및 방향 감지를 위한 스크립트입니다.


Tesseract 언어 데이터:

위 언어들을 사용하기 위해서는 해당 언어 데이터가 Tesseract에 설치되어 있어야 합니다.
Tesseract 설치 시 추가 언어 데이터를 함께 설치했는지 확인하세요.


성능 고려사항:

여러 언어를 동시에 사용하면 인식 속도가 느려질 수 있습니다.
정확도는 향상될 수 있지만, 처리 시간이 길어질 수 있습니다.


이미지 품질:

OCR의 정확도는 이미지 품질에 크게 의존합니다.
선명하고 해상도가 높은 이미지를 사용하면 더 좋은 결과를 얻을 수 있습니다.


추가 옵션:

필요에 따라 다음과 같은 추가 옵션을 사용할 수 있습니다:
phpCopy$tesseract->psm(6);  // 페이지 세그멘테이션 모드 설정
$tesseract->configFile('configfile');  // 추가 설정 파일 사용

결과 후처리:

OCR 결과에 원하지 않는 문자나 공백이 포함될 수 있습니다.
필요하다면 정규 표현식 등을 사용하여 결과를 정제할 수 있습니다.
*/

function performOCR($imagePath, $language = 'eng') {
    try {
        // Tesseract OCR 객체 생성
        $tesseract = new TesseractOCR($imagePath);

        // Tesseract 실행 파일 경로 설정 (설치 경로에 따라 수정 필요)
        $tesseract->executable('C:\Program Files\Tesseract-OCR\tesseract.exe');

        // 언어 설정
       // $tesseract->lang($language);
		
		// 한국어(kor), 영어(eng), 숫자(osd) 인식을 위한 언어 설정
		$tesseract->lang('kor', 'eng', 'osd');

        // OCR 실행 및 결과 반환
        return $tesseract->run();
    } catch (Exception $e) {
        return "OCR 처리 중 오류 발생: " . $e->getMessage();
    }
}

// 이미지 파일 경로 (실제 이미지 파일 경로로 변경 필요)
//$imagePath = 'C:\path\to\your\image.png';
$imagePath = 'ocr-images/text.png';

// OCR 실행 (기본 언어: 영어)
$result = performOCR($imagePath);
echo "<div>OCR 결과 (영어):\n$result</div>\n\n";
echo "<div><img src='{$imagePath}' class='img'></div>\n\n";


$imagePath = 'ocr-images/8055.png';
// OCR 실행 (기본 언어: 영어)
$result = performOCR($imagePath);
echo "<div>OCR 결과 (숫자):\n$result</div>\n\n";
echo "<div><img src='{$imagePath}' class='img'></div>\n\n";


$imagePath = 'ocr-images/mixed-languages.png';
// OCR 실행 (기본 언어: 영어)
$result = performOCR($imagePath);
echo "<div>OCR 결과 (mix):\n$result</div>\n\n";
echo "<div><img src='{$imagePath}' class='img'></div>\n\n";


$imagePath = 'ocr-images/mix.png';
// 한국어 OCR 실행 (한국어 데이터가 설치되어 있어야 함)
$resultKorean = performOCR($imagePath, 'kor');
echo "<div>OCR 결과 (한국어):\n$resultKorean</div>\n\n";
echo "<div><img src='{$imagePath}' class='img'></div>\n\n";


$imagePath = 'ocr-images/mix2.png';
// 한국어 OCR 실행 (한국어 데이터가 설치되어 있어야 함)
$resultKorean = performOCR($imagePath, 'kor');
echo "<div>OCR 결과 (한국어):\n$resultKorean</div>\n\n";
echo "<div><img src='{$imagePath}' class='img'></div>\n\n";


$imagePath = 'ocr-images/mix3.png';
// 한국어 OCR 실행 (한국어 데이터가 설치되어 있어야 함)
$resultKorean = performOCR($imagePath, 'kor');
echo "<div>OCR 결과 (한국어):\n$resultKorean</div>\n\n";
echo "<div><img src='{$imagePath}' class='img'></div>\n\n";


$imagePath = 'ocr-images/mix4.png';
// 한국어 OCR 실행 (한국어 데이터가 설치되어 있어야 함)
$resultKorean = performOCR($imagePath, 'kor');
echo "<div>OCR 결과 (한국어):\n$resultKorean</div>\n\n";
echo "<div><img src='{$imagePath}' class='img'></div>\n\n";

$imagePath = 'ocr-images/mix5.png';
// 한국어 OCR 실행 (한국어 데이터가 설치되어 있어야 함)
$resultKorean = performOCR($imagePath, 'kor');
echo "<div>OCR 결과 (한국어):\n$resultKorean</div>\n\n";
echo "<div><img src='{$imagePath}' class='img'></div>\n\n";
?>


<br>
<br>
<br>
<div>
	<pre>
		TesseractOCR 윈도우에서 사용방법
		
		0. 실행 폴더로 이동 : d:\web\www
		
		1. Compose 설치 : https://getcomposer.org/download/
		
			php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
			php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
			php composer-setup.php
			php -r "unlink('composer-setup.php');"
			
			
		2. TesseractOCR 설치 : 
			git clone https://github.com/thiagoalessio/tesseract-ocr-for-php.git 
			cd .\tesseract-ocr-for-php\
			composer install
		
		** 환경변수, php.ini 수정: (이건 꼭 해야 되는지 모르겠음)
			- 환경변수 등록 : 
				시스템 속성 > 고급 > 환경 변수로 이동-> 시스템 변수의 'Path'에 Tesseract 설치 경로(기본값: C:\Program Files\Tesseract-OCR)를 추가
			
			- php.ini 수정 : 
				extension=gd
				extension=mbstring
		
		3. php 소스에서 경로 설정 : require 'tesseract-ocr-for-php/vendor/autoload.php';
		
		4. php 소스 실행 : http://www.url/web/ocr_test/tesseract-ocr-test.php
		
	</pre>
</div>
반응형