Dijitalleştirilmiş kağıt formlarından B & W görüntüler (1bit) içeren birkaç binlerce PDF dosyam var. Ben bazı alanları OCR çalışıyorum, ama bazen yazı kadar soluktur: Sadece morfolojik dönüşümler hakkında öğrendiğimÖnceden taranmayan el yazısı basamakları ön işleme
. Onlar gerçekten harika!!! Onları istismar ettiğimi hissediyorum (Perl'i öğrendiğimde normal ifadelerle yaptığım gibi).
Ben 2017/07/06, tarih ilgileniyorum sadece: Bu formu doldurarak
im = cv2.blur(im, (5, 5))
plt.imshow(im, 'gray')
ret, thresh = cv2.threshold(im, 250, 255, 0)
plt.imshow(~thresh, 'gray')
İnsanlar için bazı ihmal var gibi görünüyor ızgara, bundan kurtulmaya çalıştım. Ben dönüşümü bununla yatay çizgi izole etmek mümkün değilim:
horizontal = cv2.morphologyEx(
~thresh,
cv2.MORPH_OPEN,
cv2.getStructuringElement(cv2.MORPH_RECT, (100, 1)),
)
plt.imshow(horizontal, 'gray')
Ben de dikey çizgiler elde edebilirsiniz:
plt.imshow(horizontal^~thresh, 'gray')
ret, thresh2 = cv2.threshold(roi, 127, 255, 0)
vertical = cv2.morphologyEx(
~thresh2,
cv2.MORPH_OPEN,
cv2.getStructuringElement(cv2.MORPH_RECT, (2, 15)),
iterations=2
)
vertical = cv2.morphologyEx(
~vertical,
cv2.MORPH_ERODE,
cv2.getStructuringElement(cv2.MORPH_RECT, (9, 9))
)
horizontal = cv2.morphologyEx(
~horizontal,
cv2.MORPH_ERODE,
cv2.getStructuringElement(cv2.MORPH_RECT, (7, 7))
)
plt.imshow(vertical & horizontal, 'gray')
Şimdi alabilirsiniz ızgaradan kurtulmak için:
plt.imshow(horizontal & vertical & ~thresh, 'gray')
elimdeki en iyi bu oldu ama 4 hala 2 parçaya ayrılır: Muhtemelen cv2.findContours
ve bazı sezgisel bir yaklaşım kullanmak daha iyidir bu noktada
plt.imshow(cv2.morphologyEx(im2, cv2.MORPH_CLOSE,
cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))), 'gray')
Her rakamı bulmak için, ama merak ediyorum:
- tüm belgelerin gri tonlarında yeniden taranmasını ister misiniz? Soluk basamakları ayırmak ve bulmak için
- daha iyi yöntemler var mı?
- "4" gibi durumlara katılmak için herhangi bir morfolojik dönüşüm biliyor musunuz?
[güncelleme]
çok belgeleri rescanning talep mi? Ben çalışan bir kimse değilim: o hiçbir büyük sorun ise bunun eğitime daha yüksek kalitede girdi almak daha iyidir ve gürültülü ve atipik verileri
Biraz bağlam dayanacak şekilde modelinizi rafine çalışıyor inanıyoruz Brezilya'da bir kamu ajansı. ICR çözümleri için fiyat 6 basamakta başlıyor, bu sayede hiç kimse tek bir adamın şirket içinde bir ICR çözümü yazabileceğine inanmıyor.Onları yanlış kanıtlayabileceğime inanacak kadar naifim. Bu PDF belgeleri bir FTP sunucusunda (yaklaşık 100K dosya) oturuyordu ve ölü ağaç sürümünden kurtulmak için tarandılar. Muhtemelen orijinal formu alıp tekrar tarayabilirim, ancak bazı resmi destek istemem gerekecek - çünkü kamu sektörü bu projeyi olabildiğince yeraltında tutmak istiyorum. Şimdi sahip olduğum şey% 50'lik bir hata oranıdır, fakat eğer bu yaklaşım bir çıkmazsa, onu geliştirmeye çalışmak için bir nokta yoktur.
Belgeleri yeniden taramak çok mu zorluyor? Eğer büyük bir sorun olmazsa, antrenmandan daha kaliteli girdiler elde etmenin ve gürültülü ve atipik verilere dayanmak için modelinizi düzeltmeye çalışmanın daha iyi olduğuna inanıyorum. – DarkCygnus
@GrayCygnus: Bir bürokrasi ve atalet okyanusu geçmeliydim, ama bu mümkün . Muhtemelen tüm el işlerini kendim yapmak zorunda kalacağım. –
Ayrıca, bu [öğretici] 'ye (http://www.pyimagesearch.com/2017/07/10/using-tesseract-ocr-python/) bir göz atmanızı öneririm. Bir önceki soruya verdiğim yanıt üzerine), Tesseract'ı (Googles OCR Engine'in bir sarıcısı) OCR yapmak için harika bir araç olarak tanıttılar. Ayrıca, [bu yazının] (http://worldcomp-proceedings.com/proc/p2016/ICA3674.pdf), öklid mesafesi metrikli K-en yakın komşuları kullanarak karakter tanımayı nasıl geliştirebileceğini açıklayan buldum. Bu okyanusta geçen iyi şanslar :) – DarkCygnus