2011-04-27 7 views
19

मैं लिनक्स में उपयोग में आसान ओसीआर पायथन मॉड्यूल ढूंढना चाहता हूं, मुझे पाइसेसर http://code.google.com/p/pytesser/ मिला है, लेकिन इसमें एक .exe निष्पादन योग्य फ़ाइल है।लिनक्स में पायथन ओसीआर मॉड्यूल?

मैंने शराब का उपयोग करने के लिए कोड को बदलने की कोशिश की, और यह वास्तव में काम करता है, लेकिन यह बहुत धीमा है और वास्तव में एक अच्छा विचार नहीं है।

क्या कोई लिनक्स विकल्प है जो इसके रूप में उपयोग में आसान है?

+1

क्यों सवाल को बंद? यह निश्चित रूप से "प्रोग्रामर द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर टूल" और "व्यावहारिक, उत्तरदायी समस्याएं जो प्रोग्रामिंग पेशे के लिए अद्वितीय हैं" में परिभाषित हैं http://stackoverflow.com/help/on-topic –

उत्तर

15

तुम सिर्फ एक समारोह में tesseract लपेट कर सकते हैं:

import os 
import tempfile 
import subprocess 

def ocr(path): 
    temp = tempfile.NamedTemporaryFile(delete=False) 

    process = subprocess.Popen(['tesseract', path, temp.name], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
    process.communicate() 

    with open(temp.name + '.txt', 'r') as handle: 
     contents = handle.read() 

    os.remove(temp.name + '.txt') 
    os.remove(temp.name) 

    return contents 

यदि आप चाहते हैं दस्तावेज़ विभाजन और अधिक उन्नत सुविधाओं, OCRopus को परखें।

+0

में यह कोड गलत है, 'हैंडल करें। बंद करें() 'कॉल 'str.close()' जो मौजूद नहीं है। – OneOfOne

+0

गोचा। मैंने इसे लिखते समय थोड़ा सा लिखा, क्योंकि मेरे पास दो 'क्लोज़()' फ़ंक्शन थे जो अंतरिक्ष ले रहे थे। सुनिश्चित नहीं है कि उन्हें छोड़ना बुरा है, लेकिन मैंने सुना है कि पाइथन स्वयं ही साफ हो जाता है। – Blender

+0

हां, pytesser भी आपके फ़ंक्शन की तरह कुछ है जो टेस्सेक्ट निष्पादन योग्य फ़ाइल को खोलता है और वापस stdout मिलता है। लेकिन tessetact.exe एक temp फ़ाइल का उपयोग करता है जो मुझे बहु-थ्रेडिंग (फ़ाइल विवाद) का उपयोग करने से रोकता है –

10

ब्लेंडर के उत्तर के अलावा, यह केवल टेसरेक्ट निष्पादन योग्य निष्पादन योग्य है, मैं यह जोड़ना चाहता हूं कि ओसीआर के अन्य विकल्प मौजूद हैं जिन्हें बाहरी प्रक्रिया भी कहा जा सकता है।

ABBYY comand लाइन ओसीआर उपयोगिता: http://ocr4linux.com/en:start

यह नि: शुल्क है, तो मूल्य पर विचार करने को केवल तभी Tesseract सटीकता अपने कार्य के लिए पर्याप्त नहीं है, या आप और अधिक परिष्कृत लेआउट analisys की जरूरत है या आप पीडीएफ निर्यात करने के लिए की जरूरत नहीं है, शब्द और अन्य फाइलें।

अद्यतन: http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison

अस्वीकरण: यहाँ ABBYY और Tesseract सटीकता की तुलना दी गई है मैं ABBYY

+0

मैं तर्क दूंगा कि टेसरेक्ट की एबीबीवाई फाइन रीडर की तुलना में बेहतर सटीकता है, क्योंकि मैंने कुछ सौ पुस्तकों को डिजिटलीकृत करने के लिए दोनों का उपयोग किया है। – Blender

+1

@ ब्लेंडर: यहां कई इंजनों की तुलना की गई है: http://www.splitbrain.org/blog/2010-06/15-linux_ocr_software_comparison आप देख सकते हैं कि ABBYY सामान्य रूप से कहीं अधिक सटीक है, अधिकांश नमूनों पर 100% सटीकता प्रदान करता है, लेकिन अभी भी ऐसे क्षेत्र हैं जहां यह टेस्सेक्ट से भी बदतर है। मेरा अनुभव वही दिखाता है: सामान्य रूप से ABBYY वास्तव में अधिक सटीक तरीका है, और (मेरे लिए सबसे महत्वपूर्ण क्या है) प्रशिक्षण के बिना भी अच्छी तरह से काम करता है। क्या आपने दस्तावेज़ के लिए टेस्सेक्ट को प्रशिक्षित किया था? और क्या आपने ABBYY को प्रशिक्षित किया था या जैसा कि यह है? – Tomato

+0

बिल्कुल टेसरेक्ट के लिए कोई प्रशिक्षण नहीं। लेकिन मैं टेस्सेरैक्ट के 'svn' संस्करण का उपयोग कर रहा हूं, जो सामान्य स्थिर निर्माण से बहुत अलग है। – Blender

1

आप मशीन सीखने के लिए उत्कृष्ट scikits.learn पुस्तकालयों की कोशिश करनी चाहिए के लिए काम करते हैं। आप दो कोड पा सकते हैं जो here और here चलाने के लिए तैयार हैं।

6

अजगर Tesseract

http://code.google.com/p/python-tesseract

import cv2.cv as cv 
import tesseract 

api = tesseract.TessBaseAPI() 
api.Init(".","eng",tesseract.OEM_DEFAULT) 
api.SetPageSegMode(tesseract.PSM_AUTO) 

image=cv.LoadImage("eurotext.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE) 
tesseract.SetCvImage(image,api) 
text=api.GetUTF8Text() 
conf=api.MeanTextConf() 
0

आप यहाँ विकल्पों में से एक समूह है।

एक तरीका, जैसा कि अन्य ने इंगित किया है कि टेसरेक्ट का उपयोग करना है। ऐसा लगता है कि अब तक रैपर का एक गुच्छा है, इसलिए इसके लिए do a quick pypi search का सबसे अच्छा तरीका है। सबसे अधिक इस्तेमाल किया लोगों को इन दिनों कर रहे हैं:

समान इंजन को खोजने के लिए एक और उपयोगी साइट alternative.to है।उनके अनुसार कुछ लिनक्स आधारित प्रणालियों हैं:

  • ABBYY
  • Tesseract
  • कीलाकार
  • Ocropus
  • GOCR