2011-03-05 3 views
0

스캔 한 문서의 특정 영역을 OCR해야하고 MODI (Microsoft의 Document Imaging COM 개체)를 사용하고 있습니다.MODI.Document의 특정 영역을 OCR하는 방법은 무엇입니까?

내 코드는 현재 OCR에서 전체 페이지 (매우 정확하게!)이지만 텍스트가 항상 정적 인 (주문 번호) 페이지의 특정 영역을 타겟팅하고 싶습니다. 어떻게해야합니까?

MODI.Document md = new MODI.Document(); 

md.Create("c:\\temp\\mpk.tiff"); 

md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); 
MODI.Image image = (MODI.Image)md.Images[0]; 

FileStream createFile = new FileStream("c:\\temp\\mpk.txt", FileMode.CreateNew); 

StreamWriter writeFile = new StreamWriter(createFile); 
writeFile.Write(image.Layout.Text); 
writeFile.Close(); 

md.Close(); 

은 어떻게 든 이미지의 영역을 지정할 수 있습니다 여기에

페이지 내 코드?

도움이 될 것입니다.

답변

2

MODI 개체 모델에서 볼 수있는 이미지를 잘라낼 방법이 없습니다. 다른 방법은 변환하려는 주문 번호 만 포함 된 이미지를 제공하는 것입니다. System.Drawing 네임 스페이스의 클래스를 사용하여 원본에서 해당 클래스를 만들 수 있습니다. 샘플 코드는 this MSDN page을 확인하십시오.

+0

한스, 좋은 생각입니다. 메모리에서 이미지를자를 수 있어야하고 어떻게 든 MODI.document (파일 저장/열기가 아닌)로 전달되어야하는 것처럼 보입니다. MODI.Image에 메모리에 자른 이미지를 어떻게 든 할당 할 수 있는지 아십니까? –

+0

그래, 당신은 이미지 속성으로 팅커 칠할 수있다. 나는 Images.Add() 메서드를 이해하지 못한다. 행운을 빈다. Windows에서 실제로 더 빠르지는 않지만 파일 시스템 캐시는 메모리와 디스크의 차이를 없앱니다. –

+0

감사합니다 한스, 속도가 너무 문제가되지 않을 수도 있으므로 어쨌든 괜찮을 수도 있습니다. 당신이 이것을 알고 있는지 확실하지 않지만 OCR 비 영어 단어를 사용할 수 있는지 알고 있습니까? (즉, ABC123과 같은 주문 번호) –

관련 문제