سؤال

أنا بحاجة إلى الاحتجاج tesseract OCR (في مكتبة مفتوحة المصدر في C++ أن يفعل التعرف الضوئي على الحروف) من تطبيق Java Server.الآن ما يكفي من السهل تشغيل الملف القابل للتنفيذ باستخدام وقت التشغيل.exec().المنطق الأساسي سيكون

  1. حفظ الصورة التي يقام حاليا في الذاكرة إلى ملف (.tif)
  2. تمر في الصورة اسم الملف إلى tesseract سطر الأوامر البرنامج.
  3. قراءة في إخراج النص من ملف جافا باستخدام FileReader.

كيف تحسن كبير من حيث الأداء أنا من المحتمل أن تحصل من خلال كتابة JNI المجمع على "التراسوركت" ؟ وللأسف لا يوجد مفتوح المصدر JNI المجمع الذي يعمل في لينكس.أود أن أفعل ذلك بنفسي وأنا أتساءل حول ما إذا كانت فائدة تساوي تكلفة التطوير.

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

المحلول

من الصعب القول ما إذا كان سيكون من يستحق ذلك.إذا كنت تفترض أنه إذا كان ذلك في عملية عبر JNI ، OCR رمز يمكن الوصول مباشرة إلى بيانات الصورة دون الحاجة إلى كتابة إلى ملف ، فإنه سيكون بالتأكيد القضاء على أي القرص I/O القيود هناك.

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

نصائح أخرى

إذا كنت لا تتابع الخاصة بك المجمع, أنصحك تحقق من JNA.وسوف تسمح لك لاستدعاء أكثر "الأم" المكتبات الكتابة فقط كود جافا, سوف تعطيك المزيد من المساعدة من الخام JNI للقيام بذلك بأمان.JNA متاح لمعظم المنصات.

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

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