2011-01-28 9 views
5

쿼드 코어 프로세서에서 Tesseract를 사용하여 OCR을 수행하고 있습니다. 속도를 높이기 위해 4 개의 스레드를 사용하여 한 번에 4 단어 씩 읽고 싶습니다. Tesseract를 여러 스레드에서 동시에 호출하는 것이 안전합니까?Tesseract (OCR 엔진)는 재진입 성이 있습니까?

참고 : 각 스레드는 다른 비공유 이미지에서 작업하게됩니다.

참고 : 속도가 빠르기 때문에 잠금 장치가있는 보안 상태가 좋지 않습니다.

+1

코드는 재진입없이 스레드로부터 안전 할 수 있습니다. 스레드 안전성을 원했던 것처럼 들린다. 재진입 성이 반드시 필요한 것은 아닙니다. –

+0

예, 잠금을 사용하여 스레드로부터 안전하게 만들 수 있지만 속도 때문에 재진입해야합니다. 코드는 병렬로 실행되어야합니다. –

답변

3

main goals for v3.0 is to make it more thread-safe 중 하나이지만 tesseract가 현재 병렬화 가능하다고 생각하지 않습니다 (this thread 참조).

그러나, 당신은 항상 정팔 포체의 N 동시 프로세스를 실행하여 병렬화 할 수있다. 단일 이미지의 OCR링을 병렬 처리하려면 분할하여 각 부분을 n 개의 프로세스 (기본적으로 mapreduce)에 각각 제공해야합니다. the release notes에서

+0

프로세스 병렬화가 훨씬 더 어려워 질 것입니다 ... 한 번에 여러 이미지를 생성하는 프로세스가 있습니다. 이러한 이미지를 tesseract 프로세스에 제공하는 것이 가능하고 트릭을 수행 할 것이지만 프로세스와 통신하고 입/출력을 전달하고 수집하는 방법이 필요합니다. –

+0

@Hristo : GeckoFX와 똑같은 문제가 있었고 TPL + 프록시로 해결했습니다 : http://bugsquash.blogspot.com/2010/03/proxying-and-parallelizing-processes.html –

4

는 정팔 포체는 (대부분, 그리고 당신이 필요로 설명하는 정도)는 스레드 안전 3.01의 등 (2011 10월 21일)

스레드 안전성! 모든 중요한 전역 및 통계를 구성원에게 적절한 클래스로 이동했습니다. Tesseract는 이제 스레드로부터 안전합니다 (여러 스레드에서 복수 인스턴스를 병렬로 사용할 수 있음). 예외로 일부 제어 매개 변수는 여전히 전역이며 모든 스레드에 영향을줍니다.

나는 여러 장의 코어 (또는 dev 브랜치의 장시간)에 성공적으로 사용 해왔다.

관련 문제