2011-01-28 18 views
5

Tesseract kullanarak dört çekirdekli bir işlemci üzerinde OCR yapıyorum. Daha iyi hız için, 4 iş parçacığı kullanarak bir seferde 4 kelime okumak istiyorum. Tesseract'ı aynı anda birden çok ileti dizisinden aramak güvenli midir?Tesseract (bir OCR motoru) reentrant mı?

Not: her iş parçacığı farklı, paylaşılmamış bir resim üzerinde çalışacaktır.

Not: Kilitlerle kilitleme, hız nedeniyle sorun değil.

+1

Kod, reentrant olmadan iş parçacığı güvenli olabilir. İş parçacığı güvenliğini istemiş gibi geliyor, kesinlikle tekrarlama değil. –

+0

Evet, kilitleri kullanarak vida dişi yapılabilir, ancak hız nedeniyle reentran olmaya ihtiyacım var. Kod paralel olarak yürütülmelidir. –

cevap

3

Şu anda tesseract'ın main goals for v3.0 is to make it more thread-safe'dan biri olmasına rağmen (bkz. this thread) paralel olduğunu düşünmüyorum.

Ancak, her zaman tesseract ait n eşzamanlı süreçler çalıştırarak parallelize başladı. Tek bir görüntünün OCR'lerini paralel hale getirmek istiyorsanız, onu bölmek ve her parçayı bu n işlemlerinin her birine (temelde bir harita haritası) beslemek size kalmıştır. the release notes itibaren

+0

İşlemler ile paralelleştirme çok daha zor olacak ... Bir seferde birçok farklı görüntü oluşturan bir işlem var. Bu görüntüleri tesseract süreçlerine beslemek mümkündür ve hile yapacaktır, ancak süreçlerle konuşma ve girişi/çıkışı toplama ve toplama yoluna ihtiyacım olacaktır. –

+0

@Hristo: GeckoFX ile tam olarak aynı sorunu yaşadım ve TPL + proxy'leriyle çözdüm: http://bugsquash.blogspot.com/2010/03/proxying-and-parallelizing-processes.html –

4

, tesseract (çoğunlukla ve gerek açıklar derecede) 'dir evreli 3.01 itibarıyla (Eki 2011 21)

Konu güvenliği! Tüm kritik globals ve statikleri uygun sınıf üyelerine taşıdı. Tesseract artık dişli güvenlidir (çoklu örnekleri, birden çok iş parçacığı içinde paralel olarak kullanılabilir.), Bazı kontrol parametrelerinin hala global olduğu ve tüm iş öğelerini etkilediği istisnasıyla, küçük .

Bu uzun süre (veya daha uzun, dev şubesinden) için birden çok çekirdek üzerinde başarıyla kullanıyorum.