2011-01-28 18 views
5

Tôi đang làm OCR bằng Tesseract trên bộ xử lý lõi tứ. Để có tốc độ tốt hơn, tôi muốn đọc 4 từ cùng một lúc, sử dụng 4 chủ đề. Có an toàn khi gọi Tesseract từ nhiều luồng đồng thời không?Tesseract (động cơ OCR) có reentrant không?

Lưu ý: mỗi chuỗi sẽ hoạt động trên hình ảnh khác, không được chia sẻ.

Lưu ý: bảo vệ bằng khóa không được chấp nhận vì tốc độ.

+1

Mã có thể chỉ an toàn mà không bị reentrant. Nghe có vẻ như bạn muốn an toàn thread, không nhất thiết phải reentrancy. –

+0

Có, nó có thể được làm an toàn chỉ bằng cách sử dụng khóa, nhưng tôi cần nó để được reentrant, vì tốc độ. Mã nên thực thi song song. –

Trả lời

3

Tôi không nghĩ rằng tesseract hiện đang song song (xem this thread), mặc dù một trong số main goals for v3.0 is to make it more thread-safe.

Tuy nhiên, bạn luôn có thể song song bằng cách chạy n đồng thời quy trình của tesseract. Nếu bạn muốn song song với OCRing của một hình ảnh duy nhất, bạn có thể chia nó ra từng phần và cho mỗi phần của một trong các quy trình n này (về cơ bản là bản đồ hóa).

+0

Song song với các quy trình sẽ khó khăn hơn nhiều ... Tôi có một quá trình tạo ra nhiều hình ảnh khác nhau tại một thời điểm. Cho những hình ảnh này vào các quy trình tesseract là có thể và sẽ thực hiện thủ thuật, nhưng tôi sẽ cần một cách để nói chuyện với các quá trình và gửi và thu thập đầu vào/đầu ra. –

+0

@Hristo: Tôi đã gặp vấn đề tương tự với GeckoFX và đã giải quyết nó với các proxy TPL +: http://bugsquash.blogspot.com/2010/03/proxying-and-parallelizing-processes.html –

4

Từ the release notes, Tesseract là (chủ yếu, và đến mức độ mà bạn mô tả cần) thread-safe như 3,01 (tháng 21 2011)

Thread-an toàn! Đã chuyển tất cả các hình cầu và thống kê quan trọng cho các thành viên của lớp thích hợp. Tesseract bây giờ là thread-safe (nhiều trường hợp có thể được sử dụng song song trong nhiều chủ đề.) Với ngoại lệ ngoại lệ là một số tham số điều khiển vẫn toàn cầu và ảnh hưởng đến tất cả các chủ đề .

Tôi đã sử dụng thành công trên nhiều lõi cho thời gian dài (hoặc dài hơn, từ chi nhánh nhà phát triển).