بحاجة إلى ocr جيدة للحصول على قائمة شفرة المصدر المطبوعة، أي أفكار؟

StackOverflow https://stackoverflow.com/questions/1888587

  •  19-09-2019
  •  | 
  •  

سؤال

في عملي، يجب علي أحيانا أن تأخذ بعض التعليمات البرمجية المصدر المطبوعة وكتابة التعليمات البرمجية المصدر يدويا في محرر نصوص. لا تسأل لماذا.

يكتبه من الواضح أنه يستغرق الأمر وقتا طويلا وقم دائما بوقت إضافي لتصحيح أخطاء الكتابة (عفوا غاب عن علامة "$" هناك).

قررت تجربة بعض حلول OCR مثل:

  • Microsoft Document Imaging - تم إنشاؤه في OCR
    • النتيجة: غاب عن كل المسافة البارزة الرائدة، وفقدت جميع شركات الشرطة السفلية، تفسر العديد من أحرف علامات الترقيم بشكل غير صحيح.
    • الخلاصة: أبطأ من الكتابة يدويا في التعليمات البرمجية.
  • مختلف تطبيقات الويب عبر الإنترنت على الإنترنت
    • النتيجة: مماثلة أو أسوأ من تصوير مستند Microsoft
    • الخلاصة: أبطأ من الكتابة يدويا في التعليمات البرمجية.

أشعر أنني مثل الكود المصدر سيكون من السهل جدا على الحروف التعرفية الخارجية بالنظر إلى الخط هو sans Serif والنسبك.

هل وجدت أي منكم حلا OCR جيد يعمل بشكل جيد على شفرة المصدر؟

ربما أحتاج فقط إلى حل OCR أفضل (ليس بالضرورة رمز المصدر الخاص)؟

هل كانت مفيدة؟

المحلول

مع OCR، هناك حاليا ثلاثة خيارات:

  • abbee. القارئ على ما يرام و OminPage.. وبعد كلاهما من المنتجات التجارية الموجودة على قدم المساواة عندما يتعلق الأمر بالميزات ونتيجة التعرف الضوئي على الحروف. لا أستطيع أن أقول الكثير عن OMNIPAGE ولكن Finereader يأتي بدعم لقراءة التعليمات البرمجية المصدر (على سبيل المثال، لديها مكتبة لغة Java).
  • أفضل محرك OCR OSS هو tesseract.. وبعد من الصعب استخدامه، من المحتمل أنك تحتاج إلى تدريبه على لغتك.

نادرا ما أفعل OCR لكنني وجدت أن قضاء 150 دولارا في البرامج التجارية للأوزان التوقيت الضائع إلى حد بعيد.

نصائح أخرى

يوجد اثنان من الخيارات الجديدة اليوم (بعد سنوات من طلب السؤال):

1.)

يأتي Windows 10 مع محرك OCR من Microsoft.

إنه في مساحة الاسم:

Windows.Media.Ocr.OcrEngine

https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.ocr.

هناك أيضا مثال على GitHub:

https://github.com/microsoft/windows-universal-samples/tree/master/samples/ocr.

تحتاج إما VS2015 لتجميع هذه الأشياء. أو إذا كنت ترغب في استخدام إصدار أقدم من Visual Studio، يجب عليك استدعاءه عبر COM التقليدي، ثم اقرأ هذه المقالة على CodeProject: http://www.codeproject.com/articles/262151/Visual-cplusplus-and-winrt-metro-some-fundamentals.

جودة التعرف الضوئي على الحروف جيدة جدا. ومع ذلك، إذا كان النص صغيرا جدا، فيجب عليك تزويد الصورة من قبل. يمكنك تنزيل كل لغة موجودة في العالم عبر Windows Update - حتى للكتابة اليدوية!


2.)

خيار آخر هو استخدام مكتبة OCR من Office. انها dll com. وهي متوفرة في Office 2003 و 2007 و Vista، لكن تمت إزالته في Office 2010.

http://www.codeproject.com/articles/10130/ocr-with-microsoft-office.

العيب هو أن كل تثبيت Office يأتي مع دعم لبضعة لغات. على سبيل المثال، يقوم المكتب الأسباني بتثبيت الدعم للإسبانية والإنجليزية والبرتغالية والفرنسية. لكنني لاحظت أنه لا يحدث فرقا تقريبا إذا كنت تستخدم اللغة الإسبانية أو الإنجليزية ككلغة تعريض للكشف عن نص إسباني.

إذا قمت بتحويل الصورة إلى Greyscale، فستحصل على نتائج أفضل. الاعتراف على ما يرام، لكنه لم يرضي لي. يجعل الأمر تقريبا أكبر عدد كبير من الأخطاء مثل TESSERACT على الرغم من أن TESSERACT يحتاج إلى مزيد من المعلومات المصدرة للحصول على هذه النتائج.

النص المطبوع مقابل مكتوب بخط اليد هو مستخدم ومع ذلك، تعتمد كل شيء على الصورة المصدر الخاصة بك، ومع ذلك، أجد أن الاستيلاء على تنسيق PNG، مع انخفاض الألوان (Grayscale هو الأفضل) مع بعض التنظيف اليدوي (إزالة أي ضوضاء صورة نظرا للمسح الضوئي وما إلى ذلك) يعمل بشكل أفضل.

معظم OCR متشابهة في الأداء والدقة. OCRS مع القدرة على التدريب / الصحيح سيكون أفضل.

وبير هو أيضا خيار جيد مفتوح المصدر. ولكن مثل tesseract، هناك منحنى تعليمي حاد إلى حد ما لاستخدامه ودمجه بشكل فعال.

بشكل عام وجدت ذلك القارئ على ما يرام يعطي نتائج جيدة جدا. عادة جميع المنتجات لديها تجربة متوفرة. حاول بقدر ما تستطيع.

الآن، يمكن أن يكون شفرة مصدر البرنامج صعبة:

  • بمسافة بيضاء الرائدة: ربما يمكن أن تساعد عملية طابعة بريدية جميلة
  • تشييد وعلامات الترقيم: ربما يمكن تدريب منتج جيد لذلك

محاولة http://www.free-ocr.com/. وبعد لقد استخدمتها لاستعادة شفرة المصدر من شاشة الاستيلاء على شاشة IDE في جلسة محرر دون سابق إنذار. من الواضح أن ذلك يعتمد على الخط الذي تستخدمه في المحرر (يمكنني استخدام Courier 10Pt الجديد في Delphi). حاولت استخدام مستندات Google، والتي ستقوم بالبرنامج التعرف الضوئي على الصورة عند تحميلها - في حين أن مستندات Google جيدة جدا على المستندات الممسوحة ضوئيا، فافعل بشكل كبير على مصدر Pascal لسبب ما.

مثال على الأعمال الحرة في العمل: صورة الإدخال:

image uploaded

أعطى هذا:

begin
FileIDToDelete := FolderToClean + 5earchRecord.Name ;
Inc (TotalFilesFound) ;
if (DeleteFile (PChar (FileIDToDelete))) then
begin
Log5tartupError (FormatEx (‘%s file %s deleted‘, [Annotation, Fi eIDToDelete])) ;
Inc (TotalFilesDeleted) ;
end
else
begin
Log5tartupError (FormatEx (‘Error deleting %s file %s‘, [Annotat'on, FileIDToDelete])) ;
Inc (TotalFilesDeleteErrors) ;
end ;
end ;
FindResult := 5ysUtils.FindNext (5earchRecord) ;
end ;

لذلك استبدال المسافة البادئة هي الجزء الأكبر من العمل، ثم تغيير الكل 5إلى الحالة العليا S. وبعد كما حصلت على الخلط بين الخط العمودي في علامة العمود 80. لحسن الحظ سيتم التقاط معظم الأخطاء من قبل المحول البرمجي (باستثناء الأخطاء داخل سلاسل مقتبسة).

إنه من العار FreeOCR لا يحتوي على خيار "شفرة المصدر"، حيث يتم التعامل مع مساحة بيضاء كبيرة.

نصيحة: إذا كان المصدر الخاص بك يتضمن تسليط الضوء على بناء الجملة، فتأكد من حفظ الصورة كرم تدريجي قبل التحميل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top