मेरे पास कुछ हजारों पीडीएफ फाइलें हैं जिनमें बी & डब्ल्यू छवियों (1 बिट) डिजिटलकृत पेपर फॉर्म से हैं। मैं कुछ क्षेत्रों ओसीआर करने के लिए कोशिश कर रहा हूँ, लेकिन कुछ समय लेखन भी बेहोश है:खराब स्कैन किए गए हस्तलिखित अंकों को प्रीप्रोकैसिंग
मैं सिर्फ रूपात्मक रूपांतरण के बारे में सीखा है। वे वास्तव में शांत हैं !!! मुझे लगता है कि मैं उनका दुरुपयोग कर रहा हूं (जैसे मैंने नियमित अभिव्यक्तियों के साथ किया था जब मैंने पर्ल सीखा था)।
मैं केवल तारीख में दिलचस्पी रखता हूँ, 2017/07/06:
im = cv2.blur(im, (5, 5))
plt.imshow(im, 'gray')
ret, thresh = cv2.threshold(im, 250, 255, 0)
plt.imshow(~thresh, 'gray')
इस फार्म भरने लोगों के लिए कुछ उपेक्षा करने के लिए लगता है ग्रिड, तो मैंने इसे से छुटकारा पाने की कोशिश की। मैं इस के साथ क्षैतिज रेखा को अलग करने को बदलने में सक्षम हूं:
horizontal = cv2.morphologyEx(
~thresh,
cv2.MORPH_OPEN,
cv2.getStructuringElement(cv2.MORPH_RECT, (100, 1)),
)
plt.imshow(horizontal, 'gray')
मैं भी खड़ी लाइनों प्राप्त कर सकते हैं:
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')
अब मैं प्राप्त कर सकते हैं ग्रिड से छुटकारा:
plt.imshow(horizontal & vertical & ~thresh, 'gray')
सबसे अच्छा मुझे मिल गया यह था, लेकिन 4 अभी भी 2 भागों में विभाजित है: शायद इस बिंदु यह cv2.findContours
और कुछ अनुमानी उपयोग करने के लिए बेहतर है पर
plt.imshow(cv2.morphologyEx(im2, cv2.MORPH_CLOSE,
cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))), 'gray')
प्रत्येक अंक का पता लगाने के लिए, लेकिन मैं सोच रहा था:
- मुझे देना चाहिए ग्रेस्केल में सभी दस्तावेजों को रद्द करने की मांग करें और मांग करें?
- बेहोश अंकों को अलग करने और ढूंढने के लिए बेहतर तरीके हैं?
- क्या आप "4" जैसे मामलों में शामिल होने के लिए कोई मोर्फोलॉजिकल ट्रांसफॉर्म जानते हैं?
[अद्यतन]
दस्तावेज भी rescanning की मांग कर रहा है? यदि यह कोई बड़ा मुसीबत है मेरा मानना है कि यह प्रशिक्षण की तुलना में अधिक गुणवत्ता आदानों प्राप्त करने के लिए बेहतर है और अपने मॉडल को परिष्कृत करने के शोर और असामान्य डेटा
संदर्भ के बारे में थोड़ी सामना करने के लिए कोशिश कर रहा है: मैं एक कोई भी नहीं पर काम कर रहा हूँ ब्राजील में एक सार्वजनिक एजेंसी। आईसीआर समाधान के लिए कीमत 6 अंकों में शुरू होती है, इसलिए कोई भी मानता है कि एक भी व्यक्ति घर में आईसीआर समाधान लिख सकता है।मैं विश्वास करने के लिए पर्याप्त मूर्ख हूं कि मैं उन्हें गलत साबित कर सकता हूं। वे पीडीएफ दस्तावेज़ एक एफ़टीपी सर्वर (लगभग 100 के फाइल) पर बैठे थे और मृत पेड़ संस्करण से छुटकारा पाने के लिए स्कैन किए गए थे। शायद मैं मूल रूप प्राप्त कर सकता हूं और खुद को फिर से स्कैन कर सकता हूं लेकिन मुझे कुछ आधिकारिक समर्थन मांगना होगा - क्योंकि यह सार्वजनिक क्षेत्र है क्योंकि मैं इस परियोजना को जितना संभव हो उतना भूमिगत रखना चाहता हूं। मेरे पास अब 50% की त्रुटि दर है, लेकिन यदि यह दृष्टिकोण एक मृत अंत है तो इसमें सुधार करने की कोई बात नहीं है।
दस्तावेजों को भी मांगना बाकी है? अगर यह कोई बड़ी परेशानी नहीं है तो मेरा मानना है कि प्रशिक्षण से उच्च गुणवत्ता वाले इनपुट प्राप्त करना बेहतर है और शोर और अटैचिकल डेटा – DarkCygnus
@GrayCygnus का सामना करने के लिए अपने मॉडल को परिष्कृत करने का प्रयास करना बेहतर है: मुझे नौकरशाही और जड़ता के महासागर को पार करना होगा, लेकिन यह संभव है । मुझे शायद मैन्युअल रूप से सभी मैन्युअल काम करना होगा। –
मई मैं यह भी सुझाव देता हूं कि आप इस [ट्यूटोरियल] पर एक नज़र डालें (http://www.pyimagesearch.com/2017/07/10/using-tesseract-ocr-python/) (उसी स्रोत से जो मैंने लिंक किया है आपके पिछले प्रश्न के उत्तर पर), जहां वे ओसीआर करने के लिए एक महान उपकरण के रूप में टेसेरैक्ट (गूगल्स ओसीआर इंजन का एक रैपर) पेश करते हैं। इसके अलावा, मुझे [यह पेपर] मिला है (http://worldcomp-proceedings.com/proc/p2016/ICA3674.pdf) जो बताता है कि यू -क्लिडियन दूरी मीट्रिक के साथ के-निकटतम पड़ोसियों का उपयोग करके चरित्र पहचान में सुधार कैसे किया जाए। शुभकामनाएँ कि महासागर की ओर बढ़ रहा है :) – DarkCygnus