diff --git a/ocr/arabic/java/advanced-ocr-techniques/_index.md b/ocr/arabic/java/advanced-ocr-techniques/_index.md index 826cbb80a..278ebdb3c 100644 --- a/ocr/arabic/java/advanced-ocr-techniques/_index.md +++ b/ocr/arabic/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,16 @@ url: /ar/java/advanced-ocr-techniques/ قم بتمكين تطبيقات Java الخاصة بك باستخدام Aspose.OCR للتعرف الدقيق على النص. سهولة التكامل، ودقة عالية. ### [تحديد الأحرف المسموح بها في Aspose.OCR](./specify-allowed-characters/) أطلق العنان لاستخراج النص من الصور بسلاسة باستخدام Aspose.OCR لـ Java. اتبع دليلنا خطوة بخطوة للتكامل الفعال. +### [كيفية تمكين GPU لتقنية OCR في Java – دليل كامل](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +تعلم كيفية تفعيل وحدة معالجة الرسومات لتسريع عملية التعرف الضوئي على الحروف في تطبيقات Java باستخدام Aspose.OCR. +### [إنشاء مجموعة مؤشرات ثابتة للمعالجة المتوازية للـ OCR في Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +تعلم كيفية إنشاء مجموعة مؤشرات ثابتة لتسريع عمليات التعرف الضوئي على الحروف المتوازية في تطبيقات Java باستخدام Aspose.OCR. +### [تحسين دقة OCR في Java – دليل كامل لـ Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +اكتشف طرق تحسين دقة OCR في Java باستخدام Aspose.OCR عبر دليل شامل يوضح الخطوات والتقنيات الفعّالة. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/arabic/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/arabic/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..56ed9b89f --- /dev/null +++ b/ocr/arabic/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-05-03 +description: إنشاء مجموعة مؤشرات ثابتة في جافا لاستخراج النص من الصور بسرعة. تعلم + كيفية تشغيل OCR، تحويل الصورة إلى نص، وتعزيز الأداء باستخدام معالجة OCR المتوازية. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: ar +og_description: إنشاء مجموعة خيوط ثابتة في جافا لاستخراج النص من الصور بسرعة. تعلم + كيفية تشغيل OCR، تحويل الصورة إلى نص، وتعزيز الأداء باستخدام معالجة OCR المتوازية. +og_title: إنشاء مجموعة خيوط ثابتة للمعالجة المتوازية للـ OCR في جافا +tags: +- Java +- OCR +- Multithreading +title: إنشاء مجموعة خيوط ثابتة للمعالجة المتوازية للـ OCR في جافا +url: /ar/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء مجموعة خيوط ثابتة لمعالجة OCR المتوازية في جافا + +هل احتجت يوماً إلى **إنشاء مجموعة خيوط ثابتة** لتسريع مهام OCR، لكنك لم تكن متأكدًا من أين تبدأ؟ لست وحدك. في العديد من المشاريع التي تتعامل مع صور كثيرة، تكون نقطة الاختناق هي استدعاء OCR أحادي الخيط، والحل بسيط بشكل مفاجئ: إنشاء مجموعة من خيوط العاملين وتركها تعالج الملفات بشكل متوازي. + +في هذا الدرس ستتعلم كيف **استخراج النص من الصور** باستخدام Aspose OCR، وكيف **تشغيل OCR** بكفاءة، وكيف **تحويل الصورة إلى نص** دون استنزاف وحدة المعالجة المركزية. في النهاية ستحصل على برنامج جافا جاهز للتنفيذ يوضح **معالجة OCR المتوازية** على مجموعة من الصور النموذجية. + +## ما ستبنيه + +سنقوم بإنشاء تطبيق سطر أوامر صغير يقوم بـ: + +* قراءة قائمة بمسارات الصور (PNG، JPG، TIFF، BMP). +* **إنشاء مجموعة خيوط ثابتة** بحجم يساوي عدد نوى المعالج. +* إرسال مهمة OCR لكل صورة. +* جمع النص المستخرج وعرضه في وحدة التحكم. +* إغلاق الـ executor بشكل نظيف. + +بدون أدوات بناء خارجية، بدون أطر عمل معقدة—فقط جافا عادية ومكتبة Aspose OCR. إذا كان لديك Java 8+ وبيئة تطوير متكاملة جيدة، فأنت جاهز. + +## المتطلبات المسبقة + +* **مجموعة تطوير جافا (JDK) 8 أو أحدث** – الكود يستخدم الـ lambdas، لذا الإصدارات الأقدم لن تُترجم. +* **Aspose OCR for Java** – حمّل ملف الـ JAR من موقع Aspose أو أضفه عبر Maven (`com.aspose:aspose-ocr`). +* مجلد يحتوي على بعض صور الاختبار (الكود يشير إلى `YOUR_DIRECTORY`). +* إلمام أساسي بتزامن جافا (سنشرح البقية). + +> *نصيحة محترف:* إذا كنت تستخدم Maven، أضف الاعتماد إلى ملف `pom.xml` ودع IDE يتولى إدارة مسار الفئات. + +--- + +## الخطوة 1: إضافة الاستيرادات المطلوبة + +أولاً، استورد الفئات التي نحتاجها. هذا ليس مجرد قالب؛ كل استيراد يخبر JVM أين يجد محرك OCR، أدوات معالجة الصور، وأدوات التزامن التي تسمح لنا **بإنشاء مجموعة خيوط ثابتة**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – واجهة برمجة تطبيقات OCR الأساسية. +* `java.util.*` – مجموعات لتخزين مسارات الصور والنتائج. +* `java.util.concurrent.*` – حزمة التزامن التي تحتوي على `ExecutorService` و `Future`. + +--- + +## الخطوة 2: تعريف الصور التي سيتم معالجتها + +بعد ذلك، نُدرج الملفات التي نريد **استخراج النص من الصور**. استخدام `Arrays.asList` يبقي الكود مختصرًا ويسمح لك بتبديل الدليل الخاص بك دون تعديل باقي المنطق. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +لا تتردد في إضافة المزيد من الإدخالات؛ مجموعة الخيوط ستتوسع تلقائيًا بناءً على عدد نوى المعالج المتاحة لديك. + +--- + +## الخطوة 3: **إنشاء مجموعة خيوط ثابتة** مطابقة لعدد نوى المعالج + +هذا هو جوهر الدرس. نطلب من وقت التشغيل معرفة عدد النوى المتاحة ونطلب من مصنع `Executors` أن يمنحنا مجموعة بحجم ذلك العدد بالضبط. لماذا ثابتة؟ لأن عددًا متوقعًا من الخيوط يمنع “انفجار الخيوط” الذي قد يحرم نظام التشغيل من الموارد. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` تُعيد عدد النوى المنطقية (بما فيها الـ hyper‑threads). +* `newFixedThreadPool(coreCount)` يضمن أننا لا نتجاوز قدرة المعالج، وهو الطريقة الأكثر أمانًا لـ **تشغيل OCR** بشكل متوازي. + +--- + +## الخطوة 4: إرسال مهمة OCR لكل صورة + +الآن نحول كل مسار ملف إلى كائن قابل للنداء (`callable`) يقوم **بتشغيل OCR**، يتعرف على النص، ويعيد النتيجة. لاحظ أننا ننشئ `OcrEngine` جديد داخل الـ lambda—هذا يمنع مشاركة حالة المحرك غير الآمنة بين الخيوط. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* كل استدعاء `submit` يسلّم الـ lambda إلى المجموعة، التي تُجدوله على خيط خامل. +* كائنات `Future` تتيح لنا استرجاع النص المستخرج لاحقًا، مع الحفاظ على الترتيب إذا احتجت ذلك. + +--- + +## الخطوة 5: استرجاع وعرض النص المستخرج + +بعد أن تُضاف جميع المهام إلى القائمة، نمر ببساطة على قائمة الـ `Future`، مستدعين `get()` للانتظار حتى ينتهي كل عمل OCR. هنا يصبح خطوة **تحويل الصورة إلى نص** واضحة لك: استدعاء `engine.getText()` يُعيد السلسلة النصية الخام. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +نموذج الإخراج في وحدة التحكم يكون كالتالي: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +إذا فشل ملف ما (مثلاً كان معطوبًا)، ستظهر سطر يبدأ بـ `Failed:` متبوعًا بالمسار—مفيد لتصحيح الأخطاء بسرعة. + +--- + +## الخطوة 6: تنظيف خدمة الـ Executor + +لا تنسَ إغلاق المجموعة؛ وإلا قد يبقى الـ JVM قيد التشغيل معتقدًا أن هناك عملًا مستمرًا. إغلاقٍ منظم يسمح لأي مهمة جارية بالانتهاء قبل انتهاء العملية. + +```java +executor.shutdown(); +``` + +يمكنك أيضًا استدعاء `awaitTermination` إذا أردت فرض مهلة زمنية، لكن بالنسبة لمعظم الأدوات سطر الأوامر يكفي `shutdown()` العادي. + +--- + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل الجاهز للتنفيذ. انسخه إلى ملف باسم `ParallelOcrTutorial.java`، عدّل مسارات الصور، ثم شغّله باستخدام `javac` + `java` كالمعتاد. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**النتيجة المتوقعة:** طباعة المحتوى النصي لكل صورة في وحدة التحكم، بنفس ترتيب قائمة `imagePaths`. إذا تعذّر معالجة أي صورة، ستظهر إشعار فشل بدلاً من سطر فارغ. + +--- + +## أسئلة شائعة وحالات خاصة + +### ماذا لو كان لدي عدد صور أكبر من عدد الخيوط؟ + +ستقوم مجموعة الخيوط الثابتة تلقائيًا بصفّ المهام الزائدة. بمجرد أن ينتهي خيط من مهمة OCR الحالية، يلتقط المهمة التالية. سلوك الصفّ هذا هو جوهر **معالجة OCR المتوازية**—تحصل على أقصى إنتاجية دون إغراق المعالج. + +### هل يمكنني تغيير اللغة؟ + +بالطبع. استبدل `engine.getLanguage().setEnglish(true);` بالعلامة اللغوية المناسبة، مثل `setFrench(true)` أو فعّل عدة لغات باستدعاء عدة setters قبل `recognize()`. + +### كيف أتعامل مع الصور الكبيرة جدًا؟ + +الملفات الضخمة قد تستهلك الكثير من الذاكرة لكل خيط. إذا لاحظت `OutOfMemoryError`، فكر في تقليل حجم الصورة قبل تمريرها إلى المحرك، أو زِد حجم الـ heap باستخدام `-Xmx`. خيار آخر هو استخدام **مجموعة خيوط مخزنة** (`cached thread pool`) ( + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/arabic/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/arabic/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..9abb65f26 --- /dev/null +++ b/ocr/arabic/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-05-03 +description: كيفية تمكين GPU لتقنية OCR في جافا بسرعة – تعلم كيفية استخراج النص من + الصور باستخدام Aspose OCR. يتضمن دليلًا كاملاً لتقنية OCR في جافا. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: ar +og_description: كيفية تمكين وحدة معالجة الرسومات (GPU) لتقنية OCR في جافا في دقائق. + يوضح لك هذا الدرس كيفية استخراج النص من الصور باستخدام تقنية OCR في جافا مع تسريع + GPU. +og_title: كيفية تمكين وحدة معالجة الرسومات (GPU) لتقنية OCR في جافا – دليل خطوة بخطوة +tags: +- Java +- OCR +- GPU +- Aspose +title: كيفية تمكين الـ GPU لتقنية OCR في جافا – دليل كامل +url: /ar/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تمكين وحدة معالجة الرسومات لـ Java OCR – دليل كامل + +هل تساءلت يومًا **عن كيفية تمكين وحدة معالجة الرسومات** عندما تحاول استخراج النص من صورة؟ إذا احتجت إلى تشغيل OCR على مسح ضوئي عالي الدقة وشعرت أن المعالج يتوقف، فأنت لست وحدك. في هذا الدليل سنستعرض **دورة تعليمية لجافا OCR** لا تُظهر لك فقط كيفية استخراج النص بل وتُظهر أسرع طريقة لـ **recognize text image java**‑style عبر تشغيل دعم GPU التجريبي. + +سنبدأ بجلب مكتبة Aspose OCR، ثم تمكين GPU، تحميل صورة تجريبية، وأخيرًا استخراج السلسلة المعترف بها من الملف. في النهاية ستحصل على مقطع جاهز للتنفيذ يمكنك وضعه في أي مشروع Maven، وستفهم لماذا تُعتبر GPU مهمة، ومتى قد لا تساعد، وكيفية استكشاف الأخطاء الشائعة. لا حاجة إلى مستندات خارجية—كل ما تحتاجه هنا. + +--- + +## ما ستحتاجه + +- **Java Development Kit (JDK) 8+** – الكود يعمل على أي JDK حديث. +- **Maven** (أو Gradle) لجلب تبعية Aspose OCR. +- جهاز **متوافق مع GPU** (بطاقة NVIDIA تدعم CUDA هي الأفضل، لكن Aspose API سيتراجع بخفة إذا لم تتوفر). +- صورة تجريبية، مثل `sample-highres.png`، موجودة في مجلد يمكنك الإشارة إليه. +- قليل من الفضول حول تقنيات **image to text conversion java**. + +إذا كان أي من هذه غير متوفر، احصل على JDK من Oracle أو OpenJDK، ثبّت Maven، وتأكد من تحديث برنامج تشغيل الرسوميات. هذا كل ما يلزم من التحضيرات؛ الباقي هو Java نقي. + +--- + +## الخطوة 1: إضافة Aspose OCR إلى مشروعك + +أولاً، نحتاج إلى محرك OCR نفسه. توفر Aspose قطعة Maven نظيفة؛ فقط الصق هذا المقتطف في ملف `pom.xml` الخاص بك: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +إذا كنت تفضّل Gradle، فالمقابل هو: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +بعد حل التبعية، ستحصل على إمكانية الوصول إلى `OcrEngine` و `ImageStream` ومساعدي اللغة الذين يجعلون **java ocr tutorial** سهلًا. + +--- + +## الخطوة 2: كيفية تمكين GPU (الكلمة المفتاحية الأساسية في التنفيذ) + +الآن نصل إلى جوهر الموضوع: **كيفية تمكين GPU** لمحرك OCR. تُظهر Aspose API علمًا منطقيًا واحدًا—`setUseGpu(true)`. هو تجريبي، لكن على بطاقة رسومية جيدة ستلاحظ انخفاضًا كبيرًا في زمن التعرف، خاصةً للصور الكبيرة وعالية الدقة. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **نصيحة احترافية:** إذا كان بيئتك لا تحتوي على GPU متوافق، سيتجاهل العلم بصمت، ويعود المحرك إلى وضع CPU. لا يحدث تعطل، فقط أداء أبطأ. + +--- + +## الخطوة 3: تحميل الصورة التي تريد معالجتها + +يعمل محرك OCR مع `ImageStream`. وجهه إلى الملف الذي تريد تحويله من صورة إلى نص. إليك طريقة مختصرة للقيام بذلك: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +تأكد أن المسار إما مطلق أو نسبي إلى دليل عمل مشروعك. إذا لم يُعثر على الملف، ستحصل على `IOException`—سنلتقطه لاحقًا. + +--- + +## الخطوة 4: اختيار اللغة (اختياري لكن مُستحسن) + +يمكن لـ Aspose OCR التعامل مع العديد من الأبجديات، لكن عليك إبلاغه أي لغة تتوقعها. للإنجليزية، يكفي سطر واحد: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +إذا كنت تحتاج إلى الفرنسية أو الصينية، فقط غير العلم (`setFrench(true)`, `setChineseSimplified(true)`, إلخ). هذه اللمحة الصغيرة غالبًا ما تعزز الدقة لأن المحرك يستطيع استبعاد المرشحين غير المحتملين. + +--- + +## الخطوة 5: Recognize Text Image Java – تشغيل المحرك + +الآن يأتي لحظة الحقيقة: **recognize text image java** بأسلوب Java. نستدعي `recognize()`، وإذا أعاد `true`، نستخرج السلسلة الناتجة باستخدام `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +سيكون الناتج هو النص الخام المستخرج من `sample-highres.png`. للحصول على مستند نظيف، قد ترغب في معالجة السلسلة (إزالة المسافات الزائدة، استبدال فواصل الأسطر، إلخ). إليك مثال سريع: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## الخطوة 6: مثال كامل يعمل (جاهز للنسخ واللصق) + +فيما يلي **java ocr tutorial** كامل يمكنك تجميعه وتشغيله مباشرة. يتضمن معالجة الأخطاء ويطبع الناتج المتوقع. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**الناتج المتوقع (مثال):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +إذا احتوت الصورة على عدة أسطر، فستظهر مفصولة بأحرف السطر الجديد (`\n`). يحافظ المحرك على التخطيط الأصلي قدر الإمكان. + +--- + +## الخطوة 7: الحالات الخاصة، النصائح، والأسئلة الشائعة + +### ماذا لو لم يتم اكتشاف GPU؟ + +تقوم Aspose بتعطيل دعم GPU بصمت عندما لا تجد جهازًا متوافقًا. يمكنك التحقق من الوضع بفحص العلم بعد التهيئة: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +إذا طبع `false`، فتأكد من نسخة برنامج التشغيل وتأكد من أن بيئة تشغيل `CUDA` موجودة في `PATH`. + +### هل تساعد GPU مع الصور الصغيرة؟ + +ليس دائمًا. قد يتجاوز عبء نقل صورة صغيرة إلى GPU الفائدة في السرعة. للصور تحت 500 KB، قد تلاحظ بطءً طفيفًا. في هذه الحالة، عيّن `setUseGpu(false)`. + +### كيف أتعامل مع مستندات متعددة اللغات؟ + +يمكنك تمكين عدة لغات في آنٍ واحد: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +سيحاول المحرك مطابقة الأحرف من أي مجموعة، وهو مفيد للملفات الثنائية اللغة. + +### هل يمكنني معالجة ملفات PDF مباشرة؟ + +يعمل Aspose OCR مع تدفقات الصور، لذا ستحتاج إلى تحويل كل صفحة PDF إلى صورة أولًا (مثلاً باستخدام Aspose PDF أو PDFBox) ثم تمرير `BufferedImage` الناتج إلى `setImage`. + +--- + +## ملخص بصري + +![كيفية تمكين وحدة معالجة الرسومات لـ Java OCR engine](/images/gpu-ocr.png "مخطط يوضح خط أنابيب OCR المدعوم بوحدة معالجة الرسومات") + +*المخطط يوضح التدفق من تحميل الصورة → OCR مدعوم بـ GPU → استخراج النص.* + +--- + +## الخلاصة + +غطّينا **كيفية تمكين GPU** لسير عمل Java OCR، استعرضنا **java ocr tutorial** كامل، وأظهرنا **image to text conversion java** في مثال عملي قابل للنسخ واللصق. من خلال تبديل علم واحد، يمكنك توفير ثوانٍ—أو حتى دقائق—من وقت معالجة المسحات الكبيرة، مما يجعل تطبيقاتك أكثر استجابة وسرعة. + +ما الخطوة التالية؟ جرّب معالجة مجموعة من الصور داخل حلقة، جرب لغات مختلفة، أو اجمع ذلك مع Apache Tika لفهرسة النص المستخرج تلقائيًا. السماء هي الحد عندما تقترن OCR المدعوم بـ GPU مع مكتبات Java أخرى. + +هل لديك أسئلة حول **كيفية استخراج النص** من صور صعبة، أو تريد معرفة المزيد عن حيل **recognize text image java**؟ اترك تعليقًا أدناه، وبرمجة سعيدة! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/arabic/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/arabic/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..63787922b --- /dev/null +++ b/ocr/arabic/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-05-03 +description: حسّن دقة التعرف الضوئي على الحروف بسرعة باستخدام Aspose OCR Java. تعلّم + كيفية تحميل الصورة للتعرف الضوئي على الحروف، وتمكين اللغات، وتطبيق تصحيح إملائي + قوي في بضع خطوات. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: ar +og_description: حسّن دقة التعرف الضوئي على الأحرف فورًا باستخدام Aspose OCR Java. + يوضح هذا الدليل كيفية تحميل الصورة للتعرف الضوئي على الأحرف، وتمكين اللغات، واستخدام + تصحيح إملائي قوي. +og_title: تحسين دقة OCR في جافا – دليل Aspose OCR خطوة بخطوة +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: تحسين دقة OCR في جافا – دليل Aspose OCR الكامل +url: /ar/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# تحسين دقة OCR في Java – دليل Aspose OCR الكامل + +هل تساءلت يومًا لماذا تبدو نتائج OCR الخاصة بك كخط يد طفل صغير؟ إذا كنت تواجه فقدان الحروف، كلمات خاطئة، أو مجرد هراء، فأنت لست وحدك. **تحسين دقة OCR** هو أول شيء يلجأ إليه معظم المطورين عندما يشعرون أن استخراج النص غير موثوق. + +في هذا الدرس سنستعرض حلاً عمليًا لا يقتصر فقط على **تحميل الصورة لـ OCR** بل يستخدم أيضًا محرك تصحيح الإملاء المدمج في Aspose لتحسين الجودة. في النهاية ستحصل على برنامج Java جاهز للتشغيل يتعرف على النص الإنجليزي + الفرنسي مع تصحيح عدواني — دون الحاجة إلى قواميس خارجية. + +## ما ستتعلمه + +- كيفية **تحميل الصورة لـ OCR** باستخدام `ImageStream` الخاص بـ Aspose. +- لماذا يهم تمكين اللغات الصحيحة للدقة. +- تأثير تصحيح الإملاء العدواني على المستندات متعددة اللغات. +- عينة شفرة كاملة قابلة للتنفيذ يمكنك وضعها في أي مشروع Maven/Gradle. +- نصائح، متاعب، وأفكار الخطوات التالية لتوسيع هذا النهج. + +> **المتطلبات المسبقة** – Java 8 أو أحدث، ملف JAR حديث لـ Aspose.OCR for Java (الإصدار v23.12 أو أحدث)، وملف صورة (`multilingual.png`) يحتوي على نص إنجليزي وفرنسي. هذا كل شيء — لا نماذج أو APIs إضافية. + +--- + +## تحسين دقة OCR: تكوين محرك Aspose OCR + +قلب أي خط أنابيب OCR هو تكوين المحرك. من خلال إخبار Aspose بالضبط ما تتوقعه، تمنحه فرصة جيدة للحصول على النتائج الصحيحة. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**لماذا هذا مهم:** +- **مثيل المحرك** – `OcrEngine` يحتفظ بجميع الإعدادات؛ إنشاء مثيل جديد يمنع تسرب الحالة من عمليات التشغيل السابقة. +- **تحميل الصورة** – استخدام `ImageStream.fromFile` هو أبسط طريقة لـ **تحميل الصورة لـ OCR**. يدعم PNG، JPEG، BMP، وTIFF مباشرة. +- **علامات اللغة** – تشغيل الإنجليزية + الفرنسية يخبر المُعرّف باستخدام مجموعات الأحرف والنماذج اللغوية المناسبة، مما يمكن أن يزيد الدقة بمقدار 10‑15 %. +- **تصحيح إملائي عدواني** – تعيين `SpellCorrectionLevel.AGGRESSIVE` يدفع القاموس الداخلي لإعادة كتابة الكلمات المشكوك فيها، وهو عامل أساسي عندما تحتاج إلى **تحسين دقة OCR** على المسحات الضوضائية. + +--- + +## تحميل الصورة لـ OCR – تعيين ملف المصدر + +قبل أن يتمكن المحرك من فعل أي شيء، يحتاج إلى صورة bitmap. إذا قمت بتزويده بتدفق تالف أو مسار غير صحيح، ستواجه استثناءً أسرع مما يمكنك قول “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**نصيحة احترافية:** إذا كنت تعالج صورًا يرفعها المستخدمون، غلف منطق التحميل داخل كتلة try‑catch وتحقق من حجم/صيغة الملف أولاً. هذا يمنع المحرك من التعطل عند ملفات PDF ضخمة أو صيغ غير مدعومة. + +--- + +## تمكين لغات متعددة لتحسين التعرف + +معظم مكتبات OCR تُفترض الإنجليزية فقط بشكل افتراضي. عندما يخلط مستندك بين لغات متعددة، ستلاحظ زيادة في الأحرف غير المُعترف بها. تجعل Aspose تبديل اللغات الإضافية أمرًا سهلًا. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**لماذا تمكين أكثر من لغة واحدة؟** +- **توسيع مجموعة الأحرف** – اللغة الفرنسية تشمل أحرفًا مُعلمة مثل “é” و“ç”. بدون علامة الفرنسية، تتحول إلى “e” أو “c”، مما يربك لاحقًا مُصحح الإملاء. +- **تلميحات سياقية** – يستخدم محرك OCR نماذج اللغة لتوقع حدود الكلمات؛ نموذج ثنائي اللغة يقلل من الانقسامات الخاطئة. + +--- + +## تطبيق تصحيح إملائي عدواني + +تصحيح الإملاء ليس مجرد “إضافة لطيفة”؛ إنه عامل تغيير عندما تحتاج إلى **تحسين دقة OCR** على مسحات منخفضة الجودة. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### المستويات بنظرة سريعة + +| المستوى | السلوك | +|------------|----------------------------------------------| +| **NONE** | بدون تصحيح – إخرج المحرك الخام فقط. | +| **LIGHT** | يُصحح الأخطاء الواضحة، خطر منخفض للتصحيح الزائد. | +| **AGGRESSIVE** | يطبق عمليات البحث في القاموس بشكل عدواني؛ الأفضل للصور الضوضائية. | + +**تحذير:** قد يعيد الوضع العدواني كتابة الأسماء الخاصة الصحيحة (مثال: “McDonald” → “Mcdonald”). إذا كان مجال عملك يحتوي على العديد من الأسماء، فكر في مرشح ما بعد المعالجة. + +--- + +## تشغيل التعرف والتحقق من المخرجات + +الآن بعد أن تم إعداد كل شيء، حان الوقت للسماح لـ Aspose بالقيام بالعمل الشاق. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### المخرجات المتوقعة (عينة) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +إذا رأيت هراءً بدلاً من ذلك، تحقق مرة أخرى من: + +1. جودة الصورة (الصور الضبابية أو ذات الدقة المنخفضة تضر بالدقة). +2. علامات اللغة – عدم تمكين الفرنسية سيؤدي إلى فقدان اللكنات. +3. مستوى تصحيح الإملاء – جرّب `LIGHT` إذا لاحظت تصحيحًا زائدًا. + +--- + +## مثال كامل يعمل (جميع الخطوات في ملف واحد) + +فيما يلي البرنامج الكامل الذي يمكنك تجميعه وتشغيله مباشرة. احفظه باسم `SpellCorrectionTutorial.java`، عدل مسار الصورة، ونفّذ باستخدام `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Compile & run: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +يجب أن ترى النص متعدد اللغات المصحح يُطبع على وحدة التحكم. + +--- + +## المشكلات الشائعة وكيفية تجنبها + +| العَرَض | السبب المحتمل | الحل | +|---------|--------------|-----| +| **مخرجات فارغة** | مسار الصورة غير صحيح أو الملف غير قابل للقراءة | تحقق من مسار `ImageStream.fromFile`؛ أضف فحص وجود الملف. | +| **فقدان اللكنات** | لم يتم تمكين اللغة الفرنسية | استدعِ `ocrEngine.getLanguage().setFrench(true)`. | +| **حروف عشوائية** | صورة منخفضة الدقة (< 150 dpi) | قم بزيادة الدقة أو أعد المسح بدقة أعلى؛ فكر في المعالجة المسبقة باستخدام مكتبات تحسين الصور. | +| **أسماء مصححة بشكل زائد** | تصحيح إملائي عدواني على الأسماء الخاصة | قم بمعالجة ما بعد مع قائمة بيضاء من الأسماء المعروفة أو انتقل إلى مستوى `LIGHT`. | + +--- + +## الخطوات التالية: توسيع خط أنابيب OCR الخاص بك + +- **معالجة دفعات:** تكرار عبر دليل يحتوي على صور، وإعادة استخدام مثيل واحد من `OcrEngine` للأداء. +- **استخراج PDF:** استخدم Aspose.PDF لتحويل كل صفحة إلى صورة، ثم قدمها إلى محرك OCR. +- **قواميس مخصصة:** إذا كان مجالك يستخدم مصطلحات متخصصة (طبية، قانونية)، قدم قائمة كلمات مخصصة إلى `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **التوازي:** يمكن لـ `ForkJoinPool` في Java تشغيل مهام OCR متعددة بشكل متزامن، لكن احذر من استهلاك الذاكرة لأن كل محرك يحتفظ بذاكرة مؤقتة للصور. + +![Improve OCR accuracy example](/images/ocr-example.png){alt="لقطة شاشة تحسين دقة OCR تُظهر النص متعدد اللغات المصحح"} + +--- + +## الخلاصة + +لقد قمنا للتو **بتحسين OCR** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/arabic/java/ocr-operations/_index.md b/ocr/arabic/java/ocr-operations/_index.md index 94d5eaffc..86840b31f 100644 --- a/ocr/arabic/java/ocr-operations/_index.md +++ b/ocr/arabic/java/ocr-operations/_index.md @@ -78,8 +78,12 @@ weight: 21 افتح قوة OCR في Java مع Aspose.OCR. تعرف على النص في مستندات PDF بسهولة. عزز تطبيقاتك بالدقة والسرعة. ### [OCR Recognizing TIFF Images in Aspose.OCR for Java](./recognize-tiff/) افتح إمكانات التعرف القوية على النص في Java مع Aspose.OCR. تعرف على النص في صور TIFF بسهولة. حمّل الآن لتجربة OCR سلسة. +### [مثال Aspose OCR للـ Java: استخراج النص من منطقة](./aspose-ocr-java-example-extract-text-from-a-region/) +دليل يوضح كيفية استخراج النص من منطقة محددة في صورة باستخدام Aspose OCR للـ Java. ### [التعرف على نص الصورة باستخدام Aspose OCR – دليل OCR كامل للـ Java](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) دليل شامل يشرح كيفية التعرف على النص في الصور باستخدام Aspose OCR مع Java خطوة بخطوة. +### [استخراج النص من HEIC – دليل Java كامل](./extract-text-from-heic-complete-java-guide/) +دليل شامل يوضح كيفية استخراج النص من ملفات HEIC باستخدام Aspose.OCR للـ Java. ## الأسئلة المتكررة diff --git a/ocr/arabic/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/arabic/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..73feea6a3 --- /dev/null +++ b/ocr/arabic/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: يوضح مثال Aspose OCR للغة Java كيفية تحميل صورة للتعرف الضوئي على الأحرف + واستخراج النص من منطقة معينة في بضع أسطر من الشيفرة فقط. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: ar +og_description: مثال Aspose OCR للغة Java يوضح تحميل صورة للتعرف الضوئي على الأحرف + واستخراج النص من منطقة محددة، وهو مثالي لمعالجة الفواتير. +og_title: مثال Aspose OCR بلغة Java – استخراج النص من المنطقة +tags: +- Aspose OCR +- Java +- Image Processing +title: 'مثال Aspose OCR بلغة Java: استخراج النص من منطقة' +url: /ar/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# مثال Aspose OCR Java: استخراج النص من منطقة + +هل تبحث عن **مثال Aspose OCR Java** يتيح لك استخراج الجزء الذي تحتاجه فقط من صورة؟ في هذا الدليل سنستعرض **تحميل صورة للـ OCR** و **استخراج النص من منطقة**، وهو مثالي لأرقام الفواتير، حقول النماذج، أو أي قطعة من البيانات المخفية داخل صورة أكبر. + +قد تتساءل لماذا تُقيد الـ OCR بمستطيل بدلاً من مسح الصفحة بالكامل. الجواب المختصر: السرعة والدقة. عندما ينظر المحرك فقط إلى جزء محدد، يتخطى الضوضاء غير ذات الصلة، يعمل أسرع، وغالبًا ما ينتج نتائج أنظف. بنهاية هذا الشرح ستحصل على برنامج Java مستقل يقوم بذلك بالضبط، بالإضافة إلى مجموعة من النصائح لتجنب الأخطاء الشائعة التي تعيق المبتدئين. + +## ما ستحتاجه + +- **Java Development Kit (JDK) 11** أو أحدث مثبت. +- مكتبة **Aspose.OCR for Java** (يمكنك الحصول على أحدث JAR من مستودع Maven Central أو بوابة تحميل Aspose). +- ملف صورة يحتوي على النص الذي تريد قراءته – في مثالنا سنستخدم `invoice.png`، الذي يحتوي على رقم الفاتورة في مكان ما بالقرب من الزاوية العليا اليمنى. +- بيئة تطوير مفضلة أو محرر نصوص بسيط بالإضافة إلى الطرفية؛ أي أداة بناء (Maven، Gradle، أو مجرد `javac`) ستكفي. + +هذا كل شيء. لا محركات OCR إضافية، لا ملفات تنفيذية أصلية، فقط Java صافية و Aspose. + +![لقطة شاشة مثال Aspose OCR Java](/images/aspose-ocr-java-example.png "مثال Aspose OCR Java يظهر استخراج المنطقة") + +## مثال Aspose OCR Java – تهيئة محرك OCR + +أول شيء يحتاجه أي سير عمل OCR هو نسخة من المحرك. تقدم Aspose فئة `OcrEngine` خفيفة الوزن التي تتعامل مع كل شيء من تحميل الصورة إلى اختيار اللغة. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**لماذا هذا مهم:** إنشاء المحرك مسبقًا يمنحك كائنًا نظيفًا لتكوينه. يمكنك إعادة استخدام نفس `OcrEngine` لعدة صور إذا كنت تعالج دفعة، مما يوفر الذاكرة ووقت التهيئة. + +## تحميل صورة للـ OCR + +الخطوة التالية نخبر المحرك أي صورة يجب مسحها. توفر Aspose المساعد `ImageStream.fromFile`، الذي يُجردك من تفاصيل `FileInputStream` منخفضة المستوى. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**نصيحة:** استبدل `YOUR_DIRECTORY` بمسار مطلق أو نسبي يشير إلى المكان الذي حفظت فيه `invoice.png`. إذا لم يتم العثور على الملف، تقوم Aspose بإلقاء `IOException`، لذا قد ترغب في تغليف ذلك بكتلة try‑catch في الكود الإنتاجي. + +## تعريف واستخراج النص من منطقة + +الآن يأتي نجم العرض: المستطيل الذي يحدد للمحرك أين ينظر. يأخذ مُنشئ `java.awt.Rectangle` القيم `(x, y, width, height)` – كلها مقاسة بالبكسل. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**كيف يعمل:** من خلال استدعاء `setRegion`، تقوم بتحديد مسح الـ OCR إلى شريحة عرضها 300 بكسل تبدأ 120 بكسل من الحافة اليسرى و250 بكسل من الأعلى. عدّل هذه الأرقام لتتناسب مع تخطيطك؛ طريقة سريعة للعثور عليها هي فتح الصورة في أي محرر رسومات يُظهر إحداثيات البكسل. + +## تمكين اللغة وتشغيل التعرف + +يدعم Aspose OCR عشرات اللغات، ولكن لرقم الفاتورة نحتاج فقط إلى الإنجليزية. تمكين اللغة المناسبة يقلل الإيجابيات الزائفة بشكل كبير. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**لماذا تمكين الإنجليزية فقط؟** سيحاول محرك OCR مطابقة الأحرف من كل مجموعة لغات مفعلة، مما قد يربكه عندما يكون النص أبجديًا رقميًا بسيطًا. تضييق نطاق اللغة يحسن كلًا من السرعة والدقة. + +### النتيجة المتوقعة + +عند توافق كل شيء، سترى شيئًا مثل: + +``` +Extracted region text: INV-12345 +``` + +إذا كان المستطيل غير محاذٍ ببضع بكسلات، قد يكون الناتج مشوشًا أو فارغًا. هذه طريقة فحص بسيطة: شغّل البرنامج، انظر إلى وحدة التحكم، وتأكد أن النص يطابق ما تراه في الصورة. + +## تشغيل الكود والتحقق من الناتج + +بافتراض أنك تستخدم Maven، أضف تبعية Aspose OCR إلى ملف `pom.xml` الخاص بك: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +قم بالترجمة والتنفيذ: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +أو، إذا كنت تفضّل استخدام `javac` العادي: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +يجب أن ترى سطر **Extracted region text** يُطبع في وحدة التحكم. إذا حصلت على رسالة “OCR recognition failed”، فتحقق مرة أخرى من مسار الملف وتأكد أن المنطقة تحتوي فعليًا على أحرف قابلة للقراءة. + +## الحالات الخاصة والاختلافات الشائعة + +| الحالة | ما الذي يجب تغييره | +|-----------|----------------| +| **لغات متعددة** (مثلاً الإنجليزية + الإسبانية) | استدعِ `ocrEngine.getLanguage().setSpanish(true);` إلى جانب الإنجليزية. | +| **منطقة خارج حدود الصورة** | ستقوم Aspose بقطع المستطيل بصمت، لكنك ستفقد البيانات. استخدم `ImageInfo` (`ocrEngine.getImage().getWidth()`) للتحقق من الأبعاد قبل تعيين المنطقة. | +| **فواتير ديناميكية** (تصاميم مختلفة) | فكر في إجراء فحص مسبق خفيف على الصورة بالكامل لتحديد كلمات مفتاحية مثل “Invoice #” ثم احسب المستطيل برمجيًا. | +| **صور بدقة DPI أعلى** | زد `ocrEngine.getImage().setResolution(300);` للحصول على دقة أفضل في المستندات الممسوحة. | +| **تحسين الأداء** | عطل اللغات غير الضرورية، اجعل المنطقة صغيرة قدر الإمكان، وأعد استخدام نسخة واحدة من `OcrEngine` عبر العديد من الملفات. | + +## نصائح احترافية من الميدان + +- **نصيحة احترافية:** إذا كنت تحتاج فقط إلى الأرقام (شائع لأرقام الفواتير)، فعّل وضع الأرقام باستخدام `ocrEngine.getLanguage().setDigits(true);`. هذا يزيل الضوضاء الأبجدية. +- **احذر من:** ملفات PNG الشفافة. أحيانًا تفسر Aspose قناة alpha بشكل خاطئ؛ تحويل الصورة إلى JPEG بخلفية صلبة أولاً يمكن أن يحل مخرجات فارغة غريبة. +- **تذكر:** المستطيل يستخدم نظام إحداثيات الصورة الأصلي، وليس أي مقياس واجهة مستخدم قد تراه على الشاشة. اختبر دائمًا باستخدام الملف الدقيق الذي ستعالجه في الإنتاج. + +## ما التالي؟ + +الآن بعد أن لديك **مثال Aspose OCR Java** قوي لاستخراج مبني على المنطقة، يمكنك توسيعه في عدة اتجاهات مفيدة: + +- **معالجة دفعات:** تكرار عبر مجلد الفواتير، وإعادة استخدام نفس `OcrEngine` لتحسين الإنتاجية. +- **تحقق من البيانات:** تمرير النص المستخرج عبر تعبير نمطي مثل `INV-\\d{5}` للتأكد من أنك حصلت على رقم فاتورة صالح. +- **التكامل مع PDF:** استخدم Aspose.PDF لتراكب النص المستخرج مرة أخرى على المستند الأصلي لتتبع المراجعة. +- **نشر سحابي:** غلف الكود في خدمة REST خفيفة (Spring Boot) حتى تتمكن الأنظمة الأخرى من استدعائه عند الحاجة. + +كل من هذه الخطوات يتضمن بطبيعة الحال نفس المفاهيم الأساسية—**تحميل صورة للـ OCR**، **استخراج النص من منطقة**، ومعالجة النتائج—لذا ستجد الانتقال سهلًا. + +--- + +*برمجة سعيدة! إذا واجهت أي مشاكل، اترك تعليقًا أدناه أو تحقق من منتديات Aspose حيث يشارك المجتمع تعديلات واقعية لتنسيقات صعبة.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/arabic/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/arabic/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..5edca450a --- /dev/null +++ b/ocr/arabic/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-05-03 +description: استخراج النص من صور HEIC باستخدام Aspose OCR في جافا. تعلّم كيفية تحويل + HEIC إلى نص بسرعة مع مثال خطوة بخطوة. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: ar +og_description: استخراج النص من صور HEIC باستخدام Aspose OCR في Java. يوضح لك هذا + الدليل كيفية تحويل HEIC إلى نص في دقائق. +og_title: استخراج النص من HEIC – دليل Java OCR +tags: +- OCR +- Java +- Aspose +title: استخراج النص من HEIC – دليل جافا الكامل +url: /ar/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# استخراج النص من HEIC – دليل Java الكامل + +هل تساءلت يومًا كيف **استخراج النص من HEIC** دون تحويلها أولاً إلى JPEG أو PNG؟ لست وحدك. يواجه العديد من المطورين مشكلة عندما يرسل تطبيق جوال صورة `.heic` ويحتاجون إلى النص المضمّن للفهرسة أو التحليل. الخبر السار؟ باستخدام Aspose OCR for Java يمكنك **استخراج النص من HEIC** مباشرةً—دون الحاجة إلى خطوة تحويل إضافية. + +في هذا الدرس سنوضح لك أيضًا كيفية **تحويل HEIC إلى نص** في خط أنابيب واحد ونظيف، بحيث يمكنك إدراج الشيفرة في أي مشروع Java والبدء في استخراج السلاسل النصية من تلك الصور عالية الكفاءة اليوم. + +![مثال استخراج النص من HEIC](https://example.com/placeholder.png "مثال استخراج النص من HEIC") + +## ما ستتعلمه + +- كيفية إعداد Aspose OCR في مشروع Maven/Gradle. +- الشيفرة الدقيقة بلغة Java اللازمة **لاستخراج النص من HEIC** في الصور. +- لماذا هذه الطريقة أسرع وأقل عرضة للأخطاء مقارنةً بسير عمل من خطوتين `convert‑then‑OCR`. +- الأخطاء الشائعة (مثل نقص حزم اللغات) وكيفية تجنّبها. +- نصائح لتوسيع الحل في سيناريو معالجة دفعات. + +بنهاية الدليل ستتمكن من **تحويل HEIC إلى نص** ببضع أسطر من الشيفرة فقط، وستفهم “السبب” وراء كل خطوة. + +--- + +## المتطلبات المسبقة + +قبل أن نبدأ، تأكد من أن لديك: + +1. **Java 8 أو أعلى** – Aspose OCR يعمل على أي JDK حديث. +2. **Maven أو Gradle** – لسحب مكتبة Aspose OCR تلقائيًا. +3. **صورة HEIC** تريد اختبارها (أعد تسميتها إلى `sample.heic` وضعها في مكان يمكن الوصول إليه). +4. اختياري لكن مفيد: بيئة تطوير متكاملة مثل IntelliJ IDEA أو VS Code. + +لا توجد أدوات خارجية أخرى مطلوبة؛ المكتبة تتعامل مع تنسيق HEIC بشكل أصلي. + +--- + +## الخطوة 1 – إضافة Aspose OCR إلى مشروعك + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **نصيحة احترافية:** حافظ على توافق رقم الإصدار مع إصدارات Aspose الرسمية؛ الإصدارات الأحدث تضيف دعمًا لمتغيرات HEIC إضافية وتحسن دقة اللغات. + +--- + +## الخطوة 2 – تهيئة محرك OCR **لاستخراج النص من HEIC** + +إنشاء مثيل `OcrEngine` هو الخطوة العملية الأولى نحو استخراج النص من HEIC. المحرك ي抽象 جميع عمليات فك الترميز منخفضة المستوى، لذا لا تحتاج للقلق بشأن تنسيق حاوية HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**لماذا هذا مهم:** +HEIC هو تنسيق صورة حديث يعتمد على حاوية HEIF. مكتبات OCR التقليدية تتوقع JPEG/PNG، مما يجبرك على تشغيل خطوة تحويل منفصلة قد تضعف الجودة. الدعم الأصلي من Aspose OCR يتيح لك **استخراج النص من HEIC** في خطوة واحدة، مع الحفاظ على بيانات البكسل الأصلية وتوفير دورات المعالج. + +## الخطوة 3 – تمكين اللغة (اللغات) المطلوبة + +بشكل افتراضي يبحث المحرك عن اللغة الإنجليزية فقط. إذا كنت بحاجة إلى **تحويل HEIC إلى نص** بلغة أخرى، ما عليك سوى تبديل العلامة المناسبة. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **لماذا تمكين اللغات صراحةً؟** +> حزم اللغات تُحمَّل عند الطلب. تمكين ما تحتاجه فقط يقلل من استهلاك الذاكرة ويسرّع عملية التعرف. + +## الخطوة 4 – تشغيل عملية التعرف + +الآن نطلب من المحرك قراءة الصورة وإنتاج سلسلة نصية. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**الناتج المتوقع** (بافتراض أن الصورة تحتوي على العبارة “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +إذا كانت الصورة فارغة أو النص غير قابل للقراءة، سيعيد المحرك `false`، وستظهر لك رسالة الاحتياط. + +## الخطوة 5 – معالجة الحالات الحدية والأسئلة الشائعة + +### ماذا لو كان ملف HEIC تالفًا؟ + +Aspose OCR يرمي استثناء `IOException` عندما لا يستطيع فك تشفير الحاوية. ضع الاستدعاء داخل كتلة `try‑catch` وسجّل الخطأ لفحصه لاحقًا. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### هل يمكنني معالجة ملفات HEIC متعددة دفعةً واحدة؟ + +بالطبع. فقط قم بالتكرار عبر دليل وأعد استخدام نفس مثيل `OcrEngine` لتجنب عبء التهيئة المتكرر. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### هل يقوم هذا أيضًا **بتحويل HEIC إلى نص** للخطوط غير اللاتينية؟ + +نعم—Aspose OCR يدعم العربية، الصينية، السيريالية، والعديد من اللغات الأخرى. ما عليك سوى تمكين علامة اللغة المقابلة (مثال: `engine.getLanguage().setChineseSimplified(true);`). تذكر إضافة ملفات الخطوط المناسبة إذا كنت تعمل على خادم بدون واجهة رسومية. + +## الخطوة 6 – التحقق من النتيجة برمجيًا + +في خط أنابيب الإنتاج غالبًا ما تحتاج إلى التأكد من أن ناتج OCR يفي بحدود جودة معينة. طريقة سريعة هي حساب درجة الثقة (متوفرة في الإصدارات الأحدث) أو ببساطة فحص طول السلسلة المرجعة. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +## مثال كامل يعمل + +فيما يلي الفئة الكاملة الجاهزة للتنفيذ في Java والتي تشمل جميع الخطوات السابقة. الصقها في ملف باسم `HeifExample.java`، عدّل المسار إلى ملف HEIC الخاص بك، وشغّل `javac` + `java` كالمعتاد. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +يجب أن ترى السلسلة المستخرجة مطبوعة في وحدة التحكم، مما يؤكد أنك نجحت في **تحويل HEIC إلى نص**. + +## الخلاصة + +لقد استعرضنا كل ما تحتاجه **لاستخراج النص من HEIC** باستخدام Aspose OCR في Java. من إضافة المكتبة إلى معالجة الحالات الحدية، يوضح الدليل حلاً نظيفًا خطوة واحدة يلغي الحاجة إلى أداة تحويل منفصلة. + +الآن يمكنك: + +- **تحويل HEIC إلى نص** مباشرةً في خدمات الويب، الخلفيات المحمولة، أو وظائف الدفعات. +- توسيع الدعم إلى لغات أخرى بسطر تكوين واحد. +- توسيع العملية بإعادة استخدام نفس `OcrEngine` عبر ملفات متعددة. + +في الخطوة التالية، قد تستكشف **دمج نتيجة OCR في فهرس قابل للبحث** (مثل Elasticsearch) أو **إضافة معالجة مسبقة للصور** لتحسين الدقة في صور HEIC منخفضة التباين. السماء هي الحد—جرّب، قس، وكرر. + +هل لديك أسئلة أو واجهت ملف HEIC صعب؟ اترك تعليقًا أدناه، وبرمجة سعيدة! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/chinese/java/advanced-ocr-techniques/_index.md b/ocr/chinese/java/advanced-ocr-techniques/_index.md index 39476d0c0..c8abe1f7d 100644 --- a/ocr/chinese/java/advanced-ocr-techniques/_index.md +++ b/ocr/chinese/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,16 @@ Aspose.OCR for Java 是光学字符识别 (OCR) 方面的游戏规则改变者 使用 Aspose.OCR 为您的 Java 应用程序提供精确的文本识别能力。集成方便,精度高。 ### [在 Aspose.OCR 中指定允许的字符](./specify-allowed-characters/) 使用 Aspose.OCR for Java 无缝解锁图像中的文本提取。请遵循我们的分步指南以实现高效集成。 +### [如何为 Java OCR 启用 GPU – 完整教程](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +完整教程教您在 Java 中为 Aspose.OCR 启用 GPU 加速,实现更快的 OCR 处理。 +### [在 Java 中创建固定线程池以实现并行 OCR](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +使用 Aspose.OCR for Java 创建固定线程池,实现并行 OCR,提升处理效率。 +### [在 Java 中提升 OCR 准确率 – 完整 Aspose OCR 指南](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +使用 Aspose.OCR for Java 提升 OCR 准确率的完整指南,帮助您实现更高精度的文本识别。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/chinese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/chinese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..f860619c1 --- /dev/null +++ b/ocr/chinese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-05-03 +description: 在 Java 中创建固定线程池,以快速从图像中提取文本。了解如何运行 OCR,将图像转换为文本,并通过并行 OCR 处理提升性能。 +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: zh +og_description: 在 Java 中创建固定线程池,以快速从图像中提取文本。了解如何运行 OCR,将图像转换为文本,并通过并行 OCR 处理提升性能。 +og_title: 在 Java 中创建固定线程池用于并行 OCR +tags: +- Java +- OCR +- Multithreading +title: 在 Java 中创建固定线程池用于并行 OCR +url: /zh/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 为 Java 创建固定线程池以实现并行 OCR + +是否曾需要 **创建固定线程池** 来加速 OCR 任务,却不知从何入手?你并不孤单。在许多以图像为主的项目中,瓶颈往往是单线程的 OCR 调用,而解决方案出奇地简单:启动一个工作线程池,让它们并行处理文件。 + +在本教程中,你将学习如何使用 Aspose OCR **从图像中提取文本**、如何 **高效运行 OCR**,以及如何 **将图像转换为文本** 而不让 CPU 爆炸。完成后,你将拥有一个可直接运行的 Java 程序,演示 **并行 OCR 处理** 在若干示例图片上的效果。 + +## 你将构建的内容 + +我们将组合一个小型控制台应用程序,功能包括: + +* 读取一组图像路径(PNG、JPG、TIFF、BMP)。 +* **创建一个固定线程池**,大小与 CPU 核心数相同。 +* 为每张图像分配一个 OCR 任务。 +* 收集识别出的文本并打印到控制台。 +* 干净地关闭执行器。 + +不需要外部构建工具,也不需要花哨的框架——只需纯 Java 与 Aspose OCR 库。如果你有 Java 8+ 和一个不错的 IDE,就可以开始了。 + +## 前置条件 + +* **Java Development Kit (JDK) 8 或更高** —— 代码使用了 lambda 表达式,旧版本无法编译。 +* **Aspose OCR for Java** —— 从 Aspose 官网下载 JAR,或通过 Maven 引入 (`com.aspose:aspose-ocr`)。 +* 包含若干测试图片的文件夹(代码中指向 `YOUR_DIRECTORY`)。 +* 对 Java 并发有基本了解(其余内容我们会解释)。 + +> *小技巧:* 如果使用 Maven,将依赖添加到 `pom.xml`,让 IDE 自动处理类路径。 + +--- + +## 第一步:添加所需的导入 + +首先,将需要的类导入到作用域中。这不仅是样板代码;每个导入都告诉 JVM 在哪里找到 OCR 引擎、图像处理工具以及能够 **创建固定线程池** 实例的并发工具。 + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – 核心 OCR API。 +* `java.util.*` – 用于存储图像路径和结果的集合。 +* `java.util.concurrent.*` – 包含 `ExecutorService` 和 `Future` 的并发包。 + +--- + +## 第二步:定义要处理的图像 + +接下来,列出我们想要 **从图像中提取文本** 的文件。使用 `Arrays.asList` 能让代码保持简洁,并且可以在不修改其余逻辑的情况下替换为自己的目录。 + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +随意添加更多条目;线程池会根据 CPU 核心数自动扩展。 + +--- + +## 第三步:**创建固定线程池** 与 CPU 核心数匹配 + +这一步是本教程的核心。我们查询运行时可用的核心数,并让 `Executors` 工厂创建恰好这么大的线程池。为什么要固定?因为可预测的线程数量可以防止“线程爆炸”,避免耗尽操作系统资源。 + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` 返回逻辑核心数(包括超线程)。 +* `newFixedThreadPool(coreCount)` 确保我们永远不会超出 CPU 的承载能力,这是 **并行运行 OCR** 最安全的方式。 + +--- + +## 第四步:为每张图像提交 OCR 任务 + +现在把每个文件路径转换为一个 callable,**运行 OCR**、识别文本并返回结果。注意我们在 lambda 中实例化全新的 `OcrEngine`——这避免了引擎状态的线程不安全共享。 + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* 每次 `submit` 调用都会把 lambda 交给线程池,由空闲线程调度执行。 +* `Future` 对象让我们稍后检索识别出的文本,并在需要时保持顺序。 + +--- + +## 第五步:获取并显示识别的文本 + +所有任务排队后,只需遍历 `Future` 列表,调用 `get()` 阻塞等待每个 OCR 作业完成。这就是 **将图像转换为文本** 的实际表现:`engine.getText()` 调用返回原始字符串。 + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +典型的控制台输出如下: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +如果文件处理失败(例如文件损坏),你会看到以 `Failed:` 开头的行,后面跟着文件路径——这对快速调试非常有帮助。 + +--- + +## 第六步:清理 Executor Service + +切记要关闭线程池,否则 JVM 可能会因为仍有工作未完成而挂起。优雅的关闭会让正在运行的任务完成后再退出进程。 + +```java +executor.shutdown(); +``` + +如果需要强制超时,你也可以调用 `awaitTermination`,但对大多数命令行工具来说,直接 `shutdown()` 已足够。 + +--- + +## 完整可运行示例 + +下面是完整的、可直接运行的程序。将其复制粘贴到名为 `ParallelOcrTutorial.java` 的文件中,调整图像路径后,像往常一样使用 `javac` + `java` 编译运行。 + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**预期结果:** 每张图片的文本内容会按 `imagePaths` 列表的顺序打印到控制台。如果某张图片无法处理,则会显示失败提示,而不是空行。 + +--- + +## 常见问题与边缘情况 + +### 如果图片数量多于线程数怎么办? + +固定线程池会自动将多余的任务排队。线程完成当前 OCR 作业后,会立即取出下一个任务。这种排队行为正是 **并行 OCR 处理** 的精髓——在不压垮 CPU 的前提下实现最大吞吐量。 + +### 能否更改识别语言? + +完全可以。将 `engine.getLanguage().setEnglish(true);` 替换为相应的语言标识,例如 `setFrench(true)`,或在 `recognize()` 前调用多个 setter 以启用多语言识别。 + +### 如何处理非常大的图像? + +大文件会在每个线程中占用大量内存。如果出现 `OutOfMemoryError`,可以在送入引擎前先将图像缩小,或使用 `-Xmx` 增大堆内存。另一种做法是改用 **cached 线程池**(` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/chinese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/chinese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..bb5fb2977 --- /dev/null +++ b/ocr/chinese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-05-03 +description: 快速启用 Java OCR 的 GPU – 学习使用 Aspose OCR 从图像中提取文本。完整的 Java OCR 教程已包含。 +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: zh +og_description: 如何在几分钟内为 Java OCR 启用 GPU。本教程展示了如何使用带 GPU 加速的 Java OCR 教程从图像中提取文本。 +og_title: 如何为 Java OCR 启用 GPU – 步骤指南 +tags: +- Java +- OCR +- GPU +- Aspose +title: 如何为 Java OCR 启用 GPU – 完整教程 +url: /zh/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何为 Java OCR 启用 GPU – 完整教程 + +是否曾经想过 **如何在提取图片文字时启用 GPU**?如果你曾经需要对高分辨率扫描件进行 OCR,却发现 CPU 速度慢得像停摆一样,你并不孤单。在本指南中,我们将通过一个 **java ocr tutorial**,不仅展示如何提取文字,还演示通过开启实验性的 GPU 支持,以 **recognize text image java** 方式实现最快的文字识别。 + +我们将首先引入 Aspose OCR 库,然后启用 GPU,加载示例图片,最后从文件中获取识别后的字符串。完成后,你将拥有一个可直接放入任何 Maven 项目的可运行代码片段,并且了解 GPU 为什么重要、何时可能无效以及如何排查常见问题。无需外部文档——所有内容都在这里。 + +--- + +## 你需要准备的东西 + +- **Java Development Kit (JDK) 8+** – 代码可在任何现代 JDK 上运行。 +- **Maven**(或 Gradle)用于获取 Aspose OCR 依赖。 +- 一台 **支持 GPU 的机器**(CUDA‑enabled NVIDIA 显卡效果最佳,但 Aspose API 会优雅地回退)。 +- 一个示例图片,例如 `sample-highres.png`,放在可引用的文件夹中。 +- 对 **image to text conversion java** 技术的好奇心。 + +如果缺少上述任意项,请从 Oracle 或 OpenJDK 下载 JDK,安装 Maven,并确保显卡驱动是最新的。准备工作就这些,剩下的全是纯 Java。 + +--- + +## 第一步:将 Aspose OCR 添加到项目中 + +首先,需要 OCR 引擎本身。Aspose 提供了简洁的 Maven 构件,只需将以下代码片段放入 `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +如果你更喜欢 Gradle,等价写法是: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +依赖解析完成后,你就可以使用 `OcrEngine`、`ImageStream` 以及让 **java ocr tutorial** 变得轻松的语言助手了。 + +--- + +## 第二步:如何启用 GPU(核心关键词演示) + +现在进入关键环节:为 OCR 引擎 **如何启用 GPU**。Aspose API 暴露了一个布尔标志——`setUseGpu(true)`。它仍属实验性功能,但在一块不错的显卡上,你会看到识别时间显著下降,尤其是对大型高分辨率图像。 + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **小技巧:** 如果你的环境没有兼容的 GPU,标志会被静默忽略,引擎会回退到 CPU 模式。不会崩溃,只是速度慢一些。 + +--- + +## 第三步:加载要处理的图片 + +OCR 引擎使用 `ImageStream`。将其指向你想要从图片转换为纯文本的文件。下面是一种简洁的写法: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +确保路径是绝对路径或相对于项目工作目录的相对路径。如果文件未找到,会抛出 `IOException`——我们稍后会捕获它。 + +--- + +## 第四步:选择语言(可选但推荐) + +Aspose OCR 支持多种字母表,但最好显式指定期望的语言。对于英文,只需一行代码: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +如果需要法语或中文,只需替换相应的标志(`setFrench(true)`、`setChineseSimplified(true)` 等)。这个小提示常常能提升准确率,因为引擎可以剔除不太可能的字符候选。 + +--- + +## 第五步:Recognize Text Image Java – 运行引擎 + +关键时刻到来了:**recognize text image java** 风格。我们调用 `recognize()`,如果返回 `true`,就用 `getText()` 获取结果字符串。 + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +输出将是从 `sample-highres.png` 中提取的原始文本。若想得到更整洁的文档,可能需要对字符串进行后处理(去除空白、替换换行符等)。下面是一个快速示例: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## 第六步:完整可运行示例(复制粘贴即用) + +下面是完整的 **java ocr tutorial**,可直接编译运行。它包含错误处理并打印预期输出。 + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**预期输出(示例):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +如果图片包含多行,它们会以换行符(`\n`)分隔。引擎会尽可能保留原始布局。 + +--- + +## 第七步:边缘情况、技巧与常见问题 + +### 如果未检测到 GPU 怎么办? + +当找不到兼容设备时,Aspose 会静默关闭 GPU 支持。你可以在初始化后检查该标志的值: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +如果打印出 `false`,请再次确认驱动版本以及 `CUDA` 运行时是否已加入 `PATH`。 + +### GPU 对小图片有帮助吗? + +不一定。将小位图传输到 GPU 的开销可能超过加速收益。对于小于 500 KB 的图片,可能会出现轻微的速度下降。这种情况下,只需设置 `setUseGpu(false)`。 + +### 如何处理多语言文档? + +可以同时启用多种语言: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +引擎会尝试匹配任意集合中的字符,适用于双语 PDF 等场景。 + +### 能直接处理 PDF 吗? + +Aspose OCR 只能处理图像流,因此需要先将每页 PDF 光栅化(例如使用 Aspose PDF 或 PDFBox),然后将得到的 `BufferedImage` 传给 `setImage`。 + +--- + +## 可视化概览 + +![如何为 Java OCR 引擎启用 GPU](/images/gpu-ocr.png "展示 GPU 加速 OCR 流程的示意图") + +*该图示意了从图片加载 → GPU‑enabled OCR → 文本提取的整个流程。* + +--- + +## 结论 + +我们已经覆盖了 **如何为 Java OCR 工作流启用 GPU**,完整演示了 **java ocr tutorial**,并在实际可复制的示例中展示了 **image to text conversion java**。只需切换一个标志,就能在处理大批量扫描件时节省数秒甚至数分钟,使你的应用更加流畅、响应更快。 + +接下来可以尝试在循环中批量处理图片,实验不同语言,或将其与 Apache Tika 结合,实现自动索引提取的文本。将 GPU 加速的 OCR 与其他 Java 库结合,天地无限。 + +对 **如何从棘手图片中提取文字** 有疑问,或想了解更多 **recognize text image java** 的技巧?在下方留言吧,祝编码愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/chinese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/chinese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..d3e622de6 --- /dev/null +++ b/ocr/chinese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-05-03 +description: 使用 Aspose OCR Java 快速提升 OCR 准确率。了解如何加载图像进行 OCR、启用语言以及在几步内应用强力拼写纠正。 +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: zh +og_description: 使用 Aspose OCR Java 即时提升 OCR 准确率。本指南展示如何加载图像进行 OCR、启用语言以及使用激进的拼写纠正。 +og_title: 在 Java 中提升 OCR 准确率 – Aspose OCR 分步教程 +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: 在 Java 中提升 OCR 准确率 – 完整的 Aspose OCR 指南 +url: /zh/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 Java 中提升 OCR 准确率 – 完整 Aspose OCR 指南 + +是否曾经想过为什么你的 OCR 结果看起来像是小孩的涂鸦?如果你正遭遇漏字、错误单词或彻底的乱码,你并不孤单。**提升 OCR 准确率** 是大多数开发者在文本提取不可靠时首先想到的措施。 + +在本教程中,我们将演示一个实用方案,不仅**加载图像进行 OCR**,还利用 Aspose 内置的拼写纠正引擎来显著提升质量。完成后,你将拥有一个可直接运行的 Java 程序,能够识别英文 + 法文文本并进行激进纠正——无需外部词典。 + +## 你将学到 + +- 如何使用 Aspose 的 `ImageStream` **加载图像进行 OCR**。 +- 为什么启用正确的语言对准确率至关重要。 +- 激进拼写纠正在多语言文档中的影响。 +- 一个完整、可运行的代码示例,可直接放入任意 Maven/Gradle 项目。 +- 提示、常见陷阱以及扩展此方法的后续思路。 + +> **先决条件** – Java 8 或更高版本、最新的 Aspose.OCR for Java JAR(v23.12 或更高),以及一张包含英文和法文文本的图像文件(`multilingual.png`)。仅此即可——无需额外模型或 API。 + +--- + +## 提升 OCR 准确率:配置 Aspose OCR 引擎 + +任何 OCR 流程的核心都是引擎配置。通过明确告知 Aspose 你的期待,你就为它提供了正确输出的机会。 + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**为何这很重要:** +- **引擎实例** – `OcrEngine` 保存所有设置;每次创建新实例可避免前一次运行的状态泄漏。 +- **图像加载** – 使用 `ImageStream.fromFile` 是**加载图像进行 OCR**最直接的方式,开箱即支持 PNG、JPEG、BMP 和 TIFF。 +- **语言标记** – 开启英文 + 法文会让识别器使用相应的字符集和语言模型,仅此即可提升 10‑15 % 的准确率。 +- **激进拼写纠正** – 将 `SpellCorrectionLevel.AGGRESSIVE` 设置为激进模式,可让内部词典重写可疑单词,这是在噪声扫描上**提升 OCR 准确率**的关键杠杆。 + +--- + +## 加载图像进行 OCR – 设置源文件 + +在引擎能够工作之前,它需要一张位图。如果你提供的是损坏的流或错误的路径,异常会在你说出“空指针”之前抛出。 + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**专业提示:** 若处理用户上传的图片,请将加载逻辑包装在 try‑catch 块中,并先验证文件大小/格式。这可以防止引擎在面对巨大的 PDF 或不受支持的格式时卡死。 + +--- + +## 启用多语言以获得更佳识别 + +大多数 OCR 库默认仅支持英文。当文档混合多语言时,错误字符会激增。Aspose 让切换额外语言变得轻而易举。 + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**为何要启用不止一种语言?** +- **字符集扩展** – 法文包含诸如 “é” 与 “ç” 的重音字母。若未开启法文标记,这些字符会被降为 “e” 或 “c”,进而干扰拼写纠正。 +- **上下文提示** – OCR 引擎利用语言模型预测词边界;双语模型可减少错误拆分。 + +--- + +## 应用激进拼写纠正 + +拼写纠正不仅是“锦上添花”,在需要**提升 OCR 准确率**的低质量扫描中,它是改变游戏规则的关键。 + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### 各级别概览 + +| 级别 | 行为说明 | +|------------|----------------------------------------------| +| **NONE** | 不进行纠正 – 仅返回原始引擎输出。 | +| **LIGHT** | 修正明显的拼写错误,过度纠正的风险低。 | +| **AGGRESSIVE** | 积极进行词典查找;最适合噪声图像。 | + +**注意:** 激进模式可能会改写合法的专有名词(例如 “McDonald” → “Mcdonald”)。如果你的业务领域包含大量人名,请考虑后置过滤。 + +--- + +## 运行识别并验证输出 + +一切就绪后,就该让 Aspose 承担繁重工作了。 + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### 预期输出(示例) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +如果看到乱码,请检查: + +1. 图像质量(模糊或低 DPI 图像会降低准确率)。 +2. 语言标记 – 未启用法文会导致重音缺失。 +3. 拼写纠正级别 – 若出现过度纠正,可尝试 `LIGHT`。 + +--- + +## 完整可运行示例(所有步骤合并在一个文件) + +下面是完整程序,可直接编译运行。保存为 `SpellCorrectionTutorial.java`,根据实际情况修改图像路径,然后使用 `javac && java` 执行。 + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +编译并运行: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +你应当在控制台看到已纠正的多语言文本。 + +--- + +## 常见陷阱及规避方法 + +| 症状 | 可能原因 | 解决方案 | +|---------|--------------|-----| +| **输出为空** | 图像路径错误或文件不可读 | 检查 `ImageStream.fromFile` 路径;加入文件存在性检查。 | +| **缺少重音** | 法文语言未启用 | 调用 `ocrEngine.getLanguage().setFrench(true)`。 | +| **出现乱码字符** | 低分辨率图像(< 150 dpi) | 放大或重新扫描为更高 DPI;考虑使用图像增强库进行预处理。 | +| **名称被过度纠正** | 对专有名词使用激进拼写纠正 | 使用已知名称白名单进行后置处理,或切换为 `LIGHT` 级别。 | + +--- + +## 下一步:扩展你的 OCR 流程 + +- **批量处理:** 遍历目录下的图片,复用单个 `OcrEngine` 实例以提升性能。 +- **PDF 提取:** 使用 Aspose.PDF 将每页转换为图像,再喂入 OCR 引擎。 +- **自定义词典:** 若业务涉及专业术语(医学、法律),可通过 `ocrEngine.getSpellCorrector().addUserDictionary(...)` 导入自定义词表。 +- **并行化:** Java 的 `ForkJoinPool` 可并发执行多个 OCR 任务,但需留意内存占用,因为每个引擎都会持有图像缓冲区。 + +--- + +![Improve OCR accuracy example](/images/ocr-example.png){alt="提升 OCR 准确率的截图,展示已纠正的多语言文本"} + +--- + +## 结论 + +我们已经**提升了 OCR + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/chinese/java/ocr-operations/_index.md b/ocr/chinese/java/ocr-operations/_index.md index 9a42ca032..48a1ad61e 100644 --- a/ocr/chinese/java/ocr-operations/_index.md +++ b/ocr/chinese/java/ocr-operations/_index.md @@ -80,6 +80,10 @@ weight: 21 利用 Aspose.OCR 在 Java 中实现强大的文本识别。轻松识别 TIFF 图像中的文本。立即下载,获得无缝的 OCR 体验。 ### [使用 Aspose OCR 识别图像文本 – 完整 Java OCR 教程](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) 完整的 Java 示例,演示如何使用 Aspose OCR 识别图像中的文本并导出结果。 +### [Aspose OCR Java 示例:从区域提取文本](./aspose-ocr-java-example-extract-text-from-a-region/) +演示如何使用 Aspose OCR for Java 从图像的特定区域提取文本的完整示例。 +### [从 HEIC 提取文本 – 完整 Java 指南](./extract-text-from-heic-complete-java-guide/) +完整的 Java 示例,展示如何使用 Aspose.OCR 读取 HEIC 图像并提取其中的文本。 ## 常见问题 diff --git a/ocr/chinese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/chinese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..a7a3eb2b8 --- /dev/null +++ b/ocr/chinese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,171 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java 示例展示了如何加载图像进行 OCR,并仅用几行代码从区域提取文本。 +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: zh +og_description: Aspose OCR Java 示例演示了加载图像进行 OCR 并从特定区域提取文本,非常适合发票处理。 +og_title: Aspose OCR Java 示例 – 区域文本提取 +tags: +- Aspose OCR +- Java +- Image Processing +title: Aspose OCR Java 示例:从区域提取文本 +url: /zh/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java 示例:从区域提取文本 + +在寻找一个 **Aspose OCR Java 示例**,让您只提取图像中所需的部分吗?在本指南中,我们将演示 **加载图像进行 OCR** 和 **从区域提取文本**,非常适合发票号码、表单字段或任何隐藏在更大图片中的数据。 + +您可能会想,为什么要把 OCR 限制在一个矩形区域,而不是扫描整页?简短的答案是:速度和准确性。当引擎只查看定义好的切片时,它会跳过无关噪声,运行更快,并且通常产生更干净的结果。通过本教程,您将拥有一个完整的 Java 程序来实现这一点,并附带一些避免新手常见陷阱的技巧。 + +## 您需要的环境 + +- **Java Development Kit (JDK) 11** 或更高版本已安装。 +- **Aspose.OCR for Java** 库(可从 Maven Central 仓库或 Aspose 下载门户获取最新 JAR)。 +- 包含您想读取的文本的图像文件——演示中我们使用 `invoice.png`,其中发票号码位于右上角附近。 +- 您喜欢的 IDE 或一个简单的文本编辑器加终端;任意构建工具(Maven、Gradle 或纯 `javac`)均可。 + +就这些。无需额外的 OCR 引擎、无需本地二进制文件,仅需纯 Java 与 Aspose。 + +![Aspose OCR Java 示例截图](/images/aspose-ocr-java-example.png "Aspose OCR Java 示例显示区域提取") + +## Aspose OCR Java 示例 – 初始化 OCR 引擎 + +任何 OCR 工作流的第一步都是创建引擎实例。Aspose 提供了轻量级的 `OcrEngine` 类,负责从图像加载到语言选择的全部工作。 + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Why this matters:** 创建引擎实例后,您拥有一个干净的对象可供配置。如果要批量处理多张图片,可以复用同一个 `OcrEngine`,从而节省内存和初始化时间。 + +## 加载图像进行 OCR + +接下来我们告诉引擎要扫描哪张图片。Aspose 提供了 `ImageStream.fromFile` 辅助方法,抽象掉了底层的 `FileInputStream` 样板代码。 + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tip:** 将 `YOUR_DIRECTORY` 替换为指向存放 `invoice.png` 的绝对路径或相对路径。如果文件未找到,Aspose 会抛出 `IOException`,因此在生产代码中建议使用 try‑catch 包裹。 + +## 定义并从区域提取文本 + +现在轮到本教程的明星:告诉引擎要查看的矩形区域。`java.awt.Rectangle` 构造函数接受 `(x, y, width, height)`——全部以像素为单位。 + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**How it works:** 通过调用 `setRegion`,您将 OCR 扫描限制在宽度为 300 像素、左边距 120 像素、顶部距 250 像素的切片上。根据自己的布局调整这些数值;快速获取方法是使用任意显示像素坐标的图形编辑器打开图片。 + +## 启用语言并运行识别 + +Aspose OCR 支持数十种语言,但对于发票号码我们只需要英文。启用正确的语言可以显著降低误报。 + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Why enable English only?** OCR 引擎会尝试匹配所有已启用语言集合中的字符,这在处理仅包含字母数字的简单文本时会导致混淆。限定语言范围可提升速度和精度。 + +### 预期输出 + +当一切配置正确时,您会看到类似如下的输出: + +``` +Extracted region text: INV-12345 +``` + +如果矩形区域偏离几像素,输出可能会出现乱码或为空。这是一个简单的检查方法:运行程序,查看控制台,确认文本与图像中看到的内容一致。 + +## 运行代码并验证输出 + +假设您使用 Maven,在 `pom.xml` 中添加 Aspose OCR 依赖: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +编译并执行: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +或者,如果您更喜欢使用纯 `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +您应该会在控制台看到 **Extracted region text** 行。如果出现 “OCR recognition failed”,请再次检查文件路径,并确保该区域确实包含可读字符。 + +## 边缘情况与常见变体 + +| Situation | What to Change | +|-----------|----------------| +| **Multiple languages** (e.g., English + Spanish) | Call `ocrEngine.getLanguage().setSpanish(true);` alongside English. | +| **Region outside image bounds** | Aspose will silently clip the rectangle, but you’ll lose data. Use `ImageInfo` (`ocrEngine.getImage().getWidth()`) to verify dimensions before setting the region. | +| **Dynamic invoices** (different layouts) | Consider running a lightweight pre‑scan on the whole image to locate keywords like “Invoice #” and then compute the rectangle programmatically. | +| **Higher DPI images** | Increase `ocrEngine.getImage().setResolution(300);` for better accuracy on scanned documents. | +| **Performance tuning** | Disable unnecessary languages, keep the region as small as possible, and reuse a single `OcrEngine` instance across many files. | + +## 实战技巧 + +- **Pro tip:** 如果只需要数字(发票号码常见),可通过 `ocrEngine.getLanguage().setDigits(true);` 启用数字模式。这会消除字母噪声。 +- **Watch out for:** 透明 PNG。Aspose 有时会误判 alpha 通道;先将图像转换为实色背景的 JPEG 可解决奇怪的空白输出。 +- **Remember:** 矩形使用的是图像的原始坐标系,而非屏幕上可能看到的 UI 缩放。务必使用生产中实际处理的文件进行测试。 + +## 接下来做什么? + +现在您已经掌握了一个可靠的 **Aspose OCR Java 示例** 用于基于区域的提取,接下来可以向以下方向扩展: + +- **Batch processing:** Loop over a folder of invoices, reusing the same `OcrEngine` to improve throughput. +- **Data validation:** Pipe the extracted text through a regex like `INV-\\d{5}` to ensure you captured a valid invoice number. +- **Integration with PDF:** Use Aspose.PDF to overlay the extracted text back onto the original document for audit trails. +- **Cloud deployment:** Wrap the code in a lightweight REST service (Spring Boot) so other systems can call it on demand. + +每一步都自然涉及相同的核心概念——**加载图像进行 OCR**、**从区域提取文本**,以及处理结果——因此转变过程会非常顺畅。 + +--- + +*Happy coding! If you hit any snags, drop a comment below or check the Aspose forums where the community shares real‑world tweaks for tricky layouts.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/chinese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/chinese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..2a114159d --- /dev/null +++ b/ocr/chinese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-05-03 +description: 使用 Aspose OCR 在 Java 中提取 HEIC 图像中的文本。了解如何通过一步步示例快速将 HEIC 转换为文本。 +draft: false +keywords: +- extract text from heic +- convert heic to text +language: zh +og_description: 使用 Aspose OCR 在 Java 中从 HEIC 图像提取文本。本指南向您展示如何在几分钟内将 HEIC 转换为文本。 +og_title: 从 HEIC 中提取文本 – Java OCR 教程 +tags: +- OCR +- Java +- Aspose +title: 从 HEIC 中提取文本 – 完整 Java 指南 +url: /zh/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 从 HEIC 中提取文本 – 完整 Java 指南 + +是否曾想过在不先将 **HEIC** 文件转换为 JPEG 或 PNG 的情况下 **从 HEIC 中提取文本**?你并不孤单。许多开发者在移动应用交付 `.heic` 照片时卡住,因为他们需要提取其中的嵌入文本用于索引或分析。好消息是?使用 Aspose OCR for Java,你可以 **直接从 HEIC 中提取文本**——无需额外的转换步骤。 + +在本教程中,我们还将展示如何在单个、简洁的流水线中 **将 HEIC 转换为文本**,这样你可以将代码直接嵌入任何 Java 项目,并立即开始从这些高效图像中提取字符串。 + +![extract text from heic example](https://example.com/placeholder.png "extract text from heic example") + +## 你将学到 + +- 如何在 Maven/Gradle 项目中设置 Aspose OCR。 +- 提取 **HEIC 中文本** 所需的完整 Java 代码。 +- 为什么这种方法比两步 `convert‑then‑OCR` 工作流更快且更少出错。 +- 常见陷阱(例如缺少语言包)以及如何规避。 +- 在批量处理场景中扩展解决方案的技巧。 + +阅读完本指南后,你将能够仅用几行代码 **将 HEIC 转换为文本**,并且了解每一步背后的“为什么”。 + +--- + +## 前置条件 + +在开始之前,请确保你具备以下条件: + +1. **Java 8 或更高版本** – Aspose OCR 可在任何现代 JDK 上运行。 +2. **Maven 或 Gradle** – 用于自动拉取 Aspose OCR 库。 +3. 一个你想测试的 **HEIC 图像**(将其重命名为 `sample.heic` 并放在可访问的位置)。 +4. 可选但便利的 IDE,如 IntelliJ IDEA 或 VS Code。 + +除此之外不需要其他外部工具;库本身原生支持 HEIC 格式。 + +--- + +## 第一步 – 将 Aspose OCR 添加到项目中 + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **小贴士:** 请保持版本号与官方 Aspose 发布保持同步;更新的版本会增加对更多 HEIC 变体的支持并提升语言识别准确度。 + +--- + +## 第二步 – 初始化 OCR 引擎以 **从 HEIC 中提取文本** + +创建 `OcrEngine` 实例是开始从 HEIC 提取文本的第一步。引擎会抽象所有底层解码细节,你无需关心 HEIC 容器格式。 + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**为什么这很重要:** +HEIC 是基于 HEIF 容器的现代图像格式。传统 OCR 库只能处理 JPEG/PNG,迫使你进行一次额外的转换步骤,可能导致质量下降。Aspose OCR 的原生支持让你 **一次性从 HEIC 中提取文本**,既保留了原始像素数据,又节省了 CPU 资源。 + +--- + +## 第三步 – 启用所需语言 + +默认情况下,引擎仅加载英文。如果你需要在其他语言下 **将 HEIC 转换为文本**,只需切换相应的标识即可。 + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **为什么要显式启用语言?** +> 语言包按需加载。仅启用所需语言可以降低内存占用并加快识别速度。 + +--- + +## 第四步 – 运行识别过程 + +现在让引擎读取图像并生成字符串。 + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**预期输出**(假设图像中包含短语 “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +如果图像为空或文本不可读,引擎会返回 `false`,并显示回退信息。 + +--- + +## 第五步 – 处理边缘情况与常见问题 + +### 如果 HEIC 文件损坏怎么办? + +当无法解码容器时,Aspose OCR 会抛出 `IOException`。请将调用包装在 `try‑catch` 块中,并记录错误以供后续检查。 + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### 能否批量处理多个 HEIC 文件? + +完全可以。只需遍历目录并复用同一个 `OcrEngine` 实例,以避免重复初始化带来的开销。 + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### 这是否也能 **将 HEIC 转换为文本** 用于非拉丁脚本? + +可以——Aspose OCR 支持阿拉伯语、中文、俄语等多种语言。只需启用对应的语言标识(例如 `engine.getLanguage().setChineseSimplified(true);`)。在无头服务器上运行时,请记得添加相应的字体文件。 + +--- + +## 第六步 – 以编程方式验证结果 + +在生产流水线中,你通常需要断言 OCR 输出满足一定的质量阈值。一个快速方法是计算置信度分数(在新版中可用),或直接检查返回字符串的长度。 + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## 完整可运行示例 + +下面是整合了上述所有步骤的完整 Java 类。将其粘贴到名为 `HeifExample.java` 的文件中,调整 HEIC 文件路径后,按常规方式运行 `javac` + `java`。 + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +运行它: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +你应该会在控制台看到提取的字符串,证明已成功 **将 HEIC 转换为文本**。 + +--- + +## 结论 + +我们已经完整演示了如何使用 Aspose OCR 在 Java 中 **从 HEIC 中提取文本**。从添加库到处理边缘情况,本文提供了一个干净的单步解决方案,省去了额外的转换工具。 + +现在你可以: + +- 在 Web 服务、移动后端或批处理作业中 **实时将 HEIC 转换为文本**。 +- 通过一行配置即可扩展对其他语言的支持。 +- 通过复用同一个 `OcrEngine` 实例来实现大规模文件的处理。 + +接下来,你可以探索 **将 OCR 结果嵌入可搜索索引**(如 Elasticsearch)或 **添加图像预处理** 以提升低对比度 HEIC 照片的识别准确度。可能性无限——多实验、多测量、不断迭代。 + +有问题或遇到棘手的 HEIC 文件?在下方留言,我们一起交流,祝编码愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/czech/java/advanced-ocr-techniques/_index.md b/ocr/czech/java/advanced-ocr-techniques/_index.md index 3df19dc35..5d5ba0f1e 100644 --- a/ocr/czech/java/advanced-ocr-techniques/_index.md +++ b/ocr/czech/java/advanced-ocr-techniques/_index.md @@ -23,7 +23,7 @@ Aspose.OCR for Java mění hru, pokud jde o optické rozpoznávání znaků (OCR ## [Provádění OCR na BufferedImage v Aspose.OCR pro Java](./perform-ocr-buffered-image/) -tomto tutoriálu vás provedeme procesem provádění OCR na BufferedImage pomocí Aspose.OCR for Java. Naučte se, jak bez námahy extrahovat text z obrázků, a zajistit tak všestranné rozpoznávání textu. Stáhněte si nyní a vylepšete své Java aplikace. +tomuto tutoriálu vás provedeme procesem provádění OCR na BufferedImage pomocí Aspose.OCR for Java. Naučte se, jak bez námahy extrahovat text z obrázků, a zajistit tak všestranné rozpoznávání textu. Stáhněte si nyní a vylepšete své Java aplikace. ## [Provádění OCR na obrázku z URL v Aspose.OCR pro Java](./perform-ocr-image-from-url/) @@ -61,9 +61,16 @@ Odemkněte sílu rozpoznávání textu s Aspose.OCR pro Java. Postupujte podle n Vylepšete své Java aplikace pomocí Aspose.OCR pro přesné rozpoznávání textu. Snadná integrace, vysoká přesnost. ### [Určení povolených znaků v Aspose.OCR](./specify-allowed-characters/) Odemkněte bez problémů extrakci textu z obrázků pomocí Aspose.OCR pro Java. Pro efektivní integraci postupujte podle našeho podrobného průvodce. +### [Jak povolit GPU pro Java OCR – Kompletní tutoriál](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Naučte se, jak aktivovat GPU akceleraci v Aspose.OCR pro Java a výrazně zrychlit rozpoznávání textu. +### [Vytvoření pevného thread poolu pro paralelní OCR v Javě](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Naučte se, jak vytvořit pevný thread pool pro paralelní zpracování OCR v Javě a zvýšit výkon rozpoznávání textu. +### [Zlepšení přesnosti OCR v Javě – Kompletní průvodce Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Zvyšte přesnost rozpoznávání textu v Javě pomocí podrobného průvodce Aspose OCR. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/czech/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/czech/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..4d4894cb1 --- /dev/null +++ b/ocr/czech/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,217 @@ +--- +category: general +date: 2026-05-03 +description: Vytvořte pevný pool vláken v Javě pro rychlé získávání textu z obrázků. + Naučte se spouštět OCR, převádět obrázek na text a zvyšovat výkon pomocí paralelního + zpracování OCR. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: cs +og_description: Vytvořte pevný pool vláken v Javě pro rychlé získávání textu z obrázků. + Naučte se, jak spustit OCR, převést obrázek na text a zvýšit výkon pomocí paralelního + zpracování OCR. +og_title: Vytvořte pevný pool vláken pro paralelní OCR v Javě +tags: +- Java +- OCR +- Multithreading +title: Vytvořte pevný pool vláken pro paralelní OCR v Javě +url: /cs/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření pevného thread poolu pro paralelní OCR v Javě + +Už jste někdy potřebovali **create fixed thread pool** pro zrychlení OCR úloh, ale nebyli jste si jisti, kde začít? Nejste v tom sami. V mnoha projektech s velkým množstvím obrázků je úzkým místem jednovláknové volání OCR a řešení je překvapivě jednoduché: spustit pool pracovních vláken a nechat je zpracovávat soubory paralelně. + +V tomto tutoriálu se naučíte, jak **extract text from images** pomocí Aspose OCR, jak **run OCR** efektivně a jak **convert image to text** bez přetížení CPU. Na konci budete mít připravený Java program, který demonstruje **parallel OCR processing** na několika ukázkových obrázcích. + +## Co vytvoříte + +Sestavíme malou konzolovou aplikaci, která: + +* Načte seznam cest k obrázkům (PNG, JPG, TIFF, BMP). +* **Creates a fixed thread pool** vytvořený podle počtu jader CPU. +* Spustí OCR úlohu pro každý obrázek. +* Shromáždí rozpoznaný text a vypíše jej do konzole. +* Čistě ukončí executor. + +Žádné externí nástroje pro sestavení, žádné složité frameworky — jen čistá Java a knihovna Aspose OCR. Pokud máte Java 8+ a slušné IDE, jste připraveni. + +## Požadavky + +* **Java Development Kit (JDK) 8 or newer** – kód používá lambda výrazy, takže starší verze se nebudou kompilovat. +* **Aspose OCR for Java** – stáhněte JAR z webu Aspose nebo jej přidejte pomocí Maven (`com.aspose:aspose-ocr`). +* Složka s několika testovacími obrázky (kód odkazuje na `YOUR_DIRECTORY`). +* Základní znalost Java concurrency (zbytek vysvětlíme). + +> *Pro tip:* Pokud používáte Maven, přidejte závislost do svého `pom.xml` a nechte IDE spravovat classpath. + +## Krok 1: Přidejte potřebné importy + +Nejprve přiveďte potřebné třídy do rozsahu. Není to jen boilerplate; každý import říká JVM, kde najít OCR engine, utility pro práci s obrázky a nástroje pro souběžnost, které nám umožňují **create fixed thread pool** instance. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – hlavní OCR API. +* `java.util.*` – kolekce pro ukládání cest k obrázkům a výsledků. +* `java.util.concurrent.*` – balíček pro souběžnost, který obsahuje `ExecutorService` a `Future`. + +## Krok 2: Definujte obrázky ke zpracování + +Dále uvedeme soubory, ze kterých chceme **extract text from images**. Použití `Arrays.asList` udržuje kód stručný a umožňuje nám vyměnit vlastní adresář, aniž bychom zasahovali do zbytku logiky. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Klidně přidejte další položky; thread pool se automaticky přizpůsobí počtu jader CPU, které máte. + +## Krok 3: **Create Fixed Thread Pool** odpovídající počtu jader CPU + +Toto je jádro tutoriálu. Zeptáme se runtime, kolik jader je k dispozici, a požádáme továrnu `Executors`, aby nám poskytla pool přesně této velikosti. Proč pevný? Protože předvídatelný počet vláken zabraňuje obávanému „výbuchu vláken“, který může OS vyhladit o zdroje. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` vrací počet logických jader (včetně hyper‑threadů). +* `newFixedThreadPool(coreCount)` zajišťuje, že nepřekročíme kapacitu CPU, což je nejbezpečnější způsob, jak **run OCR** paralelně. + +## Krok 4: Odeslat OCR úlohu pro každý obrázek + +Nyní převádíme každou cestu k souboru na callable, který **runs OCR**, rozpozná text a vrátí výsledek. Všimněte si, že v lambda výrazu vytváříme novou instanci `OcrEngine` — tím se vyhneme sdílení stavu enginu, které není thread‑safe. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Každé volání `submit` předá lambda výrazu poolu, který jej naplánuje na volné vlákno. +* `Future` objekty nám umožní později získat rozpoznaný text, přičemž zachovají pořadí, pokud jej potřebujete. + +## Krok 5: Získat a zobrazit rozpoznaný text + +Jakmile jsou všechny úlohy zařazeny do fronty, jednoduše iterujeme přes seznam `Future`, voláme `get()`, abychom blokovali, dokud každá OCR úloha nedokončí. Zde se ukazuje krok **convert image to text**: volání `engine.getText()` vrací surový řetězec. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Typický výstup v konzoli vypadá takto: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Pokud soubor selže (například je poškozený), uvidíte řádek začínající `Failed:` následovaný cestou — užitečné pro rychlé ladění. + +## Krok 6: Vyčistit službu Executor + +Nikdy nezapomeňte ukončit pool; jinak může JVM zůstat běžet, protože si myslí, že stále něco běží. Elegantní ukončení umožní dokončit všechny běžící úlohy před ukončením procesu. + +```java +executor.shutdown(); +``` + +Můžete také zavolat `awaitTermination`, pokud potřebujete vynutit časový limit, ale pro většinu nástrojů v příkazové řádce stačí jednoduché `shutdown()`. + +## Kompletní funkční příklad + +Níže je kompletní, připravený program. Zkopírujte jej do souboru pojmenovaného `ParallelOcrTutorial.java`, upravte cesty k obrázkům a spusťte `javac` + `java` jako obvykle. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Očekávaný výsledek:** textový obsah každého obrázku vytištěný do konzole ve stejném pořadí jako v seznamu `imagePaths`. Pokud se některý obrázek nepodaří zpracovat, uvidíte oznámení o selhání místo prázdného řádku. + +## Časté otázky a okrajové případy + +### Co když mám více obrázků než vláken? + +Pevný thread pool automaticky zařadí přebytečné úlohy do fronty. Jakmile vlákno dokončí aktuální OCR úlohu, převezme další. Toto chování fronty je podstatou **parallel OCR processing** — získáte maximální propustnost bez přetížení CPU. + +### Můžu změnit jazyk? + +Určitě. Nahraďte `engine.getLanguage().setEnglish(true);` příslušným jazykovým příznakem, např. `setFrench(true)` nebo povolte více jazyků voláním několika setterů před `recognize()`. + +### Jak zacházet s velmi velkými obrázky? + +Velké soubory mohou spotřebovat hodně paměti na vlákno. Pokud zaznamenáte `OutOfMemoryError`, zvažte zmenšení obrázku před předáním enginu, nebo zvýšte velikost haldy pomocí `-Xmx`. Další přístup je použít **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/czech/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/czech/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..3d0793e3d --- /dev/null +++ b/ocr/czech/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-05-03 +description: jak rychle povolit GPU pro Java OCR – naučte se extrahovat text z obrázků + pomocí Aspose OCR. Kompletní Java OCR tutoriál je zahrnut. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: cs +og_description: Jak povolit GPU pro Java OCR během několika minut. Tento tutoriál + vám ukáže, jak extrahovat text z obrázků pomocí Java OCR tutoriálu s akcelerací + GPU. +og_title: Jak povolit GPU pro Java OCR – krok za krokem průvodce +tags: +- Java +- OCR +- GPU +- Aspose +title: jak povolit GPU pro Java OCR – kompletní návod +url: /cs/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# jak povolit gpu pro Java OCR – kompletní tutoriál + +Už jste se někdy zamýšleli **how to enable gpu**, když se snažíte získat text z obrázku? Pokud jste někdy potřebovali spustit OCR na sken s vysokým rozlišením a CPU se zastavil, nejste sami. V tomto průvodci vás provedeme **java ocr tutorial**, který nejen ukazuje, jak extrahovat text, ale také demonstruje nejrychlejší způsob, jak **recognize text image java**‑style zapnutím experimentální podpory GPU. + +Začneme stažením knihovny Aspose OCR, poté povolíme GPU, načteme ukázkový obrázek a nakonec získáme rozpoznaný řetězec ze souboru. Na konci budete mít připravený úryvek kódu, který můžete vložit do libovolného Maven projektu, a pochopíte, proč je GPU důležité, kdy nemusí pomoci a jak řešit běžné problémy. Žádná externí dokumentace není potřeba – vše, co potřebujete, je zde. + +--- + +## Co budete potřebovat + +- **Java Development Kit (JDK) 8+** – kód běží na jakémkoli moderním JDK. +- **Maven** (nebo Gradle) pro stažení závislosti Aspose OCR. +- **Stroj kompatibilní s GPU** (CUDA‑povolená karta NVIDIA funguje nejlépe, ale Aspose API se elegantně vrátí k CPU). +- Ukázkový obrázek, např. `sample-highres.png`, umístěný ve složce, na kterou můžete odkazovat. +- Špetka zvědavosti o technikách **image to text conversion java**. + +Pokud vám něco chybí, stáhněte si JDK od Oracle nebo OpenJDK, nainstalujte Maven a ujistěte se, že máte aktuální grafický ovladač. To je vše, co je potřeba připravit; zbytek je čistý Java. + +--- + +## Krok 1: Přidejte Aspose OCR do svého projektu + +Nejprve potřebujeme samotný OCR engine. Aspose poskytuje čistý Maven artefakt; stačí vložit tento úryvek do souboru `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Pokud dáváte přednost Gradlu, ekvivalent je: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Po vyřešení závislosti budete mít přístup k `OcrEngine`, `ImageStream` a jazykovým pomocníkům, které dělají **java ocr tutorial** bezbolestným. + +--- + +## Krok 2: Jak povolit GPU (Hlavní klíčové slovo v akci) + +Nyní přichází jádro věci: **how to enable gpu** pro OCR engine. Aspose API nabízí jediný boolean flag — `setUseGpu(true)`. Je to experimentální, ale na slušné grafické kartě uvidíte dramatické snížení doby rozpoznávání, zejména u velkých, vysoce rozlišených obrázků. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Tip:** Pokud vaše prostředí nemá kompatibilní GPU, flag bude tiše ignorován a engine se vrátí do režimu CPU. Žádný pád, jen pomalejší výkon. + +--- + +## Krok 3: Načtěte obrázek, který chcete zpracovat + +OCR engine pracuje s `ImageStream`. Ukazujte ho na soubor, který chcete převést z obrázku na čistý text. Zde je kompaktní způsob, jak to udělat: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Ujistěte se, že cesta je absolutní nebo relativní k pracovnímu adresáři projektu. Pokud soubor není nalezen, vyvolá se `IOException` — tento případ zachytíme později. + +--- + +## Krok 4: Vyberte jazyk (volitelné, ale doporučené) + +Aspose OCR zvládne mnoho abeced, ale měli byste mu říct, kterou očekáváte. Pro angličtinu to stačí jedním řádkem: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Pokud potřebujete francouzštinu nebo čínštinu, stačí vyměnit flag (`setFrench(true)`, `setChineseSimplified(true)` atd.). Tento malý tip často zvyšuje přesnost, protože engine může vyloučit nepravděpodobné znaky. + +--- + +## Krok 5: Recognize Text Image Java – Spusťte engine + +Nyní přichází okamžik pravdy: **recognize text image java** styl. Zavoláme `recognize()` a pokud vrátí `true`, získáme výsledný řetězec pomocí `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +Výstup bude surový text extrahovaný z `sample-highres.png`. Pro čistý dokument možná budete chtít řetězec následně upravit (odstranit bílé znaky, nahradit zalomení řádků atd.). Zde je rychlý příklad: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Krok 6: Kompletní funkční příklad (připravený ke zkopírování) + +Níže je kompletní **java ocr tutorial**, který můžete přímo zkompilovat a spustit. Obsahuje ošetření chyb a vypíše očekávaný výstup. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Očekávaný výstup (příklad):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Pokud obrázek obsahuje více řádků, objeví se oddělené znakem nového řádku (`\n`). Engine zachovává původní rozložení, jak nejlépe umí. + +--- + +## Krok 7: Hraniční případy, tipy a časté otázky + +### Co když není GPU detekováno? + +Aspose tiše vypne podporu GPU, pokud nenajde kompatibilní zařízení. Mód můžete ověřit kontrolou flagu po inicializaci: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Pokud vypíše `false`, zkontrolujte verzi ovladače a zda je runtime `CUDA` v `PATH`. + +### Pomáhá GPU u malých obrázků? + +Ne vždy. Přenos malého bitmapu na GPU může převážit zisk rychlosti. U obrázků pod 500 KB můžete ve skutečnosti zaznamenat mírné zpomalení. V takových případech jednoduše nastavte `setUseGpu(false)`. + +### Jak zacházet s vícejazyčnými dokumenty? + +Můžete povolit několik jazyků najednou: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Engine se pak pokusí najít znaky z libovolné zadané sady, což je užitečné pro bilingvní PDF. + +### Můžu zpracovávat PDF přímo? + +Aspose OCR pracuje s image streamy, takže nejprve musíte rasterizovat každou stránku PDF (např. pomocí Aspose PDF nebo PDFBox) a poté předat vzniklý `BufferedImage` metodě `setImage`. + +--- + +## Vizualizace + +![jak povolit gpu pro Java OCR engine](/images/gpu-ocr.png "Diagram ukazující GPU‑akcelerovaný OCR pipeline") + +*Diagram ilustruje tok od načtení obrázku → GPU‑povolené OCR → extrakce textu.* + +--- + +## Závěr + +Probrali jsme **how to enable gpu** pro Java OCR workflow, prošli kompletním **java ocr tutorial** a ukázali **image to text conversion java** v praktickém příkladu připraveném ke zkopírování. Přepnutím jediného flagu můžete ušetřit sekundy — nebo dokonce minuty — při zpracování velkých skenů, což vašim aplikacím dodá svižnost a lepší odezvu. + +Co dál? Zkuste zpracovat dávku obrázků ve smyčce, experimentujte s různými jazyky nebo spojte tento přístup s Apache Tika pro automatické indexování extrahovaného textu. Možnosti jsou neomezené, když spojíte GPU‑akcelerované OCR s dalšími Java knihovnami. + +Máte otázky ohledně **how to extract text** z obtížných obrázků, nebo chcete vědět více o tricích **recognize text image java**? Zanechte komentář níže a šťastné kódování! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/czech/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/czech/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..cac8d50af --- /dev/null +++ b/ocr/czech/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-05-03 +description: Rychle zlepšete přesnost OCR pomocí Aspose OCR Java. Naučte se, jak načíst + obrázek pro OCR, povolit jazyky a aplikovat agresivní opravu pravopisu v několika + krocích. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: cs +og_description: Zlepšete přesnost OCR okamžitě s Aspose OCR Java. Tento průvodce ukazuje, + jak načíst obrázek pro OCR, povolit jazyky a použít agresivní opravu pravopisu. +og_title: Zlepšete přesnost OCR v Javě – krok za krokem tutoriál Aspose OCR +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Zlepšete přesnost OCR v Javě – kompletní průvodce Aspose OCR +url: /cs/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Zlepšení přesnosti OCR v Javě – Kompletní průvodce Aspose OCR + +Už jste se někdy ptali, proč vaše výsledky OCR vypadají jako dětské psaní? Pokud bojujete s chybějícími písmeny, špatnými slovy nebo prostým nesmyslem, nejste sami. **Improve OCR accuracy** je první věc, ke které se většina vývojářů uchýlí, když je jejich extrakce textu nespolehlivá. + +V tomto tutoriálu projdeme praktické řešení, které nejen **load image for OCR**, ale také využívá vestavěný engine pro opravu pravopisu od Aspose, aby zvýšil kvalitu. Na konci budete mít připravený Java program, který rozpozná anglický + francouzský text s agresivní korekcí – bez potřeby externích slovníků. + +## Co se naučíte + +- Jak **load image for OCR** pomocí `ImageStream` od Aspose. +- Proč povolení správných jazyků ovlivňuje přesnost. +- Dopad agresivní opravy pravopisu na vícejazyčné dokumenty. +- Kompletní, spustitelný ukázkový kód, který můžete vložit do libovolného Maven/Gradle projektu. +- Tipy, úskalí a nápady na další kroky pro škálování tohoto přístupu. + +> **Prerequisites** – Java 8 nebo novější, aktuální Aspose.OCR pro Java JAR (v23.12 nebo novější) a soubor obrázku (`multilingual.png`) obsahující anglický a francouzský text. To je vše—žádné další modely ani API. + +## Zlepšení přesnosti OCR: Konfigurace OCR enginu Aspose + +Srdcem každého OCR potrubí je konfigurace enginu. Když Aspose přesně řeknete, co očekáváte, dáváte mu šanci udělat věci správně. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Proč je to důležité:** +- **Engine instance** – `OcrEngine` obsahuje všechna nastavení; vytvoření nového zabraňuje přenosu stavu z předchozích běhů. +- **Image loading** – Použití `ImageStream.fromFile` je nejužitečnější způsob, jak **load image for OCR**. Podporuje PNG, JPEG, BMP a TIFF přímo z krabice. +- **Language flags** – Zapnutí angličtiny + francouzštiny říká rozpoznávači, aby použil odpovídající znakové sady a jazykové modely, což může samo o sobě zvýšit přesnost o 10‑15 %. +- **Aggressive spell correction** – Nastavení `SpellCorrectionLevel.AGGRESSIVE` nutí interní slovník přepsat pochybné slova, což je klíčové, když potřebujete **improve OCR accuracy** na špinavých skenech. + +## Načtení obrázku pro OCR – nastavení zdrojového souboru + +Než engine může něco udělat, potřebuje bitmapu. Pokud mu poskytnete poškozený stream nebo špatnou cestu, narazíte na výjimku rychleji, než řeknete „null pointer“. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** Pokud zpracováváte obrázky nahrané uživateli, zabalte logiku načítání do try‑catch bloku a nejprve ověřte velikost/formát souboru. To zabrání enginu v zakousnutí se do obrovských PDF nebo nepodporovaných formátů. + +## Povolení více jazyků pro lepší rozpoznávání + +Většina OCR knihoven má jako výchozí nastavení pouze angličtinu. Když váš dokument míchá jazyky, uvidíte nárůst nesprávně rozpoznaných znaků. Aspose to usnadňuje přepínáním dalších jazyků. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Proč povolit více než jeden jazyk?** +- **Character set expansion** – Francouzština zahrnuje diakritická písmena jako “é” a “ç”. Bez francouzské vlajky se tyto změní na “e” nebo “c”, což později zmátne opravovač pravopisu. +- **Contextual hints** – OCR engine používá jazykové modely k předpovědi hranic slov; dvojjazyčný model snižuje falešné rozdělení. + +## Použití agresivní opravy pravopisu + +Oprava pravopisu není jen „pěkný doplněk“; je to zásadní změna, když potřebujete **improve OCR accuracy** na nízkokvalitních skenech. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Úrovně na první pohled + +| Level | Behaviour | +|------------|----------------------------------------------| +| **NONE** | Žádná korekce – pouze surový výstup enginu. | +| **LIGHT** | Opravuje zjevné překlepy, nízké riziko přehnané korekce. | +| **AGGRESSIVE** | Aggressivně provádí vyhledávání ve slovníku; nejlepší pro špinavé obrázky. | + +**Caution:** Aggresivní režim může přepsat legitimní vlastní jména (např. “McDonald” → “Mcdonald”). Pokud vaše doména obsahuje mnoho jmen, zvažte filtr po zpracování. + +## Spuštění rozpoznávání a ověření výstupu + +Nyní, když je vše nastaveno, je čas nechat Aspose udělat těžkou práci. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Očekávaný výstup (příklad) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Pokud místo toho vidíte nesmysly, zkontrolujte: + +1. Kvalitu obrázku (rozmazané nebo nízkodpi obrázky snižují přesnost). +2. Jazykové vlajky – chybějící francouzština odstraní diakritiku. +3. Úroveň opravy pravopisu – vyzkoušejte `LIGHT`, pokud zaznamenáte přehnanou korekci. + +## Kompletní funkční příklad (všechny kroky v jednom souboru) + +Níže je kompletní program, který můžete přímo zkompilovat a spustit. Uložte jej jako `SpellCorrectionTutorial.java`, upravte cestu k obrázku a spusťte pomocí `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Kompilace a spuštění: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Měli byste vidět opravený vícejazyčný text vytištěný do konzole. + +## Časté úskalí a jak se jim vyhnout + +| Projev | Pravděpodobná příčina | Oprava | +|--------|-----------------------|--------| +| **Prázdný výstup** | Špatná cesta k obrázku nebo soubor nečitelný | Ověřte cestu v `ImageStream.fromFile`; přidejte kontrolu existence souboru. | +| **Chybějící diakritika** | Francouzský jazyk není povolen | Zavolejte `ocrEngine.getLanguage().setFrench(true)`. | +| **Špatné znaky** | Nízké rozlišení obrázku (< 150 dpi) | Zvětšete nebo znovu naskenujte s vyšším DPI; zvažte předzpracování pomocí knihoven pro vylepšení obrazu. | +| **Přehnaně opravená jména** | Aggresivní oprava pravopisu na vlastní jména | Po‑zpracujte pomocí whitelistu známých jmen nebo přepněte na úroveň `LIGHT`. | + +## Další kroky: Škálování vašeho OCR potrubí + +- **Batch processing:** Procházejte adresář obrázků, znovu použijte jedinou instanci `OcrEngine` pro výkon. +- **PDF extraction:** Použijte Aspose.PDF k převodu každé stránky na obrázek a poté jej předávejte OCR engine. +- **Custom dictionaries:** Pokud vaše doména používá specializovanou terminologii (medicínskou, právní), načtěte vlastní seznam slov do `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Parallelism:** `ForkJoinPool` v Javě může spouštět více OCR úloh současně, ale dejte pozor na využití paměti, protože každý engine drží obrazové buffery. + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Snímek obrazovky zlepšení přesnosti OCR ukazující opravený vícejazyčný text"} + +## Závěr + +Právě jsme **zlepšili OCR** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/czech/java/ocr-operations/_index.md b/ocr/czech/java/ocr-operations/_index.md index c499c38bd..26c11e933 100644 --- a/ocr/czech/java/ocr-operations/_index.md +++ b/ocr/czech/java/ocr-operations/_index.md @@ -75,8 +75,13 @@ Uvolněte přesné extrahování textu z obrázků s Aspose.OCR pro Java. Postup Uvolněte sílu OCR v Javě s Aspose.OCR. Bez námahy rozpoznávejte text v PDF dokumentech. Posilte své aplikace přesností a rychlostí. ### [OCR rozpoznávání TIFF obrázků v Aspose.OCR pro Java](./recognize-tiff/) Uvolněte výkonné rozpoznávání textu v Javě s Aspose.OCR. Bez námahy rozpoznávejte text v TIFF obrázcích. Stáhněte si nyní pro plynulý OCR zážitek. +### [Aspose OCR Java příklad: Extrahování textu z oblasti](./aspose-ocr-java-example-extract-text-from-a-region/) +Ukázkový kód v Javě, který pomocí Aspose.OCR extrahuje text z určené oblasti obrázku. ### [Rozpoznání textu z obrázku pomocí Aspose OCR – Kompletní Java OCR tutoriál](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) +### [Extrahování textu z HEIC – Kompletní Java průvodce](./extract-text-from-heic-complete-java-guide/) +Kompletní návod, jak pomocí Aspose.OCR pro Java extrahovat text z obrázků ve formátu HEIC. + ## Často kladené otázky **Q: Jak mohu převést naskenovaný PDF do prohledávatelného PDF?** diff --git a/ocr/czech/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/czech/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..244551775 --- /dev/null +++ b/ocr/czech/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: Příklad Aspose OCR pro Javu ukazuje, jak načíst obrázek pro OCR a extrahovat + text z oblasti pomocí několika řádků kódu. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: cs +og_description: Příklad Aspose OCR Java ukazuje načtení obrázku pro OCR a extrakci + textu z konkrétní oblasti, ideální pro zpracování faktur. +og_title: Příklad Aspose OCR v Javě – Extrakce textu z oblasti +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Aspose OCR Java příklad: Extrahování textu z oblasti' +url: /cs/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java příklad: Extrahování textu z oblasti + +Hledáte **Aspose OCR Java příklad**, který vám umožní získat jen tu část, kterou potřebujete z obrázku? V tomto průvodci projdeme **načítání obrázku pro OCR** a **extrahování textu z oblasti**, což je ideální pro čísla faktur, pole formulářů nebo jakýkoli kus dat skrytý uvnitř většího obrázku. + +Možná se ptáte, proč omezovat OCR na obdélník místo skenování celé stránky. Krátká odpověď: rychlost a přesnost. Když engine zkoumá jen definovaný úsek, vynechá irelevantní šum, běží rychleji a často poskytne čistší výsledky. Na konci tohoto tutoriálu budete mít samostatný Java program, který přesně to dělá, plus několik tipů, jak se vyhnout běžným úskalím, která nováčky zaskočí. + +## Co budete potřebovat + +- **Java Development Kit (JDK) 11** nebo novější nainstalovaný. +- **Aspose.OCR for Java** knihovna (můžete stáhnout nejnovější JAR z Maven Central repository nebo z Aspose download portálu). +- Soubor obrázku, který obsahuje text, který chcete přečíst – pro naši ukázku použijeme `invoice.png`, který obsahuje číslo faktury někde v pravém horním rohu. +- Oblíbené IDE nebo jednoduchý textový editor plus terminál; jakýkoli nástroj pro sestavení (Maven, Gradle nebo prostý `javac`) bude stačit. + +To je vše. Žádné další OCR enginy, žádné nativní binární soubory, jen čistá Java a Aspose. + +![Aspose OCR Java příklad screenshot](/images/aspose-ocr-java-example.png "Aspose OCR Java příklad zobrazující extrakci oblasti") + +## Aspose OCR Java příklad – Inicializace OCR enginu + +První věc, kterou jakýkoli OCR workflow potřebuje, je instance enginu. Aspose poskytuje lehkou třídu `OcrEngine`, která zvládá vše od načítání obrázku po výběr jazyka. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Proč je to důležité:** Vytvoření enginu předem vám poskytne čistý objekt k nastavení. Můžete znovu použít stejný `OcrEngine` pro více obrázků, pokud zpracováváte dávku, což šetří paměť a čas inicializace. + +## Načtení obrázku pro OCR + +Dále řekneme enginu, který obrázek má skenovat. Aspose poskytuje pomocnou metodu `ImageStream.fromFile`, která abstrahuje nízkoúrovňový boilerplate `FileInputStream`. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tip:** Nahraďte `YOUR_DIRECTORY` absolutní cestou nebo relativní cestou, která ukazuje na místo, kde máte uložený `invoice.png`. Pokud soubor nelze najít, Aspose vyhodí `IOException`, takže byste to mohli zabalit do try‑catch bloku pro produkční kód. + +## Definování a extrahování textu z oblasti + +Nyní přichází hvězda představení: obdélník, který říká enginu, kde má hledat. Konstruktor `java.awt.Rectangle` přijímá `(x, y, šířka, výška)` – vše měřeno v pixelech. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Jak to funguje:** Voláním `setRegion` omezíte OCR sken na úsek široký 300 pixelů, který začíná 120 pixelů od levého okraje a 250 pixelů od horní. Přizpůsobte tato čísla podle vlastního rozvržení; rychlý způsob, jak je zjistit, je otevřít obrázek v libovolném grafickém editoru, který zobrazuje souřadnice pixelů. + +## Povolení jazyka a spuštění rozpoznávání + +Aspose OCR podporuje desítky jazyků, ale pro číslo faktury potřebujeme jen angličtinu. Povolení správného jazyka dramaticky snižuje falešně pozitivní výsledky. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Proč povolit jen angličtinu?** OCR engine se bude snažit porovnávat znaky ze všech povolených jazykových sad, což může zmást při jednoduchém alfanumerickém textu. Zúžení jazykového rozsahu zlepšuje jak rychlost, tak přesnost. + +### Očekávaný výstup + +Když vše sedí, uvidíte něco jako: + +``` +Extracted region text: INV-12345 +``` + +Pokud je obdélník posunut o několik pixelů, výstup může být poškozený nebo prázdný. To je jednoduchá kontrola: spusťte program, podívejte se do konzole a ověřte, že text odpovídá tomu, co vidíte na obrázku. + +## Spuštění kódu a ověření výstupu + +Předpokládejme, že používáte Maven, přidejte závislost Aspose OCR do vašeho `pom.xml`: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Zkompilujte a spusťte: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Nebo, pokud dáváte přednost čistému `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Měli byste vidět řádek **Extracted region text** vytištěný v konzoli. Pokud dostanete „OCR recognition failed“, zkontrolujte znovu cestu k souboru a ujistěte se, že oblast skutečně obsahuje čitelné znaky. + +## Hraniční případy a běžné varianty + +| Situace | Co změnit | +|-----------|----------------| +| **Více jazyků** (např. English + Spanish) | Zvolte `ocrEngine.getLanguage().setSpanish(true);` spolu s angličtinou. | +| **Oblast mimo hranice obrázku** | Aspose tichounce ořízne obdélník, ale ztratíte data. Použijte `ImageInfo` (`ocrEngine.getImage().getWidth()`) k ověření rozměrů před nastavením oblasti. | +| **Dynamické faktury** (různá rozvržení) | Zvažte provedení lehkého předběžného skenu celého obrázku pro nalezení klíčových slov jako “Invoice #” a poté vypočítejte obdélník programově. | +| **Obrázky s vyšším DPI** | Zvyšte `ocrEngine.getImage().setResolution(300);` pro lepší přesnost u skenovaných dokumentů. | +| **Ladění výkonu** | Zakázat zbytečné jazyky, udržovat oblast co nejmenší a znovu použít jedinou instanci `OcrEngine` napříč mnoha soubory. | + +## Profesionální tipy z praxe + +- **Pro tip:** Pokud potřebujete jen číslice (běžné u čísel faktur), povolte číselný režim pomocí `ocrEngine.getLanguage().setDigits(true);`. To eliminuje abecední šum. +- **Dejte si pozor na:** Transparentní PNG. Aspose někdy špatně interpretuje alfa kanál; převod obrázku na JPEG s pevně nastaveným pozadím může vyřešit podivné prázdné výstupy. +- **Pamatujte:** Obdélník používá nativní souřadnicový systém obrázku, ne žádné UI škálování, které můžete vidět na obrazovce. Vždy testujte s přesným souborem, který budete zpracovávat v produkci. + +## Co dál? + +Nyní, když máte solidní **Aspose OCR Java příklad** pro extrakci založenou na oblasti, můžete jej rozšířit v několika užitečných směrech: + +- **Dávkové zpracování:** Procházet složku s fakturami, znovu používat stejný `OcrEngine` pro zvýšení propustnosti. +- **Validace dat:** Procházet extrahovaný text regulárním výrazem jako `INV-\\d{5}`, aby se zajistilo, že jste zachytili platné číslo faktury. +- **Integrace s PDF:** Použít Aspose.PDF k překrytí extrahovaného textu zpět na originální dokument pro auditní stopy. +- **Nasazení do cloudu:** Zabalit kód do lehké REST služby (Spring Boot), aby ho ostatní systémy mohly volat na vyžádání. + +Každý z těchto kroků přirozeně zahrnuje stejné základní koncepty—**načíst obrázek pro OCR**, **extrahovat text z oblasti** a zpracovat výsledky—takže přechod bude bezproblémový. + +--- + +*Šťastné kódování! Pokud narazíte na problémy, zanechte komentář níže nebo navštivte Aspose fóra, kde komunita sdílí praktické úpravy pro složité rozvržení.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/czech/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/czech/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..31b657d56 --- /dev/null +++ b/ocr/czech/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Extrahujte text z obrázků HEIC pomocí Aspose OCR v Javě. Naučte se rychle + převést HEIC na text pomocí krok za krokem příkladu. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: cs +og_description: Extrahujte text z obrázků HEIC pomocí Aspose OCR v Javě. Tento průvodce + vám ukáže, jak během několika minut převést HEIC na text. +og_title: Extrahování textu z HEIC – Java OCR tutoriál +tags: +- OCR +- Java +- Aspose +title: Extrahovat text z HEIC – Kompletní Java průvodce +url: /cs/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrahování textu z HEIC – Kompletní Java průvodce + +Už jste se někdy zamýšleli, jak **extrahovat text z HEIC** souborů, aniž byste je nejprve převáděli na JPEG nebo PNG? Nejste v tom sami. Mnoho vývojářů narazí na problém, když jim mobilní aplikace předá fotografii ve formátu `.heic` a potřebují vložený text pro indexování nebo analytiku. Dobrá zpráva? S Aspose OCR pro Javu můžete **extrahovat text z HEIC** přímo – není potřeba žádný další krok převodu. + +V tomto tutoriálu vám také ukážeme, jak **převést HEIC na text** v jedné čisté pipeline, takže můžete vložit kód do libovolného Java projektu a začít dnes získávat řetězce z těchto vysoce efektivních obrázků. + +![příklad extrakce textu z HEIC](https://example.com/placeholder.png "příklad extrakce textu z HEIC") + +## Co se naučíte + +- Jak nastavit Aspose OCR v Maven/Gradle projektu. +- Přesný Java kód potřebný k **extrahování textu z HEIC** obrázků. +- Proč je tento přístup rychlejší a méně náchylný k chybám než dvoukrokový workflow `convert‑then‑OCR`. +- Běžné úskalí (např. chybějící jazykové balíčky) a jak se jim vyhnout. +- Tipy pro škálování řešení v scénáři dávkového zpracování. + +Na konci průvodce budete schopni **převést HEIC na text** pomocí několika řádků kódu a pochopíte „proč“ za každým krokem. + +--- + +## Požadavky + +Než se ponoříme, ujistěte se, že máte: + +1. **Java 8 nebo vyšší** – Aspose OCR běží na jakémkoli moderním JDK. +2. **Maven nebo Gradle** – pro automatické stažení knihovny Aspose OCR. +3. Obrázek **HEIC**, který chcete otestovat (přejmenujte jej na `sample.heic` a umístěte ho na přístupné místo). +4. Volitelné, ale užitečné: IDE jako IntelliJ IDEA nebo VS Code. + +Žádné další externí nástroje nejsou potřeba; knihovna nativně zpracovává formát HEIC. + +--- + +## Krok 1 – Přidat Aspose OCR do vašeho projektu + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Tip:** Udržujte číslo verze v souladu s oficiálními vydáními Aspose; novější verze přidávají podporu pro další varianty HEIC a zlepšují přesnost jazyků. + +--- + +## Krok 2 – Inicializovat OCR engine pro **extrahování textu z HEIC** + +Vytvoření instance `OcrEngine` je prvním konkrétním krokem k extrahování textu z HEIC. Engine abstrahuje veškeré nízkoúrovňové dekódování, takže se nemusíte starat o formát kontejneru HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Proč je to důležité:** +HEIC je moderní formát obrázku založený na kontejneru HEIF. Tradiční OCR knihovny očekávají JPEG/PNG, což vás nutí spustit samostatný krok převodu, který může snížit kvalitu. Nativní podpora Aspose OCR vám umožní **extrahovat text z HEIC** najednou, zachovává původní pixelová data a šetří cykly CPU. + +--- + +## Krok 3 – Povolit požadovaný jazyk(y) + +Ve výchozím nastavení engine hledá pouze angličtinu. Pokud potřebujete **převést HEIC na text** v jiném jazyce, jednoduše přepněte příslušný příznak. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Proč explicitně povolit jazyky?** +> Jazykové balíčky se načítají na vyžádání. Povolením jen toho, co potřebujete, snižujete paměťovou náročnost a urychlujete rozpoznávání. + +--- + +## Krok 4 – Spustit proces rozpoznávání + +Nyní skutečně požádáme engine, aby přečetl obrázek a vytvořil řetězec. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Očekávaný výstup** (předpokládáme, že obrázek obsahuje frázi “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Pokud je obrázek prázdný nebo je text nečitelné, engine vrátí `false` a uvidíte náhradní zprávu. + +--- + +## Krok 5 – Řešení okrajových případů a časté otázky + +### Co když je soubor HEIC poškozený? + +Aspose OCR vyhodí `IOException`, když nedokáže dekódovat kontejner. Zabalte volání do bloku `try‑catch` a zaznamenejte chybu pro pozdější kontrolu. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Můžu zpracovávat více souborů HEIC najednou v dávce? + +Rozhodně. Stačí projít adresář a znovu použít stejnou instanci `OcrEngine`, abyste se vyhnuli opakovanému inicializačnímu zatížení. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Převádí to také **HEIC na text** pro ne‑latinské skripty? + +Ano—Aspose OCR podporuje arabštinu, čínštinu, cyrilici a mnoho dalších jazyků. Stačí povolit odpovídající jazykový příznak (např. `engine.getLanguage().setChineseSimplified(true);`). Nezapomeňte přidat příslušné soubory fontů, pokud běžíte na serveru bez grafického rozhraní. + +--- + +## Krok 6 – Ověřit výsledek programově + +V produkční pipeline často potřebujete ověřit, že výstup OCR splňuje určité prahové hodnoty kvality. Rychlý způsob je vypočítat skóre důvěry (k dispozici v novějších verzích) nebo jednoduše zkontrolovat délku vráceného řetězce. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Kompletní funkční příklad + +Níže je kompletní, připravená ke spuštění třída Java, která zahrnuje všechny výše uvedené kroky. Vložte ji do souboru pojmenovaného `HeifExample.java`, upravte cestu k vašemu HEIC souboru a spusťte `javac` + `java` jako obvykle. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Měli byste vidět extrahovaný řetězec vytištěný do konzole, což potvrzuje, že jste úspěšně **převáděli HEIC na text**. + +--- + +## Závěr + +Prošli jsme vše, co potřebujete k **extrahování textu z HEIC** pomocí Aspose OCR v Javě. Od přidání knihovny po řešení okrajových případů, průvodce ukazuje čisté, jednorázové řešení, které eliminuje potřebu samostatného nástroje pro převod. + +Nyní můžete: + +- **Převádět HEIC na text** za běhu ve webových službách, mobilních back‑endech nebo dávkových úlohách. +- Rozšířit podporu na další jazyky jedním řádkem konfigurace. +- Škálovat proces opakovaným použitím stejného `OcrEngine` napříč mnoha soubory. + +Dále můžete zkoumat **vložením výsledku OCR do prohledávatelného indexu** (např. Elasticsearch) nebo **přidáním předzpracování obrázku** pro zvýšení přesnosti u nízkokontrastních HEIC fotografií. Možnosti jsou neomezené—experimentujte, měřte a iterujte. + +Máte otázky nebo narazíte na obtížný HEIC soubor? Zanechte komentář níže a šťastné programování! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/dutch/java/advanced-ocr-techniques/_index.md b/ocr/dutch/java/advanced-ocr-techniques/_index.md index ab7226b11..d5dd7ceef 100644 --- a/ocr/dutch/java/advanced-ocr-techniques/_index.md +++ b/ocr/dutch/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,16 @@ Ontgrendel de kracht van tekstherkenning met Aspose.OCR voor Java. Volg onze sta Versterk uw Java-applicaties met Aspose.OCR voor nauwkeurige tekstherkenning. Eenvoudige integratie, hoge nauwkeurigheid. ### [Toegestane tekens opgeven in Aspose.OCR](./specify-allowed-characters/) Ontgrendel tekstextractie uit afbeeldingen naadloos met Aspose.OCR voor Java. Volg onze stapsgewijze handleiding voor een efficiënte integratie. +### [Hoe GPU voor Java OCR in te schakelen – Complete tutorial](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Leer hoe u GPU-ondersteuning inschakelt voor Aspose.OCR in Java voor snellere en nauwkeurigere tekstherkenning. +### [Maak een vaste threadpool voor parallelle OCR in Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Leer hoe u een vaste threadpool maakt om OCR-taken parallel uit te voeren in Java met Aspose.OCR. +### [Verbeter OCR-nauwkeurigheid in Java – Complete Aspose OCR-gids](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Leer hoe u de OCR-nauwkeurigheid in Java kunt verbeteren met deze volledige Aspose OCR-gids. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/dutch/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/dutch/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..c022fe4ed --- /dev/null +++ b/ocr/dutch/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Maak een vaste threadpool in Java om snel tekst uit afbeeldingen te extraheren. + Leer hoe je OCR uitvoert, afbeeldingen naar tekst converteert en de prestaties verbetert + met parallelle OCR‑verwerking. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: nl +og_description: Maak een vaste threadpool in Java om snel tekst uit afbeeldingen te + extraheren. Leer hoe je OCR uitvoert, afbeeldingen naar tekst converteert en de + prestaties verbetert met parallelle OCR‑verwerking. +og_title: Maak een vaste threadpool voor parallelle OCR in Java +tags: +- Java +- OCR +- Multithreading +title: Maak een vaste threadpool voor parallelle OCR in Java +url: /nl/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Maak een vaste threadpool voor parallelle OCR in Java + +Heb je ooit een **fixed thread pool** moeten maken om OCR‑taken te versnellen, maar wist je niet waar te beginnen? Je bent niet de enige. In veel beeldintensieve projecten is de bottleneck de single‑threaded OCR‑aanroep, en de oplossing is verrassend eenvoudig: start een pool van werkthreads en laat ze de bestanden parallel verwerken. + +In deze tutorial leer je hoe je **tekst uit afbeeldingen kunt extraheren** met Aspose OCR, hoe je **OCR efficiënt kunt uitvoeren**, en hoe je **afbeelding naar tekst kunt converteren** zonder je CPU te overbelasten. Aan het einde heb je een kant‑klaar Java‑programma dat **parallelle OCR‑verwerking** demonstreert op een handvol voorbeeldafbeeldingen. + +## Wat je gaat bouwen + +We zetten een kleine console‑applicatie in elkaar die: + +* Een lijst met afbeeldingspaden (PNG, JPG, TIFF, BMP) leest. +* **Een vaste threadpool maakt** met een grootte gelijk aan het aantal CPU‑kernen. +* Een OCR‑taak voor elke afbeelding dispatcht. +* De herkende tekst verzamelt en naar de console print. +* De executor netjes afsluit. + +Geen externe build‑tools, geen fancy frameworks—alleen plain Java en de Aspose OCR‑bibliotheek. Als je Java 8+ en een degelijke IDE hebt, ben je klaar om te starten. + +## Vereisten + +* **Java Development Kit (JDK) 8 of nieuwer** – de code gebruikt lambda‑expressies, dus oudere versies compileren niet. +* **Aspose OCR for Java** – download de JAR van de Aspose‑website of haal hem op via Maven (`com.aspose:aspose-ocr`). +* Een map met een paar test‑afbeeldingen (de code verwijst naar `YOUR_DIRECTORY`). +* Basiskennis van Java‑concurrency (we leggen de rest uit). + +> *Pro tip:* Als je Maven gebruikt, voeg dan de dependency toe aan je `pom.xml` en laat de IDE de classpath regelen. + +--- + +## Stap 1: Voeg de benodigde imports toe + +Eerst halen we de klassen die we nodig hebben binnen bereik. Dit is niet zomaar boilerplate; elke import vertelt de JVM waar de OCR‑engine, beeldverwerkings‑utilities en de concurrency‑tools te vinden zijn die ons in staat stellen **fixed thread pool**‑instanties te **maken**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – de core OCR‑API. +* `java.util.*` – collecties voor het opslaan van afbeeldingspaden en resultaten. +* `java.util.concurrent.*` – het concurrency‑pakket dat `ExecutorService` en `Future` bevat. + +--- + +## Stap 2: Definieer de afbeeldingen die verwerkt moeten worden + +Vervolgens maken we een lijst van de bestanden waarvan we **tekst uit afbeeldingen** willen **extraheren**. Het gebruik van `Arrays.asList` houdt de code beknopt en laat ons jouw eigen map invoegen zonder de rest van de logica aan te passen. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Voel je vrij om meer items toe te voegen; de threadpool schaalt automatisch op basis van het aantal CPU‑kernen dat je hebt. + +--- + +## Stap 3: **Create Fixed Thread Pool** passend bij de CPU‑kernen + +Hier is het hart van de tutorial. We vragen de runtime hoeveel kernen beschikbaar zijn en laten de `Executors`‑factory ons een pool van precies die grootte geven. Waarom vast? Omdat een voorspelbaar aantal threads de gevreesde “thread‑explosie” voorkomt die het OS kan uitputten. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` geeft het aantal logische kernen terug (inclusief hyper‑threads). +* `newFixedThreadPool(coreCount)` garandeert dat we nooit de capaciteit van de CPU overschrijden, wat de veiligste manier is om **OCR parallel** uit te voeren. + +--- + +## Stap 4: Dien een OCR‑taak in voor elke afbeelding + +Nu maken we van elk bestandspad een `Callable` die **OCR uitvoert**, de tekst herkent en het resultaat teruggeeft. Merk op dat we binnen de lambda een verse `OcrEngine` instantieren—dit voorkomt thread‑onveilige deling van engine‑status. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Elke `submit`‑aanroep geeft de lambda door aan de pool, die deze inplant op een vrije thread. +* De `Future`‑objecten laten ons later de herkende tekst ophalen, waarbij de volgorde behouden blijft indien nodig. + +--- + +## Stap 5: Haal de herkende tekst op en toon deze + +Zodra alle taken in de wachtrij staan, itereren we simpelweg over de `Future`‑lijst en roepen `get()` aan om te blokkeren tot elke OCR‑taak klaar is. Hier wordt de **convert image to text**‑stap zichtbaar: de aanroep `engine.getText()` levert de ruwe string op. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Typische console‑output ziet er als volgt uit: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Als een bestand faalt (bijvoorbeeld omdat het corrupt is), zie je een regel die begint met `Failed:` gevolgd door het pad—handig voor snelle debugging. + +--- + +## Stap 6: Maak de Executor Service schoon + +Vergeet nooit de pool af te sluiten; anders kan de JVM blijven hangen omdat hij denkt dat er nog werk is. Een nette shutdown laat lopende taken afmaken voordat het proces eindigt. + +```java +executor.shutdown(); +``` + +Je kunt ook `awaitTermination` aanroepen als je een timeout wilt afdwingen, maar voor de meeste command‑line utilities is een eenvoudige `shutdown()` voldoende. + +--- + +## Volledig werkend voorbeeld + +Hieronder staat het complete, kant‑klaar programma. Kopieer‑en‑plak het in een bestand met de naam `ParallelOcrTutorial.java`, pas de afbeeldingspaden aan, en compileer en voer uit met `javac` + `java` zoals je normaal zou doen. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Verwacht resultaat:** de tekstinhoud van elke afbeelding wordt naar de console geprint, in dezelfde volgorde als de `imagePaths`‑lijst. Als een afbeelding niet verwerkt kan worden, zie je een foutmelding in plaats van een lege regel. + +--- + +## Veelgestelde vragen & randgevallen + +### Wat als ik meer afbeeldingen heb dan threads? + +De vaste threadpool zal de overtollige taken automatisch in de wachtrij plaatsen. Zodra een thread klaar is met zijn huidige OCR‑taak, pakt hij de volgende op. Dit queue‑gedrag is de essentie van **parallel OCR processing**—je krijgt maximale doorvoer zonder de CPU te overbelasten. + +### Kan ik de taal wijzigen? + +Zeker. Vervang `engine.getLanguage().setEnglish(true);` door de gewenste taalknop, bijvoorbeeld `setFrench(true)` of schakel meerdere talen in door verschillende setters aan te roepen vóór `recognize()`. + +### Hoe ga ik om met zeer grote afbeeldingen? + +Grote bestanden kunnen per thread veel geheugen verbruiken. Als je `OutOfMemoryError` ziet, overweeg dan de afbeelding te verkleinen voordat je deze aan de engine geeft, of vergroot de heap‑grootte met `-Xmx`. Een andere aanpak is om een **cached thread pool** te gebruiken (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/dutch/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/dutch/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..1ae81b44b --- /dev/null +++ b/ocr/dutch/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,219 @@ +--- +category: general +date: 2026-05-03 +description: hoe je GPU voor Java OCR snel inschakelt – leer hoe je tekst uit afbeeldingen + haalt met Aspose OCR. Volledige Java OCR‑tutorial inbegrepen. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: nl +og_description: Hoe je GPU voor Java OCR in enkele minuten inschakelt. Deze tutorial + laat zien hoe je tekst uit afbeeldingen haalt met een Java OCR-tutorial met GPU-versnelling. +og_title: Hoe GPU in te schakelen voor Java OCR – Stapsgewijze handleiding +tags: +- Java +- OCR +- GPU +- Aspose +title: hoe GPU in te schakelen voor Java OCR – Complete tutorial +url: /nl/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hoe gpu in te schakelen voor Java OCR – Volledige tutorial + +Heb je je ooit afgevraagd **hoe gpu in te schakelen** wanneer je tekst uit een afbeelding wilt halen? Als je ooit OCR op een hoge‑resolutie scan moest uitvoeren en de CPU tot stilstand zag komen, ben je niet de enige. In deze gids lopen we een **java ocr tutorial** door die niet alleen laat zien hoe je tekst kunt extraheren, maar ook de snelste manier demonstreert om **recognize text image java**‑stijl te herkennen door experimentele GPU‑ondersteuning in te schakelen. + +We beginnen met het importeren van de Aspose OCR‑bibliotheek, vervolgens schakelen we de GPU in, laden we een voorbeeldafbeelding, en halen we tenslotte de herkende tekenreeks uit het bestand. Aan het einde heb je een kant‑klaar fragment dat je in elk Maven‑project kunt plaatsen, en begrijp je waarom GPU belangrijk is, wanneer het mogelijk niet helpt, en hoe je veelvoorkomende problemen kunt oplossen. Geen externe documentatie nodig—alles wat je nodig hebt staat hier. + +--- + +## Wat je nodig hebt + +- **Java Development Kit (JDK) 8+** – de code draait op elke moderne JDK. +- **Maven** (of Gradle) om de Aspose OCR‑dependency binnen te halen. +- Een **GPU‑compatibele machine** (CUDA‑ondersteunde NVIDIA‑kaart werkt het beste, maar de Aspose‑API valt netjes terug). +- Een voorbeeldafbeelding, bijv. `sample-highres.png`, geplaatst in een map die je kunt refereren. +- Een vleugje nieuwsgierigheid naar **image to text conversion java**‑technieken. + +Als je iets mist, download dan de JDK van Oracle of OpenJDK, installeer Maven, en zorg dat je grafische driver up‑to‑date is. Dat is al het voorbereidingswerk; de rest is pure Java. + +## Stap 1: Voeg Aspose OCR toe aan je project + +Allereerst hebben we de OCR‑engine zelf nodig. Aspose levert een nette Maven‑artifact; plak gewoon dit fragment in je `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Als je Gradle verkiest, is het equivalent: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Zodra de dependency is opgehaald, heb je toegang tot `OcrEngine`, `ImageStream` en de taal‑helpers die een **java ocr tutorial** moeiteloos maken. + +## Stap 2: Hoe GPU in te schakelen (Primaire zoekterm in actie) + +Nu komen we bij de kern van de zaak: **hoe gpu in te schakelen** voor de OCR‑engine. De Aspose‑API biedt een enkele boolean‑vlag—`setUseGpu(true)`. Het is experimenteel, maar op een degelijke grafische kaart zie je de herkenningstijd sterk dalen, vooral bij grote, hoge‑resolutie afbeeldingen. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** Als je omgeving geen compatibele GPU heeft, wordt de vlag stilletjes genegeerd en valt de engine terug op CPU‑modus. Geen crash, alleen tragere prestaties. + +## Stap 3: Laad de afbeelding die je wilt verwerken + +De OCR‑engine werkt met een `ImageStream`. Wijs het naar het bestand dat je van afbeelding naar platte tekst wilt omzetten. Hier is een compacte manier om dat te doen: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Zorg ervoor dat het pad absoluut of relatief is ten opzichte van de werkdirectory van je project. Als het bestand niet wordt gevonden, krijg je een `IOException`—die vangen we later. + +## Stap 4: Kies de taal (optioneel maar aanbevolen) + +Aspose OCR kan veel alfabetten aan, maar je moet aangeven welke je verwacht. Voor Engels is het een één‑regelige code: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Als je Frans of Chinees nodig hebt, verwissel dan gewoon de vlag (`setFrench(true)`, `setChineseSimplified(true)`, enz.). Deze kleine hint verbetert vaak de nauwkeurigheid omdat de engine onwaarschijnlijke tekenkandidaten kan uitsluiten. + +## Stap 5: Recognize Text Image Java – Voer de engine uit + +Nu volgt het moment van de waarheid: **recognize text image java**‑stijl. We roepen `recognize()` aan en, als het `true` retourneert, halen we de resulterende tekenreeks op met `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +De output is de ruwe tekst die uit `sample-highres.png` is gehaald. Voor een schoon document wil je de string misschien post‑processen (spaties trimmen, regeleinden vervangen, enz.). Hier is een snel voorbeeld: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +## Stap 6: Volledig werkend voorbeeld (Klaar om te kopiëren‑plakken) + +Hieronder staat de volledige **java ocr tutorial** die je direct kunt compileren en uitvoeren. Het bevat foutafhandeling en print de verwachte output. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Verwachte output (voorbeeld):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Als de afbeelding meerdere regels bevat, verschijnen ze gescheiden door regeleinde‑tekens (`\n`). De engine behoudt de oorspronkelijke lay-out zo goed mogelijk. + +## Stap 7: Randgevallen, tips en veelgestelde vragen + +### Wat als de GPU niet wordt gedetecteerd? + +Aspose schakelt GPU‑ondersteuning stilletjes uit wanneer er geen compatibel apparaat wordt gevonden. Je kunt de modus verifiëren door de vlag na initialisatie te controleren: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Als het `false` print, controleer dan je driver‑versie en of de `CUDA`‑runtime in de `PATH` staat. + +### Helpt GPU bij kleine afbeeldingen? + +Niet altijd. De overhead van het overbrengen van een kleine bitmap naar de GPU kan de snelheidswinst tenietdoen. Voor afbeeldingen onder 500 KB kun je zelfs een lichte vertraging zien. In dat geval zet je simpelweg `setUseGpu(false)`. + +### Hoe om te gaan met meertalige documenten? + +Je kunt meerdere talen tegelijk inschakelen: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +De engine zal proberen tekens uit beide sets te matchen, wat handig is voor tweetalige PDF‑bestanden. + +### Kan ik PDF‑bestanden direct verwerken? + +Aspose OCR werkt met image streams, dus je moet eerst elke PDF‑pagina rasteren (bijv. met Aspose PDF of PDFBox) en vervolgens de resulterende `BufferedImage` aan `setImage` doorgeven. + +## Visuele samenvatting + +![hoe gpu in te schakelen voor Java OCR engine](/images/gpu-ocr.png "Diagram dat GPU‑versnelde OCR‑pipeline toont") + +*Het diagram illustreert de stroom van afbeelding laden → GPU‑ingeschakelde OCR → tekstextractie.* + +## Conclusie + +We hebben **hoe gpu in te schakelen** voor een Java OCR‑workflow behandeld, een volledige **java ocr tutorial** doorlopen, en **image to text conversion java** gedemonstreerd in een praktisch, kopieer‑en‑plak voorbeeld. Door één enkele vlag te schakelen, kun je seconden — of zelfs minuten — van de verwerkingstijd van grote scans besparen, waardoor je applicaties sneller en responsiever aanvoelen. + +Wat nu? Probeer een batch afbeeldingen via een lus te verwerken, experimenteer met verschillende talen, of combineer dit met Apache Tika om de geëxtraheerde tekst automatisch te indexeren. De mogelijkheden zijn eindeloos wanneer je GPU‑versnelde OCR combineert met andere Java‑bibliotheken. + +Heb je vragen over **hoe tekst te extraheren** uit lastige afbeeldingen, of wil je meer weten over **recognize text image java**‑trucs? Laat een reactie achter hieronder, en happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/dutch/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/dutch/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..9ee09b539 --- /dev/null +++ b/ocr/dutch/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-05-03 +description: Verbeter de OCR-nauwkeurigheid snel met Aspose OCR Java. Leer hoe je + een afbeelding laadt voor OCR, talen inschakelt en agressieve spellingscorrectie + toepast in een paar stappen. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: nl +og_description: Verbeter de OCR-nauwkeurigheid direct met Aspose OCR Java. Deze gids + laat zien hoe je een afbeelding laadt voor OCR, talen inschakelt en agressieve spellingscorrectie + gebruikt. +og_title: Verbeter de OCR‑nauwkeurigheid in Java – Stapsgewijze Aspose OCR‑handleiding +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Verbeter OCR-nauwkeurigheid in Java – Complete Aspose OCR-gids +url: /nl/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Verbeter OCR-nauwkeurigheid in Java – Complete Aspose OCR-gids + +Heb je je ooit afgevraagd waarom je OCR-resultaten eruitzien als het handschrift van een peuter? Als je worstelt met ontbrekende letters, verkeerde woorden, of gewoon onzin, ben je niet de enige. **Improve OCR accuracy** is het eerste waar de meeste ontwikkelaars naar grijpen wanneer hun tekste­xtractie onbetrouwbaar aanvoelt. + +In deze tutorial lopen we een praktische oplossing door die niet alleen **load image for OCR** uitvoert, maar ook gebruikmaakt van Aspose's ingebouwde spell‑correction engine om de kwaliteit te verhogen. Aan het einde heb je een kant‑klaar Java‑programma dat Engelse + Franse tekst herkent met agressieve correctie—zonder externe woordenboeken. + +## Wat je zult leren + +- Hoe je **load image for OCR** gebruikt met Aspose's `ImageStream`. +- Waarom het inschakelen van de juiste talen belangrijk is voor nauwkeurigheid. +- De impact van agressieve spell correction op meertalige documenten. +- Een compleet, uitvoerbaar code‑voorbeeld dat je in elk Maven/Gradle‑project kunt plaatsen. +- Tips, valkuilen en ideeën voor de volgende stap om deze aanpak op te schalen. + +> **Prerequisites** – Java 8 of nieuwer, een recente Aspose.OCR for Java JAR (v23.12 of later), en een afbeeldingsbestand (`multilingual.png`) met Engelse en Franse tekst. Dat is alles—geen extra modellen of API's. + +--- + +## Verbeter OCR-nauwkeurigheid: configureer de Aspose OCR-engine + +Het hart van elke OCR‑pipeline is de engine‑configuratie. Door Aspose precies te vertellen wat je verwacht, geef je het een kans om het goed te doen. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Waarom dit belangrijk is:** +- **Engine instance** – `OcrEngine` bevat alle instellingen; een nieuwe instantie maken voorkomt dat de staat van eerdere runs wordt meegenomen. +- **Image loading** – Het gebruik van `ImageStream.fromFile` is de meest eenvoudige manier om **load image for OCR** uit te voeren. Het ondersteunt PNG, JPEG, BMP en TIFF direct. +- **Language flags** – Het inschakelen van Engels + Frans vertelt de recognizer om de juiste tekensets en taalmodellen te gebruiken, wat op zichzelf de nauwkeurigheid met 10‑15 % kan verhogen. +- **Aggressive spell correction** – Het instellen van `SpellCorrectionLevel.AGGRESSIVE` laat het interne woordenboek twijfelachtige woorden herschrijven, een belangrijke hefboom wanneer je **improve OCR accuracy** nodig hebt op ruisende scans. + +--- + +## Afbeelding laden voor OCR – Het bronbestand instellen + +Voordat de engine iets kan doen, heeft hij een bitmap nodig. Als je een beschadigde stream of een verkeerd pad invoert, krijg je sneller een uitzondering dan je “null pointer” kunt zeggen. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** Als je afbeeldingen verwerkt die door gebruikers zijn geüpload, wikkel dan de laadlogica in een try‑catch‑blok en valideer eerst de bestandsgrootte/-formaat. Dit voorkomt dat de engine hapert bij enorme PDF's of niet‑ondersteunde formaten. + +--- + +## Schakel meerdere talen in voor betere herkenning + +De meeste OCR‑bibliotheken staan standaard alleen Engels toe. Wanneer je document meerdere talen bevat, zie je een toename in verkeerd herkende tekens. Aspose maakt het moeiteloos om extra talen in te schakelen. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Waarom meer dan één taal inschakelen?** +- **Character set expansion** – Frans bevat letters met accenten zoals “é” en “ç”. Zonder de Franse vlag worden die “e” of “c”, wat later de spell‑corrector in de war brengt. +- **Contextual hints** – De OCR‑engine gebruikt taalmodellen om woordgrenzen te voorspellen; een tweetalig model vermindert onjuiste splitsingen. + +--- + +## Aggressieve spell correction toepassen + +Spell correction is niet alleen een “nice‑to‑have”; het is een game‑changer wanneer je **improve OCR accuracy** nodig hebt op scans van lage kwaliteit. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Niveaus in één oogopslag + +| Level | Gedrag | +|------------|----------------------------------------------| +| **NONE** | Geen correctie – alleen ruwe engine‑output. | +| **LIGHT** | Corrigeert duidelijke typefouten, laag risico op over‑correctie. | +| **AGGRESSIVE** | Voert woordenboek‑opzoekingen agressief uit; het beste voor ruisende afbeeldingen. | + +**Caution:** De agressieve modus kan legitieme eigennamen herschrijven (bijv. “McDonald” → “Mcdonald”). Als je domein veel namen bevat, overweeg dan een post‑processing filter. + +--- + +## Voer herkenning uit en controleer de output + +Nu alles is ingesteld, is het tijd om Aspose het zware werk te laten doen. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Verwachte output (voorbeeld) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Als je in plaats daarvan onzin ziet, controleer dan het volgende: + +1. De beeldkwaliteit (vage of lage‑dpi afbeeldingen verminderen de nauwkeurigheid). +2. Taalvlaggen – ontbrekend Frans verwijdert accenten. +3. Spell‑correction niveau – probeer `LIGHT` als je over‑correctie opmerkt. + +--- + +## Volledig werkend voorbeeld (Alle stappen in één bestand) + +Hieronder staat het volledige programma dat je direct kunt compileren en uitvoeren. Sla het op als `SpellCorrectionTutorial.java`, pas het afbeeldingspad aan, en voer uit met `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Compile & run: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Je zou de gecorrigeerde meertalige tekst in de console moeten zien verschijnen. + +--- + +## Veelvoorkomende valkuilen & hoe ze te vermijden + +| Symptom | Waarschijnlijke oorzaak | Oplossing | +|---------|--------------------------|----------| +| **Blank output** | Verkeerd afbeeldingspad of bestand onleesbaar | Controleer het pad van `ImageStream.fromFile`; voeg een bestands‑existentie‑check toe. | +| **Missing accents** | Franse taal niet ingeschakeld | Roep `ocrEngine.getLanguage().setFrench(true)` aan. | +| **Garbage characters** | Lage resolutie afbeelding (< 150 dpi) | Vergroot of scan opnieuw op hogere DPI; overweeg pre‑processing met beeld‑verbeteringsbibliotheken. | +| **Over‑corrected names** | Aggressive spell correction op eigennamen | Post‑process met een whitelist van bekende namen of schakel over naar `LIGHT` niveau. | + +--- + +## Volgende stappen: je OCR-pijplijn opschalen + +- **Batch processing:** Loop over een map met afbeeldingen, hergebruik een enkele `OcrEngine`‑instantie voor prestaties. +- **PDF extraction:** Gebruik Aspose.PDF om elke pagina naar een afbeelding te converteren, en voer deze vervolgens aan de OCR‑engine. +- **Custom dictionaries:** Als je domein gespecialiseerde terminologie gebruikt (medisch, juridisch), voer dan een aangepaste woordenlijst in via `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Parallelism:** Java’s `ForkJoinPool` kan meerdere OCR‑taken gelijktijdig uitvoeren, maar let op het geheugenverbruik omdat elke engine beeldbuffers bevat. + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Verbeter OCR-nauwkeurigheid screenshot die gecorrigeerde meertalige tekst toont"} + +--- + +## Conclusie + +We hebben zojuist **OCR verbeterd**. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/dutch/java/ocr-operations/_index.md b/ocr/dutch/java/ocr-operations/_index.md index f1467769f..35524e738 100644 --- a/ocr/dutch/java/ocr-operations/_index.md +++ b/ocr/dutch/java/ocr-operations/_index.md @@ -80,6 +80,10 @@ Ontgrendel de kracht van OCR in Java met Aspose.OCR. Herken moeiteloos tekst in Ontgrendel krachtige tekst‑herkenning in Java met Aspose.OCR. Herken moeiteloos tekst in TIFF‑afbeeldingen. Download nu voor een naadloze OCR‑ervaring. ### [Tekstafbeelding herkennen met Aspose OCR – volledige Java OCR-tutorial](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Leer hoe u tekst uit afbeeldingen kunt herkennen met Aspose OCR in een volledige Java‑OCR‑tutorial. +### [Aspose OCR Java‑voorbeeld: Tekst uit een gebied extraheren](./aspose-ocr-java-example-extract-text-from-a-region/) +Leer hoe u met Aspose OCR voor Java tekst uit een specifiek gebied kunt extraheren. +### [Tekst uit HEIC extraheren – Complete Java-gids](./extract-text-from-heic-complete-java-guide/) +Leer hoe u tekst uit HEIC‑afbeeldingen kunt extraheren met een volledige Java‑handleiding. ## Veelgestelde vragen diff --git a/ocr/dutch/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/dutch/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..e01380fca --- /dev/null +++ b/ocr/dutch/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: Het Aspose OCR Java‑voorbeeld toont hoe je een afbeelding laadt voor + OCR en tekst uit een gebied extraheert in slechts een paar regels code. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: nl +og_description: Aspose OCR Java‑voorbeeld toont het laden van een afbeelding voor + OCR en het extraheren van tekst uit een specifiek gebied, perfect voor factuurverwerking. +og_title: Aspose OCR Java-voorbeeld – Regio‑tekstextractie +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Aspose OCR Java-voorbeeld: Tekst uit een regio extraheren' +url: /nl/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java-voorbeeld: Tekst extraheren uit een regio + +Zoek je een **Aspose OCR Java example** die je alleen het deel laat ophalen dat je nodig hebt uit een afbeelding? In deze gids lopen we **een afbeelding laden voor OCR** en **tekst extraheren uit een regio** door, perfect voor factuurnummers, formuliervelden, of elk stukje data dat zich verstopt in een grotere afbeelding. + +Je vraagt je misschien af waarom je OCR zou beperken tot een rechthoek in plaats van de hele pagina te scannen. Het korte antwoord: snelheid en nauwkeurigheid. Wanneer de engine alleen naar een gedefinieerd deel kijkt, slaat hij irrelevante ruis over, werkt sneller en levert vaak schonere resultaten op. Aan het einde van deze tutorial heb je een zelfstandige Java‑programma dat precies dat doet, plus een reeks tips om de veelvoorkomende valkuilen te vermijden die nieuwkomers tegenkomen. + +## Wat je nodig hebt + +- **Java Development Kit (JDK) 11** of nieuwer geïnstalleerd. +- **Aspose.OCR for Java** bibliotheek (je kunt de nieuwste JAR halen van de Maven Central repository of het Aspose‑downloadportaal). +- Een afbeeldingsbestand dat de tekst bevat die je wilt lezen – voor onze demo gebruiken we `invoice.png`, dat ergens in de rechter‑bovenhoek een factuurnummer bevat. +- Een favoriete IDE of een eenvoudige teksteditor plus een terminal; elk build‑tool (Maven, Gradle, of gewone `javac`) volstaat. + +Dat is alles. Geen extra OCR‑engines, geen native binaries, alleen pure Java en Aspose. + +![Aspose OCR Java voorbeeld screenshot](/images/aspose-ocr-java-example.png "Aspose OCR Java voorbeeld toont regio-extractie") + +## Aspose OCR Java-voorbeeld – Initialiseer de OCR-engine + +Het eerste wat elke OCR‑workflow nodig heeft, is een engine‑instance. Aspose levert een lichtgewicht `OcrEngine`‑klasse die alles afhandelt, van het laden van afbeeldingen tot het selecteren van talen. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Waarom dit belangrijk is:** Door de engine van tevoren te maken, krijg je een schoon object om te configureren. Je kunt dezelfde `OcrEngine` hergebruiken voor meerdere afbeeldingen als je een batch verwerkt, wat geheugen en initialisatietijd bespaart. + +## Afbeelding laden voor OCR + +Vervolgens vertellen we de engine welke afbeelding hij moet scannen. Aspose biedt de helper `ImageStream.fromFile`, die de low‑level `FileInputStream`‑boilerplate abstraheert. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tip:** Vervang `YOUR_DIRECTORY` door een absoluut pad of een relatief pad dat verwijst naar de locatie waar je `invoice.png` hebt opgeslagen. Als het bestand niet gevonden kan worden, gooit Aspose een `IOException`, dus je wilt dit wellicht in een try‑catch‑blok wikkelen voor productiecodel. + +## Definieer en extraheren tekst uit een regio + +Nu komt de ster van de show: het rechthoekige gebied dat de engine vertelt waar te zoeken. De constructor van `java.awt.Rectangle` neemt `(x, y, width, height)` – allemaal gemeten in pixels. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Hoe het werkt:** Door `setRegion` aan te roepen, beperk je de OCR‑scan tot een 300‑pixel‑brede slice die 120 pixels vanaf de linkerkant en 250 pixels vanaf de bovenkant begint. Pas deze getallen aan om bij jouw lay‑out te passen; een snelle manier om ze te vinden is de afbeelding te openen in een grafische editor die pixelcoördinaten toont. + +## Taal inschakelen en herkenning uitvoeren + +Aspose OCR ondersteunt tientallen talen, maar voor een factuurnummer hebben we alleen Engels nodig. Het inschakelen van de juiste taal vermindert valse positieven drastisch. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Waarom alleen Engels inschakelen?** De OCR‑engine probeert tekens te matchen uit elke ingeschakelde taalset, wat verwarring kan veroorzaken wanneer de tekst eenvoudige alfanumerieke tekens bevat. Het beperken van de taalkeuze verbetert zowel snelheid als precisie. + +### Verwachte output + +Wanneer alles goed is afgestemd, zie je iets als: + +``` +Extracted region text: INV-12345 +``` + +Als het rechthoekige gebied een paar pixels verschoven is, kan de output onsamenhangend of leeg zijn. Dat is een eenvoudige sanity‑check: voer het programma uit, kijk naar de console, en controleer of de tekst overeenkomt met wat je in de afbeelding ziet. + +## Voer de code uit en controleer de output + +Als je Maven gebruikt, voeg dan de Aspose OCR‑dependency toe aan je `pom.xml`: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Compileer en voer uit: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Of, als je liever gewone `javac` gebruikt: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Je zou de regel **Extracted region text** in de console moeten zien verschijnen. Als je “OCR recognition failed” krijgt, controleer dan het bestandspad en zorg ervoor dat het gebied daadwerkelijk leesbare tekens bevat. + +## Randgevallen & Veelvoorkomende variaties + +| Situatie | Wat te wijzigen | +|-----------|----------------| +| **Meerdere talen** (bijv. Engels + Spaans) | Roep `ocrEngine.getLanguage().setSpanish(true);` aan naast Engels. | +| **Regio buiten afbeeldingsgrenzen** | Aspose zal het rechthoekje stilletjes bijsnijden, maar je verliest data. Gebruik `ImageInfo` (`ocrEngine.getImage().getWidth()`) om de afmetingen te verifiëren voordat je de regio instelt. | +| **Dynamische facturen** (verschillende lay‑outs) | Overweeg een lichte pre‑scan van de hele afbeelding om trefwoorden zoals “Invoice #” te vinden en bereken vervolgens het rechthoekje programmatisch. | +| **Afbeeldingen met hogere DPI** | Verhoog `ocrEngine.getImage().setResolution(300);` voor betere nauwkeurigheid bij gescande documenten. | +| **Prestatie‑optimalisatie** | Schakel onnodige talen uit, houd de regio zo klein mogelijk, en hergebruik één enkele `OcrEngine`‑instance voor veel bestanden. | + +## Pro‑tips uit de praktijk + +- **Pro tip:** Als je alleen cijfers nodig hebt (gebruikelijk voor factuurnummers), schakel de numerieke modus in met `ocrEngine.getLanguage().setDigits(true);`. Dit elimineert alfabetische ruis. +- **Let op:** Transparante PNG’s. Aspose interpreteert soms het alfakanaal verkeerd; het converteren van de afbeelding naar een JPEG met een effen achtergrond kan vreemde lege outputs oplossen. +- **Onthoud:** Het rechthoekje gebruikt het native coördinatensysteem van de afbeelding, niet de UI‑schaling die je op het scherm ziet. Test altijd met exact het bestand dat je in productie gaat verwerken. + +## Wat is het volgende? + +Nu je een solide **Aspose OCR Java example** hebt voor regio‑gebaseerde extractie, kun je het in verschillende nuttige richtingen uitbreiden: + +- **Batchverwerking:** Loop over een map met facturen en hergebruik dezelfde `OcrEngine` om de doorvoersnelheid te verhogen. +- **Gegevensvalidatie:** Stuur de geëxtraheerde tekst door een regex zoals `INV-\\d{5}` om te verzekeren dat je een geldig factuurnummer hebt vastgelegd. +- **Integratie met PDF:** Gebruik Aspose.PDF om de geëxtraheerde tekst terug over de originele document te leggen voor audit‑trails. +- **Cloud‑implementatie:** Verpak de code in een lichte REST‑service (Spring Boot) zodat andere systemen er op aanvraag gebruik van kunnen maken. + +Elk van deze stappen maakt gebruik van dezelfde kernconcepten — **afbeelding laden voor OCR**, **tekst extraheren uit een regio**, en de resultaten verwerken — zodat de overgang moeiteloos zal verlopen. + +--- + +*Happy coding! Als je ergens vastloopt, laat dan een reactie achter of bekijk de Aspose‑forums waar de community real‑world tweaks deelt voor lastige lay‑outs.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/dutch/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/dutch/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..469c29c8e --- /dev/null +++ b/ocr/dutch/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Haal tekst uit HEIC‑afbeeldingen met Aspose OCR in Java. Leer hoe je + HEIC snel naar tekst kunt converteren met een stapsgewijs voorbeeld. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: nl +og_description: Haal tekst uit HEIC‑afbeeldingen met Aspose OCR in Java. Deze gids + laat zien hoe je HEIC in enkele minuten naar tekst kunt converteren. +og_title: Tekst extraheren uit HEIC – Java OCR‑tutorial +tags: +- OCR +- Java +- Aspose +title: Tekst extraheren uit HEIC – Complete Java‑gids +url: /nl/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tekst extraheren uit HEIC – Complete Java-gids + +Heb je je ooit afgevraagd hoe je **tekst uit HEIC**‑bestanden kunt extraheren zonder ze eerst naar JPEG of PNG te converteren? Je bent niet de enige. Veel ontwikkelaars lopen vast wanneer een mobiele app hen een `.heic`‑foto geeft en ze de ingebedde tekst nodig hebben voor indexering of analytics. Het goede nieuws? Met Aspose OCR voor Java kun je **tekst uit HEIC** direct extraheren – er is geen extra conversiestap nodig. + +In deze tutorial laten we je ook zien hoe je **HEIC naar tekst** kunt **converteren** in één enkele, nette pipeline, zodat je de code in elk Java‑project kunt plaatsen en vandaag nog strings uit die hoog‑efficiënte afbeeldingen kunt halen. + +![voorbeeld van tekst extraheren uit heic](https://example.com/placeholder.png "voorbeeld van tekst extraheren uit heic") + +## Wat je zult leren + +- Hoe je Aspose OCR instelt in een Maven/Gradle‑project. +- De exacte Java‑code die nodig is om **tekst uit HEIC**‑afbeeldingen te **extraheren**. +- Waarom deze aanpak sneller en minder foutgevoelig is dan een twee‑stappen `converteren‑dan‑OCR`‑workflow. +- Veelvoorkomende valkuilen (bijv. ontbrekende taalpakketten) en hoe je ze kunt vermijden. +- Tips voor het schalen van de oplossing in een batch‑verwerkingsscenario. + +Aan het einde van de gids kun je **HEIC naar tekst** converteren met slechts een paar regels code, en begrijp je het “waarom” achter elke stap. + +--- + +## Vereisten + +Voordat we beginnen, zorg ervoor dat je het volgende hebt: + +1. **Java 8 of hoger** – Aspose OCR draait op elke moderne JDK. +2. **Maven of Gradle** – om de Aspose OCR‑bibliotheek automatisch te downloaden. +3. Een **HEIC‑afbeelding** die je wilt testen (hernoem deze naar `sample.heic` en plaats hem ergens toegankelijk). +4. Optioneel maar handig: een IDE zoals IntelliJ IDEA of VS Code. + +Er zijn geen andere externe tools nodig; de bibliotheek verwerkt het HEIC‑formaat natively. + +--- + +## Stap 1 – Voeg Aspose OCR toe aan je project + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Pro tip:** Houd het versienummer synchroon met de officiële Aspose‑releases; nieuwere versies voegen ondersteuning toe voor extra HEIC‑varianten en verbeteren de taal‑nauwkeurigheid. + +--- + +## Stap 2 – Initialiseer de OCR‑engine om **tekst uit HEIC te extraheren** + +Het aanmaken van een `OcrEngine`‑instantie is de eerste concrete stap richting het extraheren van tekst uit HEIC. De engine abstraheert alle low‑level‑decodering, zodat je je geen zorgen hoeft te maken over het HEIC‑containerformaat. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Waarom dit belangrijk is:** +HEIC is een modern afbeeldingsformaat gebaseerd op de HEIF‑container. Traditionele OCR‑bibliotheken verwachten JPEG/PNG, waardoor je een aparte conversiestap moet uitvoeren die de kwaliteit kan verminderen. De native ondersteuning van Aspose OCR laat je **tekst uit HEIC** in één keer extraheren, behoudt de originele pixeldata en bespaart CPU‑cycli. + +--- + +## Stap 3 – Schakel de gewenste taal(en) in + +Standaard zoekt de engine alleen naar Engels. Als je **HEIC naar tekst** wilt **converteren** in een andere taal, schakel dan simpelweg de juiste vlag in. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Waarom talen expliciet inschakelen?** +> Taalpakketten worden on‑demand geladen. Alleen inschakelen wat je nodig hebt vermindert het geheugenverbruik en versnelt de herkenning. + +--- + +## Stap 4 – Voer het herkenningsproces uit + +Nu vragen we de engine daadwerkelijk om de afbeelding te lezen en een string te produceren. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Verwachte output** (ervan uitgaande dat de afbeelding de zin “Hello World” bevat): + +``` +=== Recognized Text === +Hello World +``` + +Als de afbeelding leeg is of de tekst onleesbaar, retourneert de engine `false`, en zie je het fallback‑bericht. + +--- + +## Stap 5 – Afhandelen van randgevallen & veelgestelde vragen + +### Wat als het HEIC‑bestand corrupt is? + +Aspose OCR gooit een `IOException` wanneer het de container niet kan decoderen. Plaats de oproep in een `try‑catch`‑blok en log de fout voor later onderzoek. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Kan ik meerdere HEIC‑bestanden in batch verwerken? + +Zeker. Loop gewoon over een map en hergebruik dezelfde `OcrEngine`‑instantie om herhaalde initialisatie‑overhead te vermijden. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Ondersteunt dit ook het **converteren van HEIC naar tekst** voor niet‑Latijnse scripts? + +Ja – Aspose OCR ondersteunt Arabisch, Chinees, Cyrillisch en nog veel meer talen. Schakel gewoon de bijbehorende taalvlag in (bijv. `engine.getLanguage().setChineseSimplified(true);`). Vergeet niet de juiste lettertype‑bestanden toe te voegen als je op een headless server draait. + +--- + +## Stap 6 – Verifieer het resultaat programmatisch + +In een productie‑pipeline moet je vaak bevestigen dat de OCR‑output aan bepaalde kwaliteitsdrempels voldoet. Een snelle manier is het berekenen van een confidence‑score (beschikbaar in nieuwere versies) of simpelweg de lengte van de geretourneerde string controleren. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Volledig werkend voorbeeld + +Hieronder vind je de complete, kant‑klaar‑te‑runnen Java‑klasse die alle bovenstaande stappen bevat. Plak deze in een bestand met de naam `HeifExample.java`, pas het pad naar je HEIC‑bestand aan, en voer `javac` + `java` uit zoals gewoonlijk. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Voer uit: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Je zou de geëxtraheerde string in de console moeten zien verschijnen, wat bevestigt dat je succesvol **HEIC naar tekst** hebt **geconverteerd**. + +--- + +## Conclusie + +We hebben alles doorlopen wat je nodig hebt om **tekst uit HEIC** te extraheren met Aspose OCR in Java. Van het toevoegen van de bibliotheek tot het afhandelen van randgevallen, de gids toont een nette, één‑stap‑oplossing die de noodzaak van een aparte conversietool elimineert. + +Nu kun je: + +- **HEIC naar tekst** converteren on‑the‑fly in webservices, mobiele back‑ends of batch‑taken. +- Ondersteuning voor andere talen uitbreiden met één regel configuratie. +- Het proces schalen door dezelfde `OcrEngine` te hergebruiken voor vele bestanden. + +Vervolgens kun je **het OCR‑resultaat in een doorzoekbare index embedden** (bijv. Elasticsearch) of **beeld‑pre‑processing toevoegen** om de nauwkeurigheid te verhogen bij laag‑contrast HEIC‑foto's. De mogelijkheden zijn eindeloos – experimenteer, meet en itereer. + +Heb je vragen of loop je tegen een lastig HEIC‑bestand aan? Laat een reactie achter hieronder, en happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/english/java/advanced-ocr-techniques/_index.md b/ocr/english/java/advanced-ocr-techniques/_index.md index 7e8e722f2..632e084b7 100644 --- a/ocr/english/java/advanced-ocr-techniques/_index.md +++ b/ocr/english/java/advanced-ocr-techniques/_index.md @@ -82,6 +82,12 @@ Unlock the power of text recognition with Aspose.OCR for Java. Follow our step Empower your Java applications with Aspose.OCR for precise text recognition. Easy integration, high accuracy. ### [Specifying Allowed Characters in Aspose.OCR](./specify-allowed-characters/) Unlock text extraction from images seamlessly with Aspose.OCR for Java. Follow our step‑by‑step guide for efficient integration. +### [Improve OCR Accuracy in Java – Complete Aspose OCR Guide](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Learn comprehensive techniques to boost OCR accuracy in Java using Aspose OCR, covering preprocessing, language settings, and custom dictionaries. +### [how to enable gpu for Java OCR – Complete Tutorial](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Learn how to enable GPU acceleration for Aspose.OCR in Java to boost OCR performance and accuracy. +### [Create Fixed Thread Pool for Parallel OCR in Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Learn how to create a fixed thread pool to run OCR tasks in parallel, boosting performance in Java applications. ## Frequently Asked Questions @@ -111,4 +117,4 @@ A: Yes, each `OcrEngine` instance is thread‑safe, allowing parallel processing {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/english/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/english/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..bda809f1f --- /dev/null +++ b/ocr/english/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Create fixed thread pool in Java to extract text from images quickly. + Learn how to run OCR, convert image to text, and boost performance with parallel + OCR processing. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: en +og_description: Create fixed thread pool in Java to extract text from images quickly. + Learn how to run OCR, convert image to text, and boost performance with parallel + OCR processing. +og_title: Create Fixed Thread Pool for Parallel OCR in Java +tags: +- Java +- OCR +- Multithreading +title: Create Fixed Thread Pool for Parallel OCR in Java +url: /java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create Fixed Thread Pool for Parallel OCR in Java + +Ever needed to **create fixed thread pool** to speed up OCR jobs, but weren’t sure where to start? You’re not alone. In many image‑heavy projects the bottleneck is the single‑threaded OCR call, and the fix is surprisingly simple: spin up a pool of worker threads and let them chew through the files in parallel. + +In this tutorial you’ll learn how to **extract text from images** using Aspose OCR, how to **run OCR** efficiently, and how to **convert image to text** without blowing up your CPU. By the end you’ll have a ready‑to‑run Java program that demonstrates **parallel OCR processing** on a handful of sample pictures. + +## What You’ll Build + +We’ll put together a small console app that: + +* Reads a list of image paths (PNG, JPG, TIFF, BMP). +* **Creates a fixed thread pool** sized to the number of CPU cores. +* Dispatches an OCR task for each image. +* Collects the recognized text and prints it to the console. +* Shuts the executor down cleanly. + +No external build tools, no fancy frameworks—just plain Java and the Aspose OCR library. If you’ve got Java 8+ and a decent IDE, you’re set. + +## Prerequisites + +* **Java Development Kit (JDK) 8 or newer** – the code uses lambdas, so older versions won’t compile. +* **Aspose OCR for Java** – download the JAR from the Aspose website or pull it via Maven (`com.aspose:aspose-ocr`). +* A folder with a few test images (the code points to `YOUR_DIRECTORY`). +* Basic familiarity with Java concurrency (we’ll explain the rest). + +> *Pro tip:* If you’re using Maven, add the dependency to your `pom.xml` and let the IDE handle the classpath. + +--- + +## Step 1: Add the Required Imports + +First, bring the classes we need into scope. This isn’t just boilerplate; each import tells the JVM where to find the OCR engine, image handling utilities, and the concurrency tools that let us **create fixed thread pool** instances. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – the core OCR API. +* `java.util.*` – collections for storing image paths and results. +* `java.util.concurrent.*` – the concurrency package that houses `ExecutorService` and `Future`. + +--- + +## Step 2: Define the Images to Process + +Next, we list the files we want to **extract text from images**. Using `Arrays.asList` keeps the code concise and lets us swap in your own directory without touching the rest of the logic. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Feel free to add more entries; the thread pool will scale automatically based on the number of CPU cores you have. + +--- + +## Step 3: **Create Fixed Thread Pool** Matching the CPU Cores + +Here’s the heart of the tutorial. We ask the runtime how many cores are available and ask the `Executors` factory to give us a pool of exactly that size. Why fixed? Because a predictable number of threads prevents the dreaded “thread explosion” that can starve the OS of resources. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` returns the logical core count (including hyper‑threads). +* `newFixedThreadPool(coreCount)` guarantees we never exceed the CPU’s capacity, which is the safest way to **run OCR** in parallel. + +--- + +## Step 4: Submit an OCR Task for Each Image + +Now we turn each file path into a callable that **runs OCR**, recognises the text, and returns the result. Notice we instantiate a fresh `OcrEngine` inside the lambda—this avoids thread‑unsafe sharing of engine state. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Each `submit` call hands the lambda to the pool, which schedules it on an idle thread. +* The `Future` objects let us retrieve the recognized text later, preserving order if you need it. + +--- + +## Step 5: Retrieve and Display the Recognized Text + +Once all tasks are queued, we simply iterate over the `Future` list, calling `get()` to block until each OCR job finishes. This is where the **convert image to text** step becomes visible to you: the `engine.getText()` call returns the raw string. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Typical console output looks like: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +If a file fails (perhaps it’s corrupted), you’ll see a line that starts with `Failed:` followed by the path—handy for quick debugging. + +--- + +## Step 6: Clean Up the Executor Service + +Never forget to shut down the pool; otherwise the JVM may linger, thinking there’s still work to do. A graceful shutdown lets any running tasks finish before the process exits. + +```java +executor.shutdown(); +``` + +You can also call `awaitTermination` if you need to enforce a timeout, but for most command‑line utilities a plain `shutdown()` is sufficient. + +--- + +## Full Working Example + +Below is the complete, ready‑to‑run program. Copy‑paste it into a file named `ParallelOcrTutorial.java`, adjust the image paths, and run `javac` + `java` as you normally would. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Expected result:** each image’s textual content printed to the console, in the same order as the `imagePaths` list. If any image can’t be processed, you’ll see a failure notice instead of a blank line. + +--- + +## Common Questions & Edge Cases + +### What if I have more images than threads? + +The fixed thread pool will automatically queue the excess tasks. As soon as a thread finishes its current OCR job, it picks up the next one. This queuing behavior is the essence of **parallel OCR processing**—you get maximum throughput without overwhelming the CPU. + +### Can I change the language? + +Absolutely. Replace `engine.getLanguage().setEnglish(true);` with the appropriate language flag, e.g., `setFrench(true)` or enable multiple languages by calling several setters before `recognize()`. + +### How do I handle very large images? + +Large files can consume a lot of memory per thread. If you notice `OutOfMemoryError`, consider scaling the image down before feeding it to the engine, or increase the heap size with `-Xmx`. Another approach is to use a **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/english/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/english/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..5912887b6 --- /dev/null +++ b/ocr/english/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-05-03 +description: how to enable gpu for Java OCR quickly – learn how to extract text from + images with Aspose OCR. Full java ocr tutorial included. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: en +og_description: how to enable gpu for Java OCR in minutes. This tutorial shows you + how to extract text from images using a java ocr tutorial with GPU acceleration. +og_title: how to enable gpu for Java OCR – Step‑by‑Step Guide +tags: +- Java +- OCR +- GPU +- Aspose +title: how to enable gpu for Java OCR – Complete Tutorial +url: /java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to enable gpu for Java OCR – Complete Tutorial + +Ever wondered **how to enable gpu** when you’re trying to extract text from a picture? If you’ve ever needed to run OCR on a high‑resolution scan and felt the CPU grind to a halt, you’re not alone. In this guide we’ll walk through a **java ocr tutorial** that not only shows you how to extract text but also demonstrates the fastest way to **recognize text image java**‑style by turning on experimental GPU support. + +We’ll start by pulling in the Aspose OCR library, then enable the GPU, load a sample image, and finally pull the recognized string out of the file. By the end you’ll have a ready‑to‑run snippet that you can drop into any Maven project, and you’ll understand why GPU matters, when it might not help, and how to troubleshoot common hiccups. No external docs required—everything you need is right here. + +--- + +## What You’ll Need + +- **Java Development Kit (JDK) 8+** – the code runs on any modern JDK. +- **Maven** (or Gradle) to pull the Aspose OCR dependency. +- A **GPU‑compatible machine** (CUDA‑enabled NVIDIA card works best, but the Aspose API will fall back gracefully). +- A sample image, e.g., `sample-highres.png`, placed in a folder you can reference. +- A sprinkle of curiosity about **image to text conversion java** techniques. + +If you’re missing any of these, grab the JDK from Oracle or OpenJDK, install Maven, and make sure your graphics driver is up‑to‑date. That’s all the prep work; the rest is pure Java. + +--- + +## Step 1: Add Aspose OCR to Your Project + +First things first, we need the OCR engine itself. Aspose provides a clean Maven artifact; just drop this snippet into your `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +If you prefer Gradle, the equivalent is: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Once the dependency resolves, you’ll have access to `OcrEngine`, `ImageStream`, and the language helpers that make **java ocr tutorial** painless. + +--- + +## Step 2: How to Enable GPU (Primary Keyword in Action) + +Now we get to the heart of the matter: **how to enable gpu** for the OCR engine. The Aspose API exposes a single boolean flag—`setUseGpu(true)`. It’s experimental, but on a decent graphics card you’ll see the recognition time drop dramatically, especially for large, high‑resolution images. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** If your environment lacks a compatible GPU, the flag will be ignored silently, and the engine falls back to CPU mode. No crash, just slower performance. + +--- + +## Step 3: Load the Image You Want to Process + +The OCR engine works with an `ImageStream`. Point it at the file you wish to convert from picture to plain text. Here’s a compact way to do it: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Make sure the path is absolute or relative to your project’s working directory. If the file isn’t found, you’ll get an `IOException`—we’ll catch that later. + +--- + +## Step 4: Choose the Language (Optional but Recommended) + +Aspose OCR can handle many alphabets, but you should tell it which one you expect. For English, it’s a one‑liner: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +If you need French or Chinese, just swap the flag (`setFrench(true)`, `setChineseSimplified(true)`, etc.). This tiny hint often boosts accuracy because the engine can prune unlikely character candidates. + +--- + +## Step 5: Recognize Text Image Java – Run the Engine + +Now comes the moment of truth: **recognize text image java** style. We call `recognize()` and, if it returns `true`, pull the resulting string with `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +The output will be the raw text extracted from `sample-highres.png`. For a clean document, you might want to post‑process the string (trim whitespace, replace line breaks, etc.). Here’s a quick example: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Step 6: Full Working Example (Copy‑Paste Ready) + +Below is the complete **java ocr tutorial** that you can compile and run directly. It includes error handling and prints the expected output. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Expected output (example):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +If the image contains multiple lines, they’ll appear separated by line‑break characters (`\n`). The engine preserves the original layout as best it can. + +--- + +## Step 7: Edge Cases, Tips, and Common Questions + +### What if the GPU isn’t detected? + +Aspose silently disables GPU support when it can’t find a compatible device. You can verify the mode by checking the flag after initialization: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +If it prints `false`, double‑check your driver version and that the `CUDA` runtime is on the `PATH`. + +### Does GPU help with tiny images? + +Not always. The overhead of transferring a small bitmap to the GPU can outweigh the speed gain. For images under 500 KB, you might actually see a slight slowdown. In such cases, simply set `setUseGpu(false)`. + +### How to handle multi‑language documents? + +You can enable several languages simultaneously: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +The engine will attempt to match characters from either set, which is handy for bilingual PDFs. + +### Can I process PDFs directly? + +Aspose OCR works with image streams, so you’ll need to rasterize each PDF page first (e.g., with Aspose PDF or PDFBox) and then feed the resulting `BufferedImage` to `setImage`. + +--- + +## Visual Summary + +![how to enable gpu for Java OCR engine](/images/gpu-ocr.png "Diagram showing GPU‑accelerated OCR pipeline") + +*The diagram illustrates the flow from image loading → GPU‑enabled OCR → text extraction.* + +--- + +## Conclusion + +We’ve covered **how to enable gpu** for a Java OCR workflow, walked through a full **java ocr tutorial**, and demonstrated **image to text conversion java** in a practical, copy‑paste example. By toggling a single flag, you can shave seconds—or even minutes—off the processing time of large scans, making your applications feel snappier and more responsive. + +What’s next? Try feeding a batch of images through a loop, experiment with different languages, or combine this with Apache Tika to index the extracted text automatically. The sky’s the limit when you pair GPU‑accelerated OCR with other Java libraries. + +Got questions about **how to extract text** from tricky images, or want to know more about **recognize text image java** tricks? Drop a comment below, and happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/english/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/english/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..d337b4810 --- /dev/null +++ b/ocr/english/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,259 @@ +--- +category: general +date: 2026-05-03 +description: Improve OCR accuracy quickly using Aspose OCR Java. Learn how to load + image for OCR, enable languages, and apply aggressive spell correction in a few + steps. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: en +og_description: Improve OCR accuracy instantly with Aspose OCR Java. This guide shows + how to load image for OCR, enable languages, and use aggressive spell correction. +og_title: Improve OCR Accuracy in Java – Step‑by‑Step Aspose OCR Tutorial +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Improve OCR Accuracy in Java – Complete Aspose OCR Guide +url: /java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Improve OCR Accuracy in Java – Complete Aspose OCR Guide + +Ever wondered why your OCR results look like a toddler’s handwriting? If you’re battling missed letters, wrong words, or just plain gibberish, you’re not alone. **Improve OCR accuracy** is the first thing most developers reach for when their text extraction feels unreliable. + +In this tutorial we’ll walk through a practical solution that not only **load image for OCR** but also leverages Aspose’s built‑in spell‑correction engine to pump up the quality. By the end you’ll have a ready‑to‑run Java program that recognises English + French text with aggressive correction—no external dictionaries needed. + +## What You’ll Learn + +- How to **load image for OCR** using Aspose’s `ImageStream`. +- Why enabling the right languages matters for accuracy. +- The impact of aggressive spell correction on multilingual documents. +- A complete, runnable code sample you can drop into any Maven/Gradle project. +- Tips, pitfalls, and next‑step ideas for scaling this approach. + +> **Prerequisites** – Java 8 or newer, a recent Aspose.OCR for Java JAR (v23.12 or later), and an image file (`multilingual.png`) containing English and French text. That’s it—no extra models or APIs. + +--- + +## Improve OCR Accuracy: Configure the Aspose OCR Engine + +The heart of any OCR pipeline is the engine configuration. By telling Aspose exactly what you expect, you give it a fighting chance to get things right. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Why this matters:** +- **Engine instance** – `OcrEngine` holds all the settings; creating a fresh one avoids state bleed‑over from previous runs. +- **Image loading** – Using `ImageStream.fromFile` is the most straightforward way to **load image for OCR**. It supports PNG, JPEG, BMP, and TIFF out of the box. +- **Language flags** – Turning on English + French tells the recogniser to use the appropriate character sets and language models, which alone can boost accuracy by 10‑15 %. +- **Aggressive spell correction** – Setting `SpellCorrectionLevel.AGGRESSIVE` pushes the internal dictionary to rewrite doubtful words, a key lever when you need to **improve OCR accuracy** on noisy scans. + +--- + +## Load Image for OCR – Setting the Source File + +Before the engine can do anything, it needs a bitmap. If you feed it a corrupted stream or the wrong path, you’ll hit an exception faster than you can say “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** If you’re processing images uploaded by users, wrap the loading logic in a try‑catch block and validate the file size/format first. This prevents the engine from choking on massive PDFs or unsupported formats. + +--- + +## Enable Multiple Languages for Better Recognition + +Most OCR libraries default to English only. When your document mixes languages, you’ll see a spike in mis‑recognised characters. Aspose makes it painless to toggle additional languages. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Why enable more than one language?** +- **Character set expansion** – French includes accented letters like “é” and “ç”. Without the French flag, those become “e” or “c”, which later confuses the spell‑corrector. +- **Contextual hints** – The OCR engine uses language models to predict word boundaries; a bilingual model reduces false splits. + +--- + +## Apply Aggressive Spell Correction + +Spell correction isn’t just a “nice‑to‑have”; it’s a game‑changer when you need to **improve OCR accuracy** on low‑quality scans. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Levels at a glance + +| Level | Behaviour | +|------------|----------------------------------------------| +| **NONE** | No correction – raw engine output only. | +| **LIGHT** | Fixes obvious typos, low risk of over‑correction. | +| **AGGRESSIVE** | Applies dictionary look‑ups aggressively; best for noisy images. | + +**Caution:** Aggressive mode may rewrite legitimate proper nouns (e.g., “McDonald” → “Mcdonald”). If your domain contains many names, consider a post‑processing filter. + +--- + +## Run Recognition and Verify the Output + +Now that everything’s set up, it’s time to let Aspose do the heavy lifting. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Expected output (sample) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +If you see gibberish instead, double‑check: + +1. The image quality (blurred or low‑dpi images hurt accuracy). +2. Language flags – missing French will drop accents. +3. Spell‑correction level – try `LIGHT` if you notice over‑correction. + +--- + +## Full Working Example (All Steps in One File) + +Below is the complete program you can compile and run directly. Save it as `SpellCorrectionTutorial.java`, adjust the image path, and execute with `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Compile & run: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +You should see the corrected multilingual text printed to the console. + +--- + +## Common Pitfalls & How to Avoid Them + +| Symptom | Likely Cause | Fix | +|---------|--------------|-----| +| **Blank output** | Image path wrong or file unreadable | Verify `ImageStream.fromFile` path; add file existence check. | +| **Missing accents** | French language not enabled | Call `ocrEngine.getLanguage().setFrench(true)`. | +| **Garbage characters** | Low‑resolution image (< 150 dpi) | Upscale or rescan at higher DPI; consider preprocessing with image‑enhancement libraries. | +| **Over‑corrected names** | Aggressive spell correction on proper nouns | Post‑process with a whitelist of known names or switch to `LIGHT` level. | + +--- + +## Next Steps: Scaling Up Your OCR Pipeline + +- **Batch processing:** Loop over a directory of images, reuse a single `OcrEngine` instance for performance. +- **PDF extraction:** Use Aspose.PDF to convert each page to an image, then feed it to the OCR engine. +- **Custom dictionaries:** If your domain uses specialized terminology (medical, legal), feed a custom word list into `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Parallelism:** Java’s `ForkJoinPool` can run multiple OCR tasks concurrently, but watch out for memory usage because each engine holds image buffers. + +--- + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Improve OCR accuracy screenshot showing corrected multilingual text"} + +--- + +## Conclusion + +We’ve just **improved OCR + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/english/java/ocr-operations/_index.md b/ocr/english/java/ocr-operations/_index.md index 905b3e79a..2dc225308 100644 --- a/ocr/english/java/ocr-operations/_index.md +++ b/ocr/english/java/ocr-operations/_index.md @@ -79,6 +79,10 @@ Unlock the power of OCR in Java with Aspose.OCR. Recognize text in PDF documents Unlock powerful text recognition in Java with Aspose.OCR. Effortlessly recognize text in TIFF images. Download now for a seamless OCR experience. ### [recognize text image with Aspose OCR – Full Java OCR Tutorial](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Full Java OCR tutorial for recognizing text in images using Aspose OCR, covering setup, processing, and optimization. +### [Aspose OCR Java Example: Extract Text from a Region](./aspose-ocr-java-example-extract-text-from-a-region/) +Learn how to extract text from a defined region in images using Aspose OCR Java example. +### [Extract Text from HEIC – Complete Java Guide](./extract-text-from-heic-complete-java-guide/) +Comprehensive Java guide for extracting text from HEIC images with Aspose.OCR, covering setup, processing, and optimization. ## Frequently Asked Questions diff --git a/ocr/english/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/english/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..d82fa3bfb --- /dev/null +++ b/ocr/english/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,175 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java example shows how to load image for OCR and extract text + from a region in just a few lines of code. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: en +og_description: Aspose OCR Java example demonstrates loading an image for OCR and + extracting text from a specific region, perfect for invoice processing. +og_title: Aspose OCR Java Example – Region Text Extraction +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Aspose OCR Java Example: Extract Text from a Region' +url: /java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java Example: Extract Text from a Region + +Looking for an **Aspose OCR Java example** that lets you pull just the part you need from an image? In this guide we’ll walk through **loading an image for OCR** and **extracting text from a region**, perfect for invoice numbers, form fields, or any piece of data tucked inside a larger picture. + +You might be wondering why you’d bother restricting OCR to a rectangle instead of scanning the whole page. The short answer: speed and accuracy. When the engine only looks at a defined slice, it skips irrelevant noise, runs faster, and often produces cleaner results. By the end of this tutorial you’ll have a self‑contained Java program that does exactly that, plus a handful of tips to avoid the common pitfalls that trip up newcomers. + +## What You’ll Need + +Before we dive in, make sure you have: + +- **Java Development Kit (JDK) 11** or newer installed. +- **Aspose.OCR for Java** library (you can grab the latest JAR from the Maven Central repository or the Aspose download portal). +- An image file that contains the text you want to read – for our demo we’ll use `invoice.png`, which holds an invoice number somewhere near the top‑right corner. +- A favorite IDE or a simple text editor plus a terminal; any build tool (Maven, Gradle, or plain `javac`) will do. + +That’s it. No extra OCR engines, no native binaries, just pure Java and Aspose. + +![Aspose OCR Java example screenshot](/images/aspose-ocr-java-example.png "Aspose OCR Java example showing region extraction") + +## Aspose OCR Java Example – Initialize the OCR Engine + +The first thing any OCR workflow needs is an engine instance. Aspose ships a lightweight `OcrEngine` class that handles everything from image loading to language selection. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Why this matters:** Creating the engine upfront gives you a clean object to configure. You can reuse the same `OcrEngine` for multiple images if you’re processing a batch, which saves memory and initialization time. + +## Load Image for OCR + +Next up we tell the engine which picture to scan. Aspose provides the `ImageStream.fromFile` helper, which abstracts away the low‑level `FileInputStream` boilerplate. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tip:** Replace `YOUR_DIRECTORY` with an absolute path or a relative one that points to where you stored `invoice.png`. If the file can’t be found, Aspose throws an `IOException`, so you might want to wrap this in a try‑catch block for production code. + +## Define and Extract Text from a Region + +Now comes the star of the show: the rectangle that tells the engine where to look. The `java.awt.Rectangle` constructor takes `(x, y, width, height)` – all measured in pixels. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**How it works:** By calling `setRegion`, you limit the OCR scan to a 300‑pixel‑wide slice that starts 120 pixels from the left edge and 250 pixels from the top. Adjust these numbers to match your own layout; a quick way to find them is to open the image in any graphics editor that shows pixel coordinates. + +## Enable Language and Run Recognition + +Aspose OCR supports dozens of languages, but for an invoice number we only need English. Enabling the right language reduces false positives dramatically. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Why enable English only?** The OCR engine will try to match characters from every enabled language set, which can confuse it when the text is simple alphanumerics. Narrowing the language scope improves both speed and precision. + +### Expected Output + +When everything lines up, you’ll see something like: + +``` +Extracted region text: INV-12345 +``` + +If the rectangle is off‑by‑a few pixels, the output might be garbled or empty. That’s an easy sanity check: run the program, look at the console, and verify that the text matches what you see in the image. + +## Run the Code and Verify the Output + +Assuming you’re using Maven, add the Aspose OCR dependency to your `pom.xml`: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Compile and execute: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Or, if you prefer plain `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +You should see the **Extracted region text** line printed to the console. If you get “OCR recognition failed,” double‑check the file path and make sure the region actually contains readable characters. + +## Edge Cases & Common Variations + +| Situation | What to Change | +|-----------|----------------| +| **Multiple languages** (e.g., English + Spanish) | Call `ocrEngine.getLanguage().setSpanish(true);` alongside English. | +| **Region outside image bounds** | Aspose will silently clip the rectangle, but you’ll lose data. Use `ImageInfo` (`ocrEngine.getImage().getWidth()`) to verify dimensions before setting the region. | +| **Dynamic invoices** (different layouts) | Consider running a lightweight pre‑scan on the whole image to locate keywords like “Invoice #” and then compute the rectangle programmatically. | +| **Higher DPI images** | Increase `ocrEngine.getImage().setResolution(300);` for better accuracy on scanned documents. | +| **Performance tuning** | Disable unnecessary languages, keep the region as small as possible, and reuse a single `OcrEngine` instance across many files. | + +## Pro Tips From the Trenches + +- **Pro tip:** If you only need digits (common for invoice numbers), enable the numeric mode with `ocrEngine.getLanguage().setDigits(true);`. This eliminates alphabetic noise. +- **Watch out for:** Transparent PNGs. Aspose sometimes misinterprets the alpha channel; converting the image to a solid‑background JPEG first can solve odd blank outputs. +- **Remember:** The rectangle uses the image’s native coordinate system, not any UI scaling you might see on screen. Always test with the exact file you’ll process in production. + +## What’s Next? + +Now that you have a solid **Aspose OCR Java example** for region‑based extraction, you can extend it in several useful directions: + +- **Batch processing:** Loop over a folder of invoices, reusing the same `OcrEngine` to improve throughput. +- **Data validation:** Pipe the extracted text through a regex like `INV-\\d{5}` to ensure you captured a valid invoice number. +- **Integration with PDF:** Use Aspose.PDF to overlay the extracted text back onto the original document for audit trails. +- **Cloud deployment:** Wrap the code in a lightweight REST service (Spring Boot) so other systems can call it on demand. + +Each of these steps naturally involves the same core concepts—**load image for OCR**, **extract text from a region**, and handle the results—so you’ll find the transition painless. + +--- + +*Happy coding! If you hit any snags, drop a comment below or check the Aspose forums where the community shares real‑world tweaks for tricky layouts.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/english/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/english/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..6f2f8e3f4 --- /dev/null +++ b/ocr/english/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Extract text from HEIC images using Aspose OCR in Java. Learn how to + convert HEIC to text quickly with a step‑by‑step example. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: en +og_description: Extract text from HEIC images with Aspose OCR in Java. This guide + shows you how to convert HEIC to text in minutes. +og_title: Extract Text from HEIC – Java OCR Tutorial +tags: +- OCR +- Java +- Aspose +title: Extract Text from HEIC – Complete Java Guide +url: /java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extract Text from HEIC – Complete Java Guide + +Ever wondered how to **extract text from HEIC** files without first converting them to JPEG or PNG? You're not alone. Many developers hit a wall when a mobile app hands them a `.heic` photo and they need the embedded text for indexing or analytics. The good news? With Aspose OCR for Java you can **extract text from HEIC** directly—no extra conversion step required. + +In this tutorial we’ll also show you how to **convert HEIC to text** in a single, clean pipeline, so you can drop the code into any Java project and start pulling strings out of those high‑efficiency images today. + +![extract text from heic example](https://example.com/placeholder.png "extract text from heic example") + +## What You’ll Learn + +- How to set up Aspose OCR in a Maven/Gradle project. +- The exact Java code needed to **extract text from HEIC** images. +- Why this approach is faster and less error‑prone than a two‑step `convert‑then‑OCR` workflow. +- Common pitfalls (e.g., missing language packs) and how to avoid them. +- Tips for scaling the solution in a batch‑processing scenario. + +By the end of the guide you’ll be able to **convert HEIC to text** with just a few lines of code, and you’ll understand the “why” behind each step. + +--- + +## Prerequisites + +Before we dive in, make sure you have: + +1. **Java 8 or higher** – Aspose OCR runs on any modern JDK. +2. **Maven or Gradle** – to pull the Aspose OCR library automatically. +3. A **HEIC image** you want to test with (rename it `sample.heic` and place it somewhere reachable). +4. Optional but handy: an IDE like IntelliJ IDEA or VS Code. + +No other external tools are required; the library handles the HEIC format natively. + +--- + +## Step 1 – Add Aspose OCR to Your Project + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Pro tip:** Keep the version number in sync with the official Aspose releases; newer versions add support for additional HEIC variants and improve language accuracy. + +--- + +## Step 2 – Initialize the OCR Engine to **Extract Text from HEIC** + +Creating an `OcrEngine` instance is the first concrete step toward extracting text from HEIC. The engine abstracts all low‑level decoding, so you don’t have to worry about the HEIC container format. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Why this matters:** +HEIC is a modern image format based on the HEIF container. Traditional OCR libraries expect JPEG/PNG, forcing you to run a separate conversion step that can degrade quality. Aspose OCR’s native support lets you **extract text from HEIC** in one go, preserving the original pixel data and saving CPU cycles. + +--- + +## Step 3 – Enable the Desired Language(s) + +By default the engine looks for English only. If you need to **convert HEIC to text** in another language, simply toggle the appropriate flag. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Why enable languages explicitly?** +> Language packs are loaded on demand. Enabling only what you need reduces memory footprint and speeds up recognition. + +--- + +## Step 4 – Run the Recognition Process + +Now we actually ask the engine to read the image and produce a string. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Expected output** (assuming the image contains the phrase “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +If the image is blank or the text is unreadable, the engine returns `false`, and you’ll see the fallback message. + +--- + +## Step 5 – Handling Edge Cases & Common Questions + +### What if the HEIC file is corrupted? + +Aspose OCR throws an `IOException` when it can’t decode the container. Wrap the call in a `try‑catch` block and log the error for later inspection. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Can I process multiple HEIC files in a batch? + +Absolutely. Just loop over a directory and reuse the same `OcrEngine` instance to avoid repeated initialization overhead. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Does this also **convert HEIC to text** for non‑Latin scripts? + +Yes—Aspose OCR supports Arabic, Chinese, Cyrillic, and many more languages. Just enable the corresponding language flag (e.g., `engine.getLanguage().setChineseSimplified(true);`). Remember to add the appropriate font files if you’re running on a headless server. + +--- + +## Step 6 – Verify the Result Programmatically + +In a production pipeline you’ll often need to assert that the OCR output meets certain quality thresholds. A quick way is to compute a confidence score (available in newer versions) or simply check the length of the returned string. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Full Working Example + +Below is the complete, ready‑to‑run Java class that incorporates all the steps above. Paste it into a file named `HeifExample.java`, adjust the path to your HEIC file, and run `javac` + `java` as usual. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +You should see the extracted string printed to the console, confirming that you have successfully **converted HEIC to text**. + +--- + +## Conclusion + +We’ve walked through everything you need to **extract text from HEIC** using Aspose OCR in Java. From adding the library to handling edge cases, the guide shows a clean, single‑step solution that eliminates the need for a separate conversion utility. + +Now you can: + +- **Convert HEIC to text** on the fly in web services, mobile back‑ends, or batch jobs. +- Extend support to other languages with a single line of configuration. +- Scale the process by reusing the same `OcrEngine` across many files. + +Next up, you might explore **embedding the OCR result into a searchable index** (e.g., Elasticsearch) or **adding image pre‑processing** to boost accuracy on low‑contrast HEIC photos. The sky’s the limit—experiment, measure, and iterate. + +Got questions or run into a tricky HEIC file? Drop a comment below, and happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/french/java/advanced-ocr-techniques/_index.md b/ocr/french/java/advanced-ocr-techniques/_index.md index bec0c3b98..79e22b125 100644 --- a/ocr/french/java/advanced-ocr-techniques/_index.md +++ b/ocr/french/java/advanced-ocr-techniques/_index.md @@ -42,28 +42,20 @@ Préparez efficacement des rectangles pour l'OCR avec Aspose.OCR pour Java à l' Renforcez vos applications Java avec Aspose.OCR pour une reconnaissance de texte précise. Ce didacticiel vous guide à travers une intégration facile et une grande précision dans la reconnaissance des lignes. Élevez vos projets avec l’efficacité et la fiabilité d’Aspose.OCR. ## [Spécification des caractères autorisés dans Aspose.OCR](./specify-allowed-characters/) - -Extrayez sans effort le texte des images en spécifiant les caractères autorisés avec Aspose.OCR pour Java. Suivez notre guide étape par étape pour une intégration efficace, garantissant une expérience de reconnaissance de texte transparente. Améliorez vos applications Java avec les fonctionnalités Aspose.OCR. - -## Conclusion - -Avec Aspose.OCR pour Java, maîtriser les techniques avancées d'OCR n'a jamais été aussi simple. Plongez dans ces didacticiels et libérez tout le potentiel de la reconnaissance de texte dans vos projets Java. Améliorez vos applications grâce à une intégration transparente, une haute précision et des capacités d'extraction de texte polyvalentes. Téléchargez maintenant et faites le premier pas vers l'excellence OCR avec Aspose.OCR pour Java ! -## Tutoriels sur les techniques avancées d'OCR -### [Exécution d'OCR sur BufferedImage dans Aspose.OCR pour Java](./perform-ocr-buffered-image/) -Effectuez facilement l'OCR sur BufferedImage avec Aspose.OCR pour Java. Extrayez le texte des images de manière transparente. Téléchargez-le maintenant pour une expérience de reconnaissance de texte polyvalente. -### [Exécution d'OCR sur une image à partir d'une URL dans Aspose.OCR pour Java](./perform-ocr-image-from-url/) -Débloquez une extraction transparente de texte d’image en Java avec Aspose.OCR. OCR de haute précision avec une intégration facile. -### [Exécution de l'OCR sur une page spécifique dans Aspose.OCR](./perform-ocr-on-page/) -Libérez la puissance d'Aspose.OCR pour Java avec notre guide étape par étape sur l'exécution de l'OCR sur des pages spécifiques. Extrayez facilement du texte à partir d'images et améliorez vos projets Java. -### [Préparation des rectangles pour l'OCR dans Aspose.OCR](./prepare-rectangles-for-ocr/) -Libérez la puissance de la reconnaissance de texte avec Aspose.OCR pour Java. Suivez notre guide étape par étape pour une intégration transparente. Améliorez vos applications Java avec des capacités OCR efficaces. -### [Reconnaître les lignes dans Aspose.OCR pour Java](./recognize-lines/) -Renforcez vos applications Java avec Aspose.OCR pour une reconnaissance de texte précise. Intégration facile, haute précision. -### [Spécification des caractères autorisés dans Aspose.OCR](./specify-allowed-characters/) Débloquez l'extraction de texte à partir d'images de manière transparente avec Aspose.OCR pour Java. Suivez notre guide étape par étape pour une intégration efficace. + +### [Améliorer la précision de l'OCR en Java – Guide complet Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Apprenez à optimiser la précision de l'OCR en Java avec Aspose OCR grâce à des techniques avancées. + +### [Comment activer le GPU pour l'OCR Java – Tutoriel complet](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Apprenez à activer l'accélération GPU pour l'OCR avec Aspose.OCR en Java et améliorez les performances de vos applications. + +### [Créer un pool de threads fixes pour l'OCR parallèle en Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Apprenez à créer un pool de threads fixes afin d'exécuter l'OCR en parallèle, améliorant les performances de vos applications Java. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/french/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/french/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..9af19a45b --- /dev/null +++ b/ocr/french/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,217 @@ +--- +category: general +date: 2026-05-03 +description: Créez un pool de threads fixe en Java pour extraire rapidement le texte + des images. Apprenez à exécuter l’OCR, à convertir une image en texte et à améliorer + les performances grâce au traitement OCR parallèle. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: fr +og_description: Créez un pool de threads fixe en Java pour extraire rapidement du + texte à partir d'images. Apprenez à exécuter l'OCR, à convertir une image en texte + et à améliorer les performances grâce au traitement OCR parallèle. +og_title: Créer un pool de threads fixe pour l'OCR parallèle en Java +tags: +- Java +- OCR +- Multithreading +title: Créer un pool de threads fixe pour l’OCR parallèle en Java +url: /fr/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un pool de threads fixe pour l'OCR parallèle en Java + +Vous avez déjà eu besoin de **create fixed thread pool** pour accélérer les tâches d'OCR, mais vous ne saviez pas par où commencer ? Vous n'êtes pas seul. Dans de nombreux projets très axés sur les images, le goulot d'étranglement est l'appel OCR monothread, et la solution est étonnamment simple : lancer un pool de threads travailleurs et les laisser traiter les fichiers en parallèle. + +Dans ce tutoriel, vous apprendrez comment **extract text from images** avec Aspose OCR, comment **run OCR** efficacement, et comment **convert image to text** sans surcharger votre CPU. À la fin, vous disposerez d'un programme Java prêt à l'emploi qui démontre le **parallel OCR processing** sur une poignée d'images d'exemple. + +## Ce que vous allez construire + +Nous allons assembler une petite application console qui : + +* Lit une liste de chemins d'images (PNG, JPG, TIFF, BMP). +* **Creates a fixed thread pool** dimensionné au nombre de cœurs CPU. +* Envoie une tâche OCR pour chaque image. +* Collecte le texte reconnu et l'affiche dans la console. +* Ferme proprement l'exécuteur. + +Pas d'outils de construction externes, pas de frameworks sophistiqués — juste du Java pur et la bibliothèque Aspose OCR. Si vous avez Java 8+ et un IDE décente, vous êtes prêt. + +## Prérequis + +* **Java Development Kit (JDK) 8 or newer** – le code utilise des lambdas, donc les versions plus anciennes ne compileront pas. +* **Aspose OCR for Java** – téléchargez le JAR depuis le site Aspose ou récupérez-le via Maven (`com.aspose:aspose-ocr`). +* Un dossier contenant quelques images de test (le code pointe vers `YOUR_DIRECTORY`). +* Une connaissance de base de la concurrence Java (nous expliquerons le reste). + +> *Pro tip:* Si vous utilisez Maven, ajoutez la dépendance à votre `pom.xml` et laissez l'IDE gérer le classpath. + +## Étape 1 : Ajouter les imports requis + +Tout d'abord, importez les classes dont nous avons besoin. Ce n'est pas seulement du code boilerplate ; chaque import indique à la JVM où trouver le moteur OCR, les utilitaires de gestion d'images, et les outils de concurrence qui nous permettent de **create fixed thread pool**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – l'API OCR principale. +* `java.util.*` – collections pour stocker les chemins d'images et les résultats. +* `java.util.concurrent.*` – le package de concurrence qui contient `ExecutorService` et `Future`. + +## Étape 2 : Définir les images à traiter + +Ensuite, nous listons les fichiers dont nous voulons **extract text from images**. L'utilisation de `Arrays.asList` rend le code concis et nous permet de remplacer par votre propre répertoire sans toucher au reste de la logique. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +N'hésitez pas à ajouter d'autres entrées ; le pool de threads s'adaptera automatiquement en fonction du nombre de cœurs CPU dont vous disposez. + +## Étape 3 : **Create Fixed Thread Pool** correspondant aux cœurs CPU + +Voici le cœur du tutoriel. Nous interrogeons le runtime pour connaître le nombre de cœurs disponibles et demandons à la fabrique `Executors` de nous fournir un pool exactement de cette taille. Pourquoi fixe ? Parce qu'un nombre prévisible de threads empêche la redoutable « explosion de threads » qui peut priver le système d'exploitation de ressources. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` renvoie le nombre de cœurs logiques (y compris les hyper‑threads). +* `newFixedThreadPool(coreCount)` garantit que nous ne dépassons jamais la capacité du CPU, ce qui est la façon la plus sûre de **run OCR** en parallèle. + +## Étape 4 : Soumettre une tâche OCR pour chaque image + +Nous transformons maintenant chaque chemin de fichier en un callable qui **runs OCR**, reconnaît le texte, et renvoie le résultat. Notez que nous créons une nouvelle instance de `OcrEngine` à l'intérieur du lambda — cela évite le partage non sûr de l'état du moteur entre threads. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Chaque appel `submit` transmet le lambda au pool, qui le planifie sur un thread inactif. +* Les objets `Future` nous permettent de récupérer le texte reconnu plus tard, en préservant l'ordre si nécessaire. + +## Étape 5 : Récupérer et afficher le texte reconnu + +Une fois toutes les tâches en file d'attente, nous itérons simplement sur la liste `Future`, en appelant `get()` pour bloquer jusqu'à ce que chaque tâche OCR se termine. C'est à ce moment que l'étape **convert image to text** devient visible : l'appel `engine.getText()` renvoie la chaîne brute. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Un exemple de sortie console ressemble à : + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Si un fichier échoue (peut-être parce qu'il est corrompu), vous verrez une ligne qui commence par `Failed:` suivie du chemin — pratique pour un débogage rapide. + +## Étape 6 : Nettoyer le service d'exécution + +N'oubliez jamais de fermer le pool ; sinon la JVM peut rester en vie, pensant qu'il y a encore du travail à faire. Un arrêt gracieux permet aux tâches en cours de se terminer avant que le processus ne se termine. + +```java +executor.shutdown(); +``` + +Vous pouvez également appeler `awaitTermination` si vous devez imposer un délai, mais pour la plupart des utilitaires en ligne de commande, un simple `shutdown()` suffit. + +## Exemple complet fonctionnel + +Voici le programme complet, prêt à l'exécution. Copiez‑collez‑le dans un fichier nommé `ParallelOcrTutorial.java`, ajustez les chemins d'images, et exécutez `javac` + `java` comme d'habitude. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Résultat attendu :** le contenu textuel de chaque image affiché dans la console, dans le même ordre que la liste `imagePaths`. Si une image ne peut pas être traitée, vous verrez un avis d'échec au lieu d'une ligne vide. + +## Questions fréquentes & cas limites + +### Et si j'ai plus d'images que de threads ? + +Le pool de threads fixe mettra automatiquement en file d'attente les tâches excédentaires. Dès qu'un thread termine son travail OCR actuel, il en prend un autre. Ce comportement de mise en file d'attente est l'essence du **parallel OCR processing** — vous obtenez le débit maximal sans submerger le CPU. + +### Puis-je changer la langue ? + +Absolument. Remplacez `engine.getLanguage().setEnglish(true);` par le drapeau de langue approprié, par ex., `setFrench(true)` ou activez plusieurs langues en appelant plusieurs setters avant `recognize()`. + +### Comment gérer les très grandes images ? + +Les gros fichiers peuvent consommer beaucoup de mémoire par thread. Si vous remarquez `OutOfMemoryError`, envisagez de réduire la taille de l'image avant de la transmettre au moteur, ou augmentez la taille du tas avec `-Xmx`. Une autre approche consiste à utiliser un **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/french/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/french/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..e26c50011 --- /dev/null +++ b/ocr/french/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-05-03 +description: Comment activer rapidement le GPU pour l'OCR Java – apprenez à extraire + du texte d'images avec Aspose OCR. Tutoriel complet d'OCR Java inclus. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: fr +og_description: Comment activer le GPU pour la reconnaissance optique de caractères + Java en quelques minutes. Ce tutoriel vous montre comment extraire du texte d'images + en utilisant un tutoriel OCR Java avec accélération GPU. +og_title: Comment activer le GPU pour l'OCR Java – Guide étape par étape +tags: +- Java +- OCR +- GPU +- Aspose +title: Comment activer le GPU pour la reconnaissance optique de caractères Java – + Tutoriel complet +url: /fr/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# comment activer le GPU pour Java OCR – Tutoriel complet + +Vous êtes-vous déjà demandé **comment activer le GPU** lorsque vous essayez d’extraire du texte d’une image ? Si vous avez déjà eu besoin d’exécuter de l’OCR sur un scan haute‑résolution et que le CPU s’est arrêté net, vous n’êtes pas seul. Dans ce guide, nous parcourrons un **tutoriel java OCR** qui montre non seulement comment extraire du texte, mais aussi la façon la plus rapide de **reconnaître du texte image java** en activant le support GPU expérimental. + +Nous commencerons par importer la bibliothèque Aspose OCR, puis activer le GPU, charger une image d’exemple, et enfin récupérer la chaîne reconnue du fichier. À la fin, vous disposerez d’un extrait prêt à l’emploi que vous pourrez insérer dans n’importe quel projet Maven, et vous comprendrez pourquoi le GPU est important, quand il peut ne pas aider, et comment dépanner les problèmes courants. Aucun document externe requis — tout ce dont vous avez besoin est ici. + +--- + +## Ce dont vous avez besoin + +- **Java Development Kit (JDK) 8+** – le code fonctionne avec n’importe quel JDK moderne. +- **Maven** (ou Gradle) pour récupérer la dépendance Aspose OCR. +- Une **machine compatible GPU** (une carte NVIDIA avec CUDA fonctionne le mieux, mais l’API Aspose reviendra gracieusement au CPU). +- Une image d’exemple, par ex. `sample-highres.png`, placée dans un dossier que vous pouvez référencer. +- Un brin de curiosité concernant les techniques **image to text conversion java**. + +Si l’un de ces éléments vous manque, téléchargez le JDK depuis Oracle ou OpenJDK, installez Maven, et assurez‑vous que votre pilote graphique est à jour. C’est tout le travail préparatoire ; le reste est du pur Java. + +--- + +## Étape 1 : Ajouter Aspose OCR à votre projet + +Première chose, il nous faut le moteur OCR lui‑même. Aspose fournit un artefact Maven propre ; il suffit d’insérer cet extrait dans votre `pom.xml` : + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Si vous préférez Gradle, l’équivalent est : + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Une fois la dépendance résolue, vous aurez accès à `OcrEngine`, `ImageStream` et aux assistants de langue qui rendent le **tutoriel java OCR** sans effort. + +--- + +## Étape 2 : Comment activer le GPU (mot‑clé principal en action) + +Nous arrivons maintenant au cœur du sujet : **comment activer le GPU** pour le moteur OCR. L’API Aspose expose un simple drapeau booléen — `setUseGpu(true)`. C’est expérimental, mais sur une carte graphique décente vous verrez le temps de reconnaissance chuter drastiquement, surtout pour les images grandes et haute‑résolution. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Astuce pro :** Si votre environnement ne possède pas de GPU compatible, le drapeau sera simplement ignoré, et le moteur reviendra en mode CPU. Aucun plantage, juste des performances plus lentes. + +--- + +## Étape 3 : Charger l’image à traiter + +Le moteur OCR travaille avec un `ImageStream`. Pointez‑le vers le fichier que vous souhaitez convertir d’image en texte brut. Voici une façon compacte de le faire : + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Assurez‑vous que le chemin est absolu ou relatif au répertoire de travail de votre projet. Si le fichier n’est pas trouvé, vous obtiendrez une `IOException` — nous la capturerons plus tard. + +--- + +## Étape 4 : Choisir la langue (optionnel mais recommandé) + +Aspose OCR peut gérer de nombreux alphabets, mais vous devez indiquer celui que vous attendez. Pour l’anglais, c’est une ligne : + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Si vous avez besoin du français ou du chinois, remplacez simplement le drapeau (`setFrench(true)`, `setChineseSimplified(true)`, etc.). Cette petite indication améliore souvent la précision, car le moteur peut éliminer les caractères improbables. + +--- + +## Étape 5 : Reconnaître Text Image Java – Exécuter le moteur + +Voici le moment de vérité : **reconnaître du texte image java** style. Nous appelons `recognize()` et, s’il renvoie `true`, nous récupérons la chaîne résultante avec `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +La sortie sera le texte brut extrait de `sample-highres.png`. Pour un document propre, vous voudrez peut‑être post‑traiter la chaîne (supprimer les espaces inutiles, remplacer les sauts de ligne, etc.). Voici un exemple rapide : + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Étape 6 : Exemple complet fonctionnel (prêt à copier‑coller) + +Ci‑dessous se trouve le **tutoriel java OCR** complet que vous pouvez compiler et exécuter directement. Il inclut la gestion des erreurs et affiche la sortie attendue. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Sortie attendue (exemple) :** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Si l’image contient plusieurs lignes, elles apparaîtront séparées par des caractères de saut de ligne (`\n`). Le moteur préserve la mise en page originale autant que possible. + +--- + +## Étape 7 : Cas limites, astuces et questions fréquentes + +### Et si le GPU n’est pas détecté ? + +Aspose désactive silencieusement le support GPU lorsqu’il ne trouve pas de dispositif compatible. Vous pouvez vérifier le mode en consultant le drapeau après l’initialisation : + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +S’il affiche `false`, revérifiez votre version de pilote et que le runtime `CUDA` se trouve dans le `PATH`. + +### Le GPU aide‑t‑il avec les petites images ? + +Pas toujours. Le surcoût de transfert d’un petit bitmap vers le GPU peut dépasser le gain de vitesse. Pour des images de moins de 500 KB, vous pourriez même constater un léger ralentissement. Dans ce cas, désactivez simplement `setUseGpu(false)`. + +### Comment gérer les documents multilingues ? + +Vous pouvez activer plusieurs langues simultanément : + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Le moteur tentera de faire correspondre les caractères de chaque jeu, ce qui est pratique pour les PDF bilingues. + +### Puis‑je traiter directement les PDF ? + +Aspose OCR travaille avec des flux d’image, vous devez donc rasteriser chaque page PDF d’abord (par ex. avec Aspose PDF ou PDFBox) puis fournir le `BufferedImage` résultant à `setImage`. + +--- + +## Résumé visuel + +![comment activer le GPU pour le moteur Java OCR](/images/gpu-ocr.png "Diagramme montrant le pipeline OCR accéléré par GPU") + +*Le diagramme illustre le flux depuis le chargement de l’image → OCR activé GPU → extraction du texte.* + +--- + +## Conclusion + +Nous avons couvert **comment activer le GPU** pour un flux de travail Java OCR, parcouru un **tutoriel java OCR** complet, et démontré **image to text conversion java** dans un exemple pratique, prêt à copier‑coller. En basculant un seul drapeau, vous pouvez gagner des secondes — voire des minutes — sur le traitement de gros scans, rendant vos applications plus réactives. + +Et ensuite ? Essayez de traiter un lot d’images dans une boucle, expérimentez avec différentes langues, ou combinez cela avec Apache Tika pour indexer automatiquement le texte extrait. Le ciel est la limite quand vous associez l’OCR accéléré GPU à d’autres bibliothèques Java. + +Des questions sur **comment extraire du texte** d’images complexes, ou envie d’en savoir plus sur les astuces **reconnaître du texte image java** ? Laissez un commentaire ci‑dessous, et bon codage ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/french/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/french/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..c87532fc0 --- /dev/null +++ b/ocr/french/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-05-03 +description: Améliorez rapidement la précision de l’OCR avec Aspose OCR Java. Apprenez + à charger une image pour l’OCR, à activer les langues et à appliquer une correction + orthographique agressive en quelques étapes. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: fr +og_description: Améliorez instantanément la précision de l’OCR avec Aspose OCR Java. + Ce guide montre comment charger une image pour l’OCR, activer les langues et utiliser + une correction orthographique agressive. +og_title: Améliorer la précision de l'OCR en Java – Tutoriel Aspose OCR étape par + étape +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Améliorer la précision de l'OCR en Java – Guide complet d'Aspose OCR +url: /fr/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Améliorer la précision de l'OCR en Java – Guide complet Aspose OCR + +Vous êtes‑vous déjà demandé pourquoi vos résultats d'OCR ressemblent à l'écriture d'un tout‑petit ? Si vous luttez contre des lettres manquantes, des mots incorrects ou simplement du charabia, vous n'êtes pas seul. **Improve OCR accuracy** est la première chose que la plupart des développeurs recherchent lorsque l'extraction de texte semble peu fiable. + +Dans ce tutoriel, nous parcourrons une solution pratique qui non seulement **load image for OCR** mais exploite également le moteur de correction orthographique intégré d'Aspose pour améliorer la qualité. À la fin, vous disposerez d'un programme Java prêt à l'emploi qui reconnaît le texte anglais + français avec une correction agressive — aucune dictionnaire externe nécessaire. + +## Ce que vous apprendrez + +- Comment **load image for OCR** en utilisant `ImageStream` d'Aspose. +- Pourquoi activer les bonnes langues est important pour la précision. +- L'impact de la correction orthographique agressive sur les documents multilingues. +- Un exemple complet et exécutable que vous pouvez intégrer dans n'importe quel projet Maven/Gradle. +- Conseils, pièges et idées de prochaines étapes pour faire évoluer cette approche. + +> **Prerequisites** – Java 8 ou plus récent, un JAR Aspose.OCR for Java récent (v23.12 ou ultérieur), et un fichier image (`multilingual.png`) contenant du texte anglais et français. C’est tout — aucun modèle ou API supplémentaire. + +## Améliorer la précision de l'OCR : configurer le moteur Aspose OCR + +Le cœur de toute chaîne OCR est la configuration du moteur. En indiquant à Aspose exactement ce que vous attendez, vous lui donnez une chance de bien faire les choses. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Pourquoi c'est important :** +- **Engine instance** – `OcrEngine` contient tous les paramètres ; créer une nouvelle instance évite le débordement d'état provenant des exécutions précédentes. +- **Image loading** – Utiliser `ImageStream.fromFile` est la façon la plus simple de **load image for OCR**. Il prend en charge PNG, JPEG, BMP et TIFF dès le départ. +- **Language flags** – Activer l'anglais + français indique au reconnaisseur d'utiliser les jeux de caractères et modèles linguistiques appropriés, ce qui peut à lui seul augmenter la précision de 10‑15 %. +- **Aggressive spell correction** – Définir `SpellCorrectionLevel.AGGRESSIVE` pousse le dictionnaire interne à réécrire les mots douteux, un levier clé lorsque vous devez **improve OCR accuracy** sur des scans bruyants. + +## Charger l'image pour l'OCR – définir le fichier source + +Avant que le moteur puisse faire quoi que ce soit, il a besoin d'un bitmap. Si vous lui fournissez un flux corrompu ou un mauvais chemin, vous obtiendrez une exception plus vite que vous ne pouvez dire « null pointer ». + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip :** Si vous traitez des images téléchargées par les utilisateurs, encapsulez la logique de chargement dans un bloc try‑catch et validez d'abord la taille/le format du fichier. Cela empêche le moteur de se bloquer sur des PDF volumineux ou des formats non pris en charge. + +## Activer plusieurs langues pour une meilleure reconnaissance + +La plupart des bibliothèques OCR sont configurées par défaut uniquement pour l'anglais. Lorsque votre document mélange des langues, vous constaterez une hausse des caractères mal reconnus. Aspose rend la bascule vers des langues supplémentaires indolore. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Pourquoi activer plus d'une langue ?** +- **Character set expansion** – Le français comprend des lettres accentuées comme « é » et « ç ». Sans le drapeau français, celles‑ci deviennent « e » ou « c », ce qui perturbe ensuite le correcteur orthographique. +- **Contextual hints** – Le moteur OCR utilise des modèles linguistiques pour prédire les limites des mots ; un modèle bilingue réduit les séparations erronées. + +## Appliquer une correction orthographique agressive + +La correction orthographique n'est pas seulement un « nice‑to‑have » ; c’est un facteur décisif lorsque vous devez **improve OCR accuracy** sur des scans de faible qualité. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Niveaux en un coup d'œil + +| Niveau | Comportement | +|--------|--------------| +| **NONE** | Aucun correctif – sortie brute du moteur uniquement. | +| **LIGHT** | Corrige les fautes évidentes, faible risque de sur‑correction. | +| **AGGRESSIVE** | Effectue des recherches dans le dictionnaire de manière agressive ; idéal pour les images bruyantes. | + +**Caution :** Le mode agressif peut réécrire des noms propres légitimes (par ex., « McDonald » → « Mcdonald »). Si votre domaine contient de nombreux noms, envisagez un filtre de post‑traitement. + +## Exécuter la reconnaissance et vérifier la sortie + +Maintenant que tout est configuré, il est temps de laisser Aspose faire le gros du travail. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Sortie attendue (exemple) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Si vous voyez du charabia à la place, vérifiez à nouveau : + +1. La qualité de l'image (les images floues ou à basse résolution DPI nuisent à la précision). +2. Les drapeaux de langue – l'absence du français supprimera les accents. +3. Le niveau de correction orthographique – essayez `LIGHT` si vous remarquez une sur‑correction. + +## Exemple complet fonctionnel (toutes les étapes dans un seul fichier) + +Voici le programme complet que vous pouvez compiler et exécuter directement. Enregistrez‑le sous le nom `SpellCorrectionTutorial.java`, ajustez le chemin de l'image et exécutez avec `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Compiler & exécuter : + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Vous devriez voir le texte multilingue corrigé affiché dans la console. + +## Pièges courants et comment les éviter + +| Symptom | Likely Cause | Fix | +|---------|--------------|-----| +| **Sortie vide** | Chemin de l'image incorrect ou fichier illisible | Vérifiez le chemin `ImageStream.fromFile` ; ajoutez une vérification de l'existence du fichier. | +| **Accents manquants** | Langue française non activée | Appelez `ocrEngine.getLanguage().setFrench(true)`. | +| **Caractères indésirables** | Image à basse résolution (< 150 dpi) | Agrandissez ou rescanez à une résolution DPI plus élevée ; envisagez un prétraitement avec des bibliothèques d'amélioration d'image. | +| **Noms sur‑corrigés** | Correction orthographique agressive sur les noms propres | Post‑traitez avec une liste blanche de noms connus ou passez au niveau `LIGHT`. | + +## Prochaines étapes : faire évoluer votre pipeline OCR + +- **Batch processing :** Parcourez un répertoire d'images, réutilisez une seule instance `OcrEngine` pour les performances. +- **PDF extraction :** Utilisez Aspose.PDF pour convertir chaque page en image, puis alimentez le moteur OCR. +- **Custom dictionaries :** Si votre domaine utilise une terminologie spécialisée (médicale, juridique), fournissez une liste de mots personnalisée à `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Parallelism :** Le `ForkJoinPool` de Java peut exécuter plusieurs tâches OCR en parallèle, mais surveillez l'utilisation de la mémoire car chaque moteur conserve des tampons d'image. + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Capture d'écran montrant le texte multilingue corrigé"} + +## Conclusion + +Nous venons de **improve OCR** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/french/java/ocr-operations/_index.md b/ocr/french/java/ocr-operations/_index.md index 779631174..7693d952d 100644 --- a/ocr/french/java/ocr-operations/_index.md +++ b/ocr/french/java/ocr-operations/_index.md @@ -81,6 +81,10 @@ Débloquez la puissance de l’OCR en Java avec Aspose.OCR. Reconnaissez le text Débloquez une puissante reconnaissance de texte en Java avec Aspose.OCR. Reconnaissez le texte dans les images TIFF sans effort. Téléchargez dès maintenant pour une expérience OCR fluide. ### [Reconnaître le texte d'image avec Aspose OCR – Tutoriel complet Java OCR](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Apprenez à extraire du texte d'images en Java avec Aspose OCR grâce à ce guide complet étape par étape. +### [Exemple Aspose OCR Java : Extraire du texte d’une région](./aspose-ocr-java-example-extract-text-from-a-region/) +Apprenez à extraire du texte d’une zone spécifique d’une image en Java avec Aspose OCR grâce à cet exemple pratique. +### [Extraire du texte de HEIC – Guide complet Java](./extract-text-from-heic-complete-java-guide/) +Apprenez à extraire du texte d'images HEIC en Java avec Aspose OCR grâce à ce guide complet étape par étape. ## Foire aux questions diff --git a/ocr/french/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/french/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..46bd37d73 --- /dev/null +++ b/ocr/french/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,161 @@ +--- +category: general +date: 2026-05-03 +description: L'exemple Aspose OCR Java montre comment charger une image pour l'OCR + et extraire le texte d'une région en quelques lignes de code seulement. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: fr +og_description: L'exemple Aspose OCR Java montre le chargement d'une image pour l'OCR + et l'extraction de texte d'une région spécifique, idéal pour le traitement des factures. +og_title: Exemple Aspose OCR Java – Extraction de texte de région +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Exemple Aspose OCR Java : Extraire du texte d’une région' +url: /fr/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java Example : Extraire du texte d'une région + +Vous cherchez un **exemple Aspose OCR Java** qui vous permette d'extraire uniquement la partie dont vous avez besoin d'une image ? Dans ce guide, nous verrons comment **charger une image pour l’OCR** et **extraire du texte d’une région**, idéal pour les numéros de facture, les champs de formulaire ou tout autre morceau de donnée caché dans une image plus grande. + +Vous vous demandez peut‑être pourquoi se limiter à un rectangle plutôt que de scanner la page entière. La réponse courte : vitesse et précision. Lorsque le moteur ne regarde qu’une tranche définie, il ignore le bruit inutile, s’exécute plus rapidement et produit souvent des résultats plus propres. À la fin de ce tutoriel, vous disposerez d’un programme Java autonome qui fait exactement cela, ainsi que de quelques astuces pour éviter les pièges courants qui bloquent les débutants. + +## Ce dont vous avez besoin + +- **Java Development Kit (JDK) 11** ou une version plus récente installée. +- Bibliothèque **Aspose.OCR for Java** (vous pouvez récupérer le dernier JAR depuis le dépôt Maven Central ou le portail de téléchargement Aspose). +- Un fichier image contenant le texte à lire – pour notre démonstration nous utiliserons `invoice.png`, qui comporte un numéro de facture quelque part près du coin supérieur droit. +- Un IDE préféré ou un simple éditeur de texte plus un terminal ; n’importe quel outil de construction (Maven, Gradle ou simplement `javac`) convient. + +C’est tout. Aucun moteur OCR supplémentaire, aucune bibliothèque native, juste du Java pur et Aspose. + +![Capture d'écran de l'exemple Aspose OCR Java](/images/aspose-ocr-java-example.png "Exemple Aspose OCR Java montrant l'extraction d'une région") + +## Exemple Aspose OCR Java – Initialiser le moteur OCR + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Pourquoi c’est important :** Créer le moteur dès le départ vous fournit un objet propre à configurer. Vous pouvez réutiliser le même `OcrEngine` pour plusieurs images si vous traitez un lot, ce qui économise de la mémoire et du temps d’initialisation. + +## Charger l'image pour l'OCR + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Astuce :** Remplacez `YOUR_DIRECTORY` par un chemin absolu ou relatif pointant vers l’endroit où vous avez stocké `invoice.png`. Si le fichier est introuvable, Aspose lève une `IOException`, il peut donc être judicieux d’envelopper cela dans un bloc try‑catch pour le code de production. + +## Définir et extraire du texte d’une région + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Comment ça fonctionne :** En appelant `setRegion`, vous limitez le scan OCR à une tranche de 300 pixels de large qui débute à 120 pixels du bord gauche et 250 pixels du haut. Ajustez ces valeurs pour correspondre à votre propre mise en page ; un moyen rapide de les trouver est d’ouvrir l’image dans n’importe quel éditeur graphique affichant les coordonnées en pixels. + +## Activer la langue et lancer la reconnaissance + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Pourquoi n’activer que l’anglais ?** Le moteur OCR essaiera de faire correspondre les caractères de chaque langue activée, ce qui peut le perturber lorsque le texte est simplement alphanumérique. Restreindre le jeu de langues améliore à la fois la vitesse et la précision. + +### Résultat attendu + +``` +Extracted region text: INV-12345 +``` + +Si le rectangle est décalé de quelques pixels, la sortie peut être illisible ou vide. C’est un contrôle de base simple : exécutez le programme, regardez la console et vérifiez que le texte correspond à ce que vous voyez sur l’image. + +## Exécuter le code et vérifier la sortie + +En supposant que vous utilisiez Maven, ajoutez la dépendance Aspose OCR à votre `pom.xml` : + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Compilez et exécutez : + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Ou, si vous préférez le simple `javac` : + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Vous devriez voir la ligne **Extracted region text** affichée dans la console. Si vous obtenez « OCR recognition failed », revérifiez le chemin du fichier et assurez‑vous que la région contient bien des caractères lisibles. + +## Cas limites & variations courantes + +| Situation | Ce qu’il faut modifier | +|-----------|------------------------| +| **Multiple languages** (p. ex., English + Spanish) | Appelez `ocrEngine.getLanguage().setSpanish(true);` en plus de l'anglais. | +| **Région hors des limites de l'image** | Aspose découpera silencieusement le rectangle, mais vous perdrez des données. Utilisez `ImageInfo` (`ocrEngine.getImage().getWidth()`) pour vérifier les dimensions avant de définir la région. | +| **Factures dynamiques** (différentes mises en page) | Envisagez d’effectuer un pré‑scan léger sur l’ensemble de l’image pour localiser des mots‑clés comme « Invoice # » puis calculez le rectangle de façon programmatique. | +| **Images à DPI élevé** | Augmentez `ocrEngine.getImage().setResolution(300);` pour une meilleure précision sur les documents numérisés. | +| **Optimisation des performances** | Désactivez les langues inutiles, gardez la région aussi petite que possible, et réutilisez une seule instance de `OcrEngine` pour de nombreux fichiers. | + +## Astuces pro du terrain + +- **Astuce pro :** Si vous avez uniquement besoin de chiffres (courant pour les numéros de facture), activez le mode numérique avec `ocrEngine.getLanguage().setDigits(true);`. Cela élimine le bruit alphabétique. +- **À surveiller :** PNG transparents. Aspose interprète parfois mal le canal alpha ; convertir l’image en JPEG à fond uni d’abord peut résoudre les sorties vides étranges. +- **Rappel :** Le rectangle utilise le système de coordonnées natif de l’image, pas le redimensionnement UI que vous pourriez voir à l’écran. Testez toujours avec le fichier exact que vous traiterez en production. + +## Et après ? + +Maintenant que vous disposez d’un **exemple Aspose OCR Java** solide pour l’extraction basée sur une région, vous pouvez l’étendre dans plusieurs directions utiles : + +- **Traitement par lots :** Parcourez un dossier de factures, en réutilisant le même `OcrEngine` pour améliorer le débit. +- **Validation des données :** Faites passer le texte extrait à travers une expression régulière comme `INV-\\d{5}` pour vous assurer d’avoir capturé un numéro de facture valide. +- **Intégration avec PDF :** Utilisez Aspose.PDF pour superposer le texte extrait sur le document original à des fins d’audit. +- **Déploiement cloud :** Enveloppez le code dans un service REST léger (Spring Boot) afin que d’autres systèmes puissent l’appeler à la demande. + +Chacune de ces étapes implique naturellement les mêmes concepts de base — **charger l’image pour l’OCR**, **extraire du texte d’une région**, et gérer les résultats — vous trouverez donc la transition fluide. + +*Bon codage ! Si vous rencontrez des problèmes, laissez un commentaire ci‑dessous ou consultez les forums Aspose où la communauté partage des ajustements concrets pour les mises en page complexes.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/french/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/french/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..fd20f4318 --- /dev/null +++ b/ocr/french/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-05-03 +description: Extrayez du texte à partir d'images HEIC en utilisant Aspose OCR en Java. + Apprenez comment convertir rapidement le HEIC en texte avec un exemple étape par + étape. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: fr +og_description: Extrayez du texte à partir d'images HEIC avec Aspose OCR en Java. + Ce guide vous montre comment convertir les fichiers HEIC en texte en quelques minutes. +og_title: Extraire du texte à partir de HEIC – Tutoriel OCR Java +tags: +- OCR +- Java +- Aspose +title: Extraire du texte à partir de HEIC – Guide complet Java +url: /fr/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extraire du texte à partir de HEIC – Guide complet Java + +Vous êtes-vous déjà demandé comment **extraire du texte à partir de fichiers HEIC** sans les convertir d’abord en JPEG ou PNG ? Vous n’êtes pas seul. De nombreux développeurs se heurtent à un mur lorsqu’une application mobile leur fournit une photo `.heic` et qu’ils ont besoin du texte intégré pour l’indexation ou l’analyse. Bonne nouvelle : avec Aspose OCR pour Java, vous pouvez **extraire du texte à partir de HEIC** directement—aucune étape de conversion supplémentaire n’est requise. + +Dans ce tutoriel, nous vous montrerons également comment **convertir HEIC en texte** dans un pipeline unique et propre, afin que vous puissiez intégrer le code dans n’importe quel projet Java et commencer à extraire des chaînes de ces images à haute efficacité dès aujourd’hui. + +![exemple d'extraction de texte à partir de HEIC](https://example.com/placeholder.png "exemple d'extraction de texte à partir de HEIC") + +## Ce que vous apprendrez + +- Comment configurer Aspose OCR dans un projet Maven/Gradle. +- Le code Java exact nécessaire pour **extraire du texte à partir de HEIC**. +- Pourquoi cette approche est plus rapide et moins sujette aux erreurs qu’un flux de travail `convertir‑puis‑OCR` en deux étapes. +- Les pièges courants (par ex., packs de langues manquants) et comment les éviter. +- Astuces pour faire évoluer la solution dans un scénario de traitement par lots. + +À la fin du guide, vous serez capable de **convertir HEIC en texte** en quelques lignes de code seulement, et vous comprendrez le « pourquoi » derrière chaque étape. + +--- + +## Prérequis + +Avant de commencer, assurez‑vous d’avoir : + +1. **Java 8 ou supérieur** – Aspose OCR fonctionne avec n’importe quel JDK moderne. +2. **Maven ou Gradle** – pour récupérer automatiquement la bibliothèque Aspose OCR. +3. Une **image HEIC** que vous souhaitez tester (renommez‑la `sample.heic` et placez‑la à un emplacement accessible). +4. Facultatif mais pratique : un IDE comme IntelliJ IDEA ou VS Code. + +Aucun autre outil externe n’est requis ; la bibliothèque gère le format HEIC nativement. + +--- + +## Étape 1 – Ajouter Aspose OCR à votre projet + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Astuce pro :** Gardez le numéro de version synchronisé avec les versions officielles d’Aspose ; les versions plus récentes ajoutent la prise en charge de variantes HEIC supplémentaires et améliorent la précision linguistique. + +--- + +## Étape 2 – Initialiser le moteur OCR pour **extraire du texte à partir de HEIC** + +Créer une instance `OcrEngine` est la première étape concrète pour extraire du texte à partir de HEIC. Le moteur abstrait tout le décodage bas‑niveau, vous n’avez donc pas à vous soucier du format conteneur HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Pourquoi c’est important :** +HEIC est un format d’image moderne basé sur le conteneur HEIF. Les bibliothèques OCR traditionnelles attendent JPEG/PNG, vous obligeant à exécuter une étape de conversion séparée qui peut dégrader la qualité. La prise en charge native d’Aspose OCR vous permet **d’extraire du texte à partir de HEIC** en une seule fois, en préservant les données de pixels d’origine et en économisant des cycles CPU. + +--- + +## Étape 3 – Activer la (les) langue(s) souhaitée(s) + +Par défaut, le moteur ne recherche que l’anglais. Si vous devez **convertir HEIC en texte** dans une autre langue, il suffit d’activer le drapeau correspondant. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Pourquoi activer explicitement les langues ?** +> Les packs de langues sont chargés à la demande. N’activer que ce dont vous avez besoin réduit l’empreinte mémoire et accélère la reconnaissance. + +--- + +## Étape 4 – Exécuter le processus de reconnaissance + +Nous demandons maintenant au moteur de lire l’image et de produire une chaîne de caractères. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Sortie attendue** (en supposant que l’image contienne la phrase « Hello World ») : + +``` +=== Recognized Text === +Hello World +``` + +Si l’image est vide ou que le texte est illisible, le moteur renvoie `false`, et vous verrez le message de secours. + +--- + +## Étape 5 – Gestion des cas limites et questions fréquentes + +### Que faire si le fichier HEIC est corrompu ? + +Aspose OCR lève une `IOException` lorsqu’il ne peut pas décoder le conteneur. Enveloppez l’appel dans un bloc `try‑catch` et consignez l’erreur pour une inspection ultérieure. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Puis‑je traiter plusieurs fichiers HEIC en lot ? + +Absolument. Il suffit de parcourir un répertoire et de réutiliser la même instance `OcrEngine` afin d’éviter le surcoût d’initialisation répété. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Cette méthode **convertit‑elle également HEIC en texte** pour les scripts non latins ? + +Oui—Aspose OCR prend en charge l’arabe, le chinois, le cyrillique et bien d’autres langues. Activez simplement le drapeau de langue correspondant (par ex., `engine.getLanguage().setChineseSimplified(true);`). N’oubliez pas d’ajouter les fichiers de polices appropriés si vous exécutez le code sur un serveur sans interface graphique. + +--- + +## Étape 6 – Vérifier le résultat de façon programmatique + +Dans un pipeline de production, vous devrez souvent vérifier que la sortie OCR répond à certains seuils de qualité. Une façon rapide consiste à calculer un score de confiance (disponible dans les versions récentes) ou simplement à vérifier la longueur de la chaîne renvoyée. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Exemple complet fonctionnel + +Voici la classe Java complète, prête à être exécutée, qui intègre toutes les étapes décrites ci‑dessus. Copiez‑la dans un fichier nommé `HeifExample.java`, ajustez le chemin vers votre fichier HEIC, puis compilez et exécutez avec `javac` + `java` comme d’habitude. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Exécutez‑le : + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Vous devriez voir la chaîne extraite affichée dans la console, confirmant que vous avez bien **converti HEIC en texte**. + +--- + +## Conclusion + +Nous avons parcouru tout ce dont vous avez besoin pour **extraire du texte à partir de HEIC** en utilisant Aspose OCR avec Java. De l’ajout de la bibliothèque à la gestion des cas limites, le guide propose une solution propre en une seule étape qui élimine le besoin d’un utilitaire de conversion séparé. + +Vous pouvez maintenant : + +- **Convertir HEIC en texte** à la volée dans des services web, des back‑ends mobiles ou des jobs par lots. +- Étendre la prise en charge à d’autres langues avec une seule ligne de configuration. +- Faire évoluer le processus en réutilisant le même `OcrEngine` pour de nombreux fichiers. + +Ensuite, vous pourriez explorer **l’intégration du résultat OCR dans un index searchable** (par ex., Elasticsearch) ou **l’ajout de pré‑traitements d’image** pour améliorer la précision sur les photos HEIC à faible contraste. Le ciel est la limite—expérimentez, mesurez et itérez. + +Vous avez des questions ou vous êtes confronté à un fichier HEIC difficile ? Laissez un commentaire ci‑dessous, et bon codage ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/german/java/advanced-ocr-techniques/_index.md b/ocr/german/java/advanced-ocr-techniques/_index.md index b9bdc98dd..862721c4f 100644 --- a/ocr/german/java/advanced-ocr-techniques/_index.md +++ b/ocr/german/java/advanced-ocr-techniques/_index.md @@ -35,7 +35,7 @@ Entdecken Sie die Leistungsfähigkeit von Aspose.OCR für Java in unserem Leitfa ## [Vorbereiten von Rechtecken für OCR in Aspose.OCR](./prepare-rectangles-for-ocr/) -Bereiten Sie mithilfe unseres umfassenden Leitfadens mit Aspose.OCR für Java effizient Rechtecke für OCR vor. Verbessern Sie Ihre Java-Anwendungen, indem Sie das volle Potenzial der Texterkennung ausschöpfen. Befolgen Sie die Schritt-für-Schritt-Anleitung für eine nahtlose Integration und verbesserte OCR-Funktionen. +Bereiten Sie mithilfe unseres umfassenden Leitfadens mit Aspose.OCR für Java effizient Rechtecke für OCR vor. Verbessern Sie Ihre Java-Anwendungen, indem Sie das volle Potenzial der Texterkennung ausschöpfen. Befolgen Sie die Schritt-für-Schritt-Anleitung für eine nahtlose Integration und ver­besserte OCR-Funktionen. ## [Erkennen von Linien in Aspose.OCR für Java](./recognize-lines/) @@ -61,9 +61,16 @@ Nutzen Sie die Leistungsfähigkeit der Texterkennung mit Aspose.OCR für Java. B Stärken Sie Ihre Java-Anwendungen mit Aspose.OCR für eine präzise Texterkennung. Einfache Integration, hohe Genauigkeit. ### [Angeben zulässiger Zeichen in Aspose.OCR](./specify-allowed-characters/) Nutzen Sie die nahtlose Textextraktion aus Bildern mit Aspose.OCR für Java. Befolgen Sie unsere Schritt-für-Schritt-Anleitung für eine effiziente Integration. +### [GPU für Java OCR aktivieren – Komplettes Tutorial](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Erfahren Sie, wie Sie GPU-Beschleunigung in Aspose.OCR für Java aktivieren, um die Texterkennungsgeschwindigkeit zu maximieren. +### [Erstellen eines festen Thread-Pools für paralleles OCR in Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Erfahren Sie, wie Sie mit einem festen Thread-Pool die OCR-Verarbeitung in Java parallelisieren und die Leistung steigern. +### [Verbessern Sie die OCR-Genauigkeit in Java – Komplettes Aspose OCR‑Handbuch](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Erfahren Sie, wie Sie die OCR‑Genauigkeit in Java mit Aspose OCR optimieren und zuverlässige Textergebnisse erzielen. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/german/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/german/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..a518fefd6 --- /dev/null +++ b/ocr/german/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Erstelle einen festen Thread‑Pool in Java, um Text schnell aus Bildern + zu extrahieren. Erfahre, wie man OCR ausführt, Bilder in Text umwandelt und die + Leistung mit paralleler OCR‑Verarbeitung steigert. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: de +og_description: Erstelle einen festen Thread‑Pool in Java, um Text schnell aus Bildern + zu extrahieren. Erfahre, wie du OCR ausführst, Bilder in Text umwandelst und die + Leistung mit paralleler OCR‑Verarbeitung steigerst. +og_title: Erstelle einen festen Thread‑Pool für parallele OCR in Java +tags: +- Java +- OCR +- Multithreading +title: Erstelle einen festen Thread‑Pool für parallele OCR in Java +url: /de/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Erstelle einen festen Thread-Pool für paralleles OCR in Java + +Haben Sie jemals **einen festen Thread-Pool erstellen** müssen, um OCR‑Jobs zu beschleunigen, wussten aber nicht, wo Sie anfangen sollen? Sie sind nicht allein. In vielen bildintensiven Projekten ist der Engpass der einstufige OCR‑Aufruf, und die Lösung ist überraschend einfach: Einen Pool von Worker‑Threads starten und sie die Dateien parallel verarbeiten lassen. + +In diesem Tutorial lernen Sie, wie Sie **Text aus Bildern extrahieren** mit Aspose OCR, wie Sie **OCR effizient ausführen** und wie Sie **Bild zu Text konvertieren** können, ohne Ihre CPU zu überlasten. Am Ende haben Sie ein sofort ausführbares Java‑Programm, das **parallele OCR‑Verarbeitung** an einer Handvoll Beispielbilder demonstriert. + +## Was Sie bauen werden + +Wir stellen eine kleine Konsolen‑App zusammen, die: + +* Eine Liste von Bildpfaden (PNG, JPG, TIFF, BMP) einliest. +* **Einen festen Thread-Pool** erstellt, der der Anzahl der CPU‑Kerne entspricht. +* Für jedes Bild eine OCR‑Aufgabe dispatcht. +* Den erkannten Text sammelt und in der Konsole ausgibt. +* Den Executor sauber herunterfährt. + +Keine externen Build‑Tools, keine ausgefallenen Frameworks — nur reines Java und die Aspose OCR‑Bibliothek. Wenn Sie Java 8+ und eine ordentliche IDE haben, sind Sie startklar. + +## Voraussetzungen + +* **Java Development Kit (JDK) 8 oder neuer** – der Code verwendet Lambdas, ältere Versionen lassen sich nicht kompilieren. +* **Aspose OCR für Java** – das JAR von der Aspose‑Website herunterladen oder über Maven einbinden (`com.aspose:aspose-ocr`). +* Ein Ordner mit ein paar Testbildern (der Code verweist auf `YOUR_DIRECTORY`). +* Grundlegende Kenntnisse der Java‑Parallelität (den Rest erklären wir). + +> *Pro‑Tipp:* Wenn Sie Maven verwenden, fügen Sie die Abhängigkeit zu Ihrer `pom.xml` hinzu und lassen Sie die IDE den Klassenpfad verwalten. + +--- + +## Schritt 1: Die erforderlichen Importe hinzufügen + +Zuerst bringen wir die Klassen, die wir benötigen, in den Gültigkeitsbereich. Das ist nicht nur Boilerplate; jeder Import sagt der JVM, wo die OCR‑Engine, Bild‑Utilities und die Concurrency‑Tools zu finden sind, die uns **einen festen Thread-Pool erstellen** lassen. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – die Kern‑OCR‑API. +* `java.util.*` – Collections zum Speichern von Bildpfaden und Ergebnissen. +* `java.util.concurrent.*` – das Concurrency‑Paket, das `ExecutorService` und `Future` bereitstellt. + +--- + +## Schritt 2: Die zu verarbeitenden Bilder definieren + +Als Nächstes listen wir die Dateien auf, aus denen wir **Text aus Bildern extrahieren** wollen. `Arrays.asList` hält den Code kompakt und ermöglicht es, Ihr eigenes Verzeichnis einzusetzen, ohne die übrige Logik zu ändern. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Fügen Sie gern weitere Einträge hinzu; der Thread‑Pool skaliert automatisch basierend auf der Anzahl Ihrer CPU‑Kerne. + +--- + +## Schritt 3: **Einen festen Thread-Pool erstellen**, passend zu den CPU‑Kernen + +Hier kommt das Herzstück des Tutorials. Wir fragen die Laufzeit, wie viele Kerne verfügbar sind, und lassen die `Executors`‑Factory uns einen Pool exakt dieser Größe geben. Warum fest? Weil eine vorhersehbare Thread‑Anzahl das gefürchtete „Thread‑Explodieren“ verhindert, das das Betriebssystem mit Ressourcen ersticken kann. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` liefert die logische Kernanzahl (inklusive Hyper‑Threads). +* `newFixedThreadPool(coreCount)` garantiert, dass wir nie die Kapazität der CPU überschreiten – der sicherste Weg, **OCR parallel auszuführen**. + +--- + +## Schritt 4: Für jedes Bild eine OCR‑Aufgabe einreichen + +Jetzt verwandeln wir jeden Dateipfad in ein `Callable`, das **OCR ausführt**, den Text erkennt und das Ergebnis zurückgibt. Beachten Sie, dass wir innerhalb des Lambdas eine frische `OcrEngine` instanziieren — das verhindert das thread‑unsichere Teilen von Engine‑Zuständen. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Jeder `submit`‑Aufruf übergibt das Lambda an den Pool, der es einem freien Thread zuweist. +* Die `Future`‑Objekte ermöglichen es uns, den erkannten Text später abzurufen und bei Bedarf die Reihenfolge beizubehalten. + +--- + +## Schritt 5: Den erkannten Text abrufen und anzeigen + +Sobald alle Aufgaben in die Warteschlange gestellt sind, iterieren wir einfach über die `Future`‑Liste und rufen `get()` auf, um zu blockieren, bis jeder OCR‑Job fertig ist. Hier wird der **Bild‑zu‑Text‑Konvertierung**‑Schritt sichtbar: Der Aufruf `engine.getText()` liefert den rohen String. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Typische Konsolenausgabe sieht so aus: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Scheitert eine Datei (z. B. weil sie beschädigt ist), sehen Sie eine Zeile, die mit `Failed:` beginnt, gefolgt vom Pfad — praktisch für schnelles Debugging. + +--- + +## Schritt 6: Den Executor Service bereinigen + +Vergessen Sie nie, den Pool herunterzufahren; sonst bleibt die JVM eventuell aktiv, weil sie denkt, es gäbe noch Arbeit. Ein geordneter Shutdown lässt laufende Aufgaben beenden, bevor der Prozess endet. + +```java +executor.shutdown(); +``` + +Sie können auch `awaitTermination` aufrufen, wenn Sie ein Timeout erzwingen wollen, aber für die meisten Kommandozeilen‑Utilities reicht ein einfaches `shutdown()` aus. + +--- + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das komplette, sofort ausführbare Programm. Kopieren Sie es in eine Datei namens `ParallelOcrTutorial.java`, passen Sie die Bildpfade an und führen Sie `javac` + `java` wie gewohnt aus. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Erwartetes Ergebnis:** Der Textinhalt jedes Bildes wird in der Konsole ausgegeben, in derselben Reihenfolge wie die `imagePaths`‑Liste. Kann ein Bild nicht verarbeitet werden, erscheint stattdessen ein Fehlermeldungshinweis. + +--- + +## Häufige Fragen & Sonderfälle + +### Was ist, wenn ich mehr Bilder als Threads habe? + +Der feste Thread‑Pool wird die überschüssigen Aufgaben automatisch in die Warteschlange stellen. Sobald ein Thread seinen aktuellen OCR‑Job beendet, übernimmt er die nächste Aufgabe. Dieses Warteschlangen‑Verhalten ist das Wesen der **parallelen OCR‑Verarbeitung** — Sie erhalten maximalen Durchsatz, ohne die CPU zu überlasten. + +### Kann ich die Sprache ändern? + +Absolut. Ersetzen Sie `engine.getLanguage().setEnglish(true);` durch das passende Sprach‑Flag, z. B. `setFrench(true)` oder aktivieren Sie mehrere Sprachen, indem Sie mehrere Setter vor `recognize()` aufrufen. + +### Wie gehe ich mit sehr großen Bildern um? + +Große Dateien können pro Thread viel Speicher verbrauchen. Wenn Sie `OutOfMemoryError` bemerken, sollten Sie das Bild vor dem Einspeisen in die Engine verkleinern oder den Heap mit `-Xmx` vergrößern. Ein weiterer Ansatz ist die Verwendung eines **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/german/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/german/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..314c8eea4 --- /dev/null +++ b/ocr/german/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-05-03 +description: Wie man GPU für Java OCR schnell aktiviert – lernen Sie, wie man Text + aus Bildern mit Aspose OCR extrahiert. Vollständiges Java-OCR‑Tutorial enthalten. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: de +og_description: Wie man die GPU für Java-OCR in Minuten aktiviert. Dieses Tutorial + zeigt, wie man Text aus Bildern extrahiert, indem man ein Java-OCR-Tutorial mit + GPU‑Beschleunigung verwendet. +og_title: Wie man die GPU für Java-OCR aktiviert – Schritt‑für‑Schritt‑Anleitung +tags: +- Java +- OCR +- GPU +- Aspose +title: Wie man die GPU für Java-OCR aktiviert – komplettes Tutorial +url: /de/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# wie man GPU für Java OCR aktiviert – Komplettes Tutorial + +Haben Sie sich jemals gefragt, **wie man GPU aktiviert**, wenn Sie Text aus einem Bild extrahieren möchten? Wenn Sie schon einmal OCR auf einem hochauflösenden Scan ausführen mussten und die CPU dabei zum Stillstand kam, sind Sie nicht allein. In diesem Leitfaden gehen wir Schritt für Schritt durch ein **java ocr tutorial**, das nicht nur zeigt, wie man Text extrahiert, sondern auch den schnellsten Weg demonstriert, **recognize text image java**‑style zu arbeiten, indem experimentelle GPU‑Unterstützung eingeschaltet wird. + +Wir beginnen damit, die Aspose OCR‑Bibliothek einzubinden, dann die GPU zu aktivieren, ein Beispielbild zu laden und schließlich die erkannte Zeichenkette aus der Datei zu holen. Am Ende haben Sie ein einsatzbereites Snippet, das Sie in jedes Maven‑Projekt einfügen können, und Sie verstehen, warum GPU wichtig ist, wann sie möglicherweise nicht hilft und wie man gängige Stolpersteine behebt. Keine externen Dokumente nötig – alles, was Sie brauchen, finden Sie hier. + +--- + +## Was Sie benötigen + +- **Java Development Kit (JDK) 8+** – der Code läuft auf jedem modernen JDK. +- **Maven** (oder Gradle), um die Aspose OCR‑Abhängigkeit zu holen. +- Eine **GPU‑kompatible Maschine** (CUDA‑fähige NVIDIA‑Karte funktioniert am besten, aber die Aspose‑API fällt bei Bedarf elegant zurück). +- Ein Beispielbild, z. B. `sample-highres.png`, das in einem Ordner liegt, den Sie referenzieren können. +- Ein wenig Neugierde für **image to text conversion java**‑Techniken. + +Falls Ihnen etwas fehlt, holen Sie sich das JDK von Oracle oder OpenJDK, installieren Sie Maven und stellen Sie sicher, dass Ihr Grafikkartentreiber aktuell ist. Das ist die gesamte Vorbereitung; der Rest ist reines Java. + +--- + +## Schritt 1: Aspose OCR zu Ihrem Projekt hinzufügen + +Zuerst benötigen wir die OCR‑Engine selbst. Aspose stellt ein sauberes Maven‑Artefakt bereit; fügen Sie einfach diesen Ausschnitt in Ihre `pom.xml` ein: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Falls Sie Gradle bevorzugen, lautet das Äquivalent: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Sobald die Abhängigkeit aufgelöst ist, haben Sie Zugriff auf `OcrEngine`, `ImageStream` und die Sprach‑Hilfsmittel, die ein **java ocr tutorial** mühelos machen. + +--- + +## Schritt 2: Wie man GPU aktiviert (Primäres Schlüsselwort in Aktion) + +Jetzt kommen wir zum Kern der Sache: **wie man GPU aktiviert** für die OCR‑Engine. Die Aspose‑API stellt ein einzelnes boolesches Flag bereit – `setUseGpu(true)`. Es ist experimentell, aber auf einer ordentlichen Grafikkarte sehen Sie die Erkennungszeit dramatisch sinken, besonders bei großen, hochauflösenden Bildern. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro‑Tipp:** Wenn Ihre Umgebung keine kompatible GPU hat, wird das Flag stillschweigend ignoriert und die Engine fällt in den CPU‑Modus zurück. Kein Absturz, nur langsamere Leistung. + +--- + +## Schritt 3: Das Bild laden, das Sie verarbeiten möchten + +Die OCR‑Engine arbeitet mit einem `ImageStream`. Zeigen Sie ihn auf die Datei, die Sie von Bild zu Klartext konvertieren wollen. Hier ein kompakter Weg: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Stellen Sie sicher, dass der Pfad absolut oder relativ zu Ihrem Projekt‑Arbeitsverzeichnis ist. Wenn die Datei nicht gefunden wird, erhalten Sie eine `IOException` – wir fangen das später ab. + +--- + +## Schritt 4: Sprache wählen (Optional, aber empfohlen) + +Aspose OCR kann viele Alphabete verarbeiten, aber Sie sollten angeben, welche Sie erwarten. Für Englisch reicht ein Einzeiler: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Wenn Sie Französisch oder Chinesisch benötigen, tauschen Sie einfach das Flag aus (`setFrench(true)`, `setChineseSimplified(true)` usw.). Dieser kleine Hinweis erhöht oft die Genauigkeit, weil die Engine unwahrscheinliche Zeichenkandidaten ausschließen kann. + +--- + +## Schritt 5: Recognize Text Image Java – Engine ausführen + +Jetzt kommt der entscheidende Moment: **recognize text image java**‑style. Wir rufen `recognize()` auf und, wenn es `true` zurückgibt, holen den resultierenden String mit `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +Die Ausgabe ist der Rohtext, der aus `sample-highres.png` extrahiert wurde. Für ein sauberes Dokument möchten Sie den String vielleicht nachbearbeiten (Whitespace trimmen, Zeilenumbrüche ersetzen usw.). Hier ein kurzes Beispiel: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Schritt 6: Vollständiges, lauffähiges Beispiel (Copy‑Paste‑bereit) + +Unten finden Sie das komplette **java ocr tutorial**, das Sie direkt kompilieren und ausführen können. Es enthält Fehlerbehandlung und gibt die erwartete Ausgabe aus. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Erwartete Ausgabe (Beispiel):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Enthält das Bild mehrere Zeilen, erscheinen sie durch Zeilenumbruch‑Zeichen (`\n`) getrennt. Die Engine bewahrt das ursprüngliche Layout so gut wie möglich. + +--- + +## Schritt 7: Randfälle, Tipps und häufige Fragen + +### Was, wenn die GPU nicht erkannt wird? + +Aspose deaktiviert die GPU‑Unterstützung stillschweigend, wenn kein kompatibles Gerät gefunden wird. Sie können den Modus prüfen, indem Sie nach der Initialisierung das Flag ausgeben: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Wenn `false` angezeigt wird, überprüfen Sie Ihre Treiberversion und ob die `CUDA`‑Runtime im `PATH` liegt. + +### Hilft GPU bei kleinen Bildern? + +Nicht immer. Der Overhead, ein kleines Bitmap zur GPU zu übertragen, kann den Geschwindigkeitsvorteil überwiegen. Bei Bildern unter 500 KB kann sogar eine leichte Verlangsamung auftreten. In solchen Fällen setzen Sie einfach `setUseGpu(false)`. + +### Wie gehe ich mit mehrsprachigen Dokumenten um? + +Sie können mehrere Sprachen gleichzeitig aktivieren: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Die Engine versucht dann, Zeichen aus beiden Sets zu matchen – praktisch für zweisprachige PDFs. + +### Kann ich PDFs direkt verarbeiten? + +Aspose OCR arbeitet mit Image‑Streams, daher müssen Sie jede PDF‑Seite zuerst rasterisieren (z. B. mit Aspose PDF oder PDFBox) und dann das resultierende `BufferedImage` an `setImage` übergeben. + +--- + +## Visuelle Zusammenfassung + +![how to enable gpu for Java OCR engine](/images/gpu-ocr.png "Diagram showing GPU‑accelerated OCR pipeline") + +*Das Diagramm zeigt den Ablauf von Bild‑Laden → GPU‑aktiviertes OCR → Textextraktion.* + +--- + +## Fazit + +Wir haben **wie man GPU aktiviert** für einen Java‑OCR‑Workflow behandelt, ein vollständiges **java ocr tutorial** durchlaufen und **image to text conversion java** praktisch demonstriert. Durch das Umschalten eines einzigen Flags können Sie Sekunden – oder sogar Minuten – bei der Verarbeitung großer Scans einsparen, sodass Ihre Anwendungen flüssiger und reaktionsschneller wirken. + +Was kommt als Nächstes? Versuchen Sie, eine Bild‑Batch‑Schleife zu implementieren, experimentieren Sie mit verschiedenen Sprachen oder kombinieren Sie das Ganze mit Apache Tika, um den extrahierten Text automatisch zu indexieren. Der Himmel ist die Grenze, wenn Sie GPU‑beschleunigtes OCR mit anderen Java‑Bibliotheken verbinden. + +Haben Sie Fragen zu **how to extract text** aus kniffligen Bildern oder möchten mehr über **recognize text image java**‑Tricks erfahren? Hinterlassen Sie einen Kommentar unten, und happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/german/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/german/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..4816260b7 --- /dev/null +++ b/ocr/german/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-05-03 +description: Verbessern Sie die OCR‑Genauigkeit schnell mit Aspose OCR Java. Erfahren + Sie, wie Sie ein Bild für die OCR laden, Sprachen aktivieren und eine aggressive + Rechtschreibkorrektur in wenigen Schritten anwenden. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: de +og_description: Verbessern Sie die OCR‑Genauigkeit sofort mit Aspose OCR Java. Dieser + Leitfaden zeigt, wie man ein Bild für OCR lädt, Sprachen aktiviert und eine aggressive + Rechtschreibkorrektur verwendet. +og_title: Verbessern Sie die OCR‑Genauigkeit in Java – Schritt‑für‑Schritt Aspose + OCR‑Tutorial +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Verbessern Sie die OCR‑Genauigkeit in Java – Vollständiger Aspose OCR‑Leitfaden +url: /de/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Verbesserung der OCR-Genauigkeit in Java – Vollständiger Aspose OCR-Leitfaden + +Haben Sie sich jemals gefragt, warum Ihre OCR-Ergebnisse wie die Handschrift eines Kleinkinds aussehen? Wenn Sie mit fehlenden Buchstaben, falschen Wörtern oder schlichtem Kauderwelsch kämpfen, sind Sie nicht allein. **Improve OCR accuracy** ist das Erste, zu dem die meisten Entwickler greifen, wenn ihre Textextraktion unzuverlässig erscheint. + +In diesem Tutorial führen wir Sie durch eine praktische Lösung, die nicht nur **load image for OCR** nutzt, sondern auch Asposes integrierte Rechtschreibkorrektur-Engine verwendet, um die Qualität zu steigern. Am Ende haben Sie ein sofort ausführbares Java‑Programm, das englischen + französischen Text mit aggressiver Korrektur erkennt – ohne externe Wörterbücher. + +## Was Sie lernen werden + +- Wie man **load image for OCR** mit Asposes `ImageStream` verwendet. +- Warum das Aktivieren der richtigen Sprachen für die Genauigkeit wichtig ist. +- Die Auswirkung aggressiver Rechtschreibkorrektur auf mehrsprachige Dokumente. +- Ein vollständiges, ausführbares Code‑Beispiel, das Sie in jedes Maven/Gradle‑Projekt einbinden können. +- Tipps, Fallstricke und Ideen für die nächsten Schritte, um diesen Ansatz zu skalieren. + +> **Prerequisites** – Java 8 oder neuer, ein aktuelles Aspose.OCR for Java JAR (v23.12 oder später) und eine Bilddatei (`multilingual.png`) mit englischem und französischem Text. Das ist alles – keine zusätzlichen Modelle oder APIs. + +--- + +## Verbesserung der OCR-Genauigkeit: Konfiguration der Aspose OCR-Engine + +Das Herz jeder OCR-Pipeline ist die Konfiguration der Engine. Indem Sie Aspose genau mitteilen, was Sie erwarten, geben Sie ihr eine faire Chance, die Dinge richtig zu machen. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Warum das wichtig ist:** +- **Engine instance** – `OcrEngine` hält alle Einstellungen; das Erstellen einer neuen Instanz verhindert das Übertragen von Zuständen aus vorherigen Durchläufen. +- **Image loading** – Die Verwendung von `ImageStream.fromFile` ist der einfachste Weg, um **load image for OCR** durchzuführen. Es unterstützt PNG, JPEG, BMP und TIFF von Haus aus. +- **Language flags** – Das Aktivieren von Englisch + Französisch weist den Erkenner an, die entsprechenden Zeichensätze und Sprachmodelle zu verwenden, was allein die Genauigkeit um 10‑15 % steigern kann. +- **Aggressive spell correction** – Das Setzen von `SpellCorrectionLevel.AGGRESSIVE` lässt das interne Wörterbuch zweifelhafte Wörter umschreiben, ein entscheidender Hebel, wenn Sie **improve OCR accuracy** bei verrauschten Scans benötigen. + +## Bild für OCR laden – Festlegen der Quelldatei + +Bevor die Engine etwas tun kann, benötigt sie ein Bitmap. Wenn Sie ihr einen beschädigten Stream oder den falschen Pfad übergeben, erhalten Sie eine Ausnahme schneller, als Sie „null pointer“ sagen können. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro‑Tipp:** Wenn Sie Bilder verarbeiten, die von Benutzern hochgeladen wurden, verpacken Sie die Ladelogik in einen try‑catch‑Block und prüfen Sie zuerst Dateigröße/Format. Das verhindert, dass die Engine bei riesigen PDFs oder nicht unterstützten Formaten abstürzt. + +## Mehrere Sprachen aktivieren für bessere Erkennung + +Die meisten OCR‑Bibliotheken verwenden standardmäßig nur Englisch. Wenn Ihr Dokument mehrere Sprachen enthält, sehen Sie einen Anstieg falsch erkannter Zeichen. Aspose macht das Umschalten zusätzlicher Sprachen mühelos. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Warum mehr als eine Sprache aktivieren?** +- **Character set expansion** – Französisch enthält akzentuierte Buchstaben wie „é“ und „ç“. Ohne das französische Flag werden diese zu „e“ bzw. „c“, was später den Rechtschreibkorrektor verwirrt. +- **Contextual hints** – Die OCR‑Engine nutzt Sprachmodelle, um Wortgrenzen vorherzusagen; ein bilingualer Ansatz reduziert falsche Aufteilungen. + +## Aggressive Rechtschreibkorrektur anwenden + +Rechtschreibkorrektur ist nicht nur ein „nice‑to‑have“; sie ist ein Wendepunkt, wenn Sie **improve OCR accuracy** bei Scans von geringer Qualität benötigen. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Überblick über die Ebenen + +| Level | Verhalten | +|------------|----------------------------------------------| +| **NONE** | Keine Korrektur – nur Rohausgabe der Engine. | +| **LIGHT** | Korrigiert offensichtliche Tippfehler, geringes Risiko für Überkorrektur. | +| **AGGRESSIVE** | Führt Wörterbuch‑Look‑ups aggressiv durch; am besten für verrauschte Bilder. | + +**Vorsicht:** Der aggressive Modus kann legitime Eigennamen umschreiben (z. B. „McDonald“ → „Mcdonald“). Wenn Ihr Anwendungsbereich viele Namen enthält, sollten Sie einen Nachbearbeitungsfilter in Betracht ziehen. + +## Erkennung ausführen und Ausgabe überprüfen + +Jetzt, wo alles eingerichtet ist, ist es Zeit, Aspose die schwere Arbeit erledigen zu lassen. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Erwartete Ausgabe (Beispiel) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Wenn Sie stattdessen Kauderwelsch sehen, überprüfen Sie folgendes: + +1. Die Bildqualität (verschwommene oder low‑dpi‑Bilder beeinträchtigen die Genauigkeit). +2. Sprachflags – fehlendes Französisch lässt Akzente wegfallen. +3. Rechtschreibkorrektur‑Level – probieren Sie `LIGHT`, wenn Sie Überkorrektur bemerken. + +## Vollständiges funktionierendes Beispiel (Alle Schritte in einer Datei) + +Unten finden Sie das komplette Programm, das Sie direkt kompilieren und ausführen können. Speichern Sie es als `SpellCorrectionTutorial.java`, passen Sie den Bildpfad an und führen Sie es mit `javac && java` aus. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Kompilieren & ausführen: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Sie sollten den korrigierten mehrsprachigen Text in der Konsole ausgegeben sehen. + +## Häufige Fallstricke & wie man sie vermeidet + +| Symptom | Wahrscheinliche Ursache | Lösung | +|-----------------------|---------------------------------------------|--------| +| **Leere Ausgabe** | Bildpfad falsch oder Datei nicht lesbar | Überprüfen Sie den Pfad von `ImageStream.fromFile`; fügen Sie eine Existenzprüfung der Datei hinzu. | +| **Fehlende Akzente** | Französische Sprache nicht aktiviert | Rufen Sie `ocrEngine.getLanguage().setFrench(true)` auf. | +| **Unleserliche Zeichen** | Niedrigauflösendes Bild (< 150 dpi) | Hochskalieren oder erneut mit höherer DPI scannen; erwägen Sie eine Vorverarbeitung mit Bildverbesserungs‑Bibliotheken. | +| **Über‑korrigierte Namen** | Aggressive Rechtschreibkorrektur bei Eigennamen | Nachbearbeiten mit einer Whitelist bekannter Namen oder zum `LIGHT`‑Level wechseln. | + +## Nächste Schritte: Skalierung Ihrer OCR-Pipeline + +- **Batchverarbeitung:** Durchlaufen Sie ein Verzeichnis mit Bildern und verwenden Sie eine einzelne `OcrEngine`‑Instanz erneut für bessere Leistung. +- **PDF-Extraktion:** Nutzen Sie Aspose.PDF, um jede Seite in ein Bild zu konvertieren und dieses dann an die OCR‑Engine zu übergeben. +- **Benutzerdefinierte Wörterbücher:** Wenn Ihr Anwendungsbereich spezialisierte Terminologie (medizinisch, rechtlich) verwendet, fügen Sie eine benutzerdefinierte Wortliste via `ocrEngine.getSpellCorrector().addUserDictionary(...)` hinzu. +- **Parallelität:** Das Java‑`ForkJoinPool` kann mehrere OCR‑Aufgaben gleichzeitig ausführen, achten Sie jedoch auf den Speicherverbrauch, da jede Engine Bildpuffer hält. + +![Beispiel zur Verbesserung der OCR-Genauigkeit](/images/ocr-example.png){alt="Screenshot zur Verbesserung der OCR-Genauigkeit, der korrigierten mehrsprachigen Text zeigt"} + +## Fazit + +Wir haben gerade **improved OCR**. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/german/java/ocr-operations/_index.md b/ocr/german/java/ocr-operations/_index.md index 1458f57ae..756082136 100644 --- a/ocr/german/java/ocr-operations/_index.md +++ b/ocr/german/java/ocr-operations/_index.md @@ -75,8 +75,12 @@ Unlock precise text extraction from images with Aspose.OCR for Java. Follow our Unlock the power of OCR in Java with Aspose.OCR. Recognize text in PDF documents effortlessly. Boost your applications with precision and speed. ### [OCR-Erkennung von TIFF‑Bildern in Aspose.OCR für Java](./recognize-tiff/) Unlock powerful text recognition in Java with Aspose.OCR. Effortlessly recognize text in TIFF images. Download now for a seamless OCR experience. +### [Aspose OCR Java Beispiel: Text aus einem Bereich extrahieren](./aspose-ocr-java-example-extract-text-from-a-region/) +Ein Beispiel, das zeigt, wie man mit Aspose OCR für Java Text aus einem definierten Bildbereich extrahiert. ### [Bildtext mit Aspose OCR erkennen – Vollständiges Java OCR‑Tutorial](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Ein umfassendes Tutorial, das die vollständige OCR‑Verarbeitung von Bilddateien mit Aspose OCR in Java erklärt. +### [Text aus HEIC extrahieren – Vollständiges Java‑Tutorial](./extract-text-from-heic-complete-java-guide/) +Ein umfassender Leitfaden, um Text aus HEIC‑Dateien mit Aspose.OCR für Java zu extrahieren und weiterzuverarbeiten. ## Häufig gestellte Fragen diff --git a/ocr/german/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/german/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..1dc3bed2a --- /dev/null +++ b/ocr/german/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: Das Aspose OCR Java‑Beispiel zeigt, wie man ein Bild für die OCR lädt + und Text aus einem Bereich mit nur wenigen Codezeilen extrahiert. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: de +og_description: Das Aspose OCR Java‑Beispiel demonstriert das Laden eines Bildes für + OCR und das Extrahieren von Text aus einem bestimmten Bereich, ideal für die Rechnungsverarbeitung. +og_title: Aspose OCR Java Beispiel – Regionstextextraktion +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Aspose OCR Java Beispiel: Text aus einem Bereich extrahieren' +url: /de/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java Beispiel: Text aus einem Bereich extrahieren + +Suchen Sie ein **Aspose OCR Java Beispiel**, das Ihnen ermöglicht, nur den Teil zu extrahieren, den Sie aus einem Bild benötigen? In diesem Leitfaden gehen wir Schritt für Schritt durch **Laden eines Bildes für OCR** und **Extrahieren von Text aus einem Bereich**, ideal für Rechnungsnummern, Formularfelder oder jede Daten, die in einem größeren Bild versteckt sind. + +Sie fragen sich vielleicht, warum man OCR auf ein Rechteck beschränkt, anstatt die gesamte Seite zu scannen. Die kurze Antwort: Geschwindigkeit und Genauigkeit. Wenn die Engine nur einen definierten Ausschnitt betrachtet, überspringt sie irrelevanten Lärm, arbeitet schneller und liefert oft sauberere Ergebnisse. Am Ende dieses Tutorials haben Sie ein eigenständiges Java‑Programm, das genau das tut, plus einige Tipps, um häufige Stolperfallen zu vermeiden. + +## Was Sie benötigen + +- **Java Development Kit (JDK) 11** oder neuer installiert. +- **Aspose.OCR for Java** Bibliothek (Sie können das neueste JAR aus dem Maven Central Repository oder dem Aspose‑Download‑Portal holen). +- Eine Bilddatei, die den Text enthält, den Sie lesen möchten – für unser Demo verwenden wir `invoice.png`, das irgendwo in der oberen rechten Ecke eine Rechnungsnummer enthält. +- Eine bevorzugte IDE oder ein einfacher Texteditor plus ein Terminal; jedes Build‑Tool (Maven, Gradle oder plain `javac`) funktioniert. + +Das ist alles. Keine zusätzlichen OCR‑Engines, keine nativen Binärdateien, nur reines Java und Aspose. + +![Aspose OCR Java Beispiel Screenshot](/images/aspose-ocr-java-example.png "Aspose OCR Java Beispiel zeigt Regionsextraktion") + +## Aspose OCR Java Beispiel – Initialisierung der OCR‑Engine + +Das Erste, was jeder OCR‑Workflow benötigt, ist eine Engine‑Instanz. Aspose liefert eine leichtgewichtige `OcrEngine`‑Klasse, die alles von Bild‑Laden bis zur Sprachauswahl übernimmt. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Warum das wichtig ist:** Das Erstellen der Engine im Voraus gibt Ihnen ein sauberes Objekt zum Konfigurieren. Sie können dieselbe `OcrEngine` für mehrere Bilder wiederverwenden, wenn Sie einen Stapel verarbeiten, was Speicher und Initialisierungszeit spart. + +## Bild für OCR laden + +Als Nächstes teilen wir der Engine mit, welches Bild gescannt werden soll. Aspose stellt den Helfer `ImageStream.fromFile` bereit, der die Low‑Level‑`FileInputStream`‑Boilerplate abstrahiert. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tipp:** Ersetzen Sie `YOUR_DIRECTORY` durch einen absoluten Pfad oder einen relativen Pfad, der zu dem Ort zeigt, an dem Sie `invoice.png` gespeichert haben. Wenn die Datei nicht gefunden wird, wirft Aspose eine `IOException`, sodass Sie diesen Code in einem try‑catch‑Block für Produktionscode einbinden sollten. + +## Definieren und Extrahieren von Text aus einem Bereich + +Jetzt kommt der Star der Show: das Rechteck, das der Engine sagt, wo sie schauen soll. Der Konstruktor `java.awt.Rectangle` nimmt `(x, y, width, height)` – alles in Pixeln gemessen. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Wie es funktioniert:** Durch Aufruf von `setRegion` begrenzen Sie den OCR‑Scan auf einen 300 Pixel breiten Ausschnitt, der 120 Pixel vom linken Rand und 250 Pixel vom oberen Rand beginnt. Passen Sie diese Zahlen an Ihr eigenes Layout an; ein schneller Weg, sie zu finden, ist, das Bild in einem Grafik‑Editor zu öffnen, der Pixelkoordinaten anzeigt. + +## Sprache aktivieren und Erkennung ausführen + +Aspose OCR unterstützt Dutzende von Sprachen, aber für eine Rechnungsnummer benötigen wir nur Englisch. Das Aktivieren der richtigen Sprache reduziert Fehlalarme dramatisch. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Warum nur Englisch aktivieren?** Die OCR‑Engine versucht, Zeichen aus jedem aktivierten Sprachset zuzuordnen, was verwirren kann, wenn der Text einfache alphanumerische Zeichen enthält. Das Eingrenzen des Sprachumfangs verbessert sowohl Geschwindigkeit als auch Präzision. + +### Erwartete Ausgabe + +Wenn alles passt, sehen Sie etwa Folgendes: + +``` +Extracted region text: INV-12345 +``` + +Ist das Rechteck um ein paar Pixel verschoben, kann die Ausgabe verzerrt oder leer sein. Das ist ein einfacher Plausibilitätstest: Programm ausführen, Konsole ansehen und prüfen, ob der Text mit dem im Bild sichtbaren übereinstimmt. + +## Code ausführen und Ausgabe überprüfen + +Angenommen, Sie verwenden Maven, fügen Sie die Aspose OCR‑Abhängigkeit zu Ihrer `pom.xml` hinzu: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Kompilieren und ausführen: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Oder, wenn Sie lieber plain `javac` nutzen: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Sie sollten die Zeile **Extracted region text** in der Konsole sehen. Wenn Sie „OCR recognition failed“ erhalten, überprüfen Sie den Dateipfad und stellen Sie sicher, dass der Bereich tatsächlich lesbare Zeichen enthält. + +## Randfälle & Häufige Variationen + +| Situation | Was zu ändern | +|-----------|----------------| +| **Mehrere Sprachen** (z.B. Englisch + Spanisch) | Call `ocrEngine.getLanguage().setSpanish(true);` alongside English. | +| **Region außerhalb der Bildgrenzen** | Aspose will silently clip the rectangle, but you’ll lose data. Use `ImageInfo` (`ocrEngine.getImage().getWidth()`) to verify dimensions before setting the region. | +| **Dynamische Rechnungen** (verschiedene Layouts) | Consider running a lightweight pre‑scan on the whole image to locate keywords like “Invoice #” and then compute the rectangle programmatically. | +| **Bilder mit höherer DPI** | Increase `ocrEngine.getImage().setResolution(300);` for better accuracy on scanned documents. | +| **Performance‑Optimierung** | Disable unnecessary languages, keep the region as small as possible, and reuse a single `OcrEngine` instance across many files. | + +## Profi‑Tipps aus der Praxis + +- **Pro tip:** If you only need digits (common for invoice numbers), enable the numeric mode with `ocrEngine.getLanguage().setDigits(true);`. This eliminates alphabetic noise. +- **Watch out for:** Transparent PNGs. Aspose sometimes misinterprets the alpha channel; converting the image to a solid‑background JPEG first can solve odd blank outputs. +- **Remember:** The rectangle uses the image’s native coordinate system, not any UI scaling you might see on screen. Always test with the exact file you’ll process in production. + +## Was kommt als Nächstes? + +Jetzt, wo Sie ein solides **Aspose OCR Java Beispiel** für region‑basiertes Extrahieren haben, können Sie es in mehrere nützliche Richtungen erweitern: + +- **Batch processing:** Loop over a folder of invoices, reusing the same `OcrEngine` to improve throughput. +- **Data validation:** Pipe the extracted text through a regex like `INV-\\d{5}` to ensure you captured a valid invoice number. +- **Integration with PDF:** Use Aspose.PDF to overlay the extracted text back onto the original document for audit trails. +- **Cloud deployment:** Wrap the code in a lightweight REST service (Spring Boot) so other systems can call it on demand. + +Jeder dieser Schritte verwendet natürlich dieselben Kernkonzepte—**load image for OCR**, **extract text from a region**, und die Ergebnisverarbeitung—so wird der Übergang reibungslos sein. + +--- + +*Viel Spaß beim Programmieren! Wenn Sie auf Probleme stoßen, hinterlassen Sie unten einen Kommentar oder besuchen Sie die Aspose‑Foren, wo die Community praxisnahe Tipps für knifflige Layouts teilt.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/german/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/german/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..07b780774 --- /dev/null +++ b/ocr/german/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Extrahieren Sie Text aus HEIC‑Bildern mit Aspose OCR in Java. Erfahren + Sie, wie Sie HEIC schnell in Text umwandeln können, anhand eines Schritt‑für‑Schritt‑Beispiels. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: de +og_description: Extrahieren Sie Text aus HEIC‑Bildern mit Aspose OCR in Java. Dieser + Leitfaden zeigt Ihnen, wie Sie HEIC in wenigen Minuten in Text umwandeln. +og_title: Text aus HEIC extrahieren – Java OCR‑Tutorial +tags: +- OCR +- Java +- Aspose +title: Text aus HEIC extrahieren – Vollständiger Java‑Leitfaden +url: /de/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Text aus HEIC extrahieren – Vollständiger Java‑Leitfaden + +Haben Sie sich jemals gefragt, wie man **Text aus HEIC**‑Dateien extrahiert, ohne sie zuerst in JPEG oder PNG zu konvertieren? Sie sind nicht allein. Viele Entwickler stoßen auf ein Problem, wenn eine mobile App ihnen ein `.heic`‑Foto liefert und sie den eingebetteten Text für Indexierung oder Analysen benötigen. Die gute Nachricht? Mit Aspose OCR für Java können Sie **Text aus HEIC** direkt extrahieren – kein zusätzlicher Konvertierungsschritt erforderlich. + +In diesem Tutorial zeigen wir Ihnen außerdem, wie Sie **HEIC in Text** in einer einzigen, sauberen Pipeline **konvertieren** können, sodass Sie den Code in jedes Java‑Projekt einbinden und noch heute Zeichenketten aus diesen hocheffizienten Bildern extrahieren können. + +![Beispiel für das Extrahieren von Text aus HEIC](https://example.com/placeholder.png "Beispiel für das Extrahieren von Text aus HEIC") + +## Was Sie lernen werden + +- Wie man Aspose OCR in einem Maven/Gradle‑Projekt einrichtet. +- Der genaue Java‑Code, der benötigt wird, um **Text aus HEIC**‑Bildern zu extrahieren. +- Warum dieser Ansatz schneller und weniger fehleranfällig ist als ein zweistufiger `convert‑then‑OCR`‑Workflow. +- Häufige Stolperfallen (z. B. fehlende Sprachpakete) und wie man sie vermeidet. +- Tipps zum Skalieren der Lösung in einem Batch‑Verarbeitungsszenario. + +Am Ende des Leitfadens können Sie **HEIC in Text** mit nur wenigen Codezeilen konvertieren und verstehen das „Warum“ hinter jedem Schritt. + +--- + +## Voraussetzungen + +Bevor wir loslegen, stellen Sie sicher, dass Sie Folgendes haben: + +1. **Java 8 oder höher** – Aspose OCR läuft auf jedem modernen JDK. +2. **Maven oder Gradle** – um die Aspose OCR‑Bibliothek automatisch zu beziehen. +3. Ein **HEIC‑Bild**, das Sie testen möchten (benennen Sie es `sample.heic` und legen Sie es an einem erreichbaren Ort ab). +4. Optional, aber praktisch: eine IDE wie IntelliJ IDEA oder VS Code. + +Keine weiteren externen Werkzeuge sind erforderlich; die Bibliothek verarbeitet das HEIC‑Format nativ. + +--- + +## Schritt 1 – Aspose OCR zu Ihrem Projekt hinzufügen + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Pro‑Tipp:** Halten Sie die Versionsnummer synchron mit den offiziellen Aspose‑Veröffentlichungen; neuere Versionen fügen Unterstützung für zusätzliche HEIC‑Varianten hinzu und verbessern die Spracherkennungsgenauigkeit. + +--- + +## Schritt 2 – Initialisieren Sie die OCR‑Engine zum **Extrahieren von Text aus HEIC** + +Das Erstellen einer `OcrEngine`‑Instanz ist der erste konkrete Schritt zum Extrahieren von Text aus HEIC. Die Engine abstrahiert alle Low‑Level‑Dekodierungen, sodass Sie sich nicht um das HEIC‑Containerformat kümmern müssen. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Warum das wichtig ist:** +HEIC ist ein modernes Bildformat, das auf dem HEIF‑Container basiert. Traditionelle OCR‑Bibliotheken erwarten JPEG/PNG, was Sie zwingt, einen separaten Konvertierungsschritt auszuführen, der die Qualität mindern kann. Die native Unterstützung von Aspose OCR ermöglicht es Ihnen, **Text aus HEIC** in einem Schritt zu extrahieren, wobei die ursprünglichen Pixeldaten erhalten bleiben und CPU‑Zyklen gespart werden. + +--- + +## Schritt 3 – Gewünschte Sprache(n) aktivieren + +Standardmäßig sucht die Engine nur nach Englisch. Wenn Sie **HEIC in Text** in einer anderen Sprache konvertieren müssen, schalten Sie einfach das entsprechende Flag um. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Warum Sprachen explizit aktivieren?** +> Sprachpakete werden bei Bedarf geladen. Nur das zu aktivieren, was Sie benötigen, reduziert den Speicherverbrauch und beschleunigt die Erkennung. + +--- + +## Schritt 4 – Erkennungsprozess ausführen + +Jetzt lassen wir die Engine das Bild lesen und eine Zeichenkette erzeugen. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Erwartete Ausgabe** (angenommen, das Bild enthält den Satz „Hello World“): + +``` +=== Recognized Text === +Hello World +``` + +Wenn das Bild leer ist oder der Text nicht lesbar ist, gibt die Engine `false` zurück und Sie sehen die Ausweichnachricht. + +--- + +## Schritt 5 – Umgang mit Randfällen & häufigen Fragen + +### Was ist, wenn die HEIC‑Datei beschädigt ist? + +Aspose OCR wirft eine `IOException`, wenn es den Container nicht dekodieren kann. Wickeln Sie den Aufruf in einen `try‑catch`‑Block und protokollieren Sie den Fehler für eine spätere Untersuchung. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Kann ich mehrere HEIC‑Dateien stapelweise verarbeiten? + +Absolut. Durchlaufen Sie einfach ein Verzeichnis und verwenden Sie dieselbe `OcrEngine`‑Instanz erneut, um wiederholten Initialisierungsaufwand zu vermeiden. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Konvertiert das auch **HEIC in Text** für nicht‑lateinische Schriften? + +Ja – Aspose OCR unterstützt Arabisch, Chinesisch, Kyrillisch und viele weitere Sprachen. Aktivieren Sie einfach das entsprechende Sprach‑Flag (z. B. `engine.getLanguage().setChineseSimplified(true);`). Denken Sie daran, die passenden Schriftdateien hinzuzufügen, wenn Sie auf einem headless‑Server laufen. + +--- + +## Schritt 6 – Ergebnis programmgesteuert verifizieren + +In einer Produktionspipeline müssen Sie häufig sicherstellen, dass die OCR‑Ausgabe bestimmte Qualitätsgrenzen erfüllt. Eine schnelle Methode ist, einen Vertrauens‑Score zu berechnen (in neueren Versionen verfügbar) oder einfach die Länge der zurückgegebenen Zeichenkette zu prüfen. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie die komplette, sofort ausführbare Java‑Klasse, die alle oben genannten Schritte integriert. Fügen Sie sie in eine Datei namens `HeifExample.java` ein, passen Sie den Pfad zu Ihrer HEIC‑Datei an und führen Sie `javac` + `java` wie üblich aus. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Sie sollten die extrahierte Zeichenkette in der Konsole sehen, was bestätigt, dass Sie **HEIC erfolgreich in Text** konvertiert haben. + +--- + +## Fazit + +Wir haben alles durchgegangen, was Sie benötigen, um **Text aus HEIC** mit Aspose OCR in Java zu extrahieren. Vom Hinzufügen der Bibliothek bis zum Umgang mit Randfällen zeigt der Leitfaden eine saubere, einstufige Lösung, die die Notwendigkeit eines separaten Konvertierungswerkzeugs eliminiert. + +Jetzt können Sie: + +- **HEIC in Text** on the fly in Web‑Services, mobilen Back‑Ends oder Batch‑Jobs konvertieren. +- Unterstützung für weitere Sprachen mit einer einzigen Konfigurationszeile erweitern. +- Den Prozess skalieren, indem dieselbe `OcrEngine` über viele Dateien hinweg wiederverwendet wird. + +Als Nächstes könnten Sie **das OCR‑Ergebnis in einen durchsuchbaren Index einbetten** (z. B. Elasticsearch) oder **Bildvorverarbeitung hinzufügen**, um die Genauigkeit bei kontrastarmen HEIC‑Fotos zu steigern. Der Himmel ist die Grenze – experimentieren, messen und iterieren. + +Haben Sie Fragen oder stoßen Sie auf eine knifflige HEIC‑Datei? Hinterlassen Sie unten einen Kommentar, und viel Spaß beim Coden! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/greek/java/advanced-ocr-techniques/_index.md b/ocr/greek/java/advanced-ocr-techniques/_index.md index 3e7a5e306..045e85c2d 100644 --- a/ocr/greek/java/advanced-ocr-techniques/_index.md +++ b/ocr/greek/java/advanced-ocr-techniques/_index.md @@ -17,7 +17,7 @@ url: /el/java/advanced-ocr-techniques/ Είστε έτοιμοι να μεταφέρετε τα έργα σας Java στο επόμενο επίπεδο; Βουτήξτε στον κόσμο των προηγμένων τεχνικών OCR με το Aspose.OCR για Java. Σε αυτόν τον περιεκτικό οδηγό, θα εξερευνήσουμε διάφορα μαθήματα που θα σας βοηθήσουν να εξάγετε κείμενο από εικόνες χωρίς κόπο. -## Απελευθερώνοντας τη δύναμη του Aspose.OCR για Java +## Απελευθέρωση της δύναμης του Aspose.OCR για Java Το Aspose.OCR για Java αλλάζει το παιχνίδι όταν πρόκειται για την Οπτική Αναγνώριση Χαρακτήρων (OCR). Προσφέρει απρόσκοπτη ενοποίηση και υψηλή ακρίβεια στην εξαγωγή κειμένου από εικόνες, καθιστώντας το απαραίτητο εργαλείο για προγραμματιστές Java. Ας εμβαθύνουμε στα σεμινάρια που θα ξεκλειδώσουν πλήρως τις δυνατότητες αυτής της ισχυρής βιβλιοθήκης. @@ -45,9 +45,6 @@ url: /el/java/advanced-ocr-techniques/ Εξάγετε εύκολα κείμενο από εικόνες καθορίζοντας επιτρεπόμενους χαρακτήρες με το Aspose.OCR για Java. Ακολουθήστε τον βήμα προς βήμα οδηγό μας για αποτελεσματική ενσωμάτωση, διασφαλίζοντας μια απρόσκοπτη εμπειρία αναγνώρισης κειμένου. Βελτιώστε τις εφαρμογές σας Java με τις δυνατότητες Aspose.OCR. -## συμπέρασμα - -Με το Aspose.OCR για Java, η εκμάθηση προηγμένων τεχνικών OCR δεν ήταν ποτέ ευκολότερη. Βουτήξτε σε αυτά τα σεμινάρια και ξεκλειδώστε το πλήρες δυναμικό της αναγνώρισης κειμένου στα έργα σας Java. Αναβαθμίστε τις εφαρμογές σας με απρόσκοπτη ενοποίηση, υψηλή ακρίβεια και ευέλικτες δυνατότητες εξαγωγής κειμένου. Κάντε λήψη τώρα και κάντε το πρώτο βήμα προς την αριστεία OCR με το Aspose.OCR για Java! ## Προηγμένα σεμινάρια Τεχνικών OCR ### [Εκτέλεση OCR στο BufferedImage στο Aspose.OCR για Java](./perform-ocr-buffered-image/) Εκτελέστε OCR στο BufferedImage χωρίς κόπο με το Aspose.OCR για Java. Εξαγωγή κειμένου από εικόνες απρόσκοπτα. Κάντε λήψη τώρα για μια ευέλικτη εμπειρία αναγνώρισης κειμένου. @@ -61,9 +58,16 @@ url: /el/java/advanced-ocr-techniques/ Ενισχύστε τις εφαρμογές σας Java με το Aspose.OCR για ακριβή αναγνώριση κειμένου. Εύκολη ενσωμάτωση, υψηλή ακρίβεια. ### [Καθορισμός επιτρεπόμενων χαρακτήρων στο Aspose.OCR](./specify-allowed-characters/) Ξεκλειδώστε την εξαγωγή κειμένου από εικόνες χωρίς προβλήματα με το Aspose.OCR για Java. Ακολουθήστε τον βήμα προς βήμα οδηγό μας για αποτελεσματική ενσωμάτωση. +### [Πώς να ενεργοποιήσετε το GPU για OCR σε Java – Πλήρης Οδηγός](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Μάθετε πώς να ενεργοποιήσετε την επιτάχυνση GPU στο Aspose.OCR για Java, βελτιώνοντας την ταχύτητα και την ακρίβεια της αναγνώρισης κειμένου. +### [Δημιουργία Σταθερής Πισίνας Νημάτων για Παράλληλο OCR σε Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Μάθετε πώς να δημιουργήσετε μια σταθερή πισίνα νημάτων για να εκτελείτε OCR παράλληλα σε Java, βελτιώνοντας την απόδοση. +### [Βελτιώστε την ακρίβεια OCR σε Java – Πλήρης Οδηγός Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Μάθετε πώς να αυξήσετε την ακρίβεια του OCR σε Java με το Aspose OCR, εφαρμόζοντας βέλτιστες πρακτικές και ρυθμίσεις. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/greek/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/greek/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..3a6978129 --- /dev/null +++ b/ocr/greek/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Δημιουργήστε σταθερό σύνολο νημάτων στην Java για να εξάγετε κείμενο + από εικόνες γρήγορα. Μάθετε πώς να εκτελείτε OCR, να μετατρέπετε την εικόνα σε κείμενο + και να ενισχύετε την απόδοση με παράλληλη επεξεργασία OCR. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: el +og_description: Δημιουργήστε σταθερό σύνολο νημάτων στην Java για γρήγορη εξαγωγή + κειμένου από εικόνες. Μάθετε πώς να εκτελείτε OCR, να μετατρέπετε εικόνα σε κείμενο + και να ενισχύετε την απόδοση με παράλληλη επεξεργασία OCR. +og_title: Δημιουργία Σταθερής Πισίνας Νημάτων για Παράλληλο OCR σε Java +tags: +- Java +- OCR +- Multithreading +title: Δημιουργία Σταθερής Πισίνας Νημάτων για Παράλληλη OCR σε Java +url: /el/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία Σταθερού Πισίνας Νημάτων για Παράλληλο OCR σε Java + +Έχετε ποτέ χρειαστεί να **create fixed thread pool** για να επιταχύνετε τις εργασίες OCR, αλλά δεν ήξερες από πού να ξεκινήσετε; Δεν είστε μόνοι. Σε πολλά έργα με πολλές εικόνες το στενό σημείο είναι η κλήση OCR με ένα νήμα, και η λύση είναι εκπληκτικά απλή: δημιουργήστε μια πισίνα εργαζομένων νημάτων και αφήστε τα να επεξεργάζονται τα αρχεία παράλληλα. + +Σε αυτό το tutorial θα μάθετε πώς να **extract text from images** χρησιμοποιώντας Aspose OCR, πώς να **run OCR** αποδοτικά, και πώς να **convert image to text** χωρίς να υπερφορτώνετε την CPU σας. Στο τέλος θα έχετε ένα έτοιμο‑για‑εκτέλεση πρόγραμμα Java που δείχνει **parallel OCR processing** σε ένα μικρό σύνολο δείγματος εικόνων. + +## Τι Θα Κατασκευάσετε + +Θα φτιάξουμε μια μικρή εφαρμογή κονσόλας που: + +* Διαβάζει μια λίστα διαδρομών εικόνων (PNG, JPG, TIFF, BMP). +* **Creates a fixed thread pool** με μέγεθος ίσο με τον αριθμό των πυρήνων της CPU. +* Αποστέλλει μια εργασία OCR για κάθε εικόνα. +* Συλλέγει το αναγνωρισμένο κείμενο και το εκτυπώνει στην κονσόλα. +* Κλείνει τον εκτελεστή (executor) καθαρά. + +Καμία εξωτερική εργαλειοθήκη κατασκευής, κανένα περίπλοκο framework—απλώς καθαρή Java και η βιβλιοθήκη Aspose OCR. Αν έχετε Java 8+ και ένα καλό IDE, είστε έτοιμοι. + +## Προαπαιτούμενα + +* **Java Development Kit (JDK) 8 or newer** – ο κώδικας χρησιμοποιεί lambdas, οπότε παλαιότερες εκδόσεις δεν θα μεταγλωττιστούν. +* **Aspose OCR for Java** – κατεβάστε το JAR από την ιστοσελίδα Aspose ή προσθέστε το μέσω Maven (`com.aspose:aspose-ocr`). +* Ένας φάκελος με μερικές δοκιμαστικές εικόνες (ο κώδικας δείχνει στο `YOUR_DIRECTORY`). +* Βασική εξοικείωση με τη σύγχρονη Java (θα εξηγήσουμε τα υπόλοιπα). + +> *Pro tip:* Αν χρησιμοποιείτε Maven, προσθέστε την εξάρτηση στο `pom.xml` και αφήστε το IDE να διαχειριστεί το classpath. + +--- + +## Step 1: Add the Required Imports + +Πρώτα, φέρνουμε τις κλάσεις που χρειαζόμαστε στο πεδίο ορατότητας. Αυτό δεν είναι απλώς boiler‑plate· κάθε import λέει στο JVM πού να βρει τη μηχανή OCR, τα βοηθητικά εργαλεία επεξεργασίας εικόνας, και τα εργαλεία σύγχρονης εκτέλεσης που μας επιτρέπουν να **create fixed thread pool**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – το βασικό OCR API. +* `java.util.*` – συλλογές για αποθήκευση διαδρομών εικόνων και αποτελεσμάτων. +* `java.util.concurrent.*` – το πακέτο σύγχρονης εκτέλεσης που περιέχει `ExecutorService` και `Future`. + +--- + +## Step 2: Define the Images to Process + +Στη συνέχεια, καταγράφουμε τα αρχεία από τα οποία θέλουμε να **extract text from images**. Η χρήση του `Arrays.asList` κρατά τον κώδικα σύντομο και μας επιτρέπει να αντικαταστήσουμε το δικό σας φάκελο χωρίς να αλλάξουμε τη λογική. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Μπορείτε να προσθέσετε περισσότερες καταχωρήσεις· η πισίνα νημάτων θα κλιμακωθεί αυτόματα με βάση τον αριθμό των πυρήνων της CPU που διαθέτετε. + +--- + +## Step 3: **Create Fixed Thread Pool** Matching the CPU Cores + +Αυτή είναι η καρδιά του tutorial. Ρωτάμε το runtime πόσοι πυρήνες είναι διαθέσιμοι και ζητάμε από το εργοστάσιο `Executors` να μας δώσει μια πισίνα ακριβώς αυτού του μεγέθους. Γιατί σταθερό; Επειδή ένας προβλέψιμος αριθμός νημάτων αποτρέπει την ανεπιθύμητη «έκρηξη νημάτων» που μπορεί να αφανίσει τους πόρους του λειτουργικού συστήματος. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` επιστρέφει τον λογικό αριθμό πυρήνων (συμπεριλαμβανομένων των hyper‑threads). +* `newFixedThreadPool(coreCount)` εγγυάται ότι δεν θα ξεπεράσουμε ποτέ τη δυνατότητα της CPU, που είναι ο ασφαλέστερος τρόπος να **run OCR** παράλληλα. + +--- + +## Step 4: Submit an OCR Task for Each Image + +Τώρα μετατρέπουμε κάθε διαδρομή αρχείου σε ένα callable που **runs OCR**, αναγνωρίζει το κείμενο και επιστρέφει το αποτέλεσμα. Παρατηρήστε ότι δημιουργούμε ένα νέο `OcrEngine` μέσα στο lambda· αυτό αποτρέπει την μη‑ασφαλή κοινή χρήση της κατάστασης της μηχανής μεταξύ νημάτων. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Κάθε κλήση `submit` παραδίδει το lambda στην πισίνα, η οποία το προγραμματίζει σε ένα αδρανές νήμα. +* Τα αντικείμενα `Future` μας επιτρέπουν να ανακτήσουμε το αναγνωρισμένο κείμενο αργότερα, διατηρώντας τη σειρά αν το χρειάζεστε. + +--- + +## Step 5: Retrieve and Display the Recognized Text + +Μόλις όλες οι εργασίες μπουν στην ουρά, απλώς διατρέχουμε τη λίστα `Future`, καλώντας `get()` για να μπλοκάρουμε μέχρι να ολοκληρωθεί κάθε εργασία OCR. Εδώ γίνεται ορατό το βήμα **convert image to text**: η κλήση `engine.getText()` επιστρέφει το ακατέργαστο string. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Η τυπική έξοδος στην κονσόλα μοιάζει με: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Αν κάποιο αρχείο αποτύχει (π.χ. είναι κατεστραμμένο), θα δείτε μια γραμμή που αρχίζει με `Failed:` ακολουθούμενη από τη διαδρομή—χρήσιμο για γρήγορο debugging. + +--- + +## Step 6: Clean Up the Executor Service + +Ποτέ μην ξεχνάτε να κλείσετε την πισίνα· διαφορετικά η JVM μπορεί να παραμείνει ενεργή, νομίζοντας ότι υπάρχει ακόμη δουλειά. Ένα καλοσχεδιασμένο κλείσιμο επιτρέπει σε τυχόν ενεργές εργασίες να ολοκληρωθούν πριν τερματιστεί η διαδικασία. + +```java +executor.shutdown(); +``` + +Μπορείτε επίσης να καλέσετε `awaitTermination` αν χρειάζεται να επιβάλετε χρονικό όριο, αλλά για τις περισσότερες εφαρμογές γραμμής εντολών ένα απλό `shutdown()` αρκεί. + +--- + +## Full Working Example + +Παρακάτω βρίσκεται το πλήρες, έτοιμο‑για‑εκτέλεση πρόγραμμα. Αντιγράψτε‑και‑επικολλήστε το σε ένα αρχείο με όνομα `ParallelOcrTutorial.java`, προσαρμόστε τις διαδρομές εικόνων, και τρέξτε `javac` + `java` όπως συνήθως. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Expected result:** το κείμενο κάθε εικόνας εκτυπώνεται στην κονσόλα, με την ίδια σειρά όπως η λίστα `imagePaths`. Αν κάποια εικόνα δεν μπορεί να επεξεργαστεί, θα δείτε μια ειδοποίηση αποτυχίας αντί για κενή γραμμή. + +--- + +## Common Questions & Edge Cases + +### What if I have more images than threads? + +Η σταθερή πισίνα νημάτων θα βάλει αυτόματα σε ουρά τις επιπλέον εργασίες. Μόλις ένα νήμα ολοκληρώσει την τρέχουσα εργασία OCR, θα πάρει την επόμενη. Αυτή η συμπεριφορά ουράς αποτελεί την ουσία του **parallel OCR processing**—παίρνετε μέγιστη απόδοση χωρίς να υπερφορτώνετε την CPU. + +### Can I change the language? + +Απόλυτα. Αντικαταστήστε το `engine.getLanguage().setEnglish(true);` με το κατάλληλο flag γλώσσας, π.χ. `setFrench(true)` ή ενεργοποιήστε πολλαπλές γλώσσες καλώντας αρκετούς setters πριν το `recognize()`. + +### How do I handle very large images? + +Τα μεγάλα αρχεία μπορούν να καταναλώσουν πολύ μνήμη ανά νήμα. Αν παρατηρήσετε `OutOfMemoryError`, σκεφτείτε να μειώσετε την ανάλυση της εικόνας πριν τη δώσετε στη μηχανή, ή αυξήστε το μέγεθος του heap με `-Xmx`. Μια άλλη προσέγγιση είναι η χρήση μιας **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/greek/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/greek/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..a6782f44e --- /dev/null +++ b/ocr/greek/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,220 @@ +--- +category: general +date: 2026-05-03 +description: πώς να ενεργοποιήσετε το GPU για Java OCR γρήγορα – μάθετε πώς να εξάγετε + κείμενο από εικόνες με το Aspose OCR. Περιλαμβάνεται πλήρης οδηγός Java OCR. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: el +og_description: πώς να ενεργοποιήσετε την GPU για Java OCR σε λίγα λεπτά. Αυτό το + σεμινάριο σας δείχνει πώς να εξάγετε κείμενο από εικόνες χρησιμοποιώντας ένα σεμινάριο + Java OCR με επιτάχυνση GPU. +og_title: Πώς να ενεργοποιήσετε την GPU για Java OCR – Οδηγός βήμα‑βήμα +tags: +- Java +- OCR +- GPU +- Aspose +title: πώς να ενεργοποιήσετε το GPU για Java OCR – Πλήρης Οδηγός +url: /el/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# πώς να ενεργοποιήσετε το gpu για Java OCR – Πλήρης Οδηγός + +Έχετε αναρωτηθεί ποτέ **πώς να ενεργοποιήσετε το gpu** όταν προσπαθείτε να εξάγετε κείμενο από μια εικόνα; Αν έχετε χρειαστεί ποτέ να τρέξετε OCR σε μια υψηλής ανάλυσης σάρωση και νιώσατε τον CPU να «κολλά», δεν είστε μόνοι. Σε αυτόν τον οδηγό θα περάσουμε από ένα **java ocr tutorial** που όχι μόνο δείχνει πώς να εξάγετε κείμενο αλλά επίσης παρουσιάζει τον πιο γρήγορο τρόπο για **recognize text image java**‑style ενεργοποιώντας την πειραματική υποστήριξη GPU. + +Θα ξεκινήσουμε εισάγοντας τη βιβλιοθήκη Aspose OCR, μετά θα ενεργοποιήσουμε το GPU, θα φορτώσουμε ένα δείγμα εικόνας και τέλος θα εξάγουμε τη αναγνωρισμένη συμβολοσειρά από το αρχείο. Στο τέλος θα έχετε ένα έτοιμο για εκτέλεση απόσπασμα κώδικα που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο Maven, και θα καταλάβετε γιατί το GPU έχει σημασία, πότε μπορεί να μην βοηθά, και πώς να αντιμετωπίσετε κοινά προβλήματα. Δεν απαιτούνται εξωτερικά έγγραφα — όλα όσα χρειάζεστε είναι εδώ. + +--- + +## Τι Θα Χρειαστείτε + +- **Java Development Kit (JDK) 8+** – ο κώδικας λειτουργεί σε οποιοδήποτε σύγχρονο JDK. +- **Maven** (ή Gradle) για την προσθήκη της εξάρτησης Aspose OCR. +- Μια **συμβατή με GPU μηχανή** (η κάρτα NVIDIA με ενεργοποιημένο CUDA αποδίδει καλύτερα, αλλά το Aspose API θα επιστρέψει ομαλά σε CPU). +- Μια εικόνα δείγμα, π.χ. `sample-highres.png`, τοποθετημένη σε φάκελο που μπορείτε να αναφέρετε. +- Μια δόση περιέργειας για τεχνικές **image to text conversion java**. + +Αν λείπει κάτι από αυτά, κατεβάστε το JDK από την Oracle ή το OpenJDK, εγκαταστήστε το Maven και βεβαιωθείτε ότι ο οδηγός γραφικών είναι ενημερωμένος. Αυτό είναι όλο το προπαρασκευαστικό έργο· το υπόλοιπο είναι καθαρά Java. + +## Βήμα 1: Προσθέστε το Aspose OCR στο Έργο σας + +Πρώτα απ’ όλα, χρειαζόμαστε τον ίδιο τον κινητήρα OCR. Η Aspose παρέχει ένα καθαρό Maven artifact· απλώς τοποθετήστε αυτό το απόσπασμα στο `pom.xml` σας: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Αν προτιμάτε Gradle, το ισοδύναμο είναι: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Μόλις λυθεί η εξάρτηση, θα έχετε πρόσβαση στα `OcrEngine`, `ImageStream` και στους βοηθούς γλώσσας που κάνουν το **java ocr tutorial** χωρίς κόπο. + +## Βήμα 2: Πώς να Ενεργοποιήσετε το GPU (Κύρια Λέξη‑Κλειδί σε Δράση) + +Τώρα φτάνουμε στην καρδιά του θέματος: **πώς να ενεργοποιήσετε το gpu** για τον κινητήρα OCR. Το Aspose API εκθέτει μια μοναδική λογική σημαία — `setUseGpu(true)`. Είναι πειραματική, αλλά σε μια αξιοπρεπή κάρτα γραφικών θα δείτε τον χρόνο αναγνώρισης να μειώνεται δραματικά, ειδικά για μεγάλες, υψηλής ανάλυσης εικόνες. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** Αν το περιβάλλον σας δεν διαθέτει συμβατό GPU, η σημαία θα αγνοηθεί σιωπηλά και ο κινητήρας θα επιστρέψει σε λειτουργία CPU. Δεν θα υπάρξει κατάρρευση, μόνο πιο αργή απόδοση. + +## Βήμα 3: Φορτώστε την Εικόνα που Θέλετε να Επεξεργαστείτε + +Ο κινητήρας OCR λειτουργεί με ένα `ImageStream`. Κατευθύνετέ το στο αρχείο που θέλετε να μετατρέψετε από εικόνα σε απλό κείμενο. Εδώ είναι ένας σύντομος τρόπος: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Βεβαιωθείτε ότι η διαδρομή είναι απόλυτη ή σχετική με τον τρέχοντα φάκελο του έργου σας. Αν το αρχείο δεν βρεθεί, θα λάβετε ένα `IOException` — θα το πιάσουμε αργότερα. + +## Βήμα 4: Επιλέξτε τη Γλώσσα (Προαιρετικό αλλά Συνιστώμενο) + +Το Aspose OCR μπορεί να χειριστεί πολλά αλφάβητα, αλλά πρέπει να του πείτε ποιο αναμένετε. Για τα Αγγλικά, είναι μια μιά‑γραμμή: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Αν χρειάζεστε Γαλλικά ή Κινέζικα, απλώς αλλάξτε τη σημαία (`setFrench(true)`, `setChineseSimplified(true)`, κ.λπ.). Αυτή η μικρή υπόδειξη συχνά αυξάνει την ακρίβεια επειδή ο κινητήρας μπορεί να απορρίψει μη πιθανά χαρακτήρες. + +## Βήμα 5: Recognize Text Image Java – Εκτέλεση του Μηχανισμού + +Τώρα έρχεται η στιγμή της αλήθειας: **recognize text image java** style. Καλούμε το `recognize()` και, αν επιστρέψει `true`, εξάγουμε τη συμβολοσειρά με το `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +Η έξοδος θα είναι το ακατέργαστο κείμενο που εξήχθη από το `sample-highres.png`. Για ένα καθαρό έγγραφο, ίσως θελήσετε να επεξεργαστείτε τη συμβολοσειρά (αφαίρεση κενών, αντικατάσταση αλλαγών γραμμής κ.λπ.). Εδώ είναι ένα γρήγορο παράδειγμα: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +## Βήμα 6: Πλήρες Παράδειγμα Εργασίας (Έτοιμο για Αντιγραφή‑Επικόλληση) + +Παρακάτω βρίσκεται το πλήρες **java ocr tutorial** που μπορείτε να μεταγλωττίσετε και να τρέξετε άμεσα. Περιλαμβάνει διαχείριση σφαλμάτων και εκτυπώνει το αναμενόμενο αποτέλεσμα. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Αναμενόμενη έξοδος (παράδειγμα):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Αν η εικόνα περιέχει πολλές γραμμές, θα εμφανιστούν χωρισμένες από χαρακτήρες αλλαγής γραμμής (`\n`). Ο κινητήρας διατηρεί την αρχική διάταξη όσο το δυνατόν καλύτερα. + +## Βήμα 7: Edge Cases, Tips, and Common Questions + +### Τι γίνεται αν το GPU δεν εντοπιστεί; + +Το Aspose απενεργοποιεί σιωπηλά την υποστήριξη GPU όταν δεν βρει συμβατή συσκευή. Μπορείτε να επαληθεύσετε τη λειτουργία ελέγχοντας τη σημαία μετά την αρχικοποίηση: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Αν εκτυπώσει `false`, ελέγξτε ξανά την έκδοση του οδηγού και ότι το runtime `CUDA` βρίσκεται στο `PATH`. + +### Βοηθά το GPU με πολύ μικρές εικόνες; + +Δεν είναι πάντα. Το κόστος μεταφοράς ενός μικρού bitmap στο GPU μπορεί να υπερβαίνει το κέρδος στην ταχύτητα. Για εικόνες κάτω των 500 KB, μπορεί να παρατηρήσετε μικρή καθυστέρηση. Σε τέτοιες περιπτώσεις, απλώς θέστε `setUseGpu(false)`. + +### Πώς να διαχειριστείτε έγγραφα πολλαπλών γλωσσών; + +Μπορείτε να ενεργοποιήσετε πολλές γλώσσες ταυτόχρονα: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Ο κινητήρας θα προσπαθήσει να ταιριάξει χαρακτήρες από οποιοδήποτε σύνολο, κάτι που είναι χρήσιμο για δίγλωσσα PDF. + +### Μπορώ να επεξεργαστώ PDF απευθείας; + +Το Aspose OCR λειτουργεί με ροές εικόνας, επομένως θα χρειαστεί να rasterize (μετατρέψετε σε εικόνα) κάθε σελίδα PDF πρώτα (π.χ., με Aspose PDF ή PDFBox) και μετά να περάσετε το προκύπτον `BufferedImage` στο `setImage`. + +## Visual Summary + +![πώς να ενεργοποιήσετε το gpu για τη μηχανή Java OCR engine](/images/gpu-ocr.png "Διάγραμμα που δείχνει τη ροή εργασίας OCR με επιτάχυνση GPU") + +*Το διάγραμμα απεικονίζει τη ροή από τη φόρτωση της εικόνας → OCR με ενεργό GPU → εξαγωγή κειμένου.* + +## Συμπέρασμα + +Καλύψαμε **πώς να ενεργοποιήσετε το gpu** για μια ροή εργασίας Java OCR, περάσαμε από ένα πλήρες **java ocr tutorial**, και δείξαμε **image to text conversion java** σε ένα πρακτικό, έτοιμο για αντιγραφή‑επικόλληση παράδειγμα. Με την εναλλαγή μιας μόνο σημαίας, μπορείτε να εξοικονομήσετε δευτερόλεπτα — ή και λεπτά — από το χρόνο επεξεργασίας μεγάλων σαρώσεων, κάνοντας τις εφαρμογές σας πιο γρήγορες και πιο ανταποκρινόμενες. + +Τι ακολουθεί; Δοκιμάστε να τροφοδοτήσετε μια δέσμη εικόνων μέσα από βρόχο, πειραματιστείτε με διαφορετικές γλώσσες, ή συνδυάστε το με το Apache Tika για αυτόματη ευρετηρίαση του εξαγόμενου κειμένου. Ο ουρανός είναι το όριο όταν συνδυάζετε OCR με επιτάχυνση GPU και άλλες βιβλιοθήκες Java. + +Έχετε ερωτήσεις σχετικά με **πώς να εξάγετε κείμενο** από δύσκολες εικόνες, ή θέλετε να μάθετε περισσότερα για τα κόλπα του **recognize text image java**; Αφήστε ένα σχόλιο παρακάτω, και καλή προγραμματιστική διασκέδαση! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/greek/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/greek/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..962eb5161 --- /dev/null +++ b/ocr/greek/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-05-03 +description: Βελτιώστε γρήγορα την ακρίβεια του OCR χρησιμοποιώντας το Aspose OCR + Java. Μάθετε πώς να φορτώνετε εικόνα για OCR, να ενεργοποιείτε γλώσσες και να εφαρμόζετε + επιθετική διόρθωση ορθογραφίας σε λίγα βήματα. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: el +og_description: Βελτιώστε αμέσως την ακρίβεια του OCR με το Aspose OCR Java. Αυτός + ο οδηγός δείχνει πώς να φορτώσετε εικόνα για OCR, να ενεργοποιήσετε γλώσσες και + να χρησιμοποιήσετε επιθετική διόρθωση ορθογραφίας. +og_title: Βελτιώστε την ακρίβεια OCR στη Java – Βήμα‑βήμα οδηγός Aspose OCR +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Βελτιώστε την ακρίβεια OCR στη Java – Πλήρης οδηγός Aspose OCR +url: /el/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Βελτιώστε την ακρίβεια OCR σε Java – Πλήρης οδηγός Aspose OCR + +Έχετε αναρωτηθεί ποτέ γιατί τα αποτελέσματα OCR σας μοιάζουν με το γραπτό ενός μικρού παιδιού; Αν παλεύετε με χαμένα γράμματα, λανθασμένες λέξεις ή απλώς ακατανόητο κείμενο, δεν είστε μόνοι. **Βελτιώστε την ακρίβεια OCR** είναι το πρώτο πράγμα που απευθύνουν οι περισσότεροι προγραμματιστές όταν η εξαγωγή κειμένου τους φαίνεται αναξιόπιστη. + +Σε αυτό το tutorial θα περάσουμε βήμα-βήμα μια πρακτική λύση που όχι μόνο **φορτώνει εικόνα για OCR** αλλά επίσης αξιοποιεί τη ενσωματωμένη μηχανή ορθογραφικής διόρθωσης της Aspose για να βελτιώσει την ποιότητα. Στο τέλος θα έχετε ένα έτοιμο προς εκτέλεση πρόγραμμα Java που αναγνωρίζει κείμενο στα Αγγλικά + Γαλλικά με επιθετική διόρθωση — χωρίς εξωτερικά λεξικά. + +## Τι θα μάθετε + +- Πώς να **φορτώνετε εικόνα για OCR** χρησιμοποιώντας το `ImageStream` της Aspose. +- Γιατί η ενεργοποίηση των σωστών γλωσσών είναι σημαντική για την ακρίβεια. +- Η επίδραση της επιθετικής ορθογραφικής διόρθωσης σε πολυγλωσσικά έγγραφα. +- Ένα πλήρες, εκτελέσιμο δείγμα κώδικα που μπορείτε να ενσωματώσετε σε οποιοδήποτε έργο Maven/Gradle. +- Συμβουλές, παγίδες και ιδέες για τα επόμενα βήματα για την κλιμάκωση αυτής της προσέγγισης. + +> **Προαπαιτούμενα** – Java 8 ή νεότερη, ένα πρόσφατο αρχείο JAR Aspose.OCR for Java (v23.12 ή νεότερο), και ένα αρχείο εικόνας (`multilingual.png`) που περιέχει κείμενο στα Αγγλικά και Γαλλικά. Αυτό είναι όλο — χωρίς επιπλέον μοντέλα ή API. + +--- + +## Βελτιώστε την ακρίβεια OCR: Διαμόρφωση της μηχανής Aspose OCR + +Η καρδιά κάθε pipeline OCR είναι η διαμόρφωση της μηχανής. Ενημερώνοντας την Aspose ακριβώς τι περιμένετε, της δίνετε μια ευκαιρία να κάνει τα πράγματα σωστά. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Γιατί είναι σημαντικό:** +- **Παράδειγμα μηχανής** – `OcrEngine` κρατά όλες τις ρυθμίσεις· η δημιουργία ενός νέου αποτρέπει τη διαρροή κατάστασης από προηγούμενες εκτελέσεις. +- **Φόρτωση εικόνας** – Η χρήση του `ImageStream.fromFile` είναι ο πιο απλός τρόπος για **φόρτωση εικόνας για OCR**. Υποστηρίζει PNG, JPEG, BMP και TIFF αμέσως. +- **Σημαίες γλώσσας** – Η ενεργοποίηση των Αγγλικών + Γαλλικών λέει στον αναγνωριστή να χρησιμοποιήσει τα κατάλληλα σύνολα χαρακτήρων και μοντέλα γλώσσας, κάτι που μόνο του μπορεί να αυξήσει την ακρίβεια κατά 10‑15 %. +- **Επιθετική ορθογραφική διόρθωση** – Η ρύθμιση `SpellCorrectionLevel.AGGRESSIVE` ωθεί το εσωτερικό λεξικό να ξαναγράψει αμφίβολες λέξεις, ένα βασικό μοχλό όταν χρειάζεται να **βελτιώσετε την ακρίβεια OCR** σε θορυβώδεις σκαναρίσματα. + +--- + +## Φόρτωση εικόνας για OCR – Ορισμός του αρχείου πηγής + +Πριν η μηχανή μπορέσει να κάνει οτιδήποτε, χρειάζεται ένα bitmap. Αν της δώσετε ένα κατεστραμμένο stream ή λάθος διαδρομή, θα αντιμετωπίσετε μια εξαίρεση πιο γρήγορα από ό,τι μπορείτε να πείτε “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Συμβουλή επαγγελματία:** Αν επεξεργάζεστε εικόνες που ανεβάζουν χρήστες, τυλίξτε τη λογική φόρτωσης σε ένα μπλοκ try‑catch και επικυρώστε πρώτα το μέγεθος/μορφή του αρχείου. Αυτό αποτρέπει τη μηχανή από το να “πνίγεται” σε τεράστιες PDF ή μη υποστηριζόμενες μορφές. + +--- + +## Ενεργοποίηση πολλαπλών γλωσσών για καλύτερη αναγνώριση + +Οι περισσότερες βιβλιοθήκες OCR προεπιλέγουν μόνο τα Αγγλικά. Όταν το έγγραφό σας συνδυάζει γλώσσες, θα δείτε μια αύξηση σε λανθασμένους χαρακτήρες. Η Aspose κάνει εύκολη την εναλλαγή επιπλέον γλωσσών. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Γιατί να ενεργοποιήσετε περισσότερες από μία γλώσσες;** +- **Επέκταση συνόλου χαρακτήρων** – Τα Γαλλικά περιλαμβάνουν τόνους όπως “é” και “ç”. Χωρίς τη σημαία Γαλλικών, αυτά γίνονται “e” ή “c”, κάτι που αργότερα μπερδεύει τον ορθογραφικό διορθωτή. +- **Πλαίσια συμφραζομένων** – Η μηχανή OCR χρησιμοποιεί μοντέλα γλώσσας για να προβλέψει τα όρια των λέξεων· ένα δίγλωσσο μοντέλο μειώνει τα ψευδή διαχωρισμένα. + +--- + +## Εφαρμογή επιθετικής ορθογραφικής διόρθωσης + +Η ορθογραφική διόρθωση δεν είναι μόνο ένα “nice‑to‑have”; είναι καθοριστική όταν χρειάζεται να **βελτιώσετε την ακρίβεια OCR** σε σκαναρίσματα χαμηλής ποιότητας. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Επίπεδα εν συντομία + +| Επίπεδο | Συμπεριφορά | +|---------|--------------| +| **NONE** | Καμία διόρθωση – μόνο η ακατέργαστη έξοδος της μηχανής. | +| **LIGHT** | Διορθώνει προφανή τυπογραφικά λάθη, χαμηλός κίνδυνος υπερδιόρθωσης. | +| **AGGRESSIVE** | Εφαρμόζει λεξικογραφικές αναζητήσεις επιθετικά· ιδανικό για θορυβώδεις εικόνες. | + +**Προειδοποίηση:** Η επιθετική λειτουργία μπορεί να ξαναγράψει νόμιμα ονόματα (π.χ., “McDonald” → “Mcdonald”). Αν ο τομέας σας περιέχει πολλά ονόματα, σκεφτείτε ένα φίλτρο μετα‑επεξεργασίας. + +--- + +## Εκτέλεση αναγνώρισης και επαλήθευση της εξόδου + +Τώρα που όλα είναι ρυθμισμένα, ήρθε η ώρα να αφήσετε την Aspose να κάνει τη βαριά δουλειά. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Αναμενόμενη έξοδος (παράδειγμα) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Αν δείτε ακατανόητο κείμενο αντί αυτού, ελέγξτε ξανά: + +1. Την ποιότητα της εικόνας (θολές ή εικόνες χαμηλής ανάλυσης μειώνουν την ακρίβεια). +2. Σημαίες γλώσσας – η έλλειψη Γαλλικών θα αφαιρέσει τους τόνους. +3. Επίπεδο ορθογραφικής διόρθωσης – δοκιμάστε `LIGHT` αν παρατηρήσετε υπερδιόρθωση. + +--- + +## Πλήρες λειτουργικό παράδειγμα (Όλα τα βήματα σε ένα αρχείο) + +Παρακάτω βρίσκεται το πλήρες πρόγραμμα που μπορείτε να μεταγλωττίσετε και να εκτελέσετε απευθείας. Αποθηκεύστε το ως `SpellCorrectionTutorial.java`, προσαρμόστε τη διαδρομή της εικόνας και εκτελέστε με `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Μεταγλώττιση & εκτέλεση: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Θα πρέπει να δείτε το διορθωμένο πολυγλωσσικό κείμενο να εμφανίζεται στην κονσόλα. + +--- + +## Συνηθισμένες παγίδες & πώς να τις αποφύγετε + +| Σύμπτωμα | Πιθανή Αιτία | Διόρθωση | +|----------|--------------|----------| +| **Κενή έξοδος** | Λάθος διαδρομή εικόνας ή μη αναγνώσιμο αρχείο | Επαληθεύστε τη διαδρομή `ImageStream.fromFile`; προσθέστε έλεγχο ύπαρξης αρχείου. | +| **Απουσία τόνων** | Η γαλλική γλώσσα δεν είναι ενεργοποιημένη | Καλέστε `ocrEngine.getLanguage().setFrench(true)`. | +| **Ακατάλληροι χαρακτήρες** | Εικόνα χαμηλής ανάλυσης (< 150 dpi) | Αυξήστε την ανάλυση ή σκανάρετε ξανά με υψηλότερο DPI· σκεφτείτε προεπεξεργασία με βιβλιοθήκες βελτίωσης εικόνας. | +| **Υπερδιόρθωση ονομάτων** | Επιθετική ορθογραφική διόρθωση σε ορθογραφικά ονόματα | Μετα‑επεξεργασία με λευκή λίστα γνωστών ονομάτων ή αλλαγή σε επίπεδο `LIGHT`. | + +--- + +## Επόμενα βήματα: Κλιμάκωση του pipeline OCR σας + +- **Επεξεργασία παρτίδας:** Επανάληψη πάνω σε έναν φάκελο εικόνων, επαναχρησιμοποίηση ενός μόνο αντικειμένου `OcrEngine` για απόδοση. +- **Εξαγωγή PDF:** Χρησιμοποιήστε το Aspose.PDF για να μετατρέψετε κάθε σελίδα σε εικόνα, έπειτα τροφοδοτήστε την στη μηχανή OCR. +- **Προσαρμοσμένα λεξικά:** Αν ο τομέας σας χρησιμοποιεί εξειδικευμένη ορολογία (ιατρική, νομική), δώστε μια προσαρμοσμένη λίστα λέξεων στο `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Παραλληλισμός:** Το `ForkJoinPool` της Java μπορεί να εκτελεί πολλαπλές εργασίες OCR ταυτόχρονα, αλλά προσέξτε τη χρήση μνήμης επειδή κάθε μηχανή κρατά buffers εικόνας. + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Στιγμιότυπο οθόνης που δείχνει τη βελτιωμένη ακρίβεια OCR με διορθωμένο πολυγλωσσικό κείμενο"} + +## Συμπέρασμα + +Μόλις **βελτιώσαμε το OCR** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/greek/java/ocr-operations/_index.md b/ocr/greek/java/ocr-operations/_index.md index 6367d21ae..0b5aa4684 100644 --- a/ocr/greek/java/ocr-operations/_index.md +++ b/ocr/greek/java/ocr-operations/_index.md @@ -50,29 +50,25 @@ weight: 21 Είτε πρόκειται για πολυγλωσσικά έγγραφα είτε για συγκεκριμένες απαιτήσεις γλώσσας, αυτό το tutorial σας δίνει τη δυνατότητα να εξάγετε κείμενο με ακρίβεια στόχευσης. Πείτε αντίο στην εικασία και καλωσορίστε την ακρίβεια. -[Discover Language Selection Tutorial](./perform-ocr-language-selection/) - ## OCR Αναγνώριση Εγγράφων PDF στο Aspose.OCR για Java Ανοίξτε με ευκολία τη δύναμη του OCR σε Java με το Aspose.OCR. Το tutorial μας για την αναγνώριση κειμένου σε έγγραφα PDF σας οδηγεί σε μια αδιάσπαστη ενσωμάτωση. Ενισχύστε τις εφαρμογές σας με την ακρίβεια και την ταχύτητα που απαιτούνται για τη διαχείριση κειμένου σε PDF. Τέλος με τις δυσκολίες στην εξαγωγή κειμένου PDF. Βυθιστείτε στο tutorial και εξοπλιστείτε με τη γνώση για να αναγνωρίζετε κείμενο σε έγγραφα PDF άψογα, εξασφαλίζοντας ομαλή ροή εργασίας. -[Get Started with PDF Recognition](./recognize-pdf/) - ## OCR Αναγνώριση Εικόνων TIFF στο Aspose.OCR για Java Ζήστε το επόμενο επίπεδο αναγνώρισης κειμένου σε Java με το Aspose.OCR. Το tutorial μας για την αναγνώριση κειμένου σε εικόνες TIFF έχει σχεδιαστεί ώστε η διαδικασία να είναι αβίαστη για εσάς. Κατεβάστε το τώρα για μια αδιάσπαστη εμπειρία OCR και δείτε την ακρίβεια και την ταχύτητα που προσφέρει το Aspose.OCR. Πείτε αντίο στην χειροκίνητη εξαγωγή κειμένου από εικόνες TIFF. Αφήστε το Aspose.OCR να το κάνει για εσάς. Βυθιστείτε στο tutorial και ξεκλειδώστε ισχυρή αναγνώριση κειμένου σε Java. -[TIFF Recognition Tutorial](./recognize-tiff/) - Συμπερασματικά, με τη Λίστα Tutorials του Aspose.OCR για Java, έχετε τα κλειδιά για να αξιοποιήσετε πλήρως τις δυνατότητες των λειτουργιών OCR. Εξερευνήστε κάθε tutorial, ανακαλύψτε τις δυνατότητες και αναβαθμίστε τις ικανότητες εξαγωγής κειμένου σας. Πείτε αντίο στις χειροκίνητες προσπάθειες και αγκαλιάστε την ακρίβεια και την αποδοτικότητα που προσφέρει το Aspose.OCR για Java! ## OCR Operations Tutorials ### [Performing OCR with Detect Areas Mode in Aspose.OCR](./perform-ocr-detect-areas-mode/) Αποκτήστε τη δύναμη της εξαγωγής κειμένου από εικόνες με το Aspose.OCR για Java. Ένα ολοκληρωμένο tutorial για OCR με Detect Areas Mode. +### [Aspose OCR Java Example: Extract Text from a Region](./aspose-ocr-java-example-extract-text-from-a-region/) +Μάθετε πώς να εξάγετε κείμενο από συγκεκριμένη περιοχή εικόνας χρησιμοποιώντας Aspose OCR σε Java. ### [Performing OCR with Language Selection in Aspose.OCR](./perform-ocr-language-selection/) Αποκτήστε ακριβή εξαγωγή κειμένου από εικόνες με το Aspose.OCR για Java. Ακολουθήστε τον βήμα‑βήμα οδηγό μας για ακριβές OCR με επιλογή γλώσσας. ### [OCR Recognizing PDF Documents in Aspose.OCR for Java](./recognize-pdf/) @@ -81,6 +77,8 @@ weight: 21 Αποκτήστε ισχυρή αναγνώριση κειμένου σε Java με το Aspose.OCR. Αναγνωρίστε κείμενο σε εικόνες TIFF άψογα. Κατεβάστε το τώρα για μια αδιάσπαστη εμπειρία OCR. ### [recognize text image with Aspose OCR – Full Java OCR Tutorial](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Αποκτήστε πλήρη καθοδήγηση για την αναγνώριση κειμένου από εικόνες με το Aspose OCR σε Java. +### [Εξαγωγή Κειμένου από HEIC – Πλήρης Οδηγός Java](./extract-text-from-heic-complete-java-guide/) +Μάθετε πώς να εξάγετε κείμενο από αρχεία HEIC χρησιμοποιώντας Aspose.OCR σε Java, βήμα‑βήμα οδηγίες. ## Συχνές Ερωτήσεις diff --git a/ocr/greek/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/greek/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..d83aceb91 --- /dev/null +++ b/ocr/greek/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,174 @@ +--- +category: general +date: 2026-05-03 +description: Το παράδειγμα Aspose OCR Java δείχνει πώς να φορτώσετε εικόνα για OCR + και να εξάγετε κείμενο από μια περιοχή με λίγες μόνο γραμμές κώδικα. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: el +og_description: Το παράδειγμα Aspose OCR Java δείχνει τη φόρτωση μιας εικόνας για + OCR και την εξαγωγή κειμένου από συγκεκριμένη περιοχή, ιδανικό για την επεξεργασία + τιμολογίων. +og_title: Παράδειγμα Aspose OCR Java – Εξαγωγή κειμένου περιοχής +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Παράδειγμα Aspose OCR Java: Εξαγωγή κειμένου από περιοχή' +url: /el/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Παράδειγμα Aspose OCR Java: Εξαγωγή Κειμένου από Περιοχή + +Ψάχνετε ένα **Aspose OCR Java example** που σας επιτρέπει να εξάγετε μόνο το τμήμα που χρειάζεστε από μια εικόνα; Σε αυτόν τον οδηγό θα περάσουμε από το **φόρτωμα μιας εικόνας για OCR** και την **εξαγωγή κειμένου από μια περιοχή**, ιδανικό για αριθμούς τιμολογίων, πεδία φορμών ή οποιοδήποτε κομμάτι δεδομένων που κρύβεται μέσα σε μια μεγαλύτερη εικόνα. + +Μπορεί να αναρωτιέστε γιατί να περιορίσετε το OCR σε ένα ορθογώνιο αντί να σαρώσετε ολόκληρη τη σελίδα. Η σύντομη απάντηση: ταχύτητα και ακρίβεια. Όταν η μηχανή κοιτάζει μόνο ένα καθορισμένο τμήμα, παραλείπει το άσχετο θόρυβο, λειτουργεί γρηγορότερα και συχνά παράγει πιο καθαρά αποτελέσματα. Στο τέλος αυτού του σεμιναρίου θα έχετε ένα αυτόνομο πρόγραμμα Java που κάνει ακριβώς αυτό, μαζί με μια σειρά συμβουλών για να αποφύγετε τα κοινά εμπόδια που παγιδεύουν τους νέους χρήστες. + +## Τι Θα Χρειαστείτε + +- **Java Development Kit (JDK) 11** ή νεότερο εγκατεστημένο. +- Βιβλιοθήκη **Aspose.OCR for Java** (μπορείτε να κατεβάσετε το τελευταίο JAR από το αποθετήριο Maven Central ή την πύλη λήψης της Aspose). +- Ένα αρχείο εικόνας που περιέχει το κείμενο που θέλετε να διαβάσετε – για τη demo μας θα χρησιμοποιήσουμε το `invoice.png`, το οποίο περιέχει έναν αριθμό τιμολογίου κάπου κοντά στην επάνω‑δεξιά γωνία. +- Ένα αγαπημένο IDE ή έναν απλό επεξεργαστή κειμένου συν τερματικό· οποιοδήποτε εργαλείο κατασκευής (Maven, Gradle ή απλό `javac`) αρκεί. + +Αυτό είναι όλο. Χωρίς επιπλέον μηχανές OCR, χωρίς εγγενή δυαδικά αρχεία, μόνο καθαρή Java και Aspose. + +![Στιγμιότυπο παραδείγματος Aspose OCR Java](/images/aspose-ocr-java-example.png "Παράδειγμα Aspose OCR Java που δείχνει εξαγωγή περιοχής") + +## Παράδειγμα Aspose OCR Java – Αρχικοποίηση της Μηχανής OCR + +Το πρώτο πράγμα που χρειάζεται οποιαδήποτε ροή εργασίας OCR είναι μια παρουσία της μηχανής. Η Aspose παρέχει μια ελαφριά κλάση `OcrEngine` που διαχειρίζεται τα πάντα, από τη φόρτωση της εικόνας μέχρι την επιλογή γλώσσας. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Γιατί είναι σημαντικό:** Η δημιουργία της μηχανής εκ των προτέρων σας παρέχει ένα καθαρό αντικείμενο για διαμόρφωση. Μπορείτε να επαναχρησιμοποιήσετε το ίδιο `OcrEngine` για πολλαπλές εικόνες αν επεξεργάζεστε μια δέσμη, κάτι που εξοικονομεί μνήμη και χρόνο αρχικοποίησης. + +## Φόρτωση Εικόνας για OCR + +Στη συνέχεια, ενημερώνουμε τη μηχανή ποια εικόνα θα σαρώσει. Η Aspose παρέχει τη βοηθητική μέθοδο `ImageStream.fromFile`, η οποία αφαιρεί το χαμηλού επιπέδου boilerplate του `FileInputStream`. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Συμβουλή:** Αντικαταστήστε το `YOUR_DIRECTORY` με μια απόλυτη διαδρομή ή μια σχετική που δείχνει στο φάκελο όπου αποθηκεύσατε το `invoice.png`. Αν το αρχείο δεν βρεθεί, η Aspose ρίχνει ένα `IOException`, οπότε ίσως θελήσετε να το τυλίξετε σε μπλοκ try‑catch για κώδικα παραγωγής. + +## Ορισμός και Εξαγωγή Κειμένου από Περιοχή + +Τώρα έρχεται το αστέρι της παράστασης: το ορθογώνιο που λέει στη μηχανή πού να κοιτάξει. Ο κατασκευαστής `java.awt.Rectangle` δέχεται `(x, y, width, height)` – όλα μετρημένα σε εικονοστοιχεία (pixels). + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Πώς λειτουργεί:** Καλώντας το `setRegion`, περιορίζετε τη σάρωση OCR σε ένα τμήμα 300 pixel πλάτους που ξεκινά 120 pixel από την αριστερή άκρη και 250 pixel από την κορυφή. Προσαρμόστε αυτούς τους αριθμούς ώστε να ταιριάζουν με τη δική σας διάταξη· ένας γρήγορος τρόπος για να τους βρείτε είναι να ανοίξετε την εικόνα σε οποιονδήποτε επεξεργαστή γραφικών που εμφανίζει συντεταγμένες pixel. + +## Ενεργοποίηση Γλώσσας και Εκτέλεση Αναγνώρισης + +Η Aspose OCR υποστηρίζει δεκάδες γλώσσες, αλλά για έναν αριθμό τιμολογίου χρειάζεται μόνο τα Αγγλικά. Η ενεργοποίηση της σωστής γλώσσας μειώνει δραστικά τα ψευδώς θετικά αποτελέσματα. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Γιατί να ενεργοποιήσετε μόνο τα Αγγλικά;** Η μηχανή OCR θα προσπαθήσει να ταιριάξει χαρακτήρες από κάθε ενεργοποιημένο σύνολο γλωσσών, κάτι που μπορεί να την συγχύσει όταν το κείμενο είναι απλώς αλφαριθμητικό. Η περιορισμός του εύρους γλώσσας βελτιώνει τόσο την ταχύτητα όσο και την ακρίβεια. + +### Αναμενόμενη Έξοδος + +Όταν όλα ευθυγραμμιστούν, θα δείτε κάτι όπως: + +``` +Extracted region text: INV-12345 +``` + +Αν το ορθογώνιο είναι εκτός κατά μερικά pixel, η έξοδος μπορεί να είναι ακατάστατη ή κενή. Αυτό είναι ένας εύκολος έλεγχος λογικής: εκτελέστε το πρόγραμμα, κοιτάξτε την κονσόλα και επαληθεύστε ότι το κείμενο ταιριάζει με αυτό που βλέπετε στην εικόνα. + +## Εκτέλεση του Κώδικα και Επαλήθευση της Εξόδου + +Υποθέτοντας ότι χρησιμοποιείτε Maven, προσθέστε την εξάρτηση Aspose OCR στο `pom.xml` σας: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Συμπιέστε (compile) και εκτελέστε: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Ή, αν προτιμάτε απλό `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Θα πρέπει να δείτε τη γραμμή **Extracted region text** να εκτυπώνεται στην κονσόλα. Αν λάβετε το μήνυμα “OCR recognition failed”, ελέγξτε ξανά τη διαδρομή του αρχείου και βεβαιωθείτε ότι η περιοχή περιέχει πράγματι αναγνώσιμους χαρακτήρες. + +## Ακραίες Περιπτώσεις & Κοινές Παραλλαγές + +| Κατάσταση | Τι να Αλλάξετε | +|-----------|----------------| +| **Πολλαπλές γλώσσες** (π.χ., Αγγλικά + Ισπανικά) | Καλέστε `ocrEngine.getLanguage().setSpanish(true);` μαζί με τα Αγγλικά. | +| **Περιοχή εκτός ορίων εικόνας** | Η Aspose θα κόψει σιωπηλά το ορθογώνιο, αλλά θα χάσετε δεδομένα. Χρησιμοποιήστε το `ImageInfo` (`ocrEngine.getImage().getWidth()`) για να επαληθεύσετε τις διαστάσεις πριν ορίσετε την περιοχή. | +| **Δυναμικά τιμολόγια** (διαφορετικές διατάξεις) | Σκεφτείτε να εκτελέσετε μια ελαφριά προ-σάρωση σε ολόκληρη την εικόνα για να εντοπίσετε λέξεις-κλειδιά όπως “Invoice #” και στη συνέχεια να υπολογίσετε το ορθογώνιο προγραμματιστικά. | +| **Εικόνες υψηλότερης ανάλυσης DPI** | Αυξήστε το `ocrEngine.getImage().setResolution(300);` για καλύτερη ακρίβεια σε σαρωμένα έγγραφα. | +| **Βελτιστοποίηση απόδοσης** | Απενεργοποιήστε περιττές γλώσσες, κρατήστε την περιοχή όσο το δυνατόν μικρότερη και επαναχρησιμοποιήστε μια ενιαία παρουσία `OcrEngine` σε πολλά αρχεία. | + +## Pro Συμβουλές από το Πεδίο Μάχης + +- **Pro tip:** Αν χρειάζεστε μόνο ψηφία (συνηθισμένο για αριθμούς τιμολογίων), ενεργοποιήστε τη αριθμητική λειτουργία με `ocrEngine.getLanguage().setDigits(true);`. Αυτό εξαλείφει τον αλφαβητικό θόρυβο. +- **Watch out for:** Διαφανή PNG. Η Aspose μερικές φορές ερμηνεύει λανθασμένα το κανάλι άλφα· η μετατροπή της εικόνας σε JPEG με στερεό φόντο πρώτα μπορεί να λύσει περίεργες κενές εξόδους. +- **Remember:** Το ορθογώνιο χρησιμοποιεί το εγγενές σύστημα συντεταγμένων της εικόνας, όχι τυχόν κλιμάκωση UI που μπορεί να βλέπετε στην οθόνη. Πάντα δοκιμάζετε με το ακριβές αρχείο που θα επεξεργαστείτε στην παραγωγή. + +## Τι Ακολουθεί; + +Τώρα που έχετε ένα σταθερό **Aspose OCR Java example** για εξαγωγή βάσει περιοχής, μπορείτε να το επεκτείνετε σε διάφορες χρήσιμες κατευθύνσεις: + +- **Batch processing:** Επανάληψη πάνω σε έναν φάκελο τιμολογίων, επαναχρησιμοποιώντας το ίδιο `OcrEngine` για βελτιωμένη απόδοση. +- **Data validation:** Στείλτε το εξαγόμενο κείμενο μέσω ενός regex όπως `INV-\\d{5}` για να διασφαλίσετε ότι έχετε καταγράψει έναν έγκυρο αριθμό τιμολογίου. +- **Integration with PDF:** Χρησιμοποιήστε το Aspose.PDF για να επικάλυψη το εξαγόμενο κείμενο πίσω στο αρχικό έγγραφο για σκοπούς ελέγχου. +- **Cloud deployment:** Τυλίξτε τον κώδικα σε μια ελαφριά υπηρεσία REST (Spring Boot) ώστε άλλα συστήματα να το καλούν κατά απαίτηση. + +Κάθε ένα από αυτά τα βήματα περιλαμβάνει φυσικά τις ίδιες βασικές έννοιες—**φόρτωση εικόνας για OCR**, **εξαγωγή κειμένου από περιοχή**, και διαχείριση των αποτελεσμάτων—οπότε η μετάβαση θα είναι αβίαστη. + +--- + +*Καλό κώδικα! Αν αντιμετωπίσετε δυσκολίες, αφήστε ένα σχόλιο παρακάτω ή ελέγξτε τα φόρουμ της Aspose όπου η κοινότητα μοιράζεται πραγματικές προσαρμογές για δύσκολες διατάξεις.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/greek/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/greek/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..54571d31b --- /dev/null +++ b/ocr/greek/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Εξάγετε κείμενο από εικόνες HEIC χρησιμοποιώντας το Aspose OCR σε Java. + Μάθετε πώς να μετατρέπετε το HEIC σε κείμενο γρήγορα με ένα βήμα‑βήμα παράδειγμα. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: el +og_description: Εξάγετε κείμενο από εικόνες HEIC με το Aspose OCR σε Java. Αυτός ο + οδηγός σας δείχνει πώς να μετατρέψετε το HEIC σε κείμενο σε λίγα λεπτά. +og_title: Εξαγωγή κειμένου από HEIC – Οδηγός Java OCR +tags: +- OCR +- Java +- Aspose +title: Εξαγωγή κειμένου από HEIC – Πλήρης οδηγός Java +url: /el/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Εξαγωγή Κειμένου από HEIC – Πλήρης Οδηγός Java + +Έχετε αναρωτηθεί ποτέ πώς να **εξάγετε κείμενο από αρχεία HEIC** χωρίς πρώτα να τα μετατρέψετε σε JPEG ή PNG; Δεν είστε μόνοι. Πολλοί προγραμματιστές αντιμετωπίζουν πρόβλημα όταν μια εφαρμογή κινητού τους δίνει μια φωτογραφία `.heic` και χρειάζονται το ενσωματωμένο κείμενο για ευρετηρίαση ή ανάλυση. Τα καλά νέα; Με το Aspose OCR for Java μπορείτε να **εξάγετε κείμενο από HEIC** απευθείας—χωρίς επιπλέον βήμα μετατροπής. + +Σε αυτό το tutorial θα σας δείξουμε επίσης πώς να **μετατρέψετε HEIC σε κείμενο** σε μια ενιαία, καθαρή αλυσίδα, ώστε να μπορείτε να ενσωματώσετε τον κώδικα σε οποιοδήποτε έργο Java και να αρχίσετε να εξάγετε συμβολοσειρές από αυτές τις υψηλής αποδοτικότητας εικόνες σήμερα. + +![παράδειγμα εξαγωγής κειμένου από HEIC](https://example.com/placeholder.png "παράδειγμα εξαγωγής κειμένου από HEIC") + +## Τι Θα Μάθετε + +- Πώς να ρυθμίσετε το Aspose OCR σε έργο Maven/Gradle. +- Τον ακριβή κώδικα Java που απαιτείται για **εξαγωγή κειμένου από HEIC** εικόνες. +- Γιατί αυτή η προσέγγιση είναι πιο γρήγορη και λιγότερο επιρρεπής σε σφάλματα από μια ροή εργασίας `μετατροπή‑μετά‑OCR`. +- Συνηθισμένα προβλήματα (π.χ. έλλειψη πακέτων γλώσσας) και πώς να τα αποφύγετε. +- Συμβουλές για κλιμάκωση της λύσης σε σενάριο επεξεργασίας παρτίδας. + +Στο τέλος του οδηγού θα μπορείτε να **μετατρέψετε HEIC σε κείμενο** με λίγες μόνο γραμμές κώδικα και θα κατανοήσετε το «γιατί» πίσω από κάθε βήμα. + +--- + +## Προαπαιτούμενα + +Πριν βυθιστούμε, βεβαιωθείτε ότι έχετε: + +1. **Java 8 ή νεότερη** – Το Aspose OCR λειτουργεί σε οποιοδήποτε σύγχρονο JDK. +2. **Maven ή Gradle** – για την αυτόματη λήψη της βιβλιοθήκης Aspose OCR. +3. Μια **εικόνα HEIC** που θέλετε να δοκιμάσετε (μετονομάστε την σε `sample.heic` και τοποθετήστε την κάπου προσβάσιμη). +4. Προαιρετικά αλλά χρήσιμο: ένα IDE όπως το IntelliJ IDEA ή το VS Code. + +Δεν απαιτούνται άλλα εξωτερικά εργαλεία· η βιβλιοθήκη διαχειρίζεται τη μορφή HEIC εγγενώς. + +--- + +## Βήμα 1 – Προσθήκη του Aspose OCR στο Έργο Σας + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Pro tip:** Διατηρήστε τον αριθμό έκδοσης συγχρονισμένο με τις επίσημες κυκλοφορίες του Aspose· οι νεότερες εκδόσεις προσθέτουν υποστήριξη για επιπλέον παραλλαγές HEIC και βελτιώνουν την ακρίβεια των γλωσσών. + +--- + +## Βήμα 2 – Αρχικοποίηση του OCR Engine για **Εξαγωγή Κειμένου από HEIC** + +Η δημιουργία ενός αντικειμένου `OcrEngine` είναι το πρώτο συγκεκριμένο βήμα προς την εξαγωγή κειμένου από HEIC. Η μηχανή αφαιρεί όλες τις χαμηλού επιπέδου αποκωδικοποιήσεις, ώστε να μην χρειάζεται να ανησυχείτε για τη μορφή του κοντέινερ HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Γιατί είναι σημαντικό:** +HEIC είναι μια σύγχρονη μορφή εικόνας βασισμένη στο κοντέινερ HEIF. Οι παραδοσιακές βιβλιοθήκες OCR αναμένουν JPEG/PNG, αναγκάζοντάς σας να εκτελέσετε ξεχωριστό βήμα μετατροπής που μπορεί να μειώσει την ποιότητα. Η εγγενής υποστήριξη του Aspose OCR σας επιτρέπει να **εξάγετε κείμενο από HEIC** σε ένα βήμα, διατηρώντας τα αρχικά δεδομένα εικονοστοιχείων και εξοικονομώντας κύκλους CPU. + +--- + +## Βήμα 3 – Ενεργοποίηση των Επιθυμητών Γλώσσας(ων) + +Από προεπιλογή η μηχανή ψάχνει μόνο για αγγλικά. Αν χρειάζεται να **μετατρέψετε HEIC σε κείμενο** σε άλλη γλώσσα, απλώς ενεργοποιήστε την αντίστοιχη σημαία. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Γιατί να ενεργοποιείτε τις γλώσσες ρητά;** +> Τα πακέτα γλώσσας φορτώνονται κατ' απαίτηση. Η ενεργοποίηση μόνο των απαραίτητων μειώνει το αποτύπωμα μνήμης και επιταχύνει την αναγνώριση. + +--- + +## Βήμα 4 – Εκτέλεση της Διαδικασίας Αναγνώρισης + +Τώρα ζητάμε από τη μηχανή να διαβάσει την εικόνα και να παραγάγει μια συμβολοσειρά. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Αναμενόμενο αποτέλεσμα** (υποθέτοντας ότι η εικόνα περιέχει τη φράση “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Αν η εικόνα είναι κενή ή το κείμενο μη αναγνώσιμο, η μηχανή επιστρέφει `false` και θα δείτε το μήνυμα εναλλακτικής λύσης. + +--- + +## Βήμα 5 – Διαχείριση Ακραίων Περιστατικών & Συχνές Ερωτήσεις + +### Τι γίνεται αν το αρχείο HEIC είναι κατεστραμμένο; + +Το Aspose OCR ρίχνει ένα `IOException` όταν δεν μπορεί να αποκωδικοποιήσει το κοντέινερ. Τυλίξτε την κλήση σε μπλοκ `try‑catch` και καταγράψτε το σφάλμα για μετέπειτα έλεγχο. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Μπορώ να επεξεργαστώ πολλαπλά αρχεία HEIC σε παρτίδα; + +Απολύτως. Απλώς κάντε βρόχο πάνω από έναν φάκελο και επαναχρησιμοποιήστε το ίδιο αντικείμενο `OcrEngine` για να αποφύγετε επαναλαμβανόμενη αρχικοποίηση. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Κάνει επίσης **μετατροπή HEIC σε κείμενο** για μη‑λατινικά σενάρια; + +Ναι—το Aspose OCR υποστηρίζει Αραβικά, Κινέζικα, Κυριλλικά και πολλές άλλες γλώσσες. Απλώς ενεργοποιήστε τη σχετική σημαία γλώσσας (π.χ. `engine.getLanguage().setChineseSimplified(true);`). Θυμηθείτε να προσθέσετε τα κατάλληλα αρχεία γραμματοσειρών αν τρέχετε σε server χωρίς γραφικό περιβάλλον. + +--- + +## Βήμα 6 – Επαλήθευση του Αποτελέσματος Προγραμματιστικά + +Σε παραγωγική αλυσίδα συχνά χρειάζεται να διασφαλίσετε ότι το OCR output πληροί ορισμένα όρια ποιότητας. Ένας γρήγορος τρόπος είναι ο υπολογισμός ενός σκορ εμπιστοσύνης (διαθέσιμο σε νεότερες εκδόσεις) ή απλώς ο έλεγχος του μήκους της επιστρεφόμενης συμβολοσειράς. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Πλήρες Παράδειγμα Λειτουργίας + +Παρακάτω βρίσκεται η πλήρης, έτοιμη‑για‑εκτέλεση κλάση Java που ενσωματώνει όλα τα παραπάνω βήματα. Αντιγράψτε την σε ένα αρχείο με όνομα `HeifExample.java`, προσαρμόστε τη διαδρομή στο αρχείο HEIC σας και τρέξτε `javac` + `java` όπως συνήθως. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Τρέξτε το: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Θα πρέπει να δείτε τη εξαγόμενη συμβολοσειρά να εκτυπώνεται στην κονσόλα, επιβεβαιώνοντας ότι έχετε μετατρέψει επιτυχώς **HEIC σε κείμενο**. + +--- + +## Συμπέρασμα + +Διασχίσαμε όλα όσα χρειάζεστε για να **εξάγετε κείμενο από HEIC** χρησιμοποιώντας το Aspose OCR σε Java. Από την προσθήκη της βιβλιοθήκης μέχρι τη διαχείριση ακραίων περιπτώσεων, ο οδηγός παρουσιάζει μια καθαρή, μονοβήμα λύση που εξαλείφει την ανάγκη για ξεχωριστό εργαλείο μετατροπής. + +Τώρα μπορείτε: + +- **Μετατρέψετε HEIC σε κείμενο** άμεσα σε web services, back‑ends κινητών ή εργασίες παρτίδας. +- Επεκτείνετε την υποστήριξη σε άλλες γλώσσες με μία μόνο γραμμή ρύθμισης. +- Κλιμακώσετε τη διαδικασία επαναχρησιμοποιώντας το ίδιο `OcrEngine` για πολλά αρχεία. + +Στο επόμενο βήμα, ίσως θέλετε να εξερευνήσετε **ενσωμάτωση του αποτελέσματος OCR σε ευρετήσιμο ευρετήριο** (π.χ. Elasticsearch) ή **προσθήκη προεπεξεργασίας εικόνας** για βελτίωση της ακρίβειας σε HEIC φωτογραφίες χαμηλής αντίθεσης. Ο ουρανός είναι το όριο—πειραματιστείτε, μετρήστε και βελτιώστε. + +Έχετε ερωτήσεις ή αντιμετωπίζετε ένα δύσκολο αρχείο HEIC; Αφήστε ένα σχόλιο παρακάτω, και καλή προγραμματιστική! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hindi/java/advanced-ocr-techniques/_index.md b/ocr/hindi/java/advanced-ocr-techniques/_index.md index dc2312198..641eec811 100644 --- a/ocr/hindi/java/advanced-ocr-techniques/_index.md +++ b/ocr/hindi/java/advanced-ocr-techniques/_index.md @@ -54,16 +54,23 @@ url: /hi/java/advanced-ocr-techniques/ ### [जावा के लिए Aspose.OCR में URL से छवि पर OCR निष्पादित करना](./perform-ocr-image-from-url/) Aspose.OCR के साथ जावा में निर्बाध छवि पाठ निष्कर्षण अनलॉक करें। आसान एकीकरण के साथ उच्च सटीकता ओसीआर। ### [Aspose.OCR में विशिष्ट पृष्ठ पर OCR निष्पादित करना](./perform-ocr-on-page/) -विशिष्ट पृष्ठों पर ओसीआर निष्पादित करने के बारे में हमारी चरण-दर-चरण मार्गदर्शिका के साथ जावा के लिए Aspose.OCR की शक्ति को अनलॉक करें। छवियों से सहजता से टेक्स्ट निकालें और अपने जावा प्रोजेक्ट्स को बेहतर बनाएं। +विशिष्ट पृष्ठों पर OCR निष्पादित करने के बारे में हमारी चरण-दर-चरण मार्गदर्शिका के साथ जावा के लिए Aspose.OCR की शक्ति को अनलॉक करें। छवियों से सहजता से टेक्स्ट निकालें और अपने जावा प्रोजेक्ट्स को बेहतर बनाएं। ### [Aspose.OCR में OCR के लिए आयत तैयार करना](./prepare-rectangles-for-ocr/) जावा के लिए Aspose.OCR के साथ टेक्स्ट पहचान की शक्ति को अनलॉक करें। निर्बाध एकीकरण के लिए हमारी चरण-दर-चरण मार्गदर्शिका का पालन करें। कुशल ओसीआर क्षमताओं के साथ अपने जावा एप्लिकेशन को बेहतर बनाएं। ### [जावा के लिए Aspose.OCR में लाइनों को पहचानना](./recognize-lines/) सटीक पाठ पहचान के लिए Aspose.OCR के साथ अपने जावा एप्लिकेशन को सशक्त बनाएं। आसान एकीकरण, उच्च सटीकता। ### [Aspose.OCR में अनुमत वर्ण निर्दिष्ट करना](./specify-allowed-characters/) जावा के लिए Aspose.OCR के साथ छवियों से पाठ निष्कर्षण को सहजता से अनलॉक करें। कुशल एकीकरण के लिए हमारी चरण-दर-चरण मार्गदर्शिका का पालन करें। +### [जावा में समानांतर OCR के लिए फिक्स्ड थ्रेड पूल बनाना](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +जावा में समानांतर OCR संचालन के लिए फिक्स्ड थ्रेड पूल सेट अप करने की चरण-दर-चरण मार्गदर्शिका। +### [जावा OCR के लिए GPU सक्षम करने का तरीका – पूर्ण ट्यूटोरियल](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +जावा में Aspose.OCR के साथ GPU उपयोग करके तेज़ और सटीक OCR कैसे सक्षम करें, चरण-दर-चरण मार्गदर्शिका। +### [जावा में OCR सटीकता सुधारें – पूर्ण Aspose OCR गाइड](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +जावा में Aspose OCR के साथ OCR सटीकता को अधिकतम करने के लिए चरण-दर-चरण मार्गदर्शिका। तेज़ और विश्वसनीय पाठ पहचान के लिए अभी पढ़ें। + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hindi/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/hindi/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..79db2eeef --- /dev/null +++ b/ocr/hindi/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-05-03 +description: जावा में फिक्स्ड थ्रेड पूल बनाकर छवियों से तेज़ी से टेक्स्ट निकालें। + जानें कैसे OCR चलाएँ, छवि को टेक्स्ट में बदलें, और समानांतर OCR प्रोसेसिंग से प्रदर्शन + को बढ़ाएँ। +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: hi +og_description: जावा में फिक्स्ड थ्रेड पूल बनाकर छवियों से तेज़ी से टेक्स्ट निकालें। + जानें OCR कैसे चलाएँ, छवि को टेक्स्ट में बदलें, और समानांतर OCR प्रोसेसिंग से प्रदर्शन + बढ़ाएँ। +og_title: जावा में समानांतर OCR के लिए फिक्स्ड थ्रेड पूल बनाएं +tags: +- Java +- OCR +- Multithreading +title: जावा में समानांतर OCR के लिए फिक्स्ड थ्रेड पूल बनाएं +url: /hi/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# जावा में Parallel OCR के लिए Fixed Thread Pool बनाएं + +क्या आपको कभी **create fixed thread pool** बनाकर OCR जॉब्स को तेज़ करने की ज़रूरत पड़ी, लेकिन आप नहीं जानते थे कि कहाँ से शुरू करें? आप अकेले नहीं हैं। कई इमेज‑हैवी प्रोजेक्ट्स में बॉटलनेक सिंगल‑थ्रेडेड OCR कॉल होता है, और समाधान आश्चर्यजनक रूप से सरल है: वर्कर थ्रेड्स का एक पूल बनाएं और उन्हें फ़ाइलों को समानांतर रूप से प्रोसेस करने दें। + +इस ट्यूटोरियल में आप सीखेंगे कि Aspose OCR का उपयोग करके **extract text from images** कैसे किया जाता है, **run OCR** को कैसे कुशलता से चलाया जाता है, और **convert image to text** को बिना CPU पर अधिक लोड डाले कैसे किया जाता है। अंत तक आपके पास एक तैयार‑to‑run जावा प्रोग्राम होगा जो **parallel OCR processing** को कुछ नमूना चित्रों पर दर्शाता है। + +## आप क्या बनाएँगे + +* इमेज पाथ्स (PNG, JPG, TIFF, BMP) की सूची पढ़ता है। +* **Creates a fixed thread pool** को CPU कोर की संख्या के अनुसार आकार देता है। +* प्रत्येक इमेज के लिए OCR टास्क डिस्पैच करता है। +* पहचाने गए टेक्स्ट को इकट्ठा करता है और कंसोल पर प्रिंट करता है। +* Executor को साफ़ तौर पर शटडाउन करता है। + +कोई बाहरी बिल्ड टूल नहीं, कोई फैंसी फ्रेमवर्क नहीं—सिर्फ साधारण जावा और Aspose OCR लाइब्रेरी। यदि आपके पास Java 8+ और एक अच्छा IDE है, तो आप तैयार हैं। + +## पूर्वापेक्षाएँ + +* **Java Development Kit (JDK) 8 या नया** – कोड लैम्ब्डा का उपयोग करता है, इसलिए पुराने संस्करण कंपाइल नहीं होंगे। +* **Aspose OCR for Java** – Aspose वेबसाइट से JAR डाउनलोड करें या Maven (`com.aspose:aspose-ocr`) के माध्यम से प्राप्त करें। +* कुछ टेस्ट इमेजेज वाला फ़ोल्डर (कोड `YOUR_DIRECTORY` की ओर इशारा करता है)। +* जावा कन्करेंसी की बुनियादी जानकारी (बाकी हम समझाएंगे)। + +> *Pro tip:* यदि आप Maven का उपयोग कर रहे हैं, तो अपनी `pom.xml` में डिपेंडेंसी जोड़ें और IDE को क्लासपाथ संभालने दें। + +--- + +## चरण 1: आवश्यक इम्पोर्ट जोड़ें + +सबसे पहले, आवश्यक क्लासेज़ को स्कोप में लाएँ। यह सिर्फ बायलरप्लेट नहीं है; प्रत्येक इम्पोर्ट JVM को बताता है कि OCR इंजन, इमेज हैंडलिंग यूटिलिटीज़, और कन्करेंसी टूल्स जहाँ स्थित हैं, जिससे हम **create fixed thread pool** इंस्टेंस बना सकें। + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – कोर OCR API। +* `java.util.*` – इमेज पाथ्स और परिणामों को स्टोर करने के लिए कलेक्शन्स। +* `java.util.concurrent.*` – कन्करेंसी पैकेज जिसमें `ExecutorService` और `Future` होते हैं। + +--- + +## चरण 2: प्रोसेस करने वाली इमेजेज़ को परिभाषित करें + +अगला, हम उन फ़ाइलों की सूची बनाते हैं जिन्हें हम **extract text from images** करना चाहते हैं। `Arrays.asList` का उपयोग कोड को संक्षिप्त रखता है और हमें बाकी लॉजिक को बदले बिना अपना डायरेक्टरी बदलने देता है। + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +बिना झिझक और एंट्रीज़ जोड़ें; थ्रेड पूल आपके CPU कोर की संख्या के आधार पर स्वतः स्केल हो जाएगा। + +--- + +## चरण 3: CPU कोर के अनुसार **Create Fixed Thread Pool** बनाएं + +यह ट्यूटोरियल का मुख्य भाग है। हम रनटाइम से पूछते हैं कि कितने कोर उपलब्ध हैं और `Executors` फ़ैक्ट्री से ठीक उसी आकार का पूल मांगते हैं। फिक्स्ड क्यों? क्योंकि थ्रेड्स की पूर्वनिर्धारित संख्या “थ्रेड एक्सप्लोजन” को रोकती है, जो OS को संसाधनों से वंचित कर सकता है। + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` लॉजिकल कोर काउंट (हाइपर‑थ्रेड्स सहित) लौटाता है। +* `newFixedThreadPool(coreCount)` सुनिश्चित करता है कि हम CPU की क्षमता से अधिक न जाएँ, जो समानांतर में **run OCR** करने का सबसे सुरक्षित तरीका है। + +--- + +## चरण 4: प्रत्येक इमेज के लिए OCR टास्क सबमिट करें + +अब हम प्रत्येक फ़ाइल पाथ को एक कॉलेबल में बदलते हैं जो **runs OCR**, टेक्स्ट को पहचानता है, और परिणाम लौटाता है। ध्यान दें कि हम लैम्ब्डा के अंदर एक नया `OcrEngine` इंस्टैंशिएट करते हैं—यह इंजन की स्टेट को थ्रेड‑सेफ़ नहीं होने से बचाता है। + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* प्रत्येक `submit` कॉल लैम्ब्डा को पूल को देती है, जो इसे एक आइडल थ्रेड पर शेड्यूल करता है। +* `Future` ऑब्जेक्ट्स हमें बाद में पहचाना गया टेक्स्ट प्राप्त करने देते हैं, यदि आवश्यक हो तो क्रम बनाए रखते हैं। + +--- + +## चरण 5: पहचाने गए टेक्स्ट को प्राप्त करें और प्रदर्शित करें + +एक बार सभी टास्क क्यू हो जाएँ, हम बस `Future` सूची पर इटरेट करते हैं, `get()` कॉल करके प्रत्येक OCR जॉब के समाप्त होने तक ब्लॉक करते हैं। यही वह जगह है जहाँ **convert image to text** चरण आपके सामने स्पष्ट हो जाता है: `engine.getText()` कॉल कच्चा स्ट्रिंग लौटाता है। + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +सामान्य कंसोल आउटपुट इस प्रकार दिखता है: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +यदि कोई फ़ाइल फेल हो जाती है (शायद वह करप्ट है), तो आप एक लाइन देखेंगे जो `Failed:` से शुरू होती है और उसके बाद पाथ आता है—त्वरित डिबगिंग के लिए उपयोगी। + +--- + +## चरण 6: Executor Service को साफ़ करें + +कभी भी पूल को शटडाउन करना न भूलें; अन्यथा JVM चलती रहेगी, यह सोचते हुए कि अभी भी काम है। एक ग्रेसफुल शटडाउन किसी भी चल रहे टास्क को प्रोसेस समाप्त होने से पहले पूरा होने देता है। + +```java +executor.shutdown(); +``` + +यदि आपको टाइमआउट लागू करना है तो आप `awaitTermination` भी कॉल कर सकते हैं, लेकिन अधिकांश कमांड‑लाइन यूटिलिटीज़ के लिए साधारण `shutdown()` पर्याप्त है। + +--- + +## पूर्ण कार्यशील उदाहरण + +नीचे पूरा, तैयार‑to‑run प्रोग्राम दिया गया है। इसे `ParallelOcrTutorial.java` नाम की फ़ाइल में कॉपी‑पेस्ट करें, इमेज पाथ्स को समायोजित करें, और सामान्य रूप से `javac` + `java` चलाएँ। + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**अपेक्षित परिणाम:** प्रत्येक इमेज की टेक्स्ट सामग्री कंसोल पर `imagePaths` सूची के समान क्रम में प्रिंट होगी। यदि कोई इमेज प्रोसेस नहीं हो पाती, तो आप एक फ़ेल्योर नोटिस देखेंगे, खाली लाइन की जगह। + +--- + +## सामान्य प्रश्न एवं किनारे के मामलों + +### यदि मेरे पास थ्रेड्स से अधिक इमेजेज़ हों तो क्या होगा? + +Fixed thread pool स्वचालित रूप से अतिरिक्त टास्क को क्यू करेगा। जैसे ही कोई थ्रेड अपना वर्तमान OCR जॉब समाप्त करता है, वह अगला टास्क ले लेता है। यह क्यूइंग व्यवहार **parallel OCR processing** का सार है—आप अधिकतम थ्रूपुट प्राप्त करते हैं बिना CPU को ओवरलोड किए। + +### क्या मैं भाषा बदल सकता हूँ? + +बिल्कुल। `engine.getLanguage().setEnglish(true);` को उपयुक्त भाषा फ़्लैग से बदलें, उदाहरण के लिए `setFrench(true)` या `recognize()` से पहले कई सेटर्स कॉल करके कई भाषाएँ सक्षम करें। + +### बहुत बड़ी इमेजेज़ को कैसे संभालें? + +Large files can consume a lot of memory per thread. If you notice `OutOfMemoryError`, consider scaling the image down before feeding it to the engine, or increase the heap size with `-Xmx`. Another approach is to use a **cached thread pool** ( + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hindi/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/hindi/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..ad07997bf --- /dev/null +++ b/ocr/hindi/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-05-03 +description: Java OCR के लिए GPU को जल्दी से कैसे सक्षम करें – Aspose OCR के साथ छवियों + से टेक्स्ट निकालना सीखें। पूर्ण Java OCR ट्यूटोरियल शामिल है। +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: hi +og_description: जावा OCR के लिए GPU को मिनटों में कैसे सक्षम करें। यह ट्यूटोरियल आपको + दिखाता है कि GPU एक्सेलेरेशन के साथ जावा OCR ट्यूटोरियल का उपयोग करके छवियों से + टेक्स्ट कैसे निकालें। +og_title: जावा OCR के लिए GPU कैसे सक्षम करें – चरण-दर-चरण गाइड +tags: +- Java +- OCR +- GPU +- Aspose +title: Java OCR के लिए GPU कैसे सक्षम करें – पूर्ण ट्यूटोरियल +url: /hi/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# GPU को Java OCR के लिए कैसे सक्षम करें – पूर्ण ट्यूटोरियल + +क्या आपने कभी **GPU को कैसे सक्षम करें** इस बारे में सोचा है जब आप किसी तस्वीर से टेक्स्ट निकालने की कोशिश कर रहे हों? अगर आपको कभी हाई‑रेज़ोल्यूशन स्कैन पर OCR चलाना पड़ा और CPU धीमा पड़ गया, तो आप अकेले नहीं हैं। इस गाइड में हम एक **java ocr tutorial** के माध्यम से दिखाएंगे कि टेक्स्ट कैसे निकाला जाए और साथ ही सबसे तेज़ तरीका भी बताएंगे **recognize text image java**‑स्टाइल में, जिसमें प्रयोगात्मक GPU सपोर्ट को चालू किया जाता है। + +हम Aspose OCR लाइब्रेरी को इम्पोर्ट करके शुरू करेंगे, फिर GPU को सक्षम करेंगे, एक सैंपल इमेज लोड करेंगे, और अंत में फाइल से पहचाना गया स्ट्रिंग निकालेंगे। अंत तक आपके पास एक तैयार‑से‑चलाने वाला स्निपेट होगा जिसे आप किसी भी Maven प्रोजेक्ट में डाल सकते हैं, और आप समझ पाएँगे कि GPU क्यों महत्वपूर्ण है, कब यह मदद नहीं कर सकता, और सामान्य समस्याओं को कैसे हल करें। कोई बाहरी दस्तावेज़ आवश्यक नहीं—सब कुछ यहाँ उपलब्ध है। + +--- + +## What You’ll Need + +- **Java Development Kit (JDK) 8+** – कोड किसी भी आधुनिक JDK पर चलता है। +- **Maven** (या Gradle) ताकि Aspose OCR डिपेंडेंसी को खींचा जा सके। +- एक **GPU‑संगत मशीन** (CUDA‑सक्षम NVIDIA कार्ड सबसे अच्छा है, लेकिन Aspose API ग्रेसफ़ुली फ़ॉलबैक कर देगा)। +- एक सैंपल इमेज, जैसे `sample-highres.png`, जिसे आप किसी फ़ोल्डर में रखकर रेफ़रेंस कर सकें। +- **image to text conversion java** तकनीकों के बारे में थोड़ी जिज्ञासा। + +अगर इनमें से कोई भी चीज़ आपके पास नहीं है, तो Oracle या OpenJDK से JDK डाउनलोड करें, Maven इंस्टॉल करें, और सुनिश्चित करें कि आपका ग्राफ़िक्स ड्राइवर अपडेटेड है। यही सारी तैयारी है; बाकी सब शुद्ध Java है। + +--- + +## Step 1: Add Aspose OCR to Your Project + +सबसे पहले, हमें OCR इंजन चाहिए। Aspose एक साफ़ Maven आर्टिफैक्ट प्रदान करता है; बस इस स्निपेट को अपने `pom.xml` में डालें: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +अगर आप Gradle पसंद करते हैं, तो समकक्ष यह है: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +डिपेंडेंसी रेज़ॉल्व हो जाने के बाद, आपके पास `OcrEngine`, `ImageStream`, और भाषा हेल्पर्स उपलब्ध हो जाएंगे जो **java ocr tutorial** को आसान बनाते हैं। + +--- + +## Step 2: How to Enable GPU (Primary Keyword in Action) + +अब बात आती है मुख्य बिंदु की: **GPU को कैसे सक्षम करें** OCR इंजन के लिए। Aspose API एक सिंगल बूलियन फ़्लैग—`setUseGpu(true)`—प्रदान करता है। यह प्रयोगात्मक है, लेकिन एक decent ग्राफ़िक्स कार्ड पर आप पहचान समय में नाटकीय गिरावट देखेंगे, ख़ासकर बड़े, हाई‑रेज़ोल्यूशन इमेज के लिए। + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** अगर आपके वातावरण में संगत GPU नहीं है, तो यह फ़्लैग चुपचाप इग्नोर हो जाएगा, और इंजन CPU मोड में फ़ॉलबैक कर देगा। कोई क्रैश नहीं, बस धीमी परफ़ॉर्मेंस। + +--- + +## Step 3: Load the Image You Want to Process + +OCR इंजन `ImageStream` के साथ काम करता है। इसे उस फ़ाइल की ओर पॉइंट करें जिसे आप चित्र से प्लेन टेक्स्ट में बदलना चाहते हैं। यहाँ एक कॉम्पैक्ट तरीका है: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +सुनिश्चित करें कि पाथ एब्सोल्यूट है या आपके प्रोजेक्ट की वर्किंग डायरेक्टरी के रिलेटिव है। अगर फ़ाइल नहीं मिलती, तो आपको `IOException` मिलेगा—इसे हम बाद में कैच करेंगे। + +--- + +## Step 4: Choose the Language (Optional but Recommended) + +Aspose OCR कई अल्फ़ाबेट संभाल सकता है, लेकिन आपको यह बताना चाहिए कि आप कौन सी भाषा अपेक्षित कर रहे हैं। अंग्रेज़ी के लिए, यह एक‑लाइनर है: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +अगर आपको फ़्रेंच या चीनी चाहिए, तो बस फ़्लैग बदलें (`setFrench(true)`, `setChineseSimplified(true)`, आदि)। यह छोटा संकेत अक्सर एक्यूरेसी बढ़ाता है क्योंकि इंजन अनावश्यक कैरेक्टर कैंडिडेट्स को प्रून कर सकता है। + +--- + +## Step 5: Recognize Text Image Java – Run the Engine + +अब सच्चाई का क्षण: **recognize text image java** स्टाइल। हम `recognize()` को कॉल करते हैं और अगर यह `true` रिटर्न करता है, तो `getText()` से परिणामस्वरूप स्ट्रिंग निकालते हैं। + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +आउटपुट `sample-highres.png` से निकाला गया कच्चा टेक्स्ट होगा। एक साफ़ डॉक्यूमेंट के लिए, आप स्ट्रिंग को पोस्ट‑प्रोसेस करना चाहेंगे (वाइटस्पेस ट्रिम करना, लाइन ब्रेक बदलना, आदि)। यहाँ एक त्वरित उदाहरण है: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Step 6: Full Working Example (Copy‑Paste Ready) + +नीचे पूरा **java ocr tutorial** दिया गया है जिसे आप सीधे कंपाइल और रन कर सकते हैं। इसमें एरर हैंडलिंग शामिल है और अपेक्षित आउटपुट प्रिंट करता है। + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Expected output (example):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +अगर इमेज में कई लाइन्स हैं, तो वे लाइन‑ब्रेक कैरेक्टर्स (`\n`) द्वारा अलग दिखेंगे। इंजन मूल लेआउट को यथासंभव बरकरार रखने की कोशिश करता है। + +--- + +## Step 7: Edge Cases, Tips, and Common Questions + +### What if the GPU isn’t detected? + +Aspose संगत डिवाइस न मिलने पर चुपचाप GPU सपोर्ट को डिसेबल कर देता है। आप इनिशियलाइज़ेशन के बाद फ़्लैग चेक करके मोड की पुष्टि कर सकते हैं: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +अगर यह `false` प्रिंट करता है, तो अपने ड्राइवर वर्ज़न और `CUDA` रनटाइम को `PATH` में होने की दोबारा जाँच करें। + +### Does GPU help with tiny images? + +हर बार नहीं। छोटे बिटमैप को GPU पर ट्रांसफ़र करने का ओवरहेड गति लाभ से अधिक हो सकता है। 500 KB से छोटे इमेज के लिए, आप वास्तव में थोड़ा स्लो डाउन देख सकते हैं। ऐसे मामलों में बस `setUseGpu(false)` सेट कर दें। + +### How to handle multi‑language documents? + +आप एक साथ कई भाषाएँ एनेबल कर सकते हैं: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +इंजन दोनों सेट में से कैरेक्टर्स को मैच करने की कोशिश करेगा, जो द्विभाषी PDFs के लिए उपयोगी है। + +### Can I process PDFs directly? + +Aspose OCR इमेज स्ट्रीम्स के साथ काम करता है, इसलिए आपको पहले प्रत्येक PDF पेज को रास्टराइज़ करना पड़ेगा (जैसे Aspose PDF या PDFBox से) और फिर प्राप्त `BufferedImage` को `setImage` में फीड करना होगा। + +--- + +## Visual Summary + +![GPU को Java OCR इंजन के लिए कैसे सक्षम करें](/images/gpu-ocr.png "GPU‑त्वरित OCR पाइपलाइन दिखाने वाला डायग्राम") + +*डायग्राम इमेज लोडिंग → GPU‑सक्षम OCR → टेक्स्ट एक्सट्रैक्शन की प्रक्रिया को दर्शाता है।* + +--- + +## Conclusion + +हमने **GPU को कैसे सक्षम करें** Java OCR वर्कफ़्लो के लिए कवर किया, एक पूर्ण **java ocr tutorial** के माध्यम से चलाया, और व्यावहारिक, कॉपी‑पेस्ट उदाहरण में **image to text conversion java** दिखाया। एक ही फ़्लैग टॉगल करके आप बड़े स्कैन की प्रोसेसिंग टाइम को सेकंड‑सेकंड या मिनट‑सेकंड तक घटा सकते हैं, जिससे आपके एप्लिकेशन तेज़ और अधिक रिस्पॉन्सिव बनते हैं। + +अगला क्या? इमेज की बैच को लूप में प्रोसेस करने की कोशिश करें, विभिन्न भाषाओं के साथ प्रयोग करें, या Apache Tika के साथ मिलाकर निकाले गए टेक्स्ट को ऑटोमैटिकली इंडेक्स करें। GPU‑त्वरित OCR को अन्य Java लाइब्रेरीज़ के साथ जोड़ने पर संभावनाएँ असीमित हैं। + +क्या आपके पास **ट्रिकी इमेज से टेक्स्ट निकालने** के बारे में सवाल हैं, या **recognize text image java** ट्रिक्स के बारे में अधिक जानना चाहते हैं? नीचे कमेंट करें, और हैप्पी कोडिंग! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hindi/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/hindi/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..e5b6eff1f --- /dev/null +++ b/ocr/hindi/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java का उपयोग करके OCR की सटीकता को जल्दी सुधारें। कुछ चरणों + में OCR के लिए छवि लोड करना, भाषाओं को सक्षम करना, और आक्रामक वर्तनी सुधार लागू + करना सीखें। +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: hi +og_description: Aspose OCR Java के साथ OCR की सटीकता को तुरंत सुधारें। यह गाइड दिखाता + है कि OCR के लिए छवि कैसे लोड करें, भाषाएँ कैसे सक्षम करें, और आक्रामक वर्तनी सुधार + का उपयोग कैसे करें। +og_title: जावा में OCR की सटीकता बढ़ाएँ – चरण‑दर‑चरण Aspose OCR ट्यूटोरियल +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: जावा में OCR की सटीकता बढ़ाएँ – पूर्ण Aspose OCR गाइड +url: /hi/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Java में OCR की सटीकता बढ़ाएँ – पूर्ण Aspose OCR गाइड + +क्या आपने कभी सोचा है कि आपका OCR परिणाम छोटे बच्चे की लिखावट जैसा क्यों दिखता है? यदि आप गुम अक्षरों, गलत शब्दों या बस बेतुकी गड़बड़ी से जूझ रहे हैं, तो आप अकेले नहीं हैं। **OCR की सटीकता बढ़ाएँ** वह पहला कदम है जिसे अधिकांश डेवलपर्स तब उठाते हैं जब उनका टेक्स्ट एक्सट्रैक्शन भरोसेमंद नहीं लगता। + +इस ट्यूटोरियल में हम एक व्यावहारिक समाधान पर चलेंगे जो न केवल **load image for OCR** करता है बल्कि Aspose के बिल्ट‑इन स्पेल‑करैक्शन इंजन का उपयोग करके गुणवत्ता को बढ़ाता है। अंत तक आपके पास एक तैयार‑चलाने‑योग्य Java प्रोग्राम होगा जो अंग्रेज़ी + फ़्रेंच टेक्स्ट को एग्रेसिव करैक्शन के साथ पहचानता है—बिना किसी बाहरी शब्दकोश के। + +## आप क्या सीखेंगे + +- Aspose के `ImageStream` का उपयोग करके **load image for OCR** कैसे करें। +- सही भाषाओं को सक्षम करने से सटीकता पर कैसे असर पड़ता है। +- बहुभाषी दस्तावेज़ों पर एग्रेसिव स्पेल करैक्शन का प्रभाव। +- एक पूर्ण, चलाने योग्य कोड उदाहरण जिसे आप किसी भी Maven/Gradle प्रोजेक्ट में डाल सकते हैं। +- टिप्स, संभावित समस्याएँ, और इस दृष्टिकोण को स्केल करने के अगले कदम। + +> **Prerequisites** – Java 8 या उससे नया, Aspose.OCR for Java का नवीनतम JAR (v23.12 या बाद का), और एक इमेज फ़ाइल (`multilingual.png`) जिसमें अंग्रेज़ी और फ़्रेंच टेक्स्ट हो। बस इतना ही—कोई अतिरिक्त मॉडल या API नहीं। + +--- + +## OCR की सटीकता बढ़ाएँ: Aspose OCR इंजन को कॉन्फ़िगर करें + +किसी भी OCR पाइपलाइन का दिल इंजन कॉन्फ़िगरेशन होता है। Aspose को ठीक‑ठीक बताकर कि आप क्या चाहते हैं, आप इसे सही परिणाम देने का एक अच्छा मौका देते हैं। + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**यह क्यों महत्वपूर्ण है:** +- **Engine instance** – `OcrEngine` सभी सेटिंग्स रखता है; नया इंस्टेंस बनाना पिछले रन की स्थिति को प्रभावित होने से बचाता है। +- **Image loading** – `ImageStream.fromFile` का उपयोग करना **load image for OCR** का सबसे सरल तरीका है। यह PNG, JPEG, BMP, और TIFF को बॉक्स से बाहर सपोर्ट करता है। +- **Language flags** – English + French को ऑन करने से recogniser को उपयुक्त कैरेक्टर सेट और भाषा मॉडल मिलते हैं, जिससे अकेले ही सटीकता 10‑15 % तक बढ़ सकती है। +- **Aggressive spell correction** – `SpellCorrectionLevel.AGGRESSIVE` सेट करने से आंतरिक शब्दकोश संदेहास्पद शब्दों को पुनः लिखता है, जो शोरयुक्त स्कैन पर **OCR की सटीकता बढ़ाएँ** के लिए एक प्रमुख लीवर है। + +--- + +## OCR के लिए इमेज लोड करें – स्रोत फ़ाइल सेट करना + +इंजन कुछ भी करने से पहले उसे एक bitmap चाहिए। यदि आप उसे खराब स्ट्रीम या गलत पाथ देते हैं, तो “null pointer” कहने से भी तेज़ी से एक्सेप्शन आएगा। + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** यदि आप उपयोगकर्ताओं द्वारा अपलोड की गई इमेज प्रोसेस कर रहे हैं, तो लोडिंग लॉजिक को try‑catch ब्लॉक में रखें और पहले फ़ाइल का आकार/फ़ॉर्मेट वैधता जाँचें। इससे इंजन बड़े PDFs या असमर्थित फ़ॉर्मेट पर अटकने से बचता है। + +--- + +## बेहतर पहचान के लिए कई भाषाएँ सक्षम करें + +अधिकांश OCR लाइब्रेरीज़ डिफ़ॉल्ट रूप से केवल अंग्रेज़ी पर काम करती हैं। जब आपका दस्तावेज़ कई भाषाएँ मिलाता है, तो आप गलत पहचाने गए अक्षरों की बढ़ती संख्या देखेंगे। Aspose अतिरिक्त भाषाओं को टॉगल करना बेहद आसान बनाता है। + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**एक से अधिक भाषा क्यों सक्षम करें?** +- **Character set expansion** – फ़्रेंच में “é”, “ç” जैसे एक्सेंटेड अक्षर होते हैं। फ़्रेंच फ़्लैग न होने पर ये “e” या “c” बन जाते हैं, जिससे बाद में स्पेल‑करैक्टर भ्रमित हो जाता है। +- **Contextual hints** – OCR इंजन भाषा मॉडल का उपयोग करके शब्द सीमाएँ अनुमानित करता है; द्विभाषी मॉडल गलत विभाजन को कम करता है। + +--- + +## एग्रेसिव स्पेल करैक्शन लागू करें + +स्पेल करैक्शन सिर्फ “nice‑to‑have” नहीं है; यह कम‑गुणवत्ता वाले स्कैन पर **OCR की सटीकता बढ़ाएँ** के लिए एक गेम‑चेंजर है। + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### स्तरों का सारांश + +| Level | Behaviour | +|------------|----------------------------------------------| +| **NONE** | कोई सुधार नहीं – केवल कच्चा इंजन आउटपुट। | +| **LIGHT** | स्पष्ट टाइपो ठीक करता है, अधिक सुधार का जोखिम कम। | +| **AGGRESSIVE** | शब्दकोश लुक‑अप्स को सक्रिय रूप से लागू करता है; शोरयुक्त छवियों के लिए सबसे अच्छा। | + +**सावधानी:** एग्रेसिव मोड वैध प्रॉपर नाउन (जैसे “McDonald” → “Mcdonald”) को भी बदल सकता है। यदि आपके डोमेन में कई नाम हैं, तो पोस्ट‑प्रोसेसिंग फ़िल्टर पर विचार करें। + +--- + +## पहचान चलाएँ और आउटपुट सत्यापित करें + +अब जब सब सेट हो गया है, तो Aspose को भारी काम करने दें। + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### अपेक्षित आउटपुट (उदाहरण) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +यदि आपको बेतुका टेक्स्ट दिखे, तो दोबारा जाँचें: + +1. इमेज की गुणवत्ता (धुंधली या कम‑dpi इमेज सटीकता को नुकसान पहुँचाती है)। +2. भाषा फ़्लैग – फ़्रेंच न होने से एक्सेंट हट जाएंगे। +3. स्पेल‑करैक्शन स्तर – यदि अधिक सुधार दिखे तो `LIGHT` आज़माएँ। + +--- + +## पूर्ण कार्यशील उदाहरण (सभी चरण एक फ़ाइल में) + +नीचे पूरा प्रोग्राम दिया गया है जिसे आप सीधे कंपाइल और रन कर सकते हैं। इसे `SpellCorrectionTutorial.java` के रूप में सेव करें, इमेज पाथ समायोजित करें, और `javac && java` के साथ चलाएँ। + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +कम्पाइल और रन: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +आपको कंसोल में सुधरा हुआ बहुभाषी टेक्स्ट प्रिंट होता दिखेगा। + +--- + +## सामान्य समस्याएँ एवं समाधान + +| लक्षण | संभावित कारण | समाधान | +|-------|--------------|--------| +| **Blank output** | इमेज पाथ गलत या फ़ाइल पढ़ी नहीं जा सकी | `ImageStream.fromFile` पाथ सत्यापित करें; फ़ाइल अस्तित्व जाँच जोड़ें। | +| **Missing accents** | फ़्रेंच भाषा सक्षम नहीं है | `ocrEngine.getLanguage().setFrench(true)` कॉल करें। | +| **Garbage characters** | कम‑रिज़ॉल्यूशन इमेज (< 150 dpi) | इमेज को अपस्केल करें या उच्च DPI पर फिर से स्कैन करें; इमेज‑एन्हांसमेंट लाइब्रेरी से प्री‑प्रोसेसिंग पर विचार करें। | +| **Over‑corrected names** | प्रॉपर नाउन पर एग्रेसिव स्पेल करैक्शन | ज्ञात नामों की व्हाइटलिस्ट के साथ पोस्ट‑प्रोसेस करें या `LIGHT` स्तर पर स्विच करें। | + +--- + +## अगले कदम: अपने OCR पाइपलाइन को स्केल करें + +- **बैच प्रोसेसिंग:** इमेज की डायरेक्टरी पर लूप चलाएँ, प्रदर्शन के लिए एक ही `OcrEngine` इंस्टेंस पुन: उपयोग करें। +- **PDF एक्सट्रैक्शन:** प्रत्येक पेज को इमेज में बदलने के लिए Aspose.PDF का उपयोग करें, फिर OCR इंजन को फीड करें। +- **कस्टम शब्दकोश:** यदि आपका डोमेन विशेष शब्दावली (मेडिकल, लीगल) उपयोग करता है, तो `ocrEngine.getSpellCorrector().addUserDictionary(...)` से कस्टम वर्ड लिस्ट जोड़ें। +- **पैरालेलिज़्म:** Java के `ForkJoinPool` से कई OCR टास्क एक साथ चलाएँ, लेकिन मेमोरी उपयोग पर ध्यान रखें क्योंकि प्रत्येक इंजन इमेज बफ़र रखता है। + +--- + +![Improve OCR accuracy example](/images/ocr-example.png){alt="सुधरे हुए बहुभाषी टेक्स्ट को दिखाते हुए OCR सटीकता स्क्रीनशॉट"} + +--- + +## निष्कर्ष + +हमने अभी **OCR की सटीकता बढ़ाएँ**... (शेष भाग मूल सामग्री के अनुसार जारी रहेगा) + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hindi/java/ocr-operations/_index.md b/ocr/hindi/java/ocr-operations/_index.md index 468e52add..a35dbed5f 100644 --- a/ocr/hindi/java/ocr-operations/_index.md +++ b/ocr/hindi/java/ocr-operations/_index.md @@ -80,6 +80,10 @@ Java में OCR की शक्ति को Aspose.OCR के साथ अ Java में Aspose.OCR के साथ शक्तिशाली टेक्स्ट पहचान को अनलॉक करें। TIFF इमेजेज में टेक्स्ट को सहजता से पहचानें। एक सहज OCR अनुभव के लिए अभी डाउनलोड करें। ### [Aspose OCR के साथ इमेज टेक्स्ट को पहचानें – पूर्ण Java OCR ट्यूटोरियल](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Aspose OCR का उपयोग करके इमेज से टेक्स्ट निकालने की पूरी प्रक्रिया, Java कोड उदाहरणों के साथ। +### [Aspose OCR Java उदाहरण: क्षेत्र से टेक्स्ट निकालें](./aspose-ocr-java-example-extract-text-from-a-region/) +Aspose OCR का उपयोग करके इमेज के विशिष्ट क्षेत्र से टेक्स्ट निकालने का चरण‑बाय‑चरण मार्गदर्शन। +### [HEIC से टेक्स्ट निकालें – पूर्ण Java गाइड](./extract-text-from-heic-complete-java-guide/) +Aspose.OCR for Java का उपयोग करके HEIC इमेजेज से टेक्स्ट निकालने की पूरी प्रक्रिया, कोड उदाहरणों सहित। ## अक्सर पूछे जाने वाले सवाल diff --git a/ocr/hindi/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/hindi/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..65b7effbf --- /dev/null +++ b/ocr/hindi/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,171 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java उदाहरण दिखाता है कि कैसे OCR के लिए छवि लोड करें और कुछ + ही कोड लाइनों में किसी क्षेत्र से पाठ निकालें। +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: hi +og_description: Aspose OCR Java उदाहरण OCR के लिए एक छवि लोड करने और एक विशिष्ट क्षेत्र + से टेक्स्ट निकालने को दर्शाता है, जो इनवॉइस प्रोसेसिंग के लिए एकदम उपयुक्त है। +og_title: Aspose OCR जावा उदाहरण – क्षेत्र पाठ निष्कर्षण +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Aspose OCR Java उदाहरण: एक क्षेत्र से टेक्स्ट निकालें' +url: /hi/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java उदाहरण: क्षेत्र से टेक्स्ट निकालें + +क्या आप एक **Aspose OCR Java example** की तलाश में हैं जो आपको छवि से केवल वही भाग निकालने दे जिसकी आपको ज़रूरत है? इस गाइड में हम **loading an image for OCR** और **extracting text from a region** को चरणबद्ध तरीके से देखेंगे, जो इनवॉइस नंबर, फ़ॉर्म फ़ील्ड्स, या बड़े चित्र में छिपे किसी भी डेटा के लिए उपयुक्त है। + +आप सोच रहे होंगे कि पूरे पेज को स्कैन करने के बजाय OCR को एक आयत में सीमित क्यों करें। संक्षिप्त उत्तर: गति और सटीकता। जब इंजन केवल परिभाषित हिस्से को देखता है, तो यह अप्रासंगिक शोर को छोड़ देता है, तेज़ चलता है, और अक्सर साफ़ परिणाम देता है। इस ट्यूटोरियल के अंत तक आपके पास एक स्व-निहित Java प्रोग्राम होगा जो यही करता है, साथ ही कुछ टिप्स भी होंगी जो सामान्य गलतियों से बचने में मदद करेंगी। + +## आपको क्या चाहिए + +- **Java Development Kit (JDK) 11** या उससे नया स्थापित होना चाहिए। +- **Aspose.OCR for Java** लाइब्रेरी (आप Maven Central रिपॉजिटरी या Aspose डाउनलोड पोर्टल से नवीनतम JAR प्राप्त कर सकते हैं)। +- एक इमेज फ़ाइल जिसमें वह टेक्स्ट हो जिसे आप पढ़ना चाहते हैं – हमारे डेमो के लिए हम `invoice.png` का उपयोग करेंगे, जिसमें इनवॉइस नंबर शीर्ष‑दाएँ कोने के पास कहीं स्थित है। +- आपका पसंदीदा IDE या एक साधारण टेक्स्ट एडिटर प्लस टर्मिनल; कोई भी बिल्ड टूल (Maven, Gradle, या plain `javac`) काम करेगा। + +बस इतना ही। कोई अतिरिक्त OCR इंजन नहीं, कोई नेटिव बाइनरी नहीं, सिर्फ शुद्ध Java और Aspose। + +![Aspose OCR Java example screenshot](/images/aspose-ocr-java-example.png "Aspose OCR Java example showing region extraction") + +## Aspose OCR Java Example – OCR इंजन को इनिशियलाइज़ करें + +किसी भी OCR वर्कफ़्लो के लिए पहली आवश्यकता एक इंजन इंस्टेंस होती है। Aspose एक हल्का `OcrEngine` क्लास प्रदान करता है जो इमेज लोडिंग से लेकर भाषा चयन तक सब कुछ संभालता है। + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Why this matters:** इंजन को पहले से बनाकर रखने से आपको कॉन्फ़िगर करने के लिए एक साफ़ ऑब्जेक्ट मिलता है। यदि आप बैच प्रोसेस कर रहे हैं तो आप कई इमेज के लिए वही `OcrEngine` पुनः उपयोग कर सकते हैं, जिससे मेमोरी और इनिशियलाइज़ेशन समय बचता है। + +## OCR के लिए इमेज लोड करें + +अगला कदम है इंजन को बताना कि कौन सी तस्वीर स्कैन करनी है। Aspose `ImageStream.fromFile` हेल्पर प्रदान करता है, जो लो‑लेवल `FileInputStream` बायलरप्लेट को एब्स्ट्रैक्ट करता है। + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tip:** `YOUR_DIRECTORY` को उस एब्सोल्यूट पाथ या रिलेटिव पाथ से बदलें जहाँ आपने `invoice.png` रखा है। यदि फ़ाइल नहीं मिलती, तो Aspose `IOException` फेंकेगा, इसलिए प्रोडक्शन कोड में इसे try‑catch ब्लॉक में रैप करना उचित होगा। + +## एक क्षेत्र को परिभाषित करें और उससे टेक्स्ट निकालें + +अब आता है मुख्य भाग: वह आयत जो इंजन को बताती है कि कहाँ देखना है। `java.awt.Rectangle` कंस्ट्रक्टर `(x, y, width, height)` लेता है – सभी पिक्सेल में मापे जाते हैं। + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**How it works:** `setRegion` को कॉल करके आप OCR स्कैन को 300‑पिक्सेल‑चौड़ाई वाले स्लाइस तक सीमित कर देते हैं जो बाएँ किनारे से 120 पिक्सेल और ऊपर से 250 पिक्सेल की दूरी पर शुरू होता है। इन संख्याओं को अपने लेआउट के अनुसार समायोजित करें; इन्हें खोजने का तेज़ तरीका है कि इमेज को किसी भी ग्राफ़िक्स एडिटर में खोलें जो पिक्सेल कोऑर्डिनेट दिखाता हो। + +## भाषा सक्षम करें और पहचान चलाएँ + +Aspose OCR कई भाषाओं को सपोर्ट करता है, लेकिन इनवॉइस नंबर के लिए हमें केवल English चाहिए। सही भाषा को सक्षम करने से फॉल्स पॉज़िटिव्स में काफी कमी आती है। + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Why enable English only?** OCR इंजन सभी सक्षम भाषा सेटों से कैरेक्टर मिलाने की कोशिश करेगा, जो सरल अल्फ़ान्यूमेरिक टेक्स्ट के मामले में भ्रमित कर सकता है। भाषा सीमा को संकीर्ण करने से गति और सटीकता दोनों में सुधार होता है। + +### अपेक्षित आउटपुट + +जब सब कुछ सही ढंग से सेट हो जाएगा, तो आप कुछ इस तरह देखेंगे: + +``` +Extracted region text: INV-12345 +``` + +यदि आयत कुछ पिक्सेल से गलत है, तो आउटपुट गड़बड़ या खाली हो सकता है। यह एक आसान सत्यापन है: प्रोग्राम चलाएँ, कंसोल देखें, और पुष्टि करें कि टेक्स्ट इमेज में दिख रहे टेक्स्ट से मेल खाता है। + +## कोड चलाएँ और आउटपुट सत्यापित करें + +मान लीजिए आप Maven का उपयोग कर रहे हैं, तो अपने `pom.xml` में Aspose OCR डिपेंडेंसी जोड़ें: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +कम्पाइल करें और चलाएँ: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +या, यदि आप plain `javac` पसंद करते हैं: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +आपको कंसोल में **Extracted region text** लाइन दिखाई देनी चाहिए। यदि आपको “OCR recognition failed” मिलता है, तो फ़ाइल पाथ को दोबारा जांचें और सुनिश्चित करें कि आयत में वास्तव में पढ़ने योग्य कैरेक्टर हैं। + +## एज केस और सामान्य विविधताएँ + +| Situation | What to Change | +|-----------|----------------| +| **Multiple languages** (जैसे, English + Spanish) | `ocrEngine.getLanguage().setSpanish(true);` को English के साथ कॉल करें। | +| **Region outside image bounds** | Aspose चुपचाप आयत को क्लिप कर देगा, लेकिन डेटा खो जाएगा। आयत सेट करने से पहले `ImageInfo` (`ocrEngine.getImage().getWidth()`) का उपयोग करके आयामों की जाँच करें। | +| **Dynamic invoices** (different layouts) | पूरी इमेज पर एक हल्का प्री‑स्कैन चलाने पर विचार करें ताकि “Invoice #” जैसे कीवर्ड खोजे जा सकें और फिर प्रोग्रामेटिकली आयत की गणना करें। | +| **Higher DPI images** | स्कैन किए गए दस्तावेज़ों में बेहतर सटीकता के लिए `ocrEngine.getImage().setResolution(300);` बढ़ाएँ। | +| **Performance tuning** | अनावश्यक भाषाओं को डिसेबल करें, आयत को यथासंभव छोटा रखें, और कई फ़ाइलों में एक ही `OcrEngine` इंस्टेंस को पुनः उपयोग करें। | + +## ट्रेंच से प्रो टिप्स + +- **Pro tip:** यदि आपको केवल अंक चाहिए (इनवॉइस नंबर के लिए सामान्य), तो `ocrEngine.getLanguage().setDigits(true);` के साथ न्यूमेरिक मोड सक्षम करें। यह अल्फ़ाबेटिक शोर को समाप्त करता है। +- **Watch out for:** ट्रांसपेरेंट PNGs। Aspose कभी‑कभी अल्फा चैनल को गलत समझता है; इमेज को पहले सॉलिड‑बैकग्राउंड JPEG में बदलने से अजीब ब्लैंक आउटपुट हल हो सकते हैं। +- **Remember:** आयत इमेज के मूल कोऑर्डिनेट सिस्टम का उपयोग करती है, न कि स्क्रीन पर दिखने वाले किसी UI स्केलिंग का। हमेशा वही फ़ाइल उपयोग करें जिसे आप प्रोडक्शन में प्रोसेस करेंगे। + +## आगे क्या? + +अब जब आपके पास क्षेत्र‑आधारित एक्सट्रैक्शन के लिए एक ठोस **Aspose OCR Java example** है, तो आप इसे कई उपयोगी दिशाओं में विस्तारित कर सकते हैं: + +- **Batch processing:** इनवॉइस की फ़ोल्डर पर लूप चलाएँ, थ्रूपुट बढ़ाने के लिए वही `OcrEngine` पुनः उपयोग करें। +- **Data validation:** निकाले गए टेक्स्ट को `INV-\\d{5}` जैसे रेगेक्स के माध्यम से पास करें ताकि सुनिश्चित हो सके कि आपने वैध इनवॉइस नंबर प्राप्त किया है। +- **Integration with PDF:** ऑडिट ट्रेल्स के लिए मूल दस्तावेज़ पर निकाले गए टेक्स्ट को ओवरले करने हेतु Aspose.PDF का उपयोग करें। +- **Cloud deployment:** कोड को एक हल्की REST सर्विस (Spring Boot) में रैप करें ताकि अन्य सिस्टम इसे ऑन‑डिमांड कॉल कर सकें। + +इनमें से प्रत्येक चरण स्वाभाविक रूप से वही कोर कॉन्सेप्ट्स शामिल करता है—**load image for OCR**, **extract text from a region**, और परिणामों को संभालना—इसलिए परिवर्तन सहज रहेगा। + +*कोडिंग का आनंद लें! यदि आप किसी समस्या का सामना करते हैं, तो नीचे टिप्पणी छोड़ें या Aspose फ़ोरम देखें जहाँ समुदाय कठिन लेआउट्स के लिए वास्तविक‑दुनिया के ट्यूनिंग साझा करता है।* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hindi/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/hindi/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..78a64f3d6 --- /dev/null +++ b/ocr/hindi/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR का उपयोग करके जावा में HEIC इमेज से टेक्स्ट निकालें। चरण‑दर‑चरण + उदाहरण के साथ HEIC को टेक्स्ट में जल्दी कैसे बदलें, सीखें। +draft: false +keywords: +- extract text from heic +- convert heic to text +language: hi +og_description: Aspose OCR का उपयोग करके जावा में HEIC छवियों से टेक्स्ट निकालें। + यह गाइड आपको दिखाता है कि कैसे मिनटों में HEIC को टेक्स्ट में बदलें। +og_title: HEIC से टेक्स्ट निकालें – जावा OCR ट्यूटोरियल +tags: +- OCR +- Java +- Aspose +title: HEIC से टेक्स्ट निकालें – पूर्ण जावा गाइड +url: /hi/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HEIC से टेक्स्ट निकालें – पूर्ण Java गाइड + +क्या आपने कभी सोचा है कि **HEIC** फ़ाइलों से टेक्स्ट कैसे निकाला जाए बिना पहले उन्हें JPEG या PNG में बदलें? आप अकेले नहीं हैं। कई डेवलपर्स को तब समस्या आती है जब मोबाइल ऐप उन्हें `.heic` फोटो देता है और उन्हें इंडेक्सिंग या एनालिटिक्स के लिए एम्बेडेड टेक्स्ट चाहिए होता है। अच्छी खबर? Aspose OCR for Java के साथ आप **HEIC से टेक्स्ट सीधे निकाल सकते हैं**—कोई अतिरिक्त कन्वर्ज़न स्टेप नहीं चाहिए। + +इस ट्यूटोरियल में हम यह भी दिखाएंगे कि **HEIC को टेक्स्ट में कैसे बदलें** एक ही साफ़ पाइपलाइन में, ताकि आप कोड को किसी भी Java प्रोजेक्ट में डालकर आज ही उन हाई‑एफ़िशिएंसी इमेजेज़ से स्ट्रिंग्स निकालना शुरू कर सकें। + +![HEIC से टेक्स्ट निकालने का उदाहरण](https://example.com/placeholder.png "HEIC से टेक्स्ट निकालने का उदाहरण") + +## आप क्या सीखेंगे + +- Maven/Gradle प्रोजेक्ट में Aspose OCR सेटअप करना। +- **HEIC इमेजेज़ से टेक्स्ट निकालने** के लिए आवश्यक सटीक Java कोड। +- क्यों यह तरीका दो‑स्टेप `convert‑then‑OCR` वर्कफ़्लो की तुलना में तेज़ और कम त्रुटिप्रवण है। +- सामान्य समस्याएँ (जैसे, लापता लैंग्वेज पैक्स) और उन्हें कैसे टालें। +- बैच‑प्रोसेसिंग परिदृश्य में समाधान को स्केल करने के टिप्स। + +गाइड के अंत तक आप कुछ लाइनों के कोड से **HEIC को टेक्स्ट में बदल** पाएँगे, और प्रत्येक चरण के “क्यों” को समझेंगे। + +--- + +## आवश्यकताएँ + +शुरू करने से पहले सुनिश्चित करें कि आपके पास है: + +1. **Java 8 या उससे ऊपर** – Aspose OCR किसी भी आधुनिक JDK पर चलता है। +2. **Maven या Gradle** – Aspose OCR लाइब्रेरी को स्वचालित रूप से खींचने के लिए। +3. एक **HEIC इमेज** जिसे आप टेस्ट करना चाहते हैं (इसे `sample.heic` नाम दें और पहुँच योग्य स्थान पर रखें)। +4. वैकल्पिक लेकिन उपयोगी: IntelliJ IDEA या VS Code जैसा IDE। + +कोई अन्य बाहरी टूल आवश्यक नहीं है; लाइब्रेरी HEIC फ़ॉर्मेट को नेटिव रूप से संभालती है। + +--- + +## चरण 1 – अपने प्रोजेक्ट में Aspose OCR जोड़ें + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **प्रो टिप:** संस्करण संख्या को आधिकारिक Aspose रिलीज़ के साथ सिंक में रखें; नए संस्करण अतिरिक्त HEIC वैरिएंट्स का समर्थन जोड़ते हैं और भाषा की सटीकता सुधारते हैं। + +--- + +## चरण 2 – **HEIC से टेक्स्ट निकालने** के लिए OCR इंजन इनिशियलाइज़ करें + +`OcrEngine` इंस्टेंस बनाना HEIC से टेक्स्ट निकालने की पहली ठोस कदम है। यह इंजन सभी लो‑लेवल डिकोडिंग को एब्स्ट्रैक्ट करता है, इसलिए आपको HEIC कंटेनर फ़ॉर्मेट की चिंता नहीं करनी पड़ती। + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**यह क्यों महत्वपूर्ण है:** +HEIC एक आधुनिक इमेज फ़ॉर्मेट है जो HEIF कंटेनर पर आधारित है। पारंपरिक OCR लाइब्रेरीज़ JPEG/PNG की अपेक्षा करती हैं, जिससे आपको अलग से कन्वर्ज़न स्टेप करना पड़ता है जो क्वालिटी घटा सकता है। Aspose OCR का नेटिव समर्थन आपको **HEIC से टेक्स्ट एक ही बार में निकालने** की सुविधा देता है, मूल पिक्सेल डेटा को सुरक्षित रखता है और CPU साइकिल बचाता है। + +--- + +## चरण 3 – इच्छित भाषा(यों) को सक्षम करें + +डिफ़ॉल्ट रूप से इंजन केवल अंग्रेज़ी देखता है। यदि आपको किसी अन्य भाषा में **HEIC को टेक्स्ट में बदलना** है, तो संबंधित फ़्लैग को टॉगल करें। + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **भाषाओं को स्पष्ट रूप से क्यों सक्षम करें?** +> भाषा पैक्स मांग पर लोड होते हैं। केवल आवश्यक पैक्स को सक्षम करने से मेमोरी फ़ुटप्रिंट घटता है और पहचान तेज़ होती है। + +--- + +## चरण 4 – पहचान प्रक्रिया चलाएँ + +अब हम वास्तव में इंजन को इमेज पढ़ने और स्ट्रिंग उत्पन्न करने के लिए कहते हैं। + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**अपेक्षित आउटपुट** (मान लेते हैं कि इमेज में “Hello World” वाक्य है): + +``` +=== Recognized Text === +Hello World +``` + +यदि इमेज खाली है या टेक्स्ट पढ़ने योग्य नहीं है, तो इंजन `false` लौटाता है, और आपको फॉलबैक संदेश दिखाई देगा। + +--- + +## चरण 5 – एज केस और सामान्य प्रश्नों को संभालना + +### अगर HEIC फ़ाइल करप्ट हो तो क्या? + +Aspose OCR तब `IOException` फेंकता है जब वह कंटेनर को डिकोड नहीं कर पाता। कॉल को `try‑catch` ब्लॉक में रैप करें और बाद में निरीक्षण के लिए त्रुटि को लॉग करें। + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### क्या मैं कई HEIC फ़ाइलों को बैच में प्रोसेस कर सकता हूँ? + +बिल्कुल। सिर्फ़ एक डायरेक्टरी पर लूप करें और समान `OcrEngine` इंस्टेंस को पुनः उपयोग करें ताकि बार‑बार इनिशियलाइज़ेशन ओवरहेड न हो। + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### क्या यह गैर‑लैटिन स्क्रिप्ट्स के लिए भी **HEIC को टेक्स्ट में बदलता** है? + +हां—Aspose OCR Arabic, Chinese, Cyrillic और कई अन्य भाषाओं का समर्थन करता है। बस संबंधित भाषा फ़्लैग सक्षम करें (जैसे, `engine.getLanguage().setChineseSimplified(true);`)। यदि आप हेडलेस सर्वर पर चलाते हैं तो उपयुक्त फ़ॉन्ट फ़ाइलें जोड़ना याद रखें। + +--- + +## चरण 6 – परिणाम को प्रोग्रामेटिकली वेरिफ़ाई करें + +प्रोडक्शन पाइपलाइन में अक्सर आपको OCR आउटपुट की गुणवत्ता थ्रेशहोल्ड को सत्यापित करना पड़ता है। एक तेज़ तरीका है कॉन्फिडेंस स्कोर (नए संस्करणों में उपलब्ध) निकालना या बस रिटर्नेड स्ट्रिंग की लंबाई चेक करना। + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## पूर्ण कार्यशील उदाहरण + +नीचे पूरी, तैयार‑चलाने‑योग्य Java क्लास है जो ऊपर बताए सभी चरणों को सम्मिलित करती है। इसे `HeifExample.java` नाम की फ़ाइल में पेस्ट करें, अपने HEIC फ़ाइल के पाथ को समायोजित करें, और सामान्य `javac` + `java` कमांड से चलाएँ। + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +चलाएँ: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +आपको कंसोल में निकाली गई स्ट्रिंग दिखाई देनी चाहिए, जिससे पुष्टि होगी कि आपने सफलतापूर्वक **HEIC को टेक्स्ट में बदल दिया** है। + +--- + +## निष्कर्ष + +हमने Aspose OCR का उपयोग करके Java में **HEIC से टेक्स्ट निकालने** के लिए आवश्यक सभी चीज़ें कवर कीं। लाइब्रेरी जोड़ने से लेकर एज केस संभालने तक, गाइड एक साफ़, एक‑स्टेप समाधान दिखाता है जो अलग कन्वर्ज़न यूटिलिटी की जरूरत को समाप्त करता है। + +अब आप: + +- वेब सर्विसेज़, मोबाइल बैक‑एंड या बैच जॉब्स में **HEIC को टेक्स्ट में बदल** सकते हैं। +- एक लाइन कॉन्फ़िगरेशन से अन्य भाषाओं का समर्थन जोड़ सकते हैं। +- कई फ़ाइलों पर एक ही `OcrEngine` को पुनः उपयोग करके प्रोसेस को स्केल कर सकते हैं। + +आगे आप **OCR परिणाम को सर्चेबल इंडेक्स** (जैसे Elasticsearch) में एम्बेड करना या **इमेज प्री‑प्रोसेसिंग** जोड़ना देख सकते हैं ताकि कम कॉन्ट्रास्ट वाले HEIC फ़ोटो पर सटीकता बढ़े। संभावनाएँ असीम हैं—एक्सपेरिमेंट करें, मापें, और इटरेट करें। + +कोई सवाल है या कोई जटिल HEIC फ़ाइल मिलती है? नीचे कमेंट करें, और हैप्पी कोडिंग! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hongkong/java/advanced-ocr-techniques/_index.md b/ocr/hongkong/java/advanced-ocr-techniques/_index.md index afe12fd84..e616ed889 100644 --- a/ocr/hongkong/java/advanced-ocr-techniques/_index.md +++ b/ocr/hongkong/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,16 @@ Aspose.OCR for Java 是光學字元辨識 (OCR) 方面的遊戲規則改變者 使用 Aspose.OCR 為您的 Java 應用程式提供精確的文字辨識功能。集成方便,精度高。 ### [在 Aspose.OCR 中指定允許的字符](./specify-allowed-characters/) 使用 Aspose.OCR for Java 無縫解鎖圖片中的文字擷取。請遵循我們的逐步指南以實現高效整合。 +### [在 Java 中為平行 OCR 建立固定執行緒池](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +使用 Aspose.OCR for Java,透過固定執行緒池實現多執行緒平行 OCR,提高處理效能。 +### [如何為 Java OCR 啟用 GPU – 完整教學](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +在 Java 中使用 Aspose.OCR 啟用 GPU 加速,提升 OCR 效能的完整步驟指南。 +### [在 Java 中提升 OCR 準確度 – 完整 Aspose OCR 指南](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +使用 Aspose.OCR for Java,透過最佳化設定與技巧提升 OCR 準確度,完整步驟指南。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hongkong/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/hongkong/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..ac3dd44d3 --- /dev/null +++ b/ocr/hongkong/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-05-03 +description: 在 Java 中建立固定執行緒池,以快速從圖像中提取文字。了解如何執行 OCR、將圖像轉換為文字,並透過平行 OCR 處理提升效能。 +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: zh-hant +og_description: 在 Java 中建立固定執行緒池,以快速從圖像提取文字。學習如何執行 OCR、將圖像轉換為文字,並透過平行 OCR 處理提升效能。 +og_title: 在 Java 中建立固定執行緒池以進行平行 OCR +tags: +- Java +- OCR +- Multithreading +title: 在 Java 中建立固定執行緒池以進行平行 OCR +url: /zh-hant/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 為 Java 建立固定執行緒池以平行執行 OCR + +是否曾需要 **建立固定執行緒池** 來加速 OCR 工作,但不知從何下手?你並不孤單。在許多以影像為主的專案中,瓶頸往往是單執行緒的 OCR 呼叫,而解決方式其實相當簡單:啟動一個工作執行緒池,讓它們平行處理檔案。 + +在本教學中,你將學會如何使用 Aspose OCR **從影像中擷取文字**、如何 **有效率地執行 OCR**,以及如何 **將影像轉換為文字** 而不會讓 CPU 爆炸。完成後,你將擁有一個可直接執行的 Java 程式,示範 **平行 OCR 處理** 在數張範例圖片上的運作。 + +## 你將會建立什麼 + +我們會組合一個小型主控台應用程式,具備以下功能: + +* 讀取一系列影像路徑(PNG、JPG、TIFF、BMP)。 +* **建立固定執行緒池**,大小依 CPU 核心數決定。 +* 為每張影像分派一個 OCR 任務。 +* 收集辨識出的文字並印出到主控台。 +* 整潔地關閉執行緒服務。 + +不需要外部建置工具、也不需要花俏框架——只要純 Java 加上 Aspose OCR 函式庫。只要你有 Java 8+ 與一個不錯的 IDE,就可以開始。 + +## 前置條件 + +* **Java Development Kit (JDK) 8 或更新版本** – 程式碼使用 lambda,舊版會編譯失敗。 +* **Aspose OCR for Java** – 從 Aspose 官方網站下載 JAR,或透過 Maven (`com.aspose:aspose-ocr`) 取得。 +* 一個放置測試影像的資料夾(程式碼指向 `YOUR_DIRECTORY`)。 +* 基本的 Java 並行程式設計概念(其餘會在教學中說明)。 + +> *小技巧:* 若使用 Maven,將相依性加入 `pom.xml`,讓 IDE 自動處理 classpath。 + +--- + +## 步驟 1:加入必要的匯入 + +首先,將我們需要的類別匯入。這不只是樣板程式碼;每個匯入都告訴 JVM OCR 引擎、影像處理工具與並行工具的所在位置,讓我們能 **建立固定執行緒池**。 + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – 核心 OCR API。 +* `java.util.*` – 用於儲存影像路徑與結果的集合。 +* `java.util.concurrent.*` – 包含 `ExecutorService` 與 `Future` 的並行套件。 + +--- + +## 步驟 2:定義要處理的影像 + +接著,我們列出想要 **從影像中擷取文字** 的檔案。使用 `Arrays.asList` 可讓程式碼保持簡潔,且不必修改其他邏輯即可換成自己的目錄。 + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +隨意新增更多項目;執行緒池會依 CPU 核心數自動調整規模。 + +--- + +## 步驟 3:**建立固定執行緒池** 以符合 CPU 核心數 + +這是本教學的核心。我們先取得可用的核心數,然後讓 `Executors` 工廠產生大小恰好的執行緒池。為什麼要固定?因為可預測的執行緒數量可避免「執行緒爆炸」的問題,免得耗盡作業系統資源。 + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` 會回傳邏輯核心數(含超執行緒)。 +* `newFixedThreadPool(coreCount)` 確保永遠不會超過 CPU 的承載上限,這是 **平行執行 OCR** 最安全的方式。 + +--- + +## 步驟 4:為每張影像提交 OCR 任務 + +現在,我們把每個檔案路徑轉成一個 callable,**執行 OCR**、辨識文字,並回傳結果。請注意,我們在 lambda 內部新建 `OcrEngine`,避免執行緒間共享引擎狀態而產生不安全問題。 + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* 每次 `submit` 都把 lambda 交給執行緒池,由空閒執行緒排程執行。 +* `Future` 物件讓我們稍後取得辨識文字,若需要也能保留原本的順序。 + +--- + +## 步驟 5:取得並顯示辨識出的文字 + +所有任務排入佇列後,我們只要遍歷 `Future` 清單,呼叫 `get()` 讓程式阻塞至每個 OCR 工作完成。這裡就是 **將影像轉換為文字** 的實作:`engine.getText()` 會回傳原始字串。 + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +典型的主控台輸出如下: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +如果檔案處理失敗(例如檔案損毀),會看到以 `Failed:` 開頭的行,後面接檔案路徑——方便快速除錯。 + +--- + +## 步驟 6:清理 Executor Service + +千萬別忘記關閉執行緒池,否則 JVM 可能會因為仍有工作在執行而無法結束。優雅的關閉會讓已在執行的任務完成後才結束程式。 + +```java +executor.shutdown(); +``` + +如果需要設定逾時,可再呼叫 `awaitTermination`,但對大多數命令列工具而言,直接 `shutdown()` 已足夠。 + +--- + +## 完整範例程式 + +以下是完整、可直接執行的程式碼。將它貼到 `ParallelOcrTutorial.java` 檔案中,調整影像路徑後,照常使用 `javac` + `java` 編譯執行。 + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**預期結果:** 每張影像的文字內容會依 `imagePaths` 清單的順序印出到主控台。若有影像無法處理,則會顯示失敗訊息而不是空白行。 + +--- + +## 常見問題與邊緣情況 + +### 如果影像數量超過執行緒數量? + +固定執行緒池會自動將多餘的任務排入佇列。當某個執行緒完成目前的 OCR 工作後,就會接著處理下一個。這種排程行為正是 **平行 OCR 處理** 的精髓——在不超載 CPU 的前提下取得最高吞吐量。 + +### 可以更換語言嗎? + +當然可以。將 `engine.getLanguage().setEnglish(true);` 換成相應的語言旗標,例如 `setFrench(true)`,或在 `recognize()` 前呼叫多個 setter 以同時啟用多種語言。 + +### 如何處理非常大的影像? + +大型檔案會佔用每個執行緒大量記憶體。若出現 `OutOfMemoryError`,可考慮在送給引擎前先縮小影像,或使用 `-Xmx` 增加 JVM 堆積大小。另一種做法是改用 **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hongkong/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/hongkong/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..f3e7ff9e5 --- /dev/null +++ b/ocr/hongkong/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-05-03 +description: 快速啟用 GPU 於 Java OCR – 學習如何使用 Aspose OCR 從圖像提取文字。完整的 Java OCR 教學已包含。 +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: zh-hant +og_description: 如何在數分鐘內為 Java OCR 啟用 GPU。本教學示範如何使用具 GPU 加速的 Java OCR 教程,從圖像中提取文字。 +og_title: 如何為 Java OCR 啟用 GPU – 步驟指南 +tags: +- Java +- OCR +- GPU +- Aspose +title: 如何為 Java OCR 啟用 GPU – 完整教學 +url: /zh-hant/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to enable gpu for Java OCR – Complete Tutorial + +有沒有想過 **如何在提取圖片文字時啟用 GPU**?如果你曾經需要對高解析度掃描檔進行 OCR,卻發現 CPU 速度變得非常緩慢,你並不孤單。在本指南中,我們將一步步說明 **java ocr tutorial**,不僅展示如何提取文字,還會示範透過啟用實驗性 GPU 支援,以 **recognize text image java** 方式取得最快的辨識速度。 + +我們會先引入 Aspose OCR 函式庫,接著啟用 GPU、載入範例圖片,最後從檔案中取得辨識後的字串。完成後,你將擁有一段可直接放入任何 Maven 專案的即用程式碼,並了解為什麼 GPU 重要、什麼情況下可能沒幫助,以及如何排除常見問題。全部內容都在這裡,無需額外文件。 + +--- + +## What You’ll Need + +- **Java Development Kit (JDK) 8+** – 這段程式碼可在任何現代 JDK 上執行。 +- **Maven**(或 Gradle)用來取得 Aspose OCR 相依套件。 +- 一台 **支援 GPU 的機器**(CUDA -enabled NVIDIA 顯示卡最佳,若無則 Aspose API 會自動回退)。 +- 一張範例圖片,例如 `sample-highres.png`,放在可參照的資料夾內。 +- 一點對 **image to text conversion java** 技術的好奇心。 + +如果缺少上述任一項,請從 Oracle 或 OpenJDK 下載 JDK,安裝 Maven,並確保顯示卡驅動程式為最新。這些就是所有前置作業,接下來全是純 Java。 + +--- + +## Step 1: Add Aspose OCR to Your Project + +首先,我們需要 OCR 引擎本身。Aspose 提供了乾淨的 Maven 套件,只要把以下程式碼片段放入 `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +如果你偏好 Gradle,等價的寫法是: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +相依解決後,你就可以使用 `OcrEngine`、`ImageStream` 以及讓 **java ocr tutorial** 更加順暢的語言輔助工具。 + +--- + +## Step 2: How to Enable GPU (Primary Keyword in Action) + +現在來到重點:**如何啟用 GPU** 於 OCR 引擎。Aspose API 只提供一個布林旗標——`setUseGpu(true)`。這是實驗性功能,但在配備不錯的顯示卡上,你會看到辨識時間顯著下降,尤其是大型高解析度圖片。 + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** 若環境中沒有相容的 GPU,這個旗標會被靜默忽略,引擎會自動回退至 CPU 模式。不會當機,只是效能較慢。 + +--- + +## Step 3: Load the Image You Want to Process + +OCR 引擎使用 `ImageStream` 來處理圖片。把它指向你想要從圖片轉成文字的檔案即可。以下是一個簡潔的寫法: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +請確保路徑是絕對路徑或相對於專案工作目錄的路徑。若找不到檔案,會拋出 `IOException`——我們稍後會捕捉它。 + +--- + +## Step 4: Choose the Language (Optional but Recommended) + +Aspose OCR 能處理多種字母表,但最好先告訴它預期的語言。對英文而言,只要一行程式碼: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +如果需要法文或中文,只要換成相應的旗標(`setFrench(true)`、`setChineseSimplified(true)` 等)。這個小提示常能提升準確度,因為引擎可以剔除不太可能的字元候選。 + +--- + +## Step 5: Recognize Text Image Java – Run the Engine + +現在到了關鍵時刻:**recognize text image java** 風格。我們呼叫 `recognize()`,若回傳 `true`,就用 `getText()` 取得結果字串。 + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +輸出將會是從 `sample-highres.png` 直接抽取的原始文字。若要得到乾淨的文件,可能需要對字串做後處理(去除空白、替換換行等)。以下是一個快速範例: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Step 6: Full Working Example (Copy‑Paste Ready) + +以下是完整的 **java ocr tutorial**,可直接編譯執行。內含錯誤處理,並會印出預期結果。 + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Expected output (example):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +若圖片包含多行文字,會以換行字元(`\n`)分隔。引擎會盡可能保留原始版面配置。 + +--- + +## Step 7: Edge Cases, Tips, and Common Questions + +### What if the GPU isn’t detected? + +當找不到相容裝置時,Aspose 會靜默停用 GPU 支援。你可以在初始化後檢查旗標值: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +若印出 `false`,請再次確認驅動程式版本以及 `CUDA` 執行時是否已加入 `PATH`。 + +### Does GPU help with tiny images? + +未必。將小尺寸位圖傳送至 GPU 的開銷可能抵消加速效果。對於小於 500 KB 的圖片,可能會稍微變慢。此時只要設定 `setUseGpu(false)` 即可。 + +### How to handle multi‑language documents? + +可以同時啟用多種語言: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +引擎會同時匹配這些語言的字元,對於雙語 PDF 非常實用。 + +### Can I process PDFs directly? + +Aspose OCR 只能接受影像串流,因此必須先將每頁 PDF 轉成影像(例如使用 Aspose PDF 或 PDFBox),再把產生的 `BufferedImage` 傳給 `setImage`。 + +--- + +## Visual Summary + +![如何為 Java OCR 引擎啟用 GPU](/images/gpu-ocr.png "顯示 GPU 加速 OCR 流程的圖示") + +*此圖示說明了從載入圖片 → GPU‑enabled OCR → 文字抽取的整體流程。* + +--- + +## Conclusion + +我們已說明 **如何啟用 GPU** 於 Java OCR 工作流程,完整示範了一個 **java ocr tutorial**,並以實作範例展示 **image to text conversion java**。只要切換一個旗標,就能在處理大型掃描檔時節省數秒甚至數分鐘,讓應用程式更為流暢、回應更快。 + +接下來可以嘗試在迴圈中批次處理多張圖片、實驗不同語言,或結合 Apache Tika 自動索引抽取的文字。當 GPU 加速的 OCR 與其他 Java 函式庫結合時,可能性無限。 + +對 **如何從複雜圖片抽取文字** 有疑問,或想了解更多 **recognize text image java** 的技巧嗎?歡迎在下方留言,祝編程愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hongkong/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/hongkong/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..9953be20a --- /dev/null +++ b/ocr/hongkong/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-05-03 +description: 使用 Aspose OCR Java 快速提升 OCR 準確度。了解如何載入影像進行 OCR、啟用語言以及在幾個步驟中套用積極的拼字校正。 +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: zh-hant +og_description: 即時提升 Aspose OCR Java 的 OCR 準確度。本指南示範如何載入影像進行 OCR、啟用語言以及使用積極的拼寫校正。 +og_title: 提升 Java OCR 準確度 – Aspose OCR 分步教學 +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: 提升 Java OCR 準確度 – 完整 Aspose OCR 指南 +url: /zh-hant/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 在 Java 中提升 OCR 準確度 – 完整 Aspose OCR 指南 + +有沒有想過為什麼你的 OCR 結果看起來像小朋友的筆跡?如果你正面對遺漏字母、錯誤單詞,甚至是純粹的亂碼,你並不孤單。**Improve OCR accuracy** 是大多數開發者在文字擷取不可靠時首先會採取的措施。 + +在本教學中,我們將逐步說明一個實用的解決方案,不僅能 **load image for OCR**,還利用 Aspose 內建的拼寫校正引擎提升品質。完成後,你將擁有一個可直接執行的 Java 程式,能辨識英語與法語文字並進行積極校正——不需要外部字典。 + +## 你將學會 + +- 如何使用 Aspose 的 `ImageStream` **load image for OCR**。 +- 為何啟用正確的語言對準確度至關重要。 +- 積極拼寫校正對多語言文件的影響。 +- 完整且可執行的程式碼範例,可直接放入任何 Maven/Gradle 專案。 +- 技巧、常見陷阱,以及擴展此方法的後續建議。 + +> **先決條件** – Java 8 或更新版本、最近的 Aspose.OCR for Java JAR(v23.12 或以上),以及一個包含英語與法語文字的影像檔 (`multilingual.png`)。就這樣——不需要額外的模型或 API。 + +--- + +## 提升 OCR 準確度:設定 Aspose OCR 引擎 + +任何 OCR 流程的核心都是引擎設定。透過明確告訴 Aspose 你的需求,才能給它正確辨識的機會。 + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**為何這很重要:** +- **Engine instance** – `OcrEngine` 保存所有設定;建立全新的實例可避免先前執行的狀態洩漏。 +- **Image loading** – 使用 `ImageStream.fromFile` 是最直接的 **load image for OCR** 方式。它原生支援 PNG、JPEG、BMP 與 TIFF。 +- **Language flags** – 開啟 English + French 會告訴辨識器使用相應的字元集與語言模型,僅此即可提升 10‑15 % 的準確度。 +- **Aggressive spell correction** – 設定 `SpellCorrectionLevel.AGGRESSIVE` 會讓內部字典積極改寫可疑單詞,這是在噪點掃描上 **improve OCR accuracy** 的關鍵手段。 + +## 載入影像以進行 OCR – 設定來源檔案 + +在引擎執行任何操作之前,它需要一個位圖。如果你提供了損壞的串流或錯誤的路徑,將會立刻拋出例外,甚至比說出「null pointer」還快。 + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**小技巧:** 若你在處理使用者上傳的影像,請將載入邏輯包在 try‑catch 區塊中,並先驗證檔案大小/格式。這可防止引擎在面對大型 PDF 或不支援的格式時卡住。 + +## 啟用多語言以提升辨識效果 + +大多數 OCR 函式庫預設僅支援英語。當文件混合多種語言時,錯誤辨識的字元會激增。Aspose 讓切換額外語言變得輕鬆無痛。 + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**為何要啟用多於一種語言?** +- **Character set expansion** – 法語包含帶重音的字母,如 “é” 與 “ç”。若未啟用法語旗標,這些字會變成 “e” 或 “c”,進而混淆拼寫校正器。 +- **Contextual hints** – OCR 引擎利用語言模型預測詞界;雙語模型可減少錯誤切分。 + +## 套用積極拼寫校正 + +拼寫校正不只是「加分項」;在需要對低品質掃描 **improve OCR accuracy** 時,它是顛覆性的關鍵。 + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### 各層級概覽 + +| Level | Behaviour | +|------------|----------------------------------------------| +| **NONE** | 不進行校正 – 僅輸出原始引擎結果。 | +| **LIGHT** | 修正明顯錯字,過度校正風險低。 | +| **AGGRESSIVE** | 積極查詢字典;最適合噪點影像。 | + +**注意:** 積極模式可能會改寫合法的專有名詞(例如 “McDonald” → “Mcdonald”)。若你的領域包含大量人名,請考慮使用後處理過濾器。 + +## 執行辨識並驗證輸出 + +現在一切已設定完畢,是時候讓 Aspose 承擔繁重的工作了。 + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### 預期輸出(範例) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +如果看到亂碼,請再次檢查: + +1. 影像品質(模糊或低 DPI 影像會降低準確度)。 +2. 語言旗標 – 若未啟用法語,會失去重音。 +3. 拼寫校正層級 – 若發現過度校正,請改用 `LIGHT`。 + +## 完整可執行範例(一步完成所有步驟) + +以下是完整程式碼,你可以直接編譯執行。將其儲存為 `SpellCorrectionTutorial.java`,調整影像路徑,然後使用 `javac && java` 執行。 + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +編譯與執行: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +你應該會在主控台看到已校正的多語言文字。 + +## 常見陷阱與避免方法 + +| Symptom | Likely Cause | Fix | +|---------|--------------|-----| +| **空白輸出** | 影像路徑錯誤或檔案無法讀取 | 驗證 `ImageStream.fromFile` 路徑;加入檔案存在性檢查。 | +| **缺少重音** | 未啟用法語 | 呼叫 `ocrEngine.getLanguage().setFrench(true)`。 | +| **雜訊字元** | 低解析度影像 (< 150 dpi) | 提升解析度或重新掃描較高 DPI;考慮使用影像增強函式庫進行前處理。 | +| **過度校正的名稱** | 對專有名詞使用積極拼寫校正 | 使用已知名稱白名單進行後處理,或改為 `LIGHT` 層級。 | + +## 往後步驟:擴展你的 OCR 流程 + +- **批次處理:** 迭代目錄中的影像,重複使用單一 `OcrEngine` 實例以提升效能。 +- **PDF 抽取:** 使用 Aspose.PDF 將每頁轉為影像,再送入 OCR 引擎。 +- **自訂字典:** 若你的領域使用專業術語(醫療、法律),可將自訂詞彙表加入 `ocrEngine.getSpellCorrector().addUserDictionary(...)`。 +- **平行處理:** Java 的 `ForkJoinPool` 可同時執行多個 OCR 任務,但需留意記憶體使用,因為每個引擎都會佔用影像緩衝區。 + +![提升 OCR 準確度示例](/images/ocr-example.png){alt="提升 OCR 準確度示例截圖,顯示已校正的多語言文字"} + +## 結論 + +我們剛剛 **improved OCR** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hongkong/java/ocr-operations/_index.md b/ocr/hongkong/java/ocr-operations/_index.md index 136197d3a..d66911b12 100644 --- a/ocr/hongkong/java/ocr-operations/_index.md +++ b/ocr/hongkong/java/ocr-operations/_index.md @@ -74,6 +74,8 @@ weight: 21 ## OCR 操作教學 ### [在 Aspose.OCR 中使用 Detect Areas Mode 執行 OCR](./perform-ocr-detect-areas-mode/) 釋放 Aspose.OCR for Java 從影像提取文字的威力。關於 Detect Areas Mode 的完整 OCR 教學。 +### [Aspose OCR Java 範例:從區域提取文字](./aspose-ocr-java-example-extract-text-from-a-region/) +示範如何使用 Aspose OCR for Java 從影像的特定區域提取文字。 ### [在 Aspose.OCR 中使用語言選擇執行 OCR](./perform-ocr-language-selection/) 釋放 Aspose.OCR for Java 從影像精準提取文字的能力。依照我們的步驟指南,使用語言選擇達成精確 OCR。 ### [在 Aspose.OCR for Java 中 OCR 識別 PDF 文件](./recognize-pdf/) @@ -82,6 +84,8 @@ weight: 21 釋放 Aspose.OCR 在 Java 中的強大文字識別。輕鬆識別 TIFF 圖片中的文字。立即下載,獲得無縫的 OCR 體驗。 ### [使用 Aspose OCR 識別圖像文字 – 完整 Java OCR 教學](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) 完整的 Java OCR 教學,示範如何使用 Aspose OCR 識別圖像文字。 +### [從 HEIC 提取文字 – 完整 Java 教學](./extract-text-from-heic-complete-java-guide/) +示篯如何使用 Aspose.OCR for Java 從 HEIC 圖片中提取文字,完整步驟教學。 ## 常見問題 diff --git a/ocr/hongkong/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/hongkong/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..ab0613a69 --- /dev/null +++ b/ocr/hongkong/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java 範例展示如何載入影像進行 OCR,並在僅幾行程式碼內從特定區域提取文字。 +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: zh-hant +og_description: Aspose OCR Java 示例展示了載入圖像進行 OCR 並從特定區域提取文字,非常適合發票處理。 +og_title: Aspose OCR Java 示例 – 區域文字提取 +tags: +- Aspose OCR +- Java +- Image Processing +title: Aspose OCR Java 範例:從區域提取文字 +url: /zh-hant/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java Example: Extract Text from a Region + +想要一個 **Aspose OCR Java 範例**,只抓取影像中需要的那一部分文字嗎?本教學將帶您一步步完成 **載入影像進行 OCR** 以及 **從指定區域擷取文字**,非常適合發票號碼、表單欄位或任何隱藏在較大圖片中的資料。 + +您可能會好奇,為什麼要把 OCR 限制在矩形區域,而不是掃描整頁?簡短的答案是:速度與準確度。當引擎只看定義好的切片時,會跳過不相關的雜訊、執行更快,且往往產生更乾淨的結果。完成本教學後,您將擁有一個完整的 Java 程式,能夠做到上述功能,並提供一些避免新手常見陷阱的技巧。 + +## What You’ll Need + +在開始之前,請先確保您已具備: + +- **Java Development Kit (JDK) 11** 或更新版本。 +- **Aspose.OCR for Java** 函式庫(可從 Maven Central 或 Aspose 下載入口取得最新 JAR)。 +- 一張包含欲讀取文字的影像檔——本示範使用 `invoice.png`,其發票號碼位於右上角附近。 +- 您慣用的 IDE 或簡易文字編輯器加上終端機;任意建置工具(Maven、Gradle,或純 `javac`)皆可。 + +就這樣。無需額外的 OCR 引擎、原生二進位檔,只要純 Java 加上 Aspose。 + +![Aspose OCR Java example screenshot](/images/aspose-ocr-java-example.png "Aspose OCR Java example showing region extraction") + +## Aspose OCR Java Example – Initialize the OCR Engine + +任何 OCR 工作流程的第一步都是建立引擎實例。Aspose 提供輕量級的 `OcrEngine` 類別,負責從影像載入到語言選擇的全部工作。 + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Why this matters:** 事先建立引擎可讓您得到一個乾淨的物件以供設定。若要批次處理多張影像,您可以重複使用同一個 `OcrEngine`,從而節省記憶體與初始化時間。 + +## Load Image for OCR + +接著告訴引擎要掃描哪張圖片。Aspose 的 `ImageStream.fromFile` 輔助方法,抽象化了低階的 `FileInputStream` 寫法。 + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tip:** 把 `YOUR_DIRECTORY` 替換成指向 `invoice.png` 所在位置的絕對路徑或相對路徑。若找不到檔案,Aspose 會拋出 `IOException`,因此在正式環境建議使用 try‑catch 包裹。 + +## Define and Extract Text from a Region + +現在輪到重點:告訴引擎要看哪個矩形區域。`java.awt.Rectangle` 建構子接受 `(x, y, width, height)`,單位皆為像素。 + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**How it works:** 透過 `setRegion`,您將 OCR 掃描限制在寬 300 像素、高 250 像素、左邊距 120 像素的切片內。請依照自己的版面調整這些數值;快速取得座標的方法是使用任何能顯示像素座標的圖形編輯器開啟影像。 + +## Enable Language and Run Recognition + +Aspose OCR 支援多種語言,但對於發票號碼只需要 English。只啟用必要語言可大幅降低誤判。 + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Why enable English only?** 若同時啟用多種語言,OCR 引擎會嘗試匹配所有語言的字元,對於單純的英數字會造成混淆。縮小語言範圍可提升速度與精確度。 + +### Expected Output + +若一切順利,您會看到類似以下的結果: + +``` +Extracted region text: INV-12345 +``` + +若矩形位置偏差幾個像素,輸出可能會變成雜亂或空白。這是一個簡易的驗證步驟:執行程式、檢查主控台,確認文字與影像中看到的相符。 + +## Run the Code and Verify the Output + +假設您使用 Maven,請在 `pom.xml` 中加入 Aspose OCR 相依性: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +編譯並執行: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +或是直接使用 `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +您應該會在主控台看到 **Extracted region text** 行。如果出現 “OCR recognition failed”,請再次確認檔案路徑,並確保矩形內確實有可辨識的字元。 + +## Edge Cases & Common Variations + +| 情境 | 需要調整的地方 | +|-----------|----------------| +| **Multiple languages** (e.g., English + Spanish) | 呼叫 `ocrEngine.getLanguage().setSpanish(true);` 同時保留 English 設定。 | +| **Region outside image bounds** | Aspose 會自動裁切矩形,但會遺失資料。可使用 `ImageInfo` (`ocrEngine.getImage().getWidth()`) 先取得影像尺寸,再設定區域。 | +| **Dynamic invoices** (different layouts) | 考慮先對整張影像做輕量級預掃描,找出 “Invoice #” 等關鍵字,再程式化計算矩形位置。 | +| **Higher DPI images** | 提升 `ocrEngine.getImage().setResolution(300);` 以提升掃描文件的辨識精度。 | +| **Performance tuning** | 關閉不必要的語言、盡量縮小區域、在多檔案情況下重複使用同一個 `OcrEngine` 實例。 | + +## Pro Tips From the Trenches + +- **Pro tip:** 若只需要數字(常見於發票號碼),可啟用數字模式 `ocrEngine.getLanguage().setDigits(true);`,可排除字母雜訊。 +- **Watch out for:** 透明 PNG。Aspose 有時會誤判 alpha 通道;先將影像轉為實心背景的 JPEG 可解決空白輸出問題。 +- **Remember:** 矩形使用的是影像本身的座標系統,而非螢幕上看到的 UI 縮放。務必以實際要處理的檔案測試。 + +## What’s Next? + +現在您已掌握 **Aspose OCR Java 範例** 進行區域式擷取,接下來可以往以下方向延伸: + +- **Batch processing:** 迴圈處理整個發票資料夾,重複使用同一個 `OcrEngine` 以提升吞吐量。 +- **Data validation:** 使用正規表達式如 `INV-\\d{5}` 驗證擷取出的文字是否為有效的發票號碼。 +- **Integration with PDF:** 結合 Aspose.PDF,將擷取的文字覆寫回原始 PDF,形成稽核追蹤。 +- **Cloud deployment:** 將程式封裝成輕量級 REST 服務(Spring Boot),讓其他系統可隨時呼叫。 + +上述步驟皆圍繞相同核心概念——**載入影像進行 OCR**、**從區域擷取文字**,以及**處理結果**——因此轉換過程相當順暢。 + +--- + +*Happy coding! If you hit any snags, drop a comment below or check the Aspose forums where the community shares real‑world tweaks for tricky layouts.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hongkong/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/hongkong/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..32f5f95b4 --- /dev/null +++ b/ocr/hongkong/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-05-03 +description: 使用 Aspose OCR 於 Java 從 HEIC 圖片提取文字。學習如何快速將 HEIC 轉換為文字,並提供逐步示例。 +draft: false +keywords: +- extract text from heic +- convert heic to text +language: zh-hant +og_description: 使用 Aspose OCR 在 Java 中從 HEIC 圖像提取文字。本指南將向您展示如何在幾分鐘內將 HEIC 轉換為文字。 +og_title: 從 HEIC 提取文字 – Java OCR 教學 +tags: +- OCR +- Java +- Aspose +title: 從 HEIC 提取文字 – 完整 Java 指南 +url: /zh-hant/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 從 HEIC 中提取文字 – 完整 Java 指南 + +有沒有想過如何在不先將 **HEIC** 檔案轉換成 JPEG 或 PNG 的情況下 **提取文字**?你並不孤單。許多開發者在手機應用程式交付 `.heic` 照片,且需要其中嵌入的文字作為索引或分析時,常會卡關。好消息是?使用 Aspose OCR for Java,你可以直接 **從 HEIC 提取文字**——不需要額外的轉換步驟。 + +在本教學中,我們亦會示範如何在單一、簡潔的流程中 **將 HEIC 轉換為文字**,讓你可以把程式碼直接放入任何 Java 專案,立即開始從這些高效能影像中擷取字串。 + +![從 HEIC 提取文字範例](https://example.com/placeholder.png "從 HEIC 提取文字範例") + +## 你將學會 + +- 如何在 Maven/Gradle 專案中設定 Aspose OCR。 +- 提取 HEIC 圖片文字所需的完整 Java 程式碼。 +- 為何此方法比兩步驟 `convert‑then‑OCR` 工作流程更快且更少錯誤。 +- 常見陷阱(例如缺少語言套件)以及如何避免。 +- 在批次處理情境下擴展此解決方案的技巧。 + +完成本指南後,你將能僅用幾行程式碼 **將 HEIC 轉換為文字**,並了解每一步背後的「原因」。 + +--- + +## 前置條件 + +在深入之前,請確保你已具備以下條件: + +1. **Java 8 或更高版本** – Aspose OCR 可在任何現代 JDK 上執行。 +2. **Maven 或 Gradle** – 以自動取得 Aspose OCR 函式庫。 +3. 一張你想測試的 **HEIC 圖片**(將其重新命名為 `sample.heic` 並放置於可存取的位置)。 +4. 可選但方便的開發環境:如 IntelliJ IDEA 或 VS Code。 + +不需要其他外部工具;函式庫原生支援 HEIC 格式。 + +## 第一步 – 將 Aspose OCR 加入你的專案 + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **專業提示:** 請將版本號與官方 Aspose 發佈保持同步;較新版本會支援更多 HEIC 變體並提升語言辨識準確度。 + +## 第二步 – 初始化 OCR 引擎以 **從 HEIC 提取文字** + +建立 `OcrEngine` 實例是開始從 HEIC 提取文字的第一個具體步驟。此引擎抽象化所有低階解碼,讓你無需擔心 HEIC 容器格式。 + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**為何這很重要:** +HEIC 是基於 HEIF 容器的現代影像格式。傳統 OCR 函式庫通常只接受 JPEG/PNG,迫使你執行額外的轉換步驟,可能會降低畫質。Aspose OCR 的原生支援讓你一次性 **從 HEIC 提取文字**,保留原始像素資料並節省 CPU 時間。 + +## 第三步 – 啟用所需語言 + +預設情況下,引擎僅搜尋英文。若需在其他語言下 **將 HEIC 轉換為文字**,只需切換相應的旗標即可。 + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **為何要明確啟用語言?** +> 語言套件會按需載入。僅啟用所需語言可減少記憶體佔用並加快辨識速度。 + +## 第四步 – 執行辨識程序 + +現在我們實際請求引擎讀取影像並產生字串。 + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**預期輸出**(假設影像包含短語 “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +若影像為空白或文字無法辨識,引擎會回傳 `false`,並顯示備援訊息。 + +## 第五步 – 處理邊緣案例與常見問題 + +### 如果 HEIC 檔案損毀怎麼辦? + +當無法解碼容器時,Aspose OCR 會拋出 `IOException`。請將呼叫包在 `try‑catch` 區塊中,並記錄錯誤以供日後檢查。 + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### 我可以批次處理多個 HEIC 檔案嗎? + +當然可以。只需遍歷目錄,並重複使用相同的 `OcrEngine` 實例,以避免重複初始化的開銷。 + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### 這也能 **將 HEIC 轉換為文字** 用於非拉丁文字嗎? + +是的——Aspose OCR 支援阿拉伯文、中文、斯拉夫文等多種語言。只需啟用相應的語言旗標(例如 `engine.getLanguage().setChineseSimplified(true);`)。若在無頭伺服器上執行,請記得加入相應的字型檔案。 + +## 第六步 – 以程式方式驗證結果 + +在生產環境的流程中,你常需要驗證 OCR 輸出是否符合特定品質門檻。快速方法是計算信心分數(較新版本提供)或直接檢查回傳字串的長度。 + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +## 完整範例程式 + +以下是完整、可直接執行的 Java 類別,包含上述所有步驟。將其貼到名為 `HeifExample.java` 的檔案中,調整 HEIC 檔案路徑,然後照常執行 `javac` + `java`。 + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +執行它: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +你應該會在主控台看到提取的字串,證明已成功 **將 HEIC 轉換為文字**。 + +## 結論 + +我們已完整說明如何在 Java 中使用 Aspose OCR **從 HEIC 提取文字**。從加入函式庫到處理邊緣案例,本文提供了一個簡潔、單步驟的解決方案,省去額外轉換工具的需求。 + +現在你可以: + +- **將 HEIC 轉換為文字**,即時於 Web 服務、行動後端或批次作業中使用。 +- 只需一行設定,即可擴充支援其他語言。 +- 透過在多個檔案間重複使用相同的 `OcrEngine`,擴展處理規模。 + +接下來,你可以探索 **將 OCR 結果嵌入可搜尋索引**(例如 Elasticsearch)或 **加入影像前處理** 以提升低對比度 HEIC 照片的辨識精度。沒有極限——盡情實驗、測量與迭代。 + +有任何問題或遇到棘手的 HEIC 檔案嗎?在下方留下評論,祝開發愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hungarian/java/advanced-ocr-techniques/_index.md b/ocr/hungarian/java/advanced-ocr-techniques/_index.md index 622639535..954f64133 100644 --- a/ocr/hungarian/java/advanced-ocr-techniques/_index.md +++ b/ocr/hungarian/java/advanced-ocr-techniques/_index.md @@ -43,27 +43,38 @@ Engedélyezze Java-alkalmazásait az Aspose.OCR segítségével a pontos szöveg ## [Engedélyezett karakterek megadása az Aspose.OCR-ben](./specify-allowed-characters/) -Könnyedén kivonhatja a szöveget a képekből az engedélyezett karakterek megadásával az Aspose.OCR for Java segítségével. Kövesse lépésről lépésre szóló útmutatónkat a hatékony integráció érdekében, biztosítva a zökkenőmentes szövegfelismerési élményt. Bővítse Java-alkalmazásait az Aspose.OCR képességekkel. +Könnyedén kivonhatja a szöveget a képekből az engedélyezett karakterek megadásával az Aspose.OCR for Java segítségével. Kövesse lépésről lépésre útmutatónkat a hatékony integráció érdekében, biztosítva a zökkenőmentes szövegfelismerési élményt. Bővítse Java-alkalmazásait az Aspose.OCR képességekkel. + +## [Az OCR pontosságának javítása Java-ban – Teljes Aspose OCR útmutató](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) + +Fedezze fel, hogyan javíthatja az OCR pontosságát Java-ban az Aspose OCR teljes útmutatójával. ## Következtetés Az Aspose.OCR for Java segítségével a fejlett OCR technikák elsajátítása még soha nem volt ilyen egyszerű. Merüljön el ezekben az oktatóanyagokban, és aknázza ki a szövegfelismerésben rejlő lehetőségeket Java-projektjeiben. Emelje fel alkalmazásait a zökkenőmentes integrációval, nagy pontossággal és sokoldalú szövegkivonási lehetőségekkel. Töltse le most, és tegye meg az első lépést az OCR kiválóság felé az Aspose.OCR for Java segítségével! ## Speciális OCR-technikák oktatóanyagok ### [OCR végrehajtása a BufferedImage-en az Aspose.OCR for Java-ban](./perform-ocr-buffered-image/) -Végezzen OCR-t könnyedén a BufferedImage-en az Aspose.OCR for Java segítségével. Zökkenőmentesen vonja ki a szöveget a képekből. Töltse le most a sokoldalú szövegfelismerési élményért. +Végezzen OCR-t könnyedén a BufferedImage-en az Aspose.OCR for Java segítségével. Zökkenőmentesen vonja ki a szöveget a képekből. Töltse le most a sokoldú szövegfelismerési élményért. ### [OCR végrehajtása az URL-ből származó képen az Aspose.OCR for Java-ban](./perform-ocr-image-from-url/) Oldja fel a zökkenőmentes képszöveg-kivonást Java nyelven az Aspose.OCR segítségével. Nagy pontosságú OCR egyszerű integrációval. ### [OCR végrehajtása adott oldalon az Aspose.OCR-ben](./perform-ocr-on-page/) -Fedezze fel az Aspose.OCR for Java erejét lépésenkénti útmutatónkkal az OCR végrehajtásáról bizonyos oldalakon. Könnyedén kivonhatja a szöveget a képekből, és javíthatja Java-projektjeit. +Fedezze fel az Aspose.OCR for Java erejét lépésenkénti útmutatónkkal az OCR végrehajtásáról bizonyos oldalakon. Könnyedén kivonhatja a szöveget a képekből és javíthatja Java-projektjeit. ### [Téglalapok előkészítése OCR-hez az Aspose.OCR-ben](./prepare-rectangles-for-ocr/) -Fedezze fel a szövegfelismerés erejét az Aspose.OCR for Java segítségével. Kövesse lépésenkénti útmutatónkat a zökkenőmentes integráció érdekében. Bővítse Java-alkalmazásait hatékony OCR-képességekkel. +Fedezze fel a szövegfelismerés erejét az Aspose.OCR for Java segítségével. Kövesse lépésről lépésre útmutatónkat a zökkenőmentes integráció érdekében. Bővítse Java-alkalmazásait hatékony OCR-képességekkel. ### [Vonalak felismerése az Aspose.OCR for Java-ban](./recognize-lines/) Engedélyezze Java-alkalmazásait az Aspose.OCR segítségével a pontos szövegfelismerés érdekében. Könnyű integráció, nagy pontosság. ### [Engedélyezett karakterek megadása az Aspose.OCR-ben](./specify-allowed-characters/) -Az Aspose.OCR for Java segítségével zökkenőmentesen oldja fel a szövegkivonást a képekből. Kövesse lépésenkénti útmutatónkat a hatékony integráció érdekében. +Az Aspose.OCR for Java segítségével zökkenőmentesen oldja fel a szövegkivonást a képekből. Kövesse lépésről lépésre útmutatónkat a hatékony integráció érdekében. +### [Fix szálkészlet létrehozása párhuzamos OCR-hez Java-ban](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Ismerje meg, hogyan hozhat létre fix szálkészletet a párhuzamos OCR-feldolgozáshoz Java-ban, a teljesítmény növelése érdekében. +### [Hogyan engedélyezzük a GPU-t a Java OCR-hez – Teljes útmutató](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Ismerje meg, hogyan használhatja a GPU-t az Aspose.OCR for Java-ban a gyorsabb és pontosabb szövegfelismeréshez. +### [Az OCR pontosságának javítása Java-ban – Teljes Aspose OCR útmutató](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Fedezze fel, hogyan javíthatja az OCR pontosságát Java-ban az Aspose OCR teljes útmutatójával. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hungarian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/hungarian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..caec74cc2 --- /dev/null +++ b/ocr/hungarian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,217 @@ +--- +category: general +date: 2026-05-03 +description: Hozzon létre fix szálpoolt Java-ban a képek szövegének gyors kinyeréséhez. + Tanulja meg, hogyan futtasson OCR-t, konvertálja a képet szöveggé, és növelje a + teljesítményt párhuzamos OCR-feldolgozással. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: hu +og_description: Készíts rögzített szálkészletet Java-ban, hogy gyorsan szöveget nyerj + ki képekből. Tanuld meg, hogyan futtass OCR-t, konvertáld a képet szöveggé, és növeld + a teljesítményt párhuzamos OCR-feldolgozással. +og_title: Fix szálkészlet létrehozása párhuzamos OCR-hez Java-ban +tags: +- Java +- OCR +- Multithreading +title: Fix szálkészlet létrehozása párhuzamos OCR-hez Java-ban +url: /hu/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Fix szálcsoport létrehozása párhuzamos OCR-hez Java-ban + +Valaha szükséged volt **fix szálcsoport létrehozására**, hogy felgyorsítsd az OCR feladatokat, de nem tudtad, hol kezdjed? Nem vagy egyedül. Sok képalapú projektben a szűk keresztmetszet az egy szálas OCR hívás, és a megoldás meglepően egyszerű: indíts egy munkás szálcsoportot, és hagyd, hogy párhuzamosan dolgozzák fel a fájlokat. + +Ebben az útmutatóban megtanulod, hogyan **nyerj ki szöveget képekből** az Aspose OCR használatával, hogyan **futtass OCR-t** hatékonyan, és hogyan **alakítsd át a képet szöveggé** anélkül, hogy leterhelnéd a CPU-t. A végére egy kész‑a‑futtatásra Java programod lesz, amely bemutatja a **párhuzamos OCR feldolgozást** néhány mintaképen. + +## Mit fogsz építeni + +* Beolvas egy listát a képek útvonalairól (PNG, JPG, TIFF, BMP). +* **Fix szálcsoportot hoz létre**, amely a CPU magok számához igazodik. +* Minden képhez OCR feladatot küld el. +* Összegyűjti a felismert szöveget, és kiírja a konzolra. +* Tiszta módon leállítja az executor-t. + +Nincs szükség külső build eszközökre, nincs bonyolult keretrendszer—csak tiszta Java és az Aspose OCR könyvtár. Ha van Java 8+ és egy megfelelő IDE-d, készen állsz. + +## Előfeltételek + +* **Java Development Kit (JDK) 8 vagy újabb** – a kód lambda‑kat használ, ezért a régebbi verziók nem fordulnak le. +* **Aspose OCR for Java** – töltsd le a JAR‑t az Aspose weboldaláról, vagy szerezd be Maven‑en keresztül (`com.aspose:aspose-ocr`). +* Egy mappa néhány tesztképpel (a kód a `YOUR_DIRECTORY`‑re mutat). +* Alapvető ismeretek a Java párhuzamosságról (a többit majd elmagyarázzuk). + +> *Pro tipp:* Ha Maven‑t használsz, add hozzá a függőséget a `pom.xml`‑hez, és hagyd, hogy az IDE kezelje az osztályútvonalat. + +--- + +## 1. lépés: A szükséges importok hozzáadása + +Először is hozd be a szükséges osztályokat a láthatóságba. Ez nem csak sablonkód; minden import megmondja a JVM‑nek, hol találja az OCR motor, a képkezelő segédprogramok és a párhuzamossági eszközök, amelyek lehetővé teszik, hogy **fix szálcsoportot hozzunk létre**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – az alap OCR API. +* `java.util.*` – gyűjtemények a képek útvonalainak és eredményeknek a tárolásához. +* `java.util.concurrent.*` – a párhuzamossági csomag, amely tartalmazza az `ExecutorService`‑t és a `Future`‑t. + +## 2. lépés: A feldolgozandó képek meghatározása + +Ezután felsoroljuk azokat a fájlokat, amelyekből **szöveget szeretnénk kinyerni képekből**. Az `Arrays.asList` használata tömör kódot eredményez, és lehetővé teszi, hogy a saját könyvtáradat cseréld be anélkül, hogy a többi logikát módosítanád. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Nyugodtan adj hozzá további bejegyzéseket; a szálcsoport automatikusan méreteződik a rendelkezésedre álló CPU magok száma alapján. + +## 3. lépés: **Fix szálcsoport létrehozása** a CPU magoknak megfelelően + +Itt van az útmutató szíve. Megkérdezzük a futtatókörnyezetet, hogy hány mag áll rendelkezésre, és a `Executors` gyártól kérünk egy pontosan ennyi méretű szálcsoportot. Miért fix? Mert egy előre meghatározott szál szám megakadályozza a rettegett „szálrobbanást”, amely az operációs rendszert erőforráshiányba taszíthatja. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` visszaadja a logikai magok számát (beleértve a hyper‑threadeket). +* `newFixedThreadPool(coreCount)` garantálja, hogy soha ne lépjük túl a CPU kapacitását, ami a legbiztonságosabb módja a **párhuzamos OCR futtatásának**. + +## 4. lépés: OCR feladat benyújtása minden képhez + +Most minden fájlútvonalat egy callable‑vá alakítunk, amely **futtatja az OCR‑t**, felismeri a szöveget, és visszaadja az eredményt. Vedd észre, hogy a lambda‑ban egy új `OcrEngine` példányt hozunk létre – ez elkerüli a motor állapotának szálbiztonságtól nem védett megosztását. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Minden `submit` hívás átadja a lambda‑t a szálcsoportnak, amely egy üresjáró szálra ütemezi. +* A `Future` objektumok lehetővé teszik, hogy később lekérdezzük a felismert szöveget, megőrizve a sorrendet, ha szükséges. + +## 5. lépés: A felismert szöveg lekérése és megjelenítése + +Miután az összes feladat sorba került, egyszerűen végigiterálunk a `Future` listán, és a `get()` hívással blokkolunk, amíg az egyes OCR feladatok befejeződnek. Itt válik láthatóvá a **kép szöveggé alakítása** lépés: az `engine.getText()` hívás visszaadja a nyers karakterláncot. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +A tipikus konzolkimenet így néz ki: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Ha egy fájl hibát okoz (például sérült), egy `Failed:` kezdetű sor jelenik meg, amelyet az útvonal követ – praktikus a gyors hibakereséshez. + +## 6. lépés: Az Executor Service tisztítása + +Soha ne felejtsd el leállítani a szálcsoportot; különben a JVM tovább fut, mintha még lenne munka. Egy elegáns leállítás lehetővé teszi, hogy a futó feladatok befejeződjenek, mielőtt a folyamat kilép. + +```java +executor.shutdown(); +``` + +Használhatod az `awaitTermination` hívást is, ha időkorlátot szeretnél érvényesíteni, de a legtöbb parancssori segédeszközhöz egy egyszerű `shutdown()` elegendő. + +## Teljes működő példa + +Az alábbiakban a teljes, azonnal futtatható program látható. Másold be egy `ParallelOcrTutorial.java` nevű fájlba, állítsd be a képek útvonalait, és futtasd a `javac` + `java` parancsokkal, ahogy szokás. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Várható eredmény:** minden kép szöveges tartalma ki lesz nyomtatva a konzolra, ugyanabban a sorrendben, mint az `imagePaths` lista. Ha egy képet nem lehet feldolgozni, egy hibaüzenetet látsz majd egy üres sor helyett. + +## Gyakori kérdések és szélhelyzetek + +### Mi van, ha több képet szeretnék feldolgozni, mint amennyi szál van? + +A fix szálcsoport automatikusan sorba állítja a felesleges feladatokat. Amint egy szál befejezi a jelenlegi OCR feladatát, felveszi a következőt. Ez a sorba állítás a **párhuzamos OCR feldolgozás** lényege – maximális áteresztőképességet kapsz anélkül, hogy túlterhelnéd a CPU-t. + +### Megváltoztathatom a nyelvet? + +Természetesen. Cseréld le a `engine.getLanguage().setEnglish(true);` sort a megfelelő nyelvi flagre, például `setFrench(true)`, vagy több nyelvet engedélyezhetsz több setter hívásával a `recognize()` előtt. + +### Hogyan kezeljem a nagyon nagy képeket? + +A nagy fájlok szálanként jelentős memóriát fogyaszthatnak. Ha `OutOfMemoryError`-t észlelsz, fontold meg a kép lecsökkentését, mielőtt a motorba adod, vagy növeld a heap méretét a `-Xmx` kapcsolóval. Egy másik megközelítés a **cached thread pool** használata (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hungarian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/hungarian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..a6b7a8d85 --- /dev/null +++ b/ocr/hungarian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-05-03 +description: Hogyan engedélyezheted a GPU-t a Java OCR-hez gyorsan – tanuld meg, hogyan + nyerhetsz ki szöveget képekből az Aspose OCR-rel. Teljes Java OCR oktatóanyag benne + van. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: hu +og_description: hogyan engedélyezzük a GPU-t a Java OCR-hez percek alatt. Ez az útmutató + megmutatja, hogyan lehet szöveget kinyerni a képekből egy Java OCR tutorial segítségével + GPU gyorsítással. +og_title: Hogyan engedélyezzük a GPU-t a Java OCR-hez – Lépésről lépésre útmutató +tags: +- Java +- OCR +- GPU +- Aspose +title: Hogyan engedélyezzük a GPU-t a Java OCR-hez – Teljes útmutató +url: /hu/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hogyan engedélyezzük a gpu-t a Java OCR – Teljes útmutató + +Gondolkodtál már azon, **how to enable gpu**, amikor egy képről próbálsz szöveget kinyerni? Ha valaha is nagy felbontású beolvasáson kellett OCR-t futtatnod, és a CPU lelassult, nem vagy egyedül. Ebben az útmutatóban egy **java ocr tutorial**-t mutatunk be, amely nem csak a szöveg kinyerését mutatja be, hanem a leggyorsabb módot is, hogy **recognize text image java**‑stílusban, az experimentális GPU támogatás bekapcsolásával. + +Először be fogjuk vonni az Aspose OCR könyvtárat, majd engedélyezzük a GPU-t, betöltünk egy mintaképet, és végül kinyerjük a felismert szöveget a fájlból. A végére egy készen álló kódrészletet kapsz, amelyet bármely Maven projektbe beilleszthetsz, és megérted, miért fontos a GPU, mikor nem segíthet, valamint hogyan oldhatók meg a gyakori problémák. Külső dokumentációra nincs szükség – minden, amire szükséged van, itt van. + +--- + +## Amire szükséged lesz + +- **Java Development Kit (JDK) 8+** – a kód bármely modern JDK-n fut. +- **Maven** (vagy Gradle) az Aspose OCR függőség lehúzásához. +- **GPU‑kompatibilis gép** (CUDA‑t támogató NVIDIA kártya a legjobb, de az Aspose API elegánsan visszaesik CPU‑ra). +- Egy mintakép, például `sample-highres.png`, egy olyan mappában, amelyre hivatkozhatsz. +- Egy csipetnyi kíváncsiság a **image to text conversion java** technikák iránt. + +Ha valamelyik hiányzik, szerezd be a JDK-t az Oracle vagy OpenJDK oldaláról, telepíts Maven-t, és győződj meg róla, hogy a grafikus driver naprakész. Ez minden előkészítés; a maradék tiszta Java. + +--- + +## 1. lépés: Add hozzá az Aspose OCR-t a projektedhez + +Először is szükségünk van magára az OCR motorra. Az Aspose egy tiszta Maven artefaktumot biztosít; egyszerűen illeszd be ezt a kódrészletet a `pom.xml`-be: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Ha inkább Gradle-t használsz, az ekvivalens: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Miután a függőség feloldódik, hozzáférsz az `OcrEngine`, `ImageStream` és a nyelvi segédeszközökhez, amelyek a **java ocr tutorial**-t könnyedé teszik. + +--- + +## 2. lépés: Hogyan engedélyezzük a GPU-t (Fő kulcsszó akcióban) + +Most jön a lényeg: **how to enable gpu** az OCR motor számára. Az Aspose API egyetlen boolean flag-et kínál – `setUseGpu(true)`. Kísérleti, de egy megfelelő grafikus kártyán drámai módon csökkenti a felismerési időt, különösen nagy, magas felbontású képeknél. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tipp:** Ha a környezeted nem rendelkezik kompatibilis GPU-val, a flag csendben figyelmen kívül marad, és a motor CPU‑ra vált vissza. Nem omlik össze, csak lassabb lesz a teljesítmény. + +--- + +## 3. lépés: Töltsd be a feldolgozni kívánt képet + +Az OCR motor egy `ImageStream`-mel dolgozik. Mutasd meg neki azt a fájlt, amelyet képről szövegre szeretnél konvertálni. Íme egy kompakt megoldás: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Győződj meg róla, hogy az útvonal abszolút vagy a projekt munkakönyvtárához relatív. Ha a fájl nem található, `IOException`-t kapsz – ezt később elkapjuk. + +--- + +## 4. lépés: Válaszd ki a nyelvet (Opcionális, de ajánlott) + +Az Aspose OCR sok ábécét kezel, de meg kell mondanod, melyiket várod. Angolhoz egy egy‑soros megoldás: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Ha franciára vagy kínaira van szükséged, csak cseréld ki a flag-et (`setFrench(true)`, `setChineseSimplified(true)`, stb.). Ez a kis jelzés gyakran növeli a pontosságot, mivel a motor kizárhatja a valószínűtlen karaktereket. + +--- + +## 5. lépés: Recognize Text Image Java – Futtasd a motort + +Most jön a döntő pillanat: **recognize text image java** stílusban. Meghívjuk a `recognize()`-t, és ha `true`‑t ad vissza, a `getText()`‑el nyerjük ki a szöveget. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +A kimenet a `sample-highres.png`‑ből kinyert nyers szöveg lesz. Egy tiszta dokumentumhoz érdemes lehet a stringet utófeldolgozni (whitespace eltávolítása, sortörések cseréje, stb.). Itt egy gyors példa: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## 6. lépés: Teljes működő példa (Másolás‑beillesztés kész) + +Az alábbiakban megtalálod a komplett **java ocr tutorial**‑t, amelyet közvetlenül lefordíthatsz és futtathatsz. Tartalmaz hibakezelést és kiírja a várt eredményt. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Várt kimenet (példa):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Ha a kép több sort tartalmaz, azok `\n` sortörés karakterekkel lesznek elválasztva. A motor a lehető legjobban megőrzi az eredeti elrendezést. + +--- + +## 7. lépés: Szélsőséges esetek, tippek és gyakori kérdések + +### Mi van, ha a GPU nem kerül felismerésre? + +Az Aspose csendben letiltja a GPU támogatást, ha nem talál kompatibilis eszközt. A módot ellenőrizheted a flag kiíratásával a inicializálás után: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Ha `false`-t ír ki, ellenőrizd a driver verziót és hogy a `CUDA` runtime a `PATH`‑ban van-e. + +### Segít a GPU kis képeknél? + +Nem mindig. Egy kis bitmap GPU‑ra történő átvitelének overheadje meghaladhatja a sebességnyereséget. 500 KB alatti képek esetén akár lassulást is tapasztalhatsz. Ilyenkor egyszerűen állítsd `setUseGpu(false)`‑ra. + +### Hogyan kezeljünk többnyelvű dokumentumokat? + +Több nyelvet egyszerre is engedélyezhetsz: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +A motor megpróbálja mindkét halmaz karaktereit egyeztetni, ami hasznos kétnyelvű PDF-eknél. + +### Feldolgozhatok közvetlenül PDF-eket? + +Az Aspose OCR képes csak image stream‑ekkel dolgozni, ezért előbb rasterizálnod kell minden PDF oldalt (pl. Aspose PDF vagy PDFBox segítségével), majd a kapott `BufferedImage`‑et átadni a `setImage`‑nek. + +--- + +## Vizuális összefoglaló + +![how to enable gpu for Java OCR engine](/images/gpu-ocr.png "Diagram showing GPU‑accelerated OCR pipeline") + +*A diagram a folyamatot mutatja a kép betöltésétől → GPU‑engedélyezett OCR → szöveg kinyeréséig.* + +--- + +## Összegzés + +Áttekintettük, **how to enable gpu** egy Java OCR munkafolyamatban, végigvettük a teljes **java ocr tutorial**‑t, és bemutattuk a **image to text conversion java**-t egy gyakorlati, másolás‑beillesztés példában. Egyetlen flag átkapcsolásával másodperceket – vagy akár perceket – spórolhatsz a nagy felbontású beolvasásoknál, így alkalmazásaid gyorsabbak és reszponzívabbak lesznek. + +Mi a következő? Próbálj meg egy képcsomagot egy ciklusban feldolgozni, kísérletezz különböző nyelvekkel, vagy kombináld ezt az Apache Tika‑val, hogy automatikusan indexeld a kinyert szöveget. A lehetőségek határtalanok, ha a GPU‑gyorsított OCR‑t más Java könyvtárakkal párosítod. + +Van kérdésed a **how to extract text** trükkökről nehéz képekkel kapcsolatban, vagy többet szeretnél tudni a **recognize text image java** trükkökről? Írj egy megjegyzést alább, és jó kódolást! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hungarian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/hungarian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..1e66af038 --- /dev/null +++ b/ocr/hungarian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-05-03 +description: Javítsa gyorsan az OCR pontosságát az Aspose OCR Java használatával. + Tanulja meg, hogyan töltsön be képet OCR-hez, engedélyezze a nyelveket, és alkalmazzon + agresszív helyesírási javítást néhány lépésben. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: hu +og_description: Javítsa az OCR pontosságát azonnal az Aspose OCR Java-val. Ez az útmutató + bemutatja, hogyan töltsön be képet OCR-hez, engedélyezze a nyelveket, és használjon + agresszív helyesírási javítást. +og_title: Javában javítsa az OCR pontosságát – lépésről lépésre Aspose OCR útmutató +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Az OCR pontosságának javítása Java-ban – Teljes Aspose OCR útmutató +url: /hu/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Az OCR pontosságának javítása Java-ban – Teljes Aspose OCR útmutató + +Gondolkodtál már azon, miért néznek az OCR eredményeid úgy, mint egy kisgyermek kézírása? Ha hiányzó betűkkel, rossz szavakkal vagy egyszerűen csak érthetetlen szöveggel küzdesz, nem vagy egyedül. **Az OCR pontosságának javítása** az első dolog, amit a legtöbb fejlesztő megtesz, amikor a szövegkinyerés megbízhatatlannak tűnik. + +Ebben az útmutatóban egy gyakorlati megoldáson keresztül vezetünk végig, amely nem csak **load image for OCR**-t valósít meg, hanem az Aspose beépített helyesírás‑javító motorját is felhasználja a minőség növeléséhez. A végére egy kész‑Java programod lesz, amely angol + francia szöveget ismer fel agresszív javítással – külső szótárak nélkül. + +## Mit fogsz megtanulni + +- Hogy **load image for OCR**-t használj az Aspose `ImageStream`-jével. +- Miért fontos a megfelelő nyelvek engedélyezése a pontosság szempontjából. +- Az agresszív helyesírás‑javítás hatása a többnyelvű dokumentumokra. +- Egy komplett, futtatható kódminta, amelyet bármely Maven/Gradle projektbe beilleszthetsz. +- Tippek, buktatók és a következő lépések ötletei a megközelítés skálázásához. + +> **Előfeltételek** – Java 8 vagy újabb, egy friss Aspose.OCR for Java JAR (v23.12 vagy későbbi), valamint egy képfájl (`multilingual.png`), amely angol és francia szöveget tartalmaz. Ennyi—nincs szükség extra modellekre vagy API‑kra. + +--- + +## OCR pontosságának javítása: Az Aspose OCR motor konfigurálása + +Bármely OCR folyamat szíve a motor konfigurációja. Ha pontosan megmondod az Aspose-nak, mire számítasz, esélyt adsz neki, hogy helyesen működjön. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Miért fontos ez:** +- **Engine instance** – A `OcrEngine` tárolja az összes beállítást; egy új példány létrehozása megakadályozza a korábbi futások állapotának átszivárgását. +- **Image loading** – A `ImageStream.fromFile` használata a legegyszerűbb módja a **load image for OCR**-nek. Natív módon támogatja a PNG, JPEG, BMP és TIFF formátumokat. +- **Language flags** – Az angol + francia engedélyezése azt mondja a felismerőnek, hogy a megfelelő karakterkészleteket és nyelvi modelleket használja, ami önmagában 10‑15 %-kal növelheti a pontosságot. +- **Aggressive spell correction** – A `SpellCorrectionLevel.AGGRESSIVE` beállítása arra készteti a belső szótárat, hogy átírja a kétes szavakat, ami kulcsfontosságú, amikor **az OCR pontosságának javításához** kell zajos szkenneléseknél. + +--- + +## Kép betöltése OCR-hez – Forrásfájl beállítása + +Mielőtt a motor bármit is tudna tenni, szüksége van egy bitmapre. Ha hibás adatfolyamot vagy rossz útvonalat adsz neki, már a „null pointer” kifejezést is gyorsabban fogsz kivételt kapni. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** Ha felhasználók által feltöltött képeket dolgozol fel, csomagold a betöltési logikát try‑catch blokkba, és először ellenőrizd a fájl méretét/formátumát. Ez megakadályozza, hogy a motor elakadhasson hatalmas PDF-eken vagy nem támogatott formátumokon. + +## Több nyelv engedélyezése a jobb felismeréshez + +A legtöbb OCR könyvtár alapértelmezés szerint csak angolt támogat. Ha a dokumentumod több nyelvet kever, a hibás karakterek száma megugrik. Az Aspose egyszerűvé teszi további nyelvek bekapcsolását. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Miért engedélyezz több mint egy nyelvet?** +- **Character set expansion** – A francia tartalmazza az ékezetes betűket, mint a „é” és a „ç”. A francia jelző nélkül ezek „e” vagy „c” lesznek, ami később összezavarja a helyesírás‑javítót. +- **Contextual hints** – Az OCR motor nyelvi modelleket használ a szóhatárok előrejelzéséhez; egy kétnyelvű modell csökkenti a hibás szétválásokat. + +## Agresszív helyesírás‑javítás alkalmazása + +A helyesírás‑javítás nem csak egy „kellemes extra”; kulcsfontosságú, amikor **az OCR pontosságának javítására** van szükség alacsony minőségű szkenneléseknél. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Szintek áttekintése + +| Szint | Viselkedés | +|------------|----------------------------------------------| +| **NONE** | Nincs javítás – csak a motor nyers kimenete. | +| **LIGHT** | Javítja a nyilvánvaló elírásokat, alacsony a túljavítás kockázata. | +| **AGGRESSIVE** | Szótárkereséseket alkalmaz agresszívan; legjobb zajos képeknél. | + +**Figyelem:** Az agresszív mód átírhat legitim sajátneveket (pl. „McDonald” → „Mcdonald”). Ha a területed sok nevet tartalmaz, fontold meg egy utófeldolgozó szűrő használatát. + +## Felismerés futtatása és az eredmény ellenőrzése + +Miután minden be van állítva, itt az ideje, hogy az Aspose végezze a nehéz munkát. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Várt kimenet (példa) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Ha helyette érthetetlen szöveget látsz, ellenőrizd a következőket: + +1. A kép minősége (elmosódott vagy alacsony dpi-s képek rontják a pontosságot). +2. Nyelvi jelzők – a francia hiánya elveszi az ékezeteket. +3. Helyesírás‑javítás szint – próbáld a `LIGHT`-ot, ha túlzott javítást észlelsz. + +## Teljes működő példa (Minden lépés egy fájlban) + +Az alábbiakban a teljes program látható, amelyet közvetlenül lefordíthatsz és futtathatsz. Mentsd el `SpellCorrectionTutorial.java` néven, állítsd be a képfájl útvonalát, és futtasd a `javac && java` paranccsal. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Fordítás és futtatás: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +A konzolon a javított többnyelvű szöveget kell látnod. + +## Gyakori buktatók és elkerülésük módja + +| Tünet | Valószínű ok | Megoldás | +|------------|--------------|----------| +| **Üres kimenet** | Képfájl útvonal hibás vagy a fájl nem olvasható | Ellenőrizd az `ImageStream.fromFile` útvonalat; adj hozzá fájl létezés ellenőrzést. | +| **Hiányzó ékezetek** | A francia nyelv nincs engedélyezve | Hívd meg a `ocrEngine.getLanguage().setFrench(true)` metódust. | +| **Rossz karakterek** | Alacsony felbontású kép (< 150 dpi) | Nagyobb felbontásra skálázd vagy szkenneld újra magasabb DPI-vel; fontold meg előfeldolgozást képnövelő könyvtárakkal. | +| **Túlzottan javított nevek** | Agresszív helyesírás‑javítás sajátneveken | Utófeldolgozás egy ismert nevek fehérlistájával vagy váltás `LIGHT` szintre. | + +## Következő lépések: Az OCR folyamat skálázása + +- **Kötegelt feldolgozás:** Képek könyvtárán iterálj, és a teljesítmény érdekében egyetlen `OcrEngine` példányt használd újra. +- **PDF kinyerés:** Használd az Aspose.PDF-et, hogy minden oldalt képpé konvertálj, majd add át az OCR motorba. +- **Egyedi szótárak:** Ha a területed speciális szakkifejezéseket használ (orvosi, jogi), tölts be egy egyedi szóslistát a `ocrEngine.getSpellCorrector().addUserDictionary(...)` metódusba. +- **Párhuzamosság:** A Java `ForkJoinPool` képes több OCR feladatot egyszerre futtatni, de figyelj a memóriahasználatra, mivel minden motor képpufferrel rendelkezik. + +![OCR pontosság javítása példa](/images/ocr-example.png){alt="OCR pontosság javításának képernyőképe, amely a javított többnyelvű szöveget mutatja"} + +## Következtetés + +Épp most **javítottuk az OCR-t + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hungarian/java/ocr-operations/_index.md b/ocr/hungarian/java/ocr-operations/_index.md index 078f684ae..c2fc401a9 100644 --- a/ocr/hungarian/java/ocr-operations/_index.md +++ b/ocr/hungarian/java/ocr-operations/_index.md @@ -52,8 +52,6 @@ A pontosság kulcsfontosságú a szövegkinyerésnél, és az Aspose.OCR for Jav Akár többnyelvű dokumentumokról, akár specifikus nyelvi követelményekről van szó, ez a tutorial felhatalmaz arra, hogy a szöveget precíz pontossággal nyerd ki. Búcsúzz el a találgatástól, és üdvözöld a pontosságot. -[Discover Language Selection Tutorial](./perform-ocr-language-selection/) - ## OCR PDF dokumentumok felismerése az Aspose.OCR for Java-ban Könnyedén szabadítsd fel az OCR erejét Java-ban az Aspose.OCR segítségével. A PDF dokumentumok szövegének felismeréséről szóló tutorialunk zökkenőmentes integrációra vezet. Növeld alkalmazásaidat a szöveg PDF-ekben történő kezeléséhez szükséges pontossággal és sebességgel. @@ -83,6 +81,10 @@ Szabadítsd fel az OCR erejét Java-ban az Aspose.OCR segítségével. Könnyed Szabadítsd fel a hatékony szövegfelismerést Java-ban az Aspose.OCR segítségével. Könnyedén ismerd fel a szöveget TIFF képekben. Töltsd le most a zökkenőmentes OCR élményért. ### [Szövegkép felismerése Aspose OCR-rel – Teljes Java OCR útmutató](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Fedezd fel, hogyan ismerheted fel a képeken lévő szöveget az Aspose OCR segítségével Java-ban, lépésről lépésre útmutató. +### [Aspose OCR Java példa: Szöveg kinyerése egy területről](./aspose-ocr-java-example-extract-text-from-a-region/) +Ismerje meg, hogyan nyerhet ki szöveget egy meghatározott területből az Aspose OCR Java példában. +### [HEIC képből szöveg kinyerése – Teljes Java útmutató](./extract-text-from-heic-complete-java-guide/) +Fedezd fel, hogyan nyerheted ki a szöveget HEIC formátumú képekből Java-val az Aspose.OCR segítségével. ## Gyakran Ismételt Kérdések diff --git a/ocr/hungarian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/hungarian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..5cede6d16 --- /dev/null +++ b/ocr/hungarian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,175 @@ +--- +category: general +date: 2026-05-03 +description: Az Aspose OCR Java példa bemutatja, hogyan töltsünk be képet OCR-hez, + és néhány kódsorral nyerjünk ki szöveget egy területről. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: hu +og_description: Az Aspose OCR Java példa bemutatja, hogyan töltsünk be egy képet OCR-hez, + és hogyan nyerjünk ki szöveget egy meghatározott területről, ami tökéletes számlafeldolgozáshoz. +og_title: Aspose OCR Java példa – Régió szövegkivonás +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Aspose OCR Java példa: Szöveg kinyerése egy régióból' +url: /hu/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java példa: Szöveg kinyerése egy területről + +Keres egy **Aspose OCR Java példát**, amely lehetővé teszi, hogy csak a képből a szükséges részt nyerje ki? Ebben az útmutatóban végigvezetjük a **kép betöltését OCR-hez** és a **szöveg kinyerését egy területről**, ami tökéletes számlaszámok, űrlapmezők vagy bármely adatdarab kinyerésére, amely egy nagyobb képen belül helyezkedik el. + +Talán azon tűnődik, miért érdemes egy téglalapra korlátozni az OCR-t a teljes oldal szkennelése helyett. A rövid válasz: sebesség és pontosság. Amikor a motor csak egy meghatározott szeletet vizsgál, kihagyja a felesleges zajt, gyorsabban fut, és gyakran tisztább eredményt ad. A tutorial végére egy önálló Java programmal fog rendelkezni, amely pontosan ezt teszi, valamint néhány tippet is kap a gyakori buktatók elkerüléséhez. + +## Amire szüksége lesz + +Mielőtt belevágna, győződjön meg róla, hogy rendelkezik a következőkkel: + +- **Java Development Kit (JDK) 11** vagy újabb telepítve. +- **Aspose.OCR for Java** könyvtár (a legújabb JAR-t a Maven Central tárolóból vagy az Aspose letöltési portálról szerezheti be). +- Egy képállomány, amely tartalmazza a beolvasni kívánt szöveget – a bemutatóhoz a `invoice.png` fájlt használjuk, amely a számlaszámot a jobb felső sarok közelében tartalmazza. +- Kedvenc IDE vagy egyszerű szövegszerkesztő plusz egy terminál; bármely build eszköz (Maven, Gradle vagy egyszerű `javac`) megfelel. + +Ennyi. Nincs szükség extra OCR motorokra, natív binárisokra, csak tiszta Java és Aspose. + +![Aspose OCR Java example screenshot](/images/aspose-ocr-java-example.png "Aspose OCR Java example showing region extraction") + +## Aspose OCR Java példa – Az OCR motor inicializálása + +Az első dolog, amire bármely OCR munkafolyamatnak szüksége van, egy motorpéldány. Az Aspose egy könnyű `OcrEngine` osztályt biztosít, amely mindent kezel a kép betöltésétől a nyelvválasztásig. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Miért fontos:** A motor előzetes létrehozása egy tiszta objektumot ad a konfiguráláshoz. Ugyanazt a `OcrEngine`-t újra felhasználhatja több képhez, ha kötegelt feldolgozást végez, ami memóriát és inicializálási időt takarít meg. + +## Kép betöltése OCR-hez + +Ezután megadjuk a motor számára, hogy melyik képet szkennelje. Az Aspose a `ImageStream.fromFile` segédfüggvényt kínálja, amely elrejti az alacsony szintű `FileInputStream` boilerplate‑t. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tipp:** Cserélje le a `YOUR_DIRECTORY`‑t egy abszolút vagy relatív útvonalra, amely a `invoice.png` fájl helyét mutatja. Ha a fájl nem található, az Aspose `IOException`‑t dob, ezért érdemes ezt try‑catch blokkba helyezni a termelési kódban. + +## Terület definiálása és szöveg kinyerése + +Most jön a főszereplő: a téglalap, amely megmondja a motornak, hol keressen. A `java.awt.Rectangle` konstruktor a `(x, y, width, height)` paramétereket várja – mind pixelben mérve. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Hogyan működik:** A `setRegion` meghívásával az OCR szkennelést egy 300 pixel széles szeletre korlátozza, amely 120 pixellel a bal szélről és 250 pixellel a felső szélről indul. Igazítsa ezeket a számokat a saját elrendezéséhez; egy gyors módszer a megtalálásukra, ha a képet bármely grafikus szerkesztőben megnyitja, amely pixelkoordinátákat mutat. + +## Nyelv engedélyezése és felismerés futtatása + +Az Aspose OCR tucatnyi nyelvet támogat, de egy számlaszámhoz csak az angolra van szükség. A megfelelő nyelv engedélyezése drámaian csökkenti a hamis pozitív eredményeket. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Miért csak angolt engedélyezünk?** Az OCR motor megpróbálja a karaktereket minden engedélyezett nyelvi készletből egyeztetni, ami összezavarhatja, ha a szöveg egyszerű alfanumerikus. A nyelvi kör korlátozása javítja mind a sebességet, mind a pontosságot. + +### Várható kimenet + +Ha minden megfelelően van beállítva, a következőhöz hasonló eredményt fog látni: + +``` +Extracted region text: INV-12345 +``` + +Ha a téglalap néhány pixellel el van tolva, a kimenet torz vagy üres lehet. Ez egy egyszerű ellenőrzés: futtassa a programot, nézze meg a konzolt, és ellenőrizze, hogy a szöveg megegyezik-e a képen láthatóval. + +## A kód futtatása és a kimenet ellenőrzése + +Feltételezve, hogy Maven‑t használ, adja hozzá az Aspose OCR függőséget a `pom.xml`‑hez: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Fordítsa le és hajtsa végre: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Vagy ha egyszerű `javac`‑et részesíti előnyben: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +A konzolon meg kell jelennie a **Extracted region text** sornak. Ha “OCR recognition failed” üzenetet kap, ellenőrizze újra a fájl útvonalát, és győződjön meg arról, hogy a terület valóban olvasható karaktereket tartalmaz. + +## Szélhelyzetek és gyakori variációk + +| Helyzet | Mit kell módosítani | +|-----------|----------------| +| **Több nyelv** (pl. angol + spanyol) | Hívja a `ocrEngine.getLanguage().setSpanish(true);`‑t az angol mellett. | +| **Terület a kép határain kívül** | Az Aspose csendben levágja a téglalapot, de adatveszteség keletkezik. Használja az `ImageInfo`‑t (`ocrEngine.getImage().getWidth()`) a méretek ellenőrzésére a terület beállítása előtt. | +| **Dinamikus számlák** (különböző elrendezések) | Fontolja meg egy könnyű elő‑szkennelés futtatását a teljes képen, hogy megtalálja a “Invoice #” kulcsszót, majd programozottan számolja ki a téglalapot. | +| **Magas DPI‑jú képek** | Növelje a `ocrEngine.getImage().setResolution(300);` értéket a beolvasott dokumentumok pontosságának javításához. | +| **Teljesítményhangolás** | Tiltsa le a felesleges nyelveket, tartsa a területet a lehető legkisebbre, és használja ugyanazt a `OcrEngine` példányt sok fájl feldolgozásához. | + +## Profi tippek a frontvonalról + +- **Pro tipp:** Ha csak számjegyekre van szüksége (gyakori a számlaszámoknál), engedélyezze a numerikus módot a `ocrEngine.getLanguage().setDigits(true);`‑val. Ez megszünteti az alfabetikus zajt. +- **Vigyázzon a:** Átlátszó PNG‑kre. Az Aspose néha félreérti az alfa csatornát; a kép előzetes konvertálása egy szilárd háttérrel rendelkező JPEG‑re megoldhatja a furcsa üres kimeneteket. +- **Ne felejtse el:** A téglalap a kép natív koordináta‑rendszerét használja, nem a képernyőn látható UI méretezést. Mindig tesztelje a pontos fájllal, amelyet a termelésben fog feldolgozni. + +## Mi következik? + +Most, hogy megvan egy stabil **Aspose OCR Java példa** a terület‑alapú kinyeréshez, több hasznos irányba is bővítheti: + +- **Kötegelt feldolgozás:** Egy mappában lévő számlákat iteráljon, ugyanazt a `OcrEngine`‑t újrahasználva a teljesítmény növelése érdekében. +- **Adatvalidáció:** A kinyert szöveget adja át egy reguláris kifejezésnek, például `INV-\\d{5}`, hogy biztosan érvényes számlaszámot kapjon. +- **PDF integráció:** Használja az Aspose.PDF‑t a kinyert szöveg visszahelyezésére az eredeti dokumentumba audit‑nyomokhoz. +- **Felhőbe telepítés:** Csomagolja a kódot egy könnyű REST szolgáltatásba (Spring Boot), hogy más rendszerek igény szerint meghívhassák. + +Ezek a lépések mind ugyanazokat az alapfogalmakat használják – **kép betöltése OCR‑hez**, **szöveg kinyerése egy területről**, és az eredmények kezelése – így a váltás zökkenőmentes lesz. + +--- + +*Boldog kódolást! Ha elakad, hagyjon megjegyzést alul, vagy nézze meg az Aspose fórumokat, ahol a közösség valós életbeli finomításokat oszt meg nehéz elrendezésekhez.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hungarian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/hungarian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..d65a7d26a --- /dev/null +++ b/ocr/hungarian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: HEIC képek szövegének kinyerése Aspose OCR segítségével Java-ban. Tanulja + meg, hogyan konvertálhatja gyorsan a HEIC-et szöveggé egy lépésről‑lépésre példával. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: hu +og_description: Szöveg kinyerése HEIC képekből az Aspose OCR-rel Java-ban. Ez az útmutató + megmutatja, hogyan lehet percek alatt HEIC-et szöveggé konvertálni. +og_title: Szöveg kinyerése HEIC‑ből – Java OCR útmutató +tags: +- OCR +- Java +- Aspose +title: Szöveg kinyerése HEIC-ből – Teljes Java útmutató +url: /hu/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HEIC‑ből szöveg kinyerése – Teljes Java útmutató + +Gondoltad már, hogyan **HEIC‑ből szöveget nyerhetsz ki** anélkül, hogy először JPEG‑re vagy PNG‑re konvertálnád? Nem vagy egyedül. Sok fejlesztő akad el, amikor egy mobilalkalmazás egy `.heic` fotót ad nekik, és a beágyazott szöveget kell indexelni vagy elemezni. A jó hír? Az Aspose OCR for Java‑val **HEIC‑ből szöveget nyerhetsz ki** közvetlenül – nincs szükség extra konverziós lépésre. + +Ebben a tutorialban megmutatjuk, hogyan **konvertálhatod a HEIC‑t szöveggé** egyetlen, tiszta pipeline‑ban, így a kódot bármely Java projektbe beillesztheted, és már ma elkezdheted a karakterláncok kinyerését ezekből a nagy hatékonyságú képekből. + +![HEIC‑ből szöveg kinyerése példa](https://example.com/placeholder.png "HEIC‑ből szöveg kinyerése példa") + +## Mit tanulhatsz meg + +- Hogyan állítsd be az Aspose OCR‑t egy Maven/Gradle projektben. +- A pontos Java kód, amely **HEIC‑ből szöveget nyer** ki. +- Miért gyorsabb és kevésbé hibára hajlamos ez a megközelítés, mint egy kéts lépéses `konvertálás‑után‑OCR` munkafolyamat. +- Gyakori buktatók (pl. hiányzó nyelvi csomagok) és azok elkerülése. +- Tippek a megoldás skálázásához kötegelt feldolgozás esetén. + +A útmutató végére **HEIC‑t szöveggé konvertálhatsz** néhány kódsorral, és megérted az egyes lépések „miértjét”. + +--- + +## Előfeltételek + +Mielőtt belemerülnénk, győződj meg róla, hogy rendelkezel: + +1. **Java 8 vagy újabb** – az Aspose OCR bármely modern JDK‑n fut. +2. **Maven vagy Gradle** – az Aspose OCR könyvtár automatikus letöltéséhez. +3. Egy **HEIC kép**, amellyel tesztelni szeretnél (nevezd át `sample.heic`‑re, és helyezd el egy elérhető helyen). +4. Opcionálisan, de hasznos: egy IDE, például IntelliJ IDEA vagy VS Code. + +Más külső eszközre nincs szükség; a könyvtár natívan kezeli a HEIC formátumot. + +--- + +## 1. lépés – Add hozzá az Aspose OCR‑t a projekthez + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Pro tip:** Tartsd szinkronban a verziószámot a hivatalos Aspose kiadásokkal; az újabb verziók további HEIC‑variánsok támogatását és jobb nyelvi pontosságot hoznak. + +--- + +## 2. lépés – Inicializáld az OCR‑motort a **HEIC‑ből szöveg kinyeréséhez** + +Az `OcrEngine` példány létrehozása az első konkrét lépés a HEIC‑ből történő szövegkivonáshoz. A motor elrejti az alacsony szintű dekódolást, így nem kell aggódnod a HEIC konténerformátum miatt. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Miért fontos:** +A HEIC egy modern képformátum, amely a HEIF konténeren alapul. A hagyományos OCR‑könyvtárak JPEG/PNG‑t várnak, ami külön konvertálási lépést igényel, és romolhat a minőség. Az Aspose OCR natív támogatása lehetővé teszi, hogy **HEIC‑ből szöveget nyerj ki** egy lépésben, megőrizve az eredeti pixeleket és CPU‑ciklusokat takarítva meg. + +--- + +## 3. lépés – Engedélyezd a kívánt nyelv(ek)et + +Alapértelmezésben a motor csak angolt keres. Ha **HEIC‑t szöveggé konvertálsz** más nyelven, egyszerűen állítsd be a megfelelő zászlót. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Miért kell a nyelveket explicit módon engedélyezni?** +> A nyelvi csomagok igény szerint töltődnek be. Csak a szükségesek engedélyezése csökkenti a memóriahasználatot és felgyorsítja a felismerést. + +--- + +## 4. lépés – Futtasd a felismerési folyamatot + +Most kérjük meg a motort, hogy olvassa be a képet és adjon vissza egy karakterláncot. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Várható kimenet** (feltételezve, hogy a kép a „Hello World” feliratot tartalmazza): + +``` +=== Recognized Text === +Hello World +``` + +Ha a kép üres vagy a szöveg olvashatatlan, a motor `false`‑t ad vissza, és a tartalék üzenetet fogod látni. + +--- + +## 5. lépés – Széljegyek kezelése és gyakori kérdések + +### Mi a teendő, ha a HEIC fájl sérült? + +Az Aspose OCR `IOException`‑t dob, ha nem tudja dekódolni a konténert. Tedd a hívást egy `try‑catch` blokkba, és naplózd a hibát későbbi vizsgálathoz. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Feldolgozhatok több HEIC fájlt kötegelt módon? + +Természetesen. Egyszerűen iterálj egy könyvtáron, és használd újra ugyanazt az `OcrEngine` példányt, hogy elkerüld az ismételt inicializációs költséget. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Ez **HEIC‑t szöveggé konvertál** nem latin írásrendszerekhez is? + +Igen – az Aspose OCR támogatja az arab, kínai, cirill és még sok más nyelvet. Csak engedélyezd a megfelelő nyelvi zászlót (pl. `engine.getLanguage().setChineseSimplified(true);`). Ne felejtsd el a megfelelő betűkészlet‑fájlokat hozzáadni, ha fej nélküli szerveren futtatod. + +--- + +## 6. lépés – Ellenőrizd az eredményt programozottan + +Egy éles pipeline‑ban gyakran szükség van arra, hogy az OCR‑kimenet bizonyos minőségi küszöböknek megfeleljen. Egy gyors módszer a bizalmi pontszám (újabb verziókban elérhető) kiszámítása, vagy egyszerűen a visszakapott karakterlánc hosszának ellenőrzése. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Teljes működő példa + +Az alábbiakban a komplett, azonnal futtatható Java osztály látható, amely tartalmazza a fenti lépéseket. Másold be egy `HeifExample.java` nevű fájlba, állítsd be a HEIC fájl elérési útját, majd futtasd a `javac` + `java` parancsokkal. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Futtasd: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +A konzolon meg kell jelennie a kinyert karakterláncnak, ami megerősíti, hogy **HEIC‑t szöveggé konvertáltál**. + +--- + +## Összegzés + +Áttekintettük mindent, ami szükséges a **HEIC‑ből szöveg kinyeréséhez** az Aspose OCR‑rel Java‑ban. A könyvtár hozzáadásától a széljegyek kezeléséig a útmutató egy tiszta, egylépéses megoldást mutat be, amely megszünteti a külön konvertáló segédprogram szükségességét. + +Most már: + +- **HEIC‑t szöveggé konvertálhatsz** valós időben webszolgáltatásokban, mobil backendekben vagy kötegelt feladatokban. +- Egyetlen konfigurációs sorral bővítheted a támogatott nyelvek körét. +- Skálázhatod a folyamatot az `OcrEngine` újrahasználatával sok fájl esetén. + +A következő lépésként érdemes lehet **az OCR eredményt beágyazni egy kereshető indexbe** (pl. Elasticsearch) vagy **képelőfeldolgozást hozzáadni** a pontosság növelése érdekében alacsony kontrasztú HEIC fotókon. A lehetőségek végtelenek – kísérletezz, mérj, és iterálj. + +Van kérdésed, vagy elakadtál egy makacs HEIC fájlnál? Írj egy megjegyzést alul, és jó kódolást! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/indonesian/java/advanced-ocr-techniques/_index.md b/ocr/indonesian/java/advanced-ocr-techniques/_index.md index 8b802e033..d11a901ad 100644 --- a/ocr/indonesian/java/advanced-ocr-techniques/_index.md +++ b/ocr/indonesian/java/advanced-ocr-techniques/_index.md @@ -42,28 +42,21 @@ Siapkan persegi panjang secara efisien untuk OCR dengan Aspose.OCR untuk Java me Berdayakan aplikasi Java Anda dengan Aspose.OCR untuk pengenalan teks yang tepat. Tutorial ini memandu Anda melalui integrasi yang mudah dan akurasi tinggi dalam mengenali garis. Tingkatkan proyek Anda dengan efisiensi dan keandalan Aspose.OCR. ## [Menentukan Karakter yang Diizinkan di Aspose.OCR](./specify-allowed-characters/) - -Ekstrak teks dari gambar dengan mudah dengan menentukan karakter yang diizinkan dengan Aspose.OCR untuk Java. Ikuti panduan langkah demi langkah kami untuk integrasi yang efisien, memastikan pengalaman pengenalan teks yang lancar. Tingkatkan aplikasi Java Anda dengan kemampuan Aspose.OCR. - -## Kesimpulan - -Dengan Aspose.OCR untuk Java, menguasai teknik OCR tingkat lanjut tidak pernah semudah ini. Selami tutorial ini, dan buka potensi penuh pengenalan teks dalam proyek Java Anda. Tingkatkan aplikasi Anda dengan integrasi yang lancar, akurasi tinggi, dan kemampuan ekstraksi teks serbaguna. Unduh sekarang dan ambil langkah pertama menuju keunggulan OCR dengan Aspose.OCR untuk Java! -## Tutorial Teknik OCR Tingkat Lanjut -### [Melakukan OCR pada BufferedImage di Aspose.OCR untuk Java](./perform-ocr-buffered-image/) -Lakukan OCR pada BufferedImage dengan mudah menggunakan Aspose.OCR untuk Java. Ekstrak teks dari gambar dengan mulus. Unduh sekarang untuk pengalaman pengenalan teks serbaguna. -### [Melakukan OCR pada Gambar dari URL di Aspose.OCR untuk Java](./perform-ocr-image-from-url/) -Buka kunci ekstraksi teks gambar yang lancar di Java dengan Aspose.OCR. OCR akurasi tinggi dengan integrasi mudah. -### [Melakukan OCR pada Halaman Tertentu di Aspose.OCR](./perform-ocr-on-page/) -Buka kecanggihan Aspose.OCR untuk Java dengan panduan langkah demi langkah kami dalam melakukan OCR pada halaman tertentu. Ekstrak teks dengan mudah dari gambar dan tingkatkan proyek Java Anda. -### [Mempersiapkan Persegi Panjang untuk OCR di Aspose.OCR](./prepare-rectangles-for-ocr/) -Buka kekuatan pengenalan teks dengan Aspose.OCR untuk Java. Ikuti panduan langkah demi langkah kami untuk integrasi yang lancar. Tingkatkan aplikasi Java Anda dengan kemampuan OCR yang efisien. -### [Mengenali Garis di Aspose.OCR untuk Java](./recognize-lines/) -Berdayakan aplikasi Java Anda dengan Aspose.OCR untuk pengenalan teks yang tepat. Integrasi yang mudah, akurasi tinggi. -### [Menentukan Karakter yang Diizinkan di Aspose.OCR](./specify-allowed-characters/) Buka kunci ekstraksi teks dari gambar secara lancar dengan Aspose.OCR untuk Java. Ikuti panduan langkah demi langkah kami untuk integrasi yang efisien. + +### [Membuat Fixed Thread Pool untuk OCR Paralel di Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Aktifkan OCR paralel dengan membuat Fixed Thread Pool di Java menggunakan Aspose.OCR, meningkatkan kecepatan pemrosesan. + +## [Cara Mengaktifkan GPU untuk OCR Java – Tutorial Lengkap](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Aktifkan akselerasi GPU untuk OCR Java dengan Aspose.OCR, meningkatkan kecepatan dan akurasi proses pengenalan teks. + +## [Meningkatkan Akurasi OCR di Java – Panduan Lengkap Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) + +Tingkatkan akurasi OCR dalam aplikasi Java Anda dengan panduan lengkap Aspose OCR, mencakup teknik dan pengaturan optimal. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/indonesian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/indonesian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..cafa3a1fb --- /dev/null +++ b/ocr/indonesian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,219 @@ +--- +category: general +date: 2026-05-03 +description: Buat pool thread tetap di Java untuk mengekstrak teks dari gambar dengan + cepat. Pelajari cara menjalankan OCR, mengonversi gambar menjadi teks, dan meningkatkan + kinerja dengan pemrosesan OCR paralel. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: id +og_description: Buat pool thread tetap di Java untuk mengekstrak teks dari gambar + dengan cepat. Pelajari cara menjalankan OCR, mengonversi gambar menjadi teks, dan + meningkatkan kinerja dengan pemrosesan OCR paralel. +og_title: Buat Fixed Thread Pool untuk OCR Paralel di Java +tags: +- Java +- OCR +- Multithreading +title: Buat Fixed Thread Pool untuk OCR Paralel di Java +url: /id/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat Fixed Thread Pool untuk Parallel OCR di Java + +Pernah perlu **create fixed thread pool** untuk mempercepat pekerjaan OCR, tetapi tidak yakin harus mulai dari mana? Anda tidak sendirian. Dalam banyak proyek yang banyak gambar, bottleneck adalah pemanggilan OCR satu‑thread, dan solusinya ternyata sangat sederhana: buat pool thread pekerja dan biarkan mereka memproses file secara paralel. + +Dalam tutorial ini Anda akan belajar cara **extract text from images** menggunakan Aspose OCR, cara **run OCR** secara efisien, dan cara **convert image to text** tanpa membebani CPU Anda. Pada akhir tutorial Anda akan memiliki program Java siap‑jalankan yang mendemonstrasikan **parallel OCR processing** pada beberapa gambar contoh. + +## Apa yang Akan Anda Bangun + +Kami akan menyusun sebuah aplikasi console kecil yang: + +* Membaca daftar path gambar (PNG, JPG, TIFF, BMP). +* **Creates a fixed thread pool** berukuran sesuai jumlah core CPU. +* Mengirimkan tugas OCR untuk setiap gambar. +* Mengumpulkan teks yang dikenali dan mencetaknya ke console. +* Menutup executor dengan bersih. + +Tanpa alat build eksternal, tanpa kerangka kerja mewah—hanya Java murni dan library Aspose OCR. Jika Anda memiliki Java 8+ dan IDE yang layak, Anda siap. + +## Prasyarat + +* **Java Development Kit (JDK) 8 atau lebih baru** – kode menggunakan lambda, jadi versi lebih lama tidak akan terkompilasi. +* **Aspose OCR for Java** – unduh JAR dari situs Aspose atau tarik via Maven (`com.aspose:aspose-ocr`). +* Sebuah folder dengan beberapa gambar uji (kode mengarah ke `YOUR_DIRECTORY`). +* Familiaritas dasar dengan concurrency Java (kami akan menjelaskan sisanya). + +> *Pro tip:* Jika Anda menggunakan Maven, tambahkan dependensi ke `pom.xml` Anda dan biarkan IDE menangani classpath. + +--- + +## Langkah 1: Tambahkan Import yang Diperlukan + +Pertama, bawa kelas yang kita butuhkan ke dalam ruang lingkup. Ini bukan sekadar boilerplate; setiap import memberi tahu JVM di mana menemukan engine OCR, utilitas penanganan gambar, dan alat concurrency yang memungkinkan kita **create fixed thread pool**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – API OCR inti. +* `java.util.*` – koleksi untuk menyimpan path gambar dan hasil. +* `java.util.concurrent.*` – paket concurrency yang berisi `ExecutorService` dan `Future`. + +## Langkah 2: Tentukan Gambar yang Akan Diproses + +Selanjutnya, kami membuat daftar file yang ingin **extract text from images**. Menggunakan `Arrays.asList` membuat kode ringkas dan memungkinkan kita mengganti direktori Anda sendiri tanpa mengubah logika lainnya. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Silakan tambahkan lebih banyak entri; thread pool akan secara otomatis menyesuaikan berdasarkan jumlah core CPU yang Anda miliki. + +## Langkah 3: **Create Fixed Thread Pool** Sesuai Core CPU + +Berikut inti tutorial. Kami menanyakan ke runtime berapa banyak core yang tersedia dan meminta pabrik `Executors` memberikan pool dengan ukuran tepat itu. Mengapa fixed? Karena jumlah thread yang dapat diprediksi mencegah “ledakan thread” yang dapat menguras sumber daya OS. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` mengembalikan jumlah core logis (termasuk hyper‑threads). +* `newFixedThreadPool(coreCount)` menjamin kami tidak pernah melampaui kapasitas CPU, yang merupakan cara paling aman untuk **run OCR** secara paralel. + +## Langkah 4: Kirim Tugas OCR untuk Setiap Gambar + +Sekarang kami mengubah setiap path file menjadi callable yang **runs OCR**, mengenali teks, dan mengembalikan hasilnya. Perhatikan kami membuat instance `OcrEngine` baru di dalam lambda—ini menghindari berbagi state engine yang tidak thread‑safe. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Setiap pemanggilan `submit` menyerahkan lambda ke pool, yang menjadwalkannya pada thread yang idle. +* Objek `Future` memungkinkan kami mengambil teks yang dikenali nanti, mempertahankan urutan jika diperlukan. + +## Langkah 5: Ambil dan Tampilkan Teks yang Dikenali + +Setelah semua tugas berada dalam antrian, kami cukup iterasi daftar `Future`, memanggil `get()` untuk menunggu hingga setiap pekerjaan OCR selesai. Di sinilah langkah **convert image to text** menjadi terlihat: pemanggilan `engine.getText()` mengembalikan string mentah. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Output console tipikal terlihat seperti: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Jika sebuah file gagal (mungkin korup), Anda akan melihat baris yang dimulai dengan `Failed:` diikuti path—berguna untuk debugging cepat. + +## Langkah 6: Bersihkan Executor Service + +Jangan pernah lupa menutup pool; bila tidak, JVM dapat tetap berjalan, mengira masih ada pekerjaan. Shutdown yang anggun memungkinkan semua tugas yang berjalan selesai sebelum proses berakhir. + +```java +executor.shutdown(); +``` + +Anda juga dapat memanggil `awaitTermination` jika perlu menegakkan batas waktu, tetapi untuk kebanyakan utilitas command‑line, `shutdown()` saja sudah cukup. + +## Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang siap dijalankan. Salin‑tempel ke file bernama `ParallelOcrTutorial.java`, sesuaikan path gambar, dan jalankan `javac` + `java` seperti biasa. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Hasil yang diharapkan:** konten teks setiap gambar dicetak ke console, dalam urutan yang sama dengan daftar `imagePaths`. Jika ada gambar yang tidak dapat diproses, Anda akan melihat pemberitahuan kegagalan alih-alih baris kosong. + +## Pertanyaan Umum & Kasus Tepi + +### Bagaimana jika saya memiliki lebih banyak gambar daripada thread? + +Fixed thread pool akan otomatis menempatkan tugas berlebih ke dalam antrian. Begitu sebuah thread menyelesaikan pekerjaan OCR saat ini, ia mengambil tugas berikutnya. Perilaku antrian ini adalah inti dari **parallel OCR processing**—Anda mendapatkan throughput maksimal tanpa membebani CPU. + +### Bisakah saya mengubah bahasa? + +Tentu saja. Ganti `engine.getLanguage().setEnglish(true);` dengan flag bahasa yang sesuai, misalnya `setFrench(true)` atau aktifkan beberapa bahasa dengan memanggil beberapa setter sebelum `recognize()`. + +### Bagaimana cara menangani gambar yang sangat besar? + +File besar dapat mengonsumsi banyak memori per thread. Jika Anda melihat `OutOfMemoryError`, pertimbangkan untuk memperkecil ukuran gambar sebelum memberi ke engine, atau tingkatkan ukuran heap dengan `-Xmx`. Pendekatan lain adalah menggunakan **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/indonesian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/indonesian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..f55c0c117 --- /dev/null +++ b/ocr/indonesian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-05-03 +description: cara mengaktifkan GPU untuk Java OCR dengan cepat – pelajari cara mengekstrak + teks dari gambar dengan Aspose OCR. Tutorial Java OCR lengkap disertakan. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: id +og_description: Cara mengaktifkan GPU untuk OCR Java dalam hitungan menit. Tutorial + ini menunjukkan cara mengekstrak teks dari gambar menggunakan tutorial OCR Java + dengan percepatan GPU. +og_title: Cara Mengaktifkan GPU untuk Java OCR – Panduan Langkah demi Langkah +tags: +- Java +- OCR +- GPU +- Aspose +title: cara mengaktifkan GPU untuk OCR Java – Tutorial Lengkap +url: /id/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cara mengaktifkan gpu untuk Java OCR – Tutorial Lengkap + +Pernah bertanya-tanya **how to enable gpu** ketika Anda mencoba mengekstrak teks dari sebuah gambar? Jika Anda pernah harus menjalankan OCR pada pemindaian resolusi tinggi dan merasakan CPU melambat drastis, Anda tidak sendirian. Dalam panduan ini kami akan membahas **java ocr tutorial** yang tidak hanya menunjukkan cara mengekstrak teks tetapi juga memperlihatkan cara tercepat untuk **recognize text image java**‑style dengan mengaktifkan dukungan GPU eksperimental. + +Kami akan memulai dengan mengimpor pustaka Aspose OCR, kemudian mengaktifkan GPU, memuat gambar contoh, dan akhirnya mengambil string yang dikenali dari file. Pada akhir tutorial Anda akan memiliki potongan kode siap‑jalankan yang dapat Anda sisipkan ke dalam proyek Maven apa pun, serta memahami mengapa GPU penting, kapan ia mungkin tidak membantu, dan cara mengatasi masalah umum. Tidak diperlukan dokumen eksternal—semua yang Anda butuhkan ada di sini. + +--- + +## Apa yang Anda Butuhkan + +- **Java Development Kit (JDK) 8+** – kode dapat dijalankan pada JDK modern apa pun. +- **Maven** (atau Gradle) untuk mengambil dependensi Aspose OCR. +- Sebuah **GPU‑compatible machine** (kartu NVIDIA dengan CUDA paling baik, tetapi Aspose API akan kembali ke CPU secara otomatis). +- Sebuah gambar contoh, misalnya `sample-highres.png`, ditempatkan di folder yang dapat Anda referensikan. +- Sedikit rasa ingin tahu tentang teknik **image to text conversion java**. + +Jika Anda belum memiliki salah satu dari ini, dapatkan JDK dari Oracle atau OpenJDK, instal Maven, dan pastikan driver grafis Anda terbaru. Itu semua persiapan; sisanya adalah Java murni. + +--- + +## Langkah 1: Tambahkan Aspose OCR ke Proyek Anda + +Pertama-tama, kita membutuhkan mesin OCR itu sendiri. Aspose menyediakan artefak Maven yang bersih; cukup letakkan potongan kode ini ke dalam `pom.xml` Anda: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Jika Anda lebih suka Gradle, setaraannya adalah: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Setelah dependensi terpasang, Anda akan memiliki akses ke `OcrEngine`, `ImageStream`, dan pembantu bahasa yang membuat **java ocr tutorial** menjadi mudah. + +--- + +## Langkah 2: Cara Mengaktifkan GPU (Kata Kunci Utama dalam Aksi) + +Sekarang kita sampai pada inti masalah: **how to enable gpu** untuk mesin OCR. API Aspose menyediakan satu flag boolean—`setUseGpu(true)`. Ini bersifat eksperimental, tetapi pada kartu grafis yang layak Anda akan melihat waktu pengenalan menurun drastis, terutama untuk gambar besar dengan resolusi tinggi. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** Jika lingkungan Anda tidak memiliki GPU yang kompatibel, flag tersebut akan diabaikan secara diam‑diam, dan mesin akan kembali ke mode CPU. Tidak ada crash, hanya performa yang lebih lambat. + +--- + +## Langkah 3: Muat Gambar yang Ingin Diproses + +Mesin OCR bekerja dengan `ImageStream`. Arahkan ke file yang ingin Anda konversi dari gambar ke teks biasa. Berikut cara ringkas melakukannya: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Pastikan path bersifat absolut atau relatif terhadap direktori kerja proyek Anda. Jika file tidak ditemukan, Anda akan mendapatkan `IOException`—kami akan menangkapnya nanti. + +--- + +## Langkah 4: Pilih Bahasa (Opsional tapi Disarankan) + +Aspose OCR dapat menangani banyak alfabet, tetapi Anda harus memberi tahu bahasa yang diharapkan. Untuk bahasa Inggris, cukup satu baris: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Jika Anda membutuhkan bahasa Prancis atau Mandarin, cukup ganti flag (`setFrench(true)`, `setChineseSimplified(true)`, dll.). Petunjuk kecil ini sering meningkatkan akurasi karena mesin dapat menyaring kandidat karakter yang tidak mungkin. + +--- + +## Langkah 5: Recognize Text Image Java – Jalankan Mesin + +Sekarang tiba saatnya menguji: gaya **recognize text image java**. Kami memanggil `recognize()` dan, jika mengembalikan `true`, mengambil string hasil dengan `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +Output akan berupa teks mentah yang diekstrak dari `sample-highres.png`. Untuk dokumen yang bersih, Anda mungkin ingin memproses string tersebut (memangkas spasi, mengganti baris baru, dll.). Berikut contoh singkat: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Langkah 6: Contoh Lengkap yang Siap Pakai (Copy‑Paste) + +Berikut adalah **java ocr tutorial** lengkap yang dapat Anda kompilasi dan jalankan langsung. Ini mencakup penanganan error dan mencetak output yang diharapkan. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Output yang diharapkan (contoh):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Jika gambar berisi beberapa baris, mereka akan muncul terpisah oleh karakter baris baru (`\n`). Mesin mempertahankan tata letak asli sebaik mungkin. + +--- + +## Langkah 7: Kasus Tepi, Tips, dan Pertanyaan Umum + +### Bagaimana jika GPU tidak terdeteksi? + +Aspose secara diam‑diam menonaktifkan dukungan GPU ketika tidak menemukan perangkat yang kompatibel. Anda dapat memverifikasi mode dengan memeriksa flag setelah inisialisasi: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Jika mencetak `false`, periksa kembali versi driver Anda dan pastikan runtime `CUDA` berada di `PATH`. + +### Apakah GPU membantu dengan gambar kecil? + +Tidak selalu. Beban memindahkan bitmap kecil ke GPU dapat melebihi keuntungan kecepatan. Untuk gambar di bawah 500 KB, Anda mungkin malah melihat perlambatan sedikit. Dalam kasus tersebut, cukup set `setUseGpu(false)`. + +### Bagaimana menangani dokumen multi‑bahasa? + +Anda dapat mengaktifkan beberapa bahasa sekaligus: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Mesin akan mencoba mencocokkan karakter dari kedua set, yang berguna untuk PDF dwibahasa. + +### Bisakah saya memproses PDF secara langsung? + +Aspose OCR bekerja dengan aliran gambar, jadi Anda harus meraster setiap halaman PDF terlebih dahulu (misalnya, dengan Aspose PDF atau PDFBox) dan kemudian memberikan `BufferedImage` yang dihasilkan ke `setImage`. + +--- + +## Ringkasan Visual + +![cara mengaktifkan gpu untuk mesin Java OCR](/images/gpu-ocr.png "Diagram yang menunjukkan pipeline OCR dipercepat GPU") + +*Diagram ini menggambarkan alur dari pemuatan gambar → OCR dengan GPU → ekstraksi teks.* + +--- + +## Kesimpulan + +Kami telah membahas **how to enable gpu** untuk alur kerja Java OCR, menelusuri **java ocr tutorial** lengkap, dan mendemonstrasikan **image to text conversion java** dalam contoh praktis yang dapat disalin. Dengan mengubah satu flag, Anda dapat mengurangi beberapa detik—atau bahkan menit—dari waktu pemrosesan pemindaian besar, membuat aplikasi Anda terasa lebih cepat dan responsif. + +Apa selanjutnya? Coba proses sekumpulan gambar dalam loop, bereksperimen dengan bahasa yang berbeda, atau gabungkan ini dengan Apache Tika untuk mengindeks teks yang diekstrak secara otomatis. Tidak ada batasan ketika Anda menggabungkan OCR yang dipercepat GPU dengan pustaka Java lainnya. + +Ada pertanyaan tentang **how to extract text** dari gambar yang sulit, atau ingin tahu lebih banyak tentang trik **recognize text image java**? Tinggalkan komentar di bawah, dan selamat coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/indonesian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/indonesian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..9edc0522c --- /dev/null +++ b/ocr/indonesian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-05-03 +description: Tingkatkan akurasi OCR dengan cepat menggunakan Aspose OCR Java. Pelajari + cara memuat gambar untuk OCR, mengaktifkan bahasa, dan menerapkan koreksi ejaan + agresif dalam beberapa langkah. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: id +og_description: Tingkatkan akurasi OCR secara instan dengan Aspose OCR Java. Panduan + ini menunjukkan cara memuat gambar untuk OCR, mengaktifkan bahasa, dan menggunakan + koreksi ejaan agresif. +og_title: Tingkatkan Akurasi OCR di Java – Tutorial Aspose OCR Langkah demi Langkah +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Tingkatkan Akurasi OCR di Java – Panduan Lengkap Aspose OCR +url: /id/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Meningkatkan Akurasi OCR di Java – Panduan Lengkap Aspose OCR + +Pernah bertanya-tanya mengapa hasil OCR Anda terlihat seperti tulisan tangan balita? Jika Anda berjuang dengan huruf yang hilang, kata yang salah, atau sekadar teks yang tidak dapat dibaca, Anda tidak sendirian. **Meningkatkan akurasi OCR** adalah hal pertama yang dicari kebanyakan pengembang ketika ekstraksi teks mereka terasa tidak dapat diandalkan. + +Dalam tutorial ini kami akan membahas solusi praktis yang tidak hanya **load image for OCR** tetapi juga memanfaatkan mesin koreksi ejaan bawaan Aspose untuk meningkatkan kualitas. Pada akhir tutorial Anda akan memiliki program Java siap‑jalankan yang mengenali teks bahasa Inggris + Prancis dengan koreksi agresif—tanpa kamus eksternal. + +## Apa yang Akan Anda Pelajari + +- Cara **load image for OCR** menggunakan `ImageStream` milik Aspose. +- Mengapa mengaktifkan bahasa yang tepat penting untuk akurasi. +- Dampak koreksi ejaan agresif pada dokumen multibahasa. +- Contoh kode lengkap yang dapat dijalankan dan dapat disisipkan ke proyek Maven/Gradle mana pun. +- Tips, jebakan, dan ide langkah selanjutnya untuk menskalakan pendekatan ini. + +> **Prasyarat** – Java 8 atau lebih baru, JAR Aspose.OCR for Java terbaru (v23.12 atau lebih tinggi), dan file gambar (`multilingual.png`) yang berisi teks bahasa Inggris dan Prancis. Itu saja—tanpa model atau API tambahan. + +--- + +## Meningkatkan Akurasi OCR: Konfigurasi Mesin Aspose OCR + +Inti dari setiap pipeline OCR adalah konfigurasi mesin. Dengan memberi tahu Aspose secara tepat apa yang Anda harapkan, Anda memberi mesin peluang terbaik untuk menghasilkan output yang benar. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Mengapa ini penting:** +- **Engine instance** – `OcrEngine` menyimpan semua pengaturan; membuat instance baru menghindari “state bleed‑over” dari proses sebelumnya. +- **Image loading** – Menggunakan `ImageStream.fromFile` adalah cara paling sederhana untuk **load image for OCR**. Ia mendukung PNG, JPEG, BMP, dan TIFF secara langsung. +- **Language flags** – Mengaktifkan English + French memberi tahu recogniser untuk menggunakan set karakter dan model bahasa yang sesuai, yang saja dapat meningkatkan akurasi sebesar 10‑15 %. +- **Aggressive spell correction** – Menetapkan `SpellCorrectionLevel.AGGRESSIVE` memaksa kamus internal menulis ulang kata‑kata yang diragukan, sebuah tuas kunci ketika Anda perlu **improve OCR accuracy** pada pemindaian yang berisik. + +--- + +## Load Image for OCR – Menetapkan File Sumber + +Sebelum mesin dapat melakukan apa pun, ia membutuhkan bitmap. Jika Anda memberinya aliran yang rusak atau jalur yang salah, Anda akan mendapatkan pengecualian lebih cepat daripada Anda dapat mengucapkan “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Tips pro:** Jika Anda memproses gambar yang diunggah pengguna, bungkus logika pemuatan dalam blok try‑catch dan validasi ukuran/format file terlebih dahulu. Ini mencegah mesin tersendat pada PDF besar atau format yang tidak didukung. + +--- + +## Aktifkan Banyak Bahasa untuk Pengakuan yang Lebih Baik + +Sebagian besar pustaka OCR secara default hanya mendukung bahasa Inggris. Ketika dokumen Anda mencampur bahasa, Anda akan melihat lonjakan karakter yang tidak dikenali. Aspose membuatnya mudah untuk menyalakan bahasa tambahan. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Mengapa mengaktifkan lebih dari satu bahasa?** +- **Character set expansion** – Bahasa Prancis mencakup huruf beraksen seperti “é” dan “ç”. Tanpa flag Prancis, huruf‑huruf tersebut menjadi “e” atau “c”, yang kemudian membingungkan korektor ejaan. +- **Contextual hints** – Mesin OCR menggunakan model bahasa untuk memprediksi batas kata; model bilingual mengurangi pemisahan kata yang keliru. + +--- + +## Terapkan Koreksi Ejaan Agresif + +Koreksi ejaan bukan sekadar “nice‑to‑have”; ia menjadi pengubah permainan ketika Anda perlu **improve OCR accuracy** pada pemindaian ber kualitas rendah. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Tingkatan secara sekilas + +| Level | Perilaku | +|------------|-----------------------------------------------| +| **NONE** | Tanpa koreksi – hanya output mentah mesin. | +| **LIGHT** | Memperbaiki typo jelas, risiko over‑correction rendah. | +| **AGGRESSIVE** | Menerapkan pencarian kamus secara agresif; terbaik untuk gambar berisik. | + +**Peringatan:** Mode agresif dapat menulis ulang nama proper yang sah (misalnya, “McDonald” → “Mcdonald”). Jika domain Anda mengandung banyak nama, pertimbangkan filter pasca‑pemrosesan. + +--- + +## Jalankan Pengakuan dan Verifikasi Output + +Sekarang semua sudah disiapkan, saatnya membiarkan Aspose melakukan pekerjaan berat. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Output yang Diharapkan (contoh) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Jika Anda melihat teks yang tidak dapat dibaca, periksa kembali: + +1. Kualitas gambar (gambar blur atau dpi rendah mengurangi akurasi). +2. Flag bahasa – jika Prancis tidak diaktifkan, aksen akan hilang. +3. Tingkat koreksi ejaan – coba `LIGHT` jika Anda melihat over‑correction. + +--- + +## Contoh Lengkap yang Berfungsi (Semua Langkah dalam Satu File) + +Berikut adalah program lengkap yang dapat Anda kompilasi dan jalankan langsung. Simpan sebagai `SpellCorrectionTutorial.java`, sesuaikan jalur gambar, dan eksekusi dengan `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Kompilasi & jalankan: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Anda seharusnya melihat teks multibahasa yang telah dikoreksi tercetak di konsol. + +--- + +## Jebakan Umum & Cara Menghindarinya + +| Gejala | Penyebab Kemungkinan | Solusi | +|--------|----------------------|--------| +| **Output kosong** | Jalur gambar salah atau file tidak dapat dibaca | Verifikasi jalur `ImageStream.fromFile`; tambahkan pengecekan keberadaan file. | +| **Aksen hilang** | Bahasa Prancis tidak diaktifkan | Panggil `ocrEngine.getLanguage().setFrench(true)`. | +| **Karakter sampah** | Gambar resolusi rendah (< 150 dpi) | Perbesar atau pindai ulang dengan DPI lebih tinggi; pertimbangkan pra‑pemrosesan dengan pustaka peningkatan gambar. | +| **Nama terlalu dikoreksi** | Koreksi ejaan agresif pada nama proper | Pasca‑proses dengan whitelist nama yang dikenal atau beralih ke level `LIGHT`. | + +--- + +## Langkah Selanjutnya: Menskalakan Pipeline OCR Anda + +- **Pemrosesan batch:** Loop melalui direktori gambar, gunakan satu instance `OcrEngine` untuk meningkatkan performa. +- **Ekstraksi PDF:** Gunakan Aspose.PDF untuk mengonversi tiap halaman menjadi gambar, lalu beri ke mesin OCR. +- **Kamus khusus:** Jika domain Anda menggunakan terminologi khusus (medis, hukum), masukkan daftar kata khusus ke `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Paralelisme:** `ForkJoinPool` Java dapat menjalankan beberapa tugas OCR secara bersamaan, tetapi perhatikan penggunaan memori karena tiap engine menyimpan buffer gambar. + +--- + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Tangkapan layar meningkatkan akurasi OCR yang menampilkan teks multibahasa yang telah dikoreksi"} + +--- + +## Kesimpulan + +Kami baru saja **meningkatkan OCR + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/indonesian/java/ocr-operations/_index.md b/ocr/indonesian/java/ocr-operations/_index.md index 3baaffc48..a02d9a377 100644 --- a/ocr/indonesian/java/ocr-operations/_index.md +++ b/ocr/indonesian/java/ocr-operations/_index.md @@ -81,6 +81,10 @@ Buka kekuatan OCR di Java dengan Aspose.OCR. Mengenali teks dalam dokumen PDF de Buka pengenalan teks yang kuat di Java dengan Aspose.OCR. Mengenali teks dalam gambar TIFF dengan mudah. Unduh sekarang untuk pengalaman OCR yang mulus. ### [Mengenali Teks Gambar dengan Aspose OCR – Tutorial OCR Java Lengkap](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Panduan lengkap mengenali teks pada gambar menggunakan Aspose OCR dengan Java, mencakup langkah‑langkah detail untuk hasil akurat. +### [Contoh Aspose OCR Java: Ekstrak Teks dari Wilayah](./aspose-ocr-java-example-extract-text-from-a-region/) +Pelajari cara mengekstrak teks dari area tertentu pada gambar menggunakan Aspose OCR untuk Java dengan contoh praktis. +### [Ekstrak Teks dari HEIC – Panduan Java Lengkap](./extract-text-from-heic-complete-java-guide/) +Panduan lengkap mengekstrak teks dari file HEIC menggunakan Aspose.OCR untuk Java dengan langkah‑langkah praktis. ## Pertanyaan yang Sering Diajukan diff --git a/ocr/indonesian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/indonesian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..671d4452d --- /dev/null +++ b/ocr/indonesian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: Contoh Aspose OCR Java menunjukkan cara memuat gambar untuk OCR dan mengekstrak + teks dari sebuah area hanya dalam beberapa baris kode. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: id +og_description: Contoh Aspose OCR Java menunjukkan cara memuat gambar untuk OCR dan + mengekstrak teks dari wilayah tertentu, sangat cocok untuk pemrosesan faktur. +og_title: Contoh OCR Aspose Java – Ekstraksi Teks Wilayah +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Contoh OCR Aspose Java: Ekstrak Teks dari Wilayah' +url: /id/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Contoh Aspose OCR Java: Ekstrak Teks dari Sebuah Wilayah + +Mencari **contoh Aspose OCR Java** yang memungkinkan Anda mengambil hanya bagian yang Anda butuhkan dari sebuah gambar? Dalam panduan ini kami akan membahas **memuat gambar untuk OCR** dan **mengekstrak teks dari sebuah wilayah**, sempurna untuk nomor faktur, bidang formulir, atau potongan data apa pun yang tersembunyi di dalam gambar yang lebih besar. + +Anda mungkin bertanya-tanya mengapa harus membatasi OCR ke sebuah persegi panjang alih-alih memindai seluruh halaman. Jawaban singkatnya: kecepatan dan akurasi. Ketika mesin hanya melihat potongan yang ditentukan, ia melewatkan noise yang tidak relevan, berjalan lebih cepat, dan sering menghasilkan hasil yang lebih bersih. Pada akhir tutorial ini Anda akan memiliki program Java yang berdiri sendiri yang melakukan hal tersebut, plus beberapa tip untuk menghindari jebakan umum yang sering membuat pemula tersandung. + +## Apa yang Anda Butuhkan + +- **Java Development Kit (JDK) 11** atau yang lebih baru terpasang. +- **Aspose.OCR for Java** library (Anda dapat mengambil JAR terbaru dari repositori Maven Central atau portal unduhan Aspose). +- Sebuah file gambar yang berisi teks yang ingin Anda baca – untuk demo kami akan menggunakan `invoice.png`, yang menyimpan nomor faktur di dekat sudut kanan atas. +- IDE favorit atau editor teks sederhana plus terminal; alat build apa saja (Maven, Gradle, atau plain `javac`) dapat digunakan. + +Itu saja. Tidak ada mesin OCR tambahan, tidak ada binary native, hanya Java murni dan Aspose. + +![Screenshot contoh Aspose OCR Java](/images/aspose-ocr-java-example.png "Contoh Aspose OCR Java menampilkan ekstraksi wilayah") + +## Contoh Aspose OCR Java – Inisialisasi Mesin OCR + +Hal pertama yang dibutuhkan dalam alur kerja OCR apa pun adalah sebuah instance mesin. Aspose menyediakan kelas ringan `OcrEngine` yang menangani segala hal mulai dari pemuatan gambar hingga pemilihan bahasa. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Mengapa ini penting:** Membuat mesin di awal memberi Anda objek bersih untuk dikonfigurasi. Anda dapat menggunakan kembali `OcrEngine` yang sama untuk beberapa gambar jika Anda memproses batch, yang menghemat memori dan waktu inisialisasi. + +## Muat Gambar untuk OCR + +Selanjutnya kami memberi tahu mesin gambar mana yang akan dipindai. Aspose menyediakan helper `ImageStream.fromFile`, yang menyembunyikan boilerplate `FileInputStream` tingkat rendah. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tip:** Ganti `YOUR_DIRECTORY` dengan path absolut atau relatif yang mengarah ke lokasi Anda menyimpan `invoice.png`. Jika file tidak dapat ditemukan, Aspose akan melempar `IOException`, jadi Anda mungkin ingin membungkus ini dalam blok try‑catch untuk kode produksi. + +## Definisikan dan Ekstrak Teks dari Sebuah Wilayah + +Sekarang masuk bintang pertunjukan: persegi panjang yang memberi tahu mesin di mana harus melihat. Konstruktor `java.awt.Rectangle` menerima `(x, y, width, height)` – semua diukur dalam piksel. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Cara kerjanya:** Dengan memanggil `setRegion`, Anda membatasi pemindaian OCR ke potongan selebar 300 piksel yang dimulai 120 piksel dari tepi kiri dan 250 piksel dari atas. Sesuaikan angka-angka ini agar cocok dengan tata letak Anda; cara cepat menemukannya adalah membuka gambar di editor grafis apa pun yang menampilkan koordinat piksel. + +## Aktifkan Bahasa dan Jalankan Pengenalan + +Aspose OCR mendukung puluhan bahasa, tetapi untuk nomor faktur kami hanya memerlukan Bahasa Inggris. Mengaktifkan bahasa yang tepat secara dramatis mengurangi false positive. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Mengapa hanya mengaktifkan Bahasa Inggris?** Mesin OCR akan mencoba mencocokkan karakter dari setiap set bahasa yang diaktifkan, yang dapat membingungkannya ketika teks hanya alfanumerik sederhana. Membatasi ruang lingkup bahasa meningkatkan baik kecepatan maupun presisi. + +### Output yang Diharapkan + +Ketika semuanya selaras, Anda akan melihat sesuatu seperti: + +``` +Extracted region text: INV-12345 +``` + +Jika persegi panjang berada beberapa piksel di luar posisi yang tepat, output mungkin berantakan atau kosong. Itu adalah pengecekan sanity yang mudah: jalankan program, lihat konsol, dan pastikan teks cocok dengan yang Anda lihat di gambar. + +## Jalankan Kode dan Verifikasi Output + +Dengan asumsi Anda menggunakan Maven, tambahkan dependensi Aspose OCR ke `pom.xml` Anda: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Kompilasi dan eksekusi: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Atau, jika Anda lebih suka plain `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Anda seharusnya melihat baris **Extracted region text** tercetak di konsol. Jika Anda mendapatkan “OCR recognition failed,” periksa kembali path file dan pastikan wilayah tersebut memang berisi karakter yang dapat dibaca. + +## Kasus Tepi & Variasi Umum + +| Situation | What to Change | +|-----------|----------------| +| **Multiple languages** (e.g., English + Spanish) | Call `ocrEngine.getLanguage().setSpanish(true);` alongside English. | +| **Region outside image bounds** | Aspose will silently clip the rectangle, but you’ll lose data. Use `ImageInfo` (`ocrEngine.getImage().getWidth()`) to verify dimensions before setting the region. | +| **Dynamic invoices** (different layouts) | Consider running a lightweight pre‑scan on the whole image to locate keywords like “Invoice #” and then compute the rectangle programmatically. | +| **Higher DPI images** | Increase `ocrEngine.getImage().setResolution(300);` for better accuracy on scanned documents. | +| **Performance tuning** | Disable unnecessary languages, keep the region as small as possible, and reuse a single `OcrEngine` instance across many files. | + +## Pro Tips Dari Pengalaman + +- **Pro tip:** Jika Anda hanya membutuhkan digit (umum untuk nomor faktur), aktifkan mode numerik dengan `ocrEngine.getLanguage().setDigits(true);`. Ini menghilangkan noise alfabetik. +- **Watch out for:** PNG transparan. Aspose kadang‑kadang salah menafsirkan kanal alfa; mengonversi gambar ke JPEG dengan latar belakang solid terlebih dahulu dapat menyelesaikan output kosong yang aneh. +- **Remember:** Persegi panjang menggunakan sistem koordinat asli gambar, bukan skala UI apa pun yang mungkin Anda lihat di layar. Selalu uji dengan file tepat yang akan Anda proses di produksi. + +## Apa Selanjutnya? + +Sekarang Anda memiliki **contoh Aspose OCR Java** yang solid untuk ekstraksi berbasis wilayah, Anda dapat memperluasnya ke beberapa arah berguna: + +- **Batch processing:** Loop over a folder of invoices, reusing the same `OcrEngine` to improve throughput. +- **Data validation:** Pipe the extracted text through a regex like `INV-\\d{5}` to ensure you captured a valid invoice number. +- **Integration with PDF:** Use Aspose.PDF to overlay the extracted text back onto the original document for audit trails. +- **Cloud deployment:** Wrap the code in a lightweight REST service (Spring Boot) so other systems can call it on demand. + +Setiap langkah ini secara alami melibatkan konsep inti yang sama—**load image for OCR**, **extract text from a region**, dan menangani hasilnya—sehingga Anda akan menemukan transisinya tanpa hambatan. + +--- + +*Selamat coding! Jika Anda mengalami kendala, tinggalkan komentar di bawah atau periksa forum Aspose dimana komunitas berbagi penyesuaian dunia nyata untuk tata letak yang rumit.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/indonesian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/indonesian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..cacd3cdb3 --- /dev/null +++ b/ocr/indonesian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Ekstrak teks dari gambar HEIC menggunakan Aspose OCR di Java. Pelajari + cara mengonversi HEIC menjadi teks dengan cepat melalui contoh langkah demi langkah. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: id +og_description: Ekstrak teks dari gambar HEIC dengan Aspose OCR di Java. Panduan ini + menunjukkan cara mengonversi HEIC menjadi teks dalam hitungan menit. +og_title: Ekstrak Teks dari HEIC – Tutorial OCR Java +tags: +- OCR +- Java +- Aspose +title: Ekstrak Teks dari HEIC – Panduan Java Lengkap +url: /id/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ekstrak Teks dari HEIC – Panduan Lengkap Java + +Pernah bertanya-tanya bagaimana cara **mengekstrak teks dari HEIC** tanpa harus mengonversinya terlebih dahulu ke JPEG atau PNG? Anda tidak sendirian. Banyak pengembang mengalami kebuntuan ketika sebuah aplikasi mobile memberikan mereka foto `.heic` dan mereka membutuhkan teks yang tertanam untuk pengindeksan atau analitik. Kabar baiknya? Dengan Aspose OCR untuk Java Anda dapat **mengekstrak teks dari HEIC** secara langsung—tanpa langkah konversi tambahan. + +Dalam tutorial ini kami juga akan menunjukkan cara **mengonversi HEIC ke teks** dalam satu alur bersih, sehingga Anda dapat menyalin kode ke proyek Java mana pun dan mulai menarik string dari gambar ber‑efisiensi tinggi tersebut hari ini. + +![contoh ekstraksi teks dari heic](https://example.com/placeholder.png "contoh ekstraksi teks dari heic") + +## Apa yang Akan Anda Pelajari + +- Cara menyiapkan Aspose OCR dalam proyek Maven/Gradle. +- Kode Java yang tepat untuk **mengekstrak teks dari HEIC** pada gambar. +- Mengapa pendekatan ini lebih cepat dan kurang rawan kesalahan dibandingkan alur kerja dua langkah `convert‑then‑OCR`. +- Jebakan umum (misalnya, paket bahasa yang hilang) dan cara menghindarinya. +- Tips untuk menskalakan solusi dalam skenario pemrosesan batch. + +Pada akhir panduan Anda akan dapat **mengonversi HEIC ke teks** dengan hanya beberapa baris kode, dan Anda akan memahami “mengapa” di balik setiap langkah. + +--- + +## Prasyarat + +Sebelum kita mulai, pastikan Anda memiliki: + +1. **Java 8 atau lebih tinggi** – Aspose OCR berjalan pada JDK modern apa pun. +2. **Maven atau Gradle** – untuk mengunduh library Aspose OCR secara otomatis. +3. Sebuah **gambar HEIC** yang ingin Anda uji (ganti namanya menjadi `sample.heic` dan letakkan di lokasi yang dapat dijangkau). +4. Opsional namun berguna: IDE seperti IntelliJ IDEA atau VS Code. + +Tidak ada alat eksternal lain yang diperlukan; library menangani format HEIC secara native. + +--- + +## Langkah 1 – Tambahkan Aspose OCR ke Proyek Anda + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Pro tip:** Jaga nomor versi tetap sinkron dengan rilis resmi Aspose; versi yang lebih baru menambahkan dukungan untuk varian HEIC tambahan dan meningkatkan akurasi bahasa. + +--- + +## Langkah 2 – Inisialisasi OCR Engine untuk **Mengekstrak Teks dari HEIC** + +Membuat instance `OcrEngine` adalah langkah konkret pertama menuju mengekstrak teks dari HEIC. Engine mengabstraksi semua decoding tingkat‑rendah, sehingga Anda tidak perlu khawatir tentang format kontainer HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Mengapa ini penting:** +HEIC adalah format gambar modern berbasis kontainer HEIF. Library OCR tradisional mengharapkan JPEG/PNG, memaksa Anda menjalankan langkah konversi terpisah yang dapat menurunkan kualitas. Dukungan native Aspose OCR memungkinkan Anda **mengekstrak teks dari HEIC** dalam satu langkah, mempertahankan data piksel asli dan menghemat siklus CPU. + +--- + +## Langkah 3 – Aktifkan Bahasa yang Diinginkan + +Secara default engine hanya mencari bahasa Inggris. Jika Anda perlu **mengonversi HEIC ke teks** dalam bahasa lain, cukup aktifkan flag yang sesuai. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Mengapa mengaktifkan bahasa secara eksplisit?** +> Paket bahasa dimuat sesuai permintaan. Mengaktifkan hanya yang Anda perlukan mengurangi jejak memori dan mempercepat pengenalan. + +--- + +## Langkah 4 – Jalankan Proses Pengenalan + +Sekarang kita benar‑benar meminta engine membaca gambar dan menghasilkan string. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Output yang diharapkan** (asumsikan gambar berisi frasa “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Jika gambar kosong atau teks tidak terbaca, engine mengembalikan `false`, dan Anda akan melihat pesan fallback. + +--- + +## Langkah 5 – Menangani Kasus Pinggir & Pertanyaan Umum + +### Bagaimana jika file HEIC rusak? + +Aspose OCR melempar `IOException` ketika tidak dapat mendekode kontainer. Bungkus pemanggilan dalam blok `try‑catch` dan log error untuk inspeksi nanti. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Bisakah saya memproses banyak file HEIC secara batch? + +Tentu saja. Cukup lakukan loop pada sebuah direktori dan gunakan kembali instance `OcrEngine` yang sama untuk menghindari overhead inisialisasi berulang. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Apakah ini juga **mengonversi HEIC ke teks** untuk skrip non‑Latin? + +Ya—Aspose OCR mendukung Arab, Cina, Cyrillic, dan banyak bahasa lainnya. Cukup aktifkan flag bahasa yang bersangkutan (misalnya, `engine.getLanguage().setChineseSimplified(true);`). Ingat untuk menambahkan file font yang tepat jika Anda menjalankan pada server headless. + +--- + +## Langkah 6 – Verifikasi Hasil Secara Programatik + +Dalam pipeline produksi Anda sering perlu memastikan bahwa output OCR memenuhi ambang kualitas tertentu. Cara cepatnya adalah menghitung skor kepercayaan (tersedia pada versi terbaru) atau cukup memeriksa panjang string yang dikembalikan. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Contoh Kerja Lengkap + +Berikut adalah kelas Java lengkap yang siap dijalankan dan menggabungkan semua langkah di atas. Tempelkan ke file bernama `HeifExample.java`, sesuaikan path ke file HEIC Anda, dan jalankan `javac` + `java` seperti biasa. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Jalankan: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Anda akan melihat string yang diekstrak dicetak ke konsol, mengonfirmasi bahwa Anda telah berhasil **mengonversi HEIC ke teks**. + +--- + +## Kesimpulan + +Kami telah membahas semua yang Anda perlukan untuk **mengekstrak teks dari HEIC** menggunakan Aspose OCR di Java. Dari menambahkan library hingga menangani kasus pinggir, panduan ini menunjukkan solusi bersih satu‑langkah yang menghilangkan kebutuhan akan utilitas konversi terpisah. + +Sekarang Anda dapat: + +- **Mengonversi HEIC ke teks** secara langsung dalam layanan web, back‑end mobile, atau pekerjaan batch. +- Perluas dukungan ke bahasa lain dengan satu baris konfigurasi. +- Skalakan proses dengan menggunakan kembali `OcrEngine` yang sama untuk banyak file. + +Selanjutnya, Anda mungkin ingin mengeksplor **menyematkan hasil OCR ke indeks yang dapat dicari** (mis., Elasticsearch) atau **menambahkan pra‑pemrosesan gambar** untuk meningkatkan akurasi pada foto HEIC dengan kontras rendah. Langit adalah batasnya—coba, ukur, dan iterasi. + +Ada pertanyaan atau menemukan file HEIC yang sulit? Tinggalkan komentar di bawah, dan selamat coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/italian/java/advanced-ocr-techniques/_index.md b/ocr/italian/java/advanced-ocr-techniques/_index.md index 7b7c848e6..c530def34 100644 --- a/ocr/italian/java/advanced-ocr-techniques/_index.md +++ b/ocr/italian/java/advanced-ocr-techniques/_index.md @@ -45,25 +45,19 @@ Potenzia le tue applicazioni Java con Aspose.OCR per un riconoscimento preciso d Estrai facilmente il testo dalle immagini specificando i caratteri consentiti con Aspose.OCR per Java. Segui la nostra guida passo passo per un'integrazione efficiente, garantendo un'esperienza di riconoscimento del testo senza interruzioni. Migliora le tue applicazioni Java con le funzionalità Aspose.OCR. -## Conclusione - -Con Aspose.OCR per Java, padroneggiare le tecniche OCR avanzate non è mai stato così facile. Tuffati in questi tutorial e sblocca tutto il potenziale del riconoscimento del testo nei tuoi progetti Java. Migliora le tue applicazioni con integrazione perfetta, elevata precisione e funzionalità versatili di estrazione del testo. Scaricalo ora e fai il primo passo verso l'eccellenza dell'OCR con Aspose.OCR per Java! -## Tutorial sulle tecniche OCR avanzate -### [Esecuzione dell'OCR su BufferedImage in Aspose.OCR per Java](./perform-ocr-buffered-image/) -Esegui l'OCR su BufferedImage senza sforzo con Aspose.OCR per Java. Estrai testo dalle immagini senza problemi. Scaricalo ora per un'esperienza versatile di riconoscimento del testo. -### [Esecuzione dell'OCR sull'immagine dall'URL in Aspose.OCR per Java](./perform-ocr-image-from-url/) -Sblocca l'estrazione perfetta del testo dell'immagine in Java con Aspose.OCR. OCR ad alta precisione con facile integrazione. -### [Esecuzione dell'OCR su una pagina specifica in Aspose.OCR](./perform-ocr-on-page/) -Sblocca la potenza di Aspose.OCR per Java con la nostra guida passo passo sull'esecuzione dell'OCR su pagine specifiche. Estrai testo senza sforzo dalle immagini e migliora i tuoi progetti Java. -### [Preparazione dei rettangoli per l'OCR in Aspose.OCR](./prepare-rectangles-for-ocr/) -Sblocca la potenza del riconoscimento del testo con Aspose.OCR per Java. Segui la nostra guida passo passo per un'integrazione perfetta. Migliora le tue applicazioni Java con efficienti funzionalità OCR. -### [Riconoscimento delle linee in Aspose.OCR per Java](./recognize-lines/) -Potenzia le tue applicazioni Java con Aspose.OCR per un riconoscimento preciso del testo. Facile integrazione, alta precisione. -### [Specifica dei caratteri consentiti in Aspose.OCR](./specify-allowed-characters/) -Sblocca l'estrazione del testo dalle immagini senza problemi con Aspose.OCR per Java. Segui la nostra guida passo passo per un'integrazione efficiente. +## [Come abilitare GPU per OCR Java – Tutorial completo](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Scopri come attivare l'accelerazione GPU per l'OCR in Java con Aspose.OCR, migliorando velocità e precisione. + +### [Creare un pool di thread fisso per OCR parallelo in Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Scopri come utilizzare un pool di thread fisso per eseguire OCR in parallelo, migliorando le prestazioni delle tue applicazioni Java. + +## [Migliora l'accuratezza OCR in Java – Guida completa Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) + +Scopri come aumentare la precisione dell'OCR in Java con Aspose OCR, seguendo questa guida dettagliata passo passo. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/italian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/italian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..abc233741 --- /dev/null +++ b/ocr/italian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Crea un pool di thread fisso in Java per estrarre rapidamente il testo + dalle immagini. Scopri come eseguire l'OCR, convertire l'immagine in testo e migliorare + le prestazioni con l'elaborazione OCR parallela. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: it +og_description: Crea un pool di thread fisso in Java per estrarre rapidamente il testo + dalle immagini. Scopri come eseguire l'OCR, convertire l'immagine in testo e aumentare + le prestazioni con l'elaborazione OCR parallela. +og_title: Crea un pool di thread fisso per OCR parallelo in Java +tags: +- Java +- OCR +- Multithreading +title: Crea un pool di thread fisso per OCR parallelo in Java +url: /it/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea un Thread Pool Fisso per l'OCR Parallelo in Java + +Ti è mai capitato di dover **creare un thread pool fisso** per velocizzare i lavori di OCR, ma non sapevi da dove cominciare? Non sei l'unico. In molti progetti con molte immagini, il collo di bottiglia è la chiamata OCR a thread singolo, e la soluzione è sorprendentemente semplice: avviare un pool di thread lavoratori e farli elaborare i file in parallelo. + +In questo tutorial imparerai a **estrarre testo dalle immagini** usando Aspose OCR, a **eseguire OCR** in modo efficiente e a **convertire immagine in testo** senza sovraccaricare la CPU. Alla fine avrai un programma Java pronto all'uso che dimostra **l'elaborazione OCR parallela** su una manciata di immagini di esempio. + +## Cosa Costruirai + +Metteremo insieme una piccola applicazione console che: + +* Legge un elenco di percorsi di immagine (PNG, JPG, TIFF, BMP). +* **Crea un thread pool fisso** dimensionato al numero di core CPU. +* Invia un compito OCR per ogni immagine. +* Raccoglie il testo riconosciuto e lo stampa sulla console. +* Chiude l'esecutore in modo pulito. + +Nessuno strumento di build esterno, nessun framework sofisticato—solo Java puro e la libreria Aspose OCR. Se hai Java 8+ e un IDE decente, sei pronto. + +## Prerequisiti + +* **Java Development Kit (JDK) 8 o superiore** – il codice usa le lambda, quindi le versioni più vecchie non compilerebbero. +* **Aspose OCR per Java** – scarica il JAR dal sito Aspose o includilo via Maven (`com.aspose:aspose-ocr`). +* Una cartella con alcune immagini di test (il codice punta a `YOUR_DIRECTORY`). +* Familiarità di base con la concorrenza in Java (spiegheremo il resto). + +> *Pro tip:* Se usi Maven, aggiungi la dipendenza al tuo `pom.xml` e lascia che l'IDE gestisca il classpath. + +--- + +## Passo 1: Aggiungi le Importazioni Necessarie + +Per prima cosa, porta le classi di cui abbiamo bisogno nello scope. Non è solo boilerplate; ogni importazione indica alla JVM dove trovare il motore OCR, le utility per la gestione delle immagini e gli strumenti di concorrenza che ci permettono di **creare un thread pool fisso**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – l'API OCR di base. +* `java.util.*` – collezioni per memorizzare i percorsi delle immagini e i risultati. +* `java.util.concurrent.*` – il pacchetto di concorrenza che contiene `ExecutorService` e `Future`. + +--- + +## Passo 2: Definisci le Immagini da Elaborare + +Successivamente, elenchiamo i file da cui vogliamo **estrarre testo dalle immagini**. Usare `Arrays.asList` mantiene il codice conciso e ci permette di sostituire la tua directory senza toccare il resto della logica. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Sentiti libero di aggiungere altre voci; il thread pool si adatterà automaticamente in base al numero di core CPU disponibili. + +--- + +## Passo 3: **Crea un Thread Pool Fisso** in Base ai Core CPU + +Ecco il cuore del tutorial. Chiediamo al runtime quanti core sono disponibili e chiediamo alla factory `Executors` di darci un pool di esattamente quella dimensione. Perché fisso? Perché un numero prevedibile di thread evita la temuta “esplosione di thread” che può affamare le risorse del sistema operativo. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` restituisce il conteggio dei core logici (inclusi gli hyper‑thread). +* `newFixedThreadPool(coreCount)` garantisce che non superiamo mai la capacità della CPU, il modo più sicuro per **eseguire OCR** in parallelo. + +--- + +## Passo 4: Invia un Compito OCR per Ogni Immagine + +Ora trasformiamo ogni percorso di file in un `Callable` che **esegue OCR**, riconosce il testo e restituisce il risultato. Nota che istanziamo un nuovo `OcrEngine` all'interno della lambda—questo evita la condivisione non thread‑safe dello stato del motore. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Ogni chiamata a `submit` passa la lambda al pool, che la programma su un thread inattivo. +* Gli oggetti `Future` ci permettono di recuperare il testo riconosciuto in seguito, preservando l'ordine se necessario. + +--- + +## Passo 5: Recupera e Visualizza il Testo Riconosciuto + +Una volta che tutti i compiti sono in coda, iteriamo semplicemente sulla lista di `Future`, chiamando `get()` per bloccarci finché ogni lavoro OCR non termina. Qui è dove il passo **convertire immagine in testo** diventa visibile: la chiamata `engine.getText()` restituisce la stringa grezza. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Un tipico output sulla console appare così: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Se un file fallisce (ad esempio perché è corrotto), vedrai una riga che inizia con `Failed:` seguita dal percorso—utile per un rapido debug. + +--- + +## Passo 6: Pulisci il Servizio Executor + +Non dimenticare mai di chiudere il pool; altrimenti la JVM potrebbe rimanere in esecuzione, pensando che ci siano ancora lavori da fare. Una chiusura graduale permette ai task in corso di terminare prima che il processo esca. + +```java +executor.shutdown(); +``` + +Puoi anche chiamare `awaitTermination` se devi imporre un timeout, ma per la maggior parte delle utility da riga di comando un semplice `shutdown()` è sufficiente. + +--- + +## Esempio Completo Funzionante + +Di seguito trovi il programma completo, pronto per essere eseguito. Copialo‑incollalo in un file chiamato `ParallelOcrTutorial.java`, aggiusta i percorsi delle immagini e compila/esegui con `javac` + `java` come faresti normalmente. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Risultato atteso:** il contenuto testuale di ogni immagine stampato sulla console, nello stesso ordine della lista `imagePaths`. Se qualche immagine non può essere elaborata, vedrai un avviso di errore al posto di una riga vuota. + +--- + +## Domande Frequenti & Casi Limite + +### E se ho più immagini dei thread? + +Il thread pool fisso accoderà automaticamente i task in eccesso. Non appena un thread termina il suo lavoro OCR corrente, ne prende in carico un altro. Questo comportamento di accodamento è l’essenza dell'**elaborazione OCR parallela**—ottieni il massimo throughput senza sovraccaricare la CPU. + +### Posso cambiare la lingua? + +Assolutamente. Sostituisci `engine.getLanguage().setEnglish(true);` con il flag della lingua desiderata, ad esempio `setFrench(true)` o abilita più lingue chiamando diversi setter prima di `recognize()`. + +### Come gestisco immagini molto grandi? + +File di grandi dimensioni possono consumare molta memoria per thread. Se noti `OutOfMemoryError`, considera di ridimensionare l'immagine prima di passarla al motore, oppure aumenta la dimensione dell'heap con `-Xmx`. Un altro approccio è usare un **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/italian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/italian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..4123d437f --- /dev/null +++ b/ocr/italian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-05-03 +description: come abilitare rapidamente la GPU per Java OCR – impara a estrarre testo + dalle immagini con Aspose OCR. Incluso tutorial completo di OCR Java. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: it +og_description: come abilitare la GPU per Java OCR in pochi minuti. Questo tutorial + mostra come estrarre testo dalle immagini usando un tutorial Java OCR con accelerazione + GPU. +og_title: how to enable gpu for Java OCR – Step‑by‑Step Guide +tags: +- Java +- OCR +- GPU +- Aspose +title: come abilitare la GPU per Java OCR – Tutorial completo +url: /it/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# come abilitare gpu per Java OCR – Tutorial Completo + +Ti sei mai chiesto **come abilitare gpu** quando provi a estrarre testo da un'immagine? Se hai mai dovuto eseguire OCR su una scansione ad alta risoluzione e hai sentito la CPU rallentare al punto di fermarsi, non sei solo. In questa guida percorreremo un **java ocr tutorial** che non solo mostra come estrarre testo, ma dimostra anche il modo più veloce per **recognize text image java**‑style attivando il supporto GPU sperimentale. + +Inizieremo importando la libreria Aspose OCR, poi abiliteremo la GPU, caricheremo un'immagine di esempio e infine estrarremo la stringa riconosciuta dal file. Alla fine avrai uno snippet pronto all'uso da inserire in qualsiasi progetto Maven, e comprenderai perché la GPU è importante, quando potrebbe non aiutare e come risolvere i problemi più comuni. Nessuna documentazione esterna necessaria—tutto ciò che ti serve è qui. + +--- + +## Cosa Ti Serve + +- **Java Development Kit (JDK) 8+** – il codice funziona su qualsiasi JDK moderno. +- **Maven** (o Gradle) per scaricare la dipendenza Aspose OCR. +- Una **macchina compatibile con GPU** (una scheda NVIDIA con CUDA è l'ideale, ma l'API Aspose tornerà in modo elegante alla CPU). +- Un'immagine di esempio, ad esempio `sample-highres.png`, posizionata in una cartella a cui puoi fare riferimento. +- Un pizzico di curiosità sulle tecniche **image to text conversion java**. + +Se ti manca qualcosa, scarica il JDK da Oracle o OpenJDK, installa Maven e assicurati che il driver grafico sia aggiornato. Questo è tutto il lavoro preparatorio; il resto è puro Java. + +--- + +## Passo 1: Aggiungi Aspose OCR al Tuo Progetto + +Prima di tutto, abbiamo bisogno del motore OCR. Aspose fornisce un artefatto Maven pulito; basta inserire questo snippet nel tuo `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Se preferisci Gradle, l'equivalente è: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Una volta risolta la dipendenza, avrai accesso a `OcrEngine`, `ImageStream` e agli helper di lingua che rendono il **java ocr tutorial** indolore. + +--- + +## Passo 2: Come Abilitare GPU (Parola Chiave Principale in Azione) + +Ora arriviamo al nocciolo della questione: **come abilitare gpu** per il motore OCR. L'API Aspose espone un unico flag booleano—`setUseGpu(true)`. È sperimentale, ma su una buona scheda grafica vedrai il tempo di riconoscimento scendere drasticamente, specialmente per immagini grandi e ad alta risoluzione. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Suggerimento:** Se il tuo ambiente non dispone di una GPU compatibile, il flag verrà ignorato silenziosamente e il motore tornerà alla modalità CPU. Nessun crash, solo prestazioni più lente. + +--- + +## Passo 3: Carica l'Immagine da Elaborare + +Il motore OCR lavora con un `ImageStream`. Puntalo al file che desideri convertire da immagine a testo semplice. Ecco un modo compatto per farlo: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Assicurati che il percorso sia assoluto o relativo alla directory di lavoro del progetto. Se il file non viene trovato, otterrai un `IOException`—lo cattureremo più avanti. + +--- + +## Passo 4: Scegli la Lingua (Facoltativo ma Consigliato) + +Aspose OCR può gestire molti alfabeti, ma è consigliabile indicare quello che ti aspetti. Per l'inglese, è una riga: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Se ti servono francese o cinese, basta sostituire il flag (`setFrench(true)`, `setChineseSimplified(true)`, ecc.). Questo piccolo suggerimento spesso aumenta la precisione perché il motore può eliminare candidati di caratteri improbabili. + +--- + +## Passo 5: Recognize Text Image Java – Esegui il Motore + +Ora arriva il momento della verità: **recognize text image java** style. Chiamiamo `recognize()` e, se restituisce `true`, estraiamo la stringa risultante con `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +L'output sarà il testo grezzo estratto da `sample-highres.png`. Per un documento pulito, potresti voler post‑processare la stringa (rimuovere spazi bianchi, sostituire interruzioni di riga, ecc.). Ecco un rapido esempio: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Passo 6: Esempio Completo (Pronto per Copia‑Incolla) + +Di seguito trovi il **java ocr tutorial** completo che puoi compilare ed eseguire direttamente. Include la gestione degli errori e stampa l'output previsto. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Output previsto (esempio):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Se l'immagine contiene più righe, appariranno separate da caratteri di interruzione (`\n`). Il motore preserva il layout originale il più possibile. + +--- + +## Passo 7: Casi Limite, Consigli e Domande Frequenti + +### E se la GPU non viene rilevata? + +Aspose disabilita silenziosamente il supporto GPU quando non trova un dispositivo compatibile. Puoi verificare la modalità controllando il flag dopo l'inizializzazione: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Se stampa `false`, ricontrolla la versione del driver e che il runtime `CUDA` sia nel `PATH`. + +### La GPU aiuta con immagini piccole? + +Non sempre. L'overhead di trasferire un bitmap piccolo sulla GPU può superare il guadagno di velocità. Per immagini inferiori a 500 KB potresti addirittura notare un leggero rallentamento. In questi casi, imposta semplicemente `setUseGpu(false)`. + +### Come gestire documenti multilingua? + +Puoi abilitare più lingue contemporaneamente: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Il motore tenterà di abbinare caratteri da entrambi i set, utile per PDF bilingue. + +### Posso elaborare PDF direttamente? + +Aspose OCR lavora con stream di immagine, quindi dovrai rasterizzare ogni pagina PDF prima (ad esempio con Aspose PDF o PDFBox) e poi passare il `BufferedImage` risultante a `setImage`. + +--- + +## Riepilogo Visivo + +![come abilitare gpu per il motore OCR Java](/images/gpu-ocr.png "Diagramma che mostra la pipeline OCR accelerata dalla GPU") + +*Il diagramma illustra il flusso dal caricamento dell'immagine → OCR abilitato GPU → estrazione del testo.* + +--- + +## Conclusione + +Abbiamo coperto **come abilitare gpu** per un flusso di lavoro OCR in Java, attraversato un **java ocr tutorial** completo e dimostrato **image to text conversion java** in un esempio pratico pronto al copia‑incolla. Attivando un singolo flag, puoi risparmiare secondi—o addirittura minuti—nel tempo di elaborazione di scansioni grandi, rendendo le tue applicazioni più reattive. + +Cosa fare dopo? Prova a elaborare un batch di immagini in un ciclo, sperimenta con lingue diverse, o combina questo con Apache Tika per indicizzare automaticamente il testo estratto. Il cielo è il limite quando accoppi OCR accelerato da GPU con altre librerie Java. + +Hai domande su **come estrarre testo** da immagini difficili, o vuoi saperne di più sui trucchi di **recognize text image java**? Lascia un commento qui sotto, e buona programmazione! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/italian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/italian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..59eb2f2eb --- /dev/null +++ b/ocr/italian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,256 @@ +--- +category: general +date: 2026-05-03 +description: Migliora rapidamente la precisione OCR utilizzando Aspose OCR Java. Scopri + come caricare un'immagine per l'OCR, abilitare le lingue e applicare una correzione + ortografica aggressiva in pochi passaggi. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: it +og_description: Migliora l'accuratezza dell'OCR istantaneamente con Aspose OCR Java. + Questa guida mostra come caricare un'immagine per l'OCR, abilitare le lingue e utilizzare + una correzione ortografica aggressiva. +og_title: Migliora la precisione OCR in Java – Tutorial Aspose OCR passo passo +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Migliora l'accuratezza OCR in Java – Guida completa Aspose OCR +url: /it/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Migliorare l'accuratezza OCR in Java – Guida completa Aspose OCR + +Ti sei mai chiesto perché i risultati OCR sembrano la scrittura di un bambino? Se stai lottando con lettere mancanti, parole sbagliate o semplicemente spazzatura, non sei solo. **Migliorare l'accuratezza OCR** è la prima cosa a cui ricorrono la maggior parte degli sviluppatori quando l'estrazione del testo sembra inaffidabile. + +In questo tutorial percorreremo una soluzione pratica che non solo **carica l'immagine per OCR** ma sfrutta anche il motore di correzione ortografica integrato di Aspose per migliorare la qualità. Alla fine avrai un programma Java pronto all'uso che riconosce testo in inglese + francese con correzione aggressiva—senza dizionari esterni. + +## Cosa imparerai + +- Come **caricare l'immagine per OCR** usando `ImageStream` di Aspose. +- Perché abilitare le lingue corrette è importante per l'accuratezza. +- L'impatto della correzione ortografica aggressiva sui documenti multilingue. +- Un esempio di codice completo e eseguibile che puoi inserire in qualsiasi progetto Maven/Gradle. +- Suggerimenti, insidie e idee per i prossimi passi per scalare questo approccio. + +> **Prerequisiti** – Java 8 o superiore, un recente JAR Aspose.OCR per Java (v23.12 o successivo) e un file immagine (`multilingual.png`) contenente testo in inglese e francese. Tutto qui—nessun modello o API aggiuntivi. + +--- + +## Migliorare l'accuratezza OCR: Configurare il motore OCR di Aspose + +Il cuore di qualsiasi pipeline OCR è la configurazione del motore. Dando ad Aspose esattamente ciò che ti aspetti, gli offri una reale possibilità di fare le cose correttamente. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Perché è importante:** +- **Istanza del motore** – `OcrEngine` contiene tutte le impostazioni; crearne una nuova evita la contaminazione di stato da esecuzioni precedenti. +- **Caricamento immagine** – Usare `ImageStream.fromFile` è il modo più semplice per **caricare l'immagine per OCR**. Supporta PNG, JPEG, BMP e TIFF nativamente. +- **Flag delle lingue** – Attivare inglese + francese indica al riconoscitore di usare i set di caratteri e i modelli linguistici appropriati, il che da solo può aumentare l'accuratezza del 10‑15 %. +- **Correzione ortografica aggressiva** – Impostare `SpellCorrectionLevel.AGGRESSIVE` spinge il dizionario interno a riscrivere parole dubbie, una leva fondamentale quando devi **migliorare l'accuratezza OCR** su scansioni rumorose. + +--- + +## Caricare l'immagine per OCR – Impostare il file sorgente + +Prima che il motore possa fare qualsiasi cosa, ha bisogno di una bitmap. Se gli fornisci uno stream corrotto o un percorso errato, otterrai un'eccezione più velocemente di quanto tu possa dire “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Consiglio professionale:** Se stai elaborando immagini caricate dagli utenti, avvolgi la logica di caricamento in un blocco try‑catch e valida prima la dimensione/formato del file. Questo impedisce al motore di bloccarsi su PDF massivi o formati non supportati. + +--- + +## Abilitare più lingue per un riconoscimento migliore + +La maggior parte delle librerie OCR usa per impostazione predefinita solo l'inglese. Quando il tuo documento mescola lingue, vedrai un aumento di caratteri riconosciuti erroneamente. Aspose rende indolore l'attivazione di lingue aggiuntive. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Perché abilitare più di una lingua?** +- **Espansione del set di caratteri** – Il francese include lettere accentate come “é” e “ç”. Senza il flag francese, queste diventano “e” o “c”, confondendo poi il correttore ortografico. +- **Suggerimenti contestuali** – Il motore OCR usa modelli linguistici per prevedere i confini delle parole; un modello bilingue riduce le divisioni errate. + +--- + +## Applicare la correzione ortografica aggressiva + +La correzione ortografica non è solo una “cosa carina da avere”; è un fattore decisivo quando devi **migliorare l'accuratezza OCR** su scansioni di bassa qualità. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Livelli a colpo d'occhio + +| Livello | Comportamento | +|------------|----------------------------------------------| +| **NONE** | Nessuna correzione – solo output grezzo del motore. | +| **LIGHT** | Corregge errori evidenti, basso rischio di sovracorrezione. | +| **AGGRESSIVE** | Esegue ricerche nel dizionario in modo aggressivo; ideale per immagini rumorose. | + +**Attenzione:** La modalità aggressiva può riscrivere nomi propri legittimi (ad es., “McDonald” → “Mcdonald”). Se il tuo dominio contiene molti nomi, considera un filtro di post‑elaborazione. + +--- + +## Eseguire il riconoscimento e verificare l'output + +Ora che tutto è configurato, è il momento di lasciare che Aspose faccia il lavoro pesante. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Output previsto (esempio) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Se vedi invece spazzatura, ricontrolla: + +1. La qualità dell'immagine (immagini sfocate o a bassa risoluzione DPI compromettono l'accuratezza). +2. Flag delle lingue – l'assenza del francese rimuoverà gli accenti. +3. Livello di correzione ortografica – prova `LIGHT` se noti una sovracorrezione. + +--- + +## Esempio completo funzionante (Tutti i passaggi in un unico file) + +Di seguito trovi il programma completo che puoi compilare ed eseguire direttamente. Salvalo come `SpellCorrectionTutorial.java`, regola il percorso dell'immagine ed esegui con `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Compila ed esegui: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Dovresti vedere il testo multilingue corretto stampato sulla console. + +--- + +## Problemi comuni e come evitarli + +| Sintomo | Probabile causa | Soluzione | +|---------|----------------|----------| +| **Output vuoto** | Percorso immagine errato o file illeggibile | Verifica il percorso di `ImageStream.fromFile`; aggiungi un controllo di esistenza del file. | +| **Accenti mancanti** | Lingua francese non abilitata | Chiama `ocrEngine.getLanguage().setFrench(true)`. | +| **Caratteri spazzatura** | Immagine a bassa risoluzione (< 150 dpi) | Aumenta la scala o riscansiona a DPI più alto; considera il pre‑processing con librerie di miglioramento immagine. | +| **Nomi sovracorretti** | Correzione ortografica aggressiva su nomi propri | Post‑processa con una whitelist di nomi noti o passa al livello `LIGHT`. | + +--- + +## Prossimi passi: Scalare la tua pipeline OCR + +- **Elaborazione batch:** Scorri una directory di immagini, riutilizza una singola istanza di `OcrEngine` per le prestazioni. +- **Estrazione PDF:** Usa Aspose.PDF per convertire ogni pagina in un'immagine, quindi passala al motore OCR. +- **Dizionari personalizzati:** Se il tuo dominio utilizza terminologia specializzata (medica, legale), fornisci un elenco di parole personalizzato a `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Parallelismo:** `ForkJoinPool` di Java può eseguire più attività OCR in parallelo, ma fai attenzione all'uso della memoria poiché ogni motore mantiene buffer di immagini. + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Screenshot di miglioramento dell'accuratezza OCR che mostra testo multilingue corretto"} + +## Conclusione + +Abbiamo appena **migliorato OCR + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/italian/java/ocr-operations/_index.md b/ocr/italian/java/ocr-operations/_index.md index 204630598..5a5400996 100644 --- a/ocr/italian/java/ocr-operations/_index.md +++ b/ocr/italian/java/ocr-operations/_index.md @@ -81,6 +81,10 @@ Sblocca il potere dell'OCR in Java con Aspose.OCR. Riconosci il testo nei docume Sblocca un potente riconoscimento del testo in Java con Aspose.OCR. Riconosci il testo nelle immagini TIFF senza sforzo. Scarica ora per un'esperienza OCR fluida. ### [Riconoscere il testo di un'immagine con Aspose OCR – Tutorial Java OCR completo](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Scopri come eseguire l'OCR completo su immagini con Aspose OCR in Java, passo‑passo per risultati accurati e rapidi. +### [Esempio Aspose OCR Java: Estrarre testo da un'area](./aspose-ocr-java-example-extract-text-from-a-region/) +Scopri come estrarre testo da una specifica area di un'immagine usando Aspose OCR in Java. +### [Estrai Testo da HEIC – Guida Java Completa](./extract-text-from-heic-complete-java-guide/) +Scopri come estrarre testo da immagini HEIC con Aspose OCR in Java, passo‑passo per risultati accurati e rapidi. ## Domande Frequenti diff --git a/ocr/italian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/italian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..f9e9a23d6 --- /dev/null +++ b/ocr/italian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,176 @@ +--- +category: general +date: 2026-05-03 +description: L'esempio Aspose OCR Java mostra come caricare un'immagine per l'OCR + ed estrarre il testo da una regione in poche righe di codice. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: it +og_description: L'esempio Aspose OCR Java dimostra il caricamento di un'immagine per + OCR e l'estrazione del testo da una regione specifica, perfetto per l'elaborazione + delle fatture. +og_title: Esempio OCR Java di Aspose – Estrazione del testo da una regione +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Esempio Aspose OCR Java: Estrarre il testo da una regione' +url: /it/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Esempio Aspose OCR Java: Estrarre Testo da una Regione + +Cerchi un **esempio Aspose OCR Java** che ti permetta di estrarre solo la parte di cui hai bisogno da un'immagine? In questa guida vedremo **come caricare un'immagine per l'OCR** e **come estrarre il testo da una regione**, perfetto per numeri di fattura, campi di modulo o qualsiasi dato nascosto all'interno di un'immagine più grande. + +Ti starai chiedendo perché limitare l'OCR a un rettangolo invece di scansionare l'intera pagina. La risposta breve: velocità e precisione. Quando il motore analizza solo una porzione definita, ignora il rumore irrilevante, è più veloce e spesso produce risultati più puliti. Alla fine di questo tutorial avrai un programma Java autonomo che fa esattamente questo, insieme a una serie di consigli per evitare le insidie più comuni che ostacolano i principianti. + +## Cosa Ti Serve + +Prima di iniziare, assicurati di avere: + +- **Java Development Kit (JDK) 11** o versioni successive installate. +- Libreria **Aspose.OCR for Java** (puoi scaricare l'ultimo JAR dal repository Maven Central o dal portale di download Aspose). +- Un file immagine che contenga il testo da leggere – per la demo useremo `invoice.png`, che contiene un numero di fattura vicino all'angolo in alto a destra. +- Un IDE preferito o un semplice editor di testo più un terminale; qualsiasi strumento di build (Maven, Gradle o plain `javac`) andrà bene. + +Tutto qui. Nessun motore OCR aggiuntivo, nessun binario nativo, solo Java puro e Aspose. + +![Screenshot dell'esempio Aspose OCR Java](/images/aspose-ocr-java-example.png "Esempio Aspose OCR Java che mostra l'estrazione della regione") + +## Esempio Aspose OCR Java – Inizializzare il Motore OCR + +La prima cosa di cui ha bisogno qualsiasi flusso di lavoro OCR è un'istanza del motore. Aspose fornisce una classe leggera `OcrEngine` che gestisce tutto, dal caricamento dell'immagine alla selezione della lingua. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Perché è importante:** Creare il motore in anticipo ti fornisce un oggetto pulito da configurare. Puoi riutilizzare lo stesso `OcrEngine` per più immagini se stai elaborando un batch, risparmiando memoria e tempo di inizializzazione. + +## Caricare l'Immagine per l'OCR + +Ora indichiamo al motore quale immagine scansionare. Aspose fornisce l'helper `ImageStream.fromFile`, che astrae il boilerplate a basso livello di `FileInputStream`. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Suggerimento:** Sostituisci `YOUR_DIRECTORY` con un percorso assoluto o relativo che punti alla cartella dove hai salvato `invoice.png`. Se il file non viene trovato, Aspose lancia un `IOException`, quindi potresti voler avvolgere questo codice in un blocco try‑catch per il codice di produzione. + +## Definire ed Estrarre il Testo da una Regione + +Ora arriva la parte centrale: il rettangolo che indica al motore dove guardare. Il costruttore `java.awt.Rectangle` accetta `(x, y, width, height)` – tutti misurati in pixel. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Come funziona:** Chiamando `setRegion`, limiti la scansione OCR a una striscia larga 300 pixel che inizia a 120 pixel dal bordo sinistro e a 250 pixel dall'alto. Regola questi numeri in base al tuo layout; un modo rapido per trovarli è aprire l'immagine in un editor grafico che mostri le coordinate dei pixel. + +## Abilitare la Lingua ed Eseguire il Riconoscimento + +Aspose OCR supporta decine di lingue, ma per un numero di fattura ci serve solo l'inglese. Abilitare la lingua corretta riduce drasticamente i falsi positivi. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Perché abilitare solo l'inglese?** Il motore OCR proverà a far corrispondere i caratteri di tutti i set linguistici abilitati, il che può confonderlo quando il testo è semplicemente alfanumerico. Limitare l'ambito linguistico migliora sia la velocità sia la precisione. + +### Output Atteso + +Quando tutto è configurato correttamente, vedrai qualcosa di simile: + +``` +Extracted region text: INV-12345 +``` + +Se il rettangolo è spostato di qualche pixel, l'output potrebbe risultare confuso o vuoto. È un controllo di sanità semplice: esegui il programma, guarda la console e verifica che il testo corrisponda a quello visibile nell'immagine. + +## Eseguire il Codice e Verificare l'Output + +Supponendo che tu stia usando Maven, aggiungi la dipendenza Aspose OCR al tuo `pom.xml`: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Compila ed esegui: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Oppure, se preferisci usare plain `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Dovresti vedere la riga **Extracted region text** stampata sulla console. Se ottieni “OCR recognition failed”, ricontrolla il percorso del file e assicurati che la regione contenga effettivamente caratteri leggibili. + +## Casi Limite & Varianti Comuni + +| Situazione | Cosa Cambiare | +|-----------|----------------| +| **Più lingue** (es. Inglese + Spagnolo) | Chiama `ocrEngine.getLanguage().setSpanish(true);` insieme all'inglese. | +| **Regione fuori dai limiti dell'immagine** | Aspose taglierà silenziosamente il rettangolo, ma perderai dati. Usa `ImageInfo` (`ocrEngine.getImage().getWidth()`) per verificare le dimensioni prima di impostare la regione. | +| **Fatture dinamiche** (layout diversi) | Considera di eseguire una pre‑scansione leggera sull'intera immagine per individuare parole chiave come “Invoice #” e poi calcolare programmaticamente il rettangolo. | +| **Immagini ad alta DPI** | Incrementa `ocrEngine.getImage().setResolution(300);` per una maggiore precisione su documenti scansionati. | +| **Ottimizzazione delle prestazioni** | Disabilita le lingue non necessarie, mantieni la regione il più piccola possibile e riutilizza una singola istanza di `OcrEngine` per molti file. | + +## Pro Tips Dal Campo + +- **Pro tip:** Se ti servono solo cifre (comune per i numeri di fattura), abilita la modalità numerica con `ocrEngine.getLanguage().setDigits(true);`. Questo elimina il rumore alfabetico. +- **Attenzione a:** PNG trasparenti. Aspose a volte interpreta male il canale alfa; convertire l'immagine in un JPEG con sfondo solido può risolvere output bianchi anomali. +- **Ricorda:** Il rettangolo utilizza il sistema di coordinate native dell'immagine, non quello di eventuali scaling UI che potresti vedere sullo schermo. Testa sempre con il file esatto che utilizzerai in produzione. + +## E Dopo? + +Ora che hai un solido **esempio Aspose OCR Java** per l'estrazione basata su regione, puoi estenderlo in diverse direzioni utili: + +- **Elaborazione batch:** Scorri una cartella di fatture, riutilizzando lo stesso `OcrEngine` per migliorare il throughput. +- **Validazione dati:** Invia il testo estratto a una regex come `INV-\\d{5}` per assicurarti di aver catturato un numero di fattura valido. +- **Integrazione con PDF:** Usa Aspose.PDF per sovrapporre il testo estratto al documento originale a fini di tracciamento. +- **Distribuzione cloud:** Avvolgi il codice in un servizio REST leggero (Spring Boot) così altri sistemi possono chiamarlo on demand. + +Ognuno di questi passaggi utilizza gli stessi concetti di base—**caricare l'immagine per l'OCR**, **estrarre il testo da una regione** e gestire i risultati—quindi la transizione sarà indolore. + +--- + +*Buona programmazione! Se incontri difficoltà, lascia un commento qui sotto o visita i forum Aspose dove la community condivide aggiustamenti pratici per layout complessi.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/italian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/italian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..ba99f7c64 --- /dev/null +++ b/ocr/italian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Estrai il testo dalle immagini HEIC usando Aspose OCR in Java. Scopri + come convertire rapidamente HEIC in testo con un esempio passo‑passo. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: it +og_description: Estrai testo dalle immagini HEIC con Aspose OCR in Java. Questa guida + ti mostra come convertire HEIC in testo in pochi minuti. +og_title: Estrai testo da HEIC – Tutorial OCR Java +tags: +- OCR +- Java +- Aspose +title: Estrai testo da HEIC – Guida completa Java +url: /it/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Estrai testo da HEIC – Guida completa Java + +Ti sei mai chiesto come **estrarre testo da HEIC** senza prima convertirli in JPEG o PNG? Non sei l'unico. Molti sviluppatori si trovano in difficoltà quando un'app mobile fornisce loro una foto `.heic` e hanno bisogno del testo incorporato per indicizzazione o analisi. La buona notizia? Con Aspose OCR per Java puoi **estrarre testo da HEIC** direttamente—senza alcun passaggio di conversione aggiuntivo. + +In questo tutorial ti mostreremo anche come **convertire HEIC in testo** in un'unica pipeline pulita, così potrai inserire il codice in qualsiasi progetto Java e iniziare a estrarre stringhe da quelle immagini ad alta efficienza oggi. + +![esempio di estrazione testo da heic](https://example.com/placeholder.png "esempio di estrazione testo da heic") + +## Cosa imparerai + +- Come configurare Aspose OCR in un progetto Maven/Gradle. +- Il codice Java esatto necessario per **estrarre testo da HEIC** immagini. +- Perché questo approccio è più veloce e meno soggetto a errori rispetto a un flusso di lavoro a due passaggi `convert‑then‑OCR`. +- Problemi comuni (ad esempio, pacchetti lingua mancanti) e come evitarli. +- Suggerimenti per scalare la soluzione in uno scenario di elaborazione batch. + +Alla fine della guida sarai in grado di **convertire HEIC in testo** con poche righe di codice, e comprenderai il “perché” dietro ogni passaggio. + +--- + +## Prerequisiti + +Prima di immergerci, assicurati di avere: + +1. **Java 8 o superiore** – Aspose OCR funziona su qualsiasi JDK moderno. +2. **Maven o Gradle** – per scaricare automaticamente la libreria Aspose OCR. +3. Un'immagine **HEIC** che vuoi testare (rinominala `sample.heic` e posizionala in un percorso raggiungibile). +4. Facoltativo ma utile: un IDE come IntelliJ IDEA o VS Code. + +Non sono necessari altri strumenti esterni; la libreria gestisce nativamente il formato HEIC. + +--- + +## Passo 1 – Aggiungi Aspose OCR al tuo progetto + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Suggerimento professionale:** Mantieni il numero di versione sincronizzato con le release ufficiali di Aspose; le versioni più recenti aggiungono supporto per varianti HEIC aggiuntive e migliorano l'accuratezza linguistica. + +--- + +## Passo 2 – Inizializza il motore OCR per **estrarre testo da HEIC** + +Creare un'istanza di `OcrEngine` è il primo passo concreto per estrarre testo da HEIC. Il motore astrae tutta la decodifica a basso livello, così non devi preoccuparti del formato del contenitore HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Perché è importante:** +HEIC è un formato immagine moderno basato sul contenitore HEIF. Le librerie OCR tradizionali si aspettano JPEG/PNG, costringendoti a eseguire un passaggio di conversione separato che può degradare la qualità. Il supporto nativo di Aspose OCR ti permette di **estrarre testo da HEIC** in un unico passaggio, preservando i dati pixel originali e risparmiando cicli CPU. + +--- + +## Passo 3 – Abilita le lingue desiderate + +Per impostazione predefinita il motore cerca solo l'inglese. Se hai bisogno di **convertire HEIC in testo** in un'altra lingua, basta attivare il flag appropriato. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Perché abilitare esplicitamente le lingue?** +> I pacchetti lingua vengono caricati su richiesta. Abilitare solo ciò di cui hai bisogno riduce l'impronta di memoria e velocizza il riconoscimento. + +--- + +## Passo 4 – Esegui il processo di riconoscimento + +Ora chiediamo effettivamente al motore di leggere l'immagine e produrre una stringa. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Output previsto** (supponendo che l'immagine contenga la frase “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Se l'immagine è vuota o il testo è illeggibile, il motore restituisce `false` e vedrai il messaggio di fallback. + +--- + +## Passo 5 – Gestione dei casi limite e domande comuni + +### Cosa succede se il file HEIC è corrotto? + +Aspose OCR genera un `IOException` quando non riesce a decodificare il contenitore. Avvolgi la chiamata in un blocco `try‑catch` e registra l'errore per una successiva ispezione. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Posso elaborare più file HEIC in batch? + +Assolutamente. Basta iterare su una directory e riutilizzare la stessa istanza di `OcrEngine` per evitare il sovraccarico di inizializzazioni ripetute. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Questo converte anche **HEIC in testo** per script non latini? + +Sì—Aspose OCR supporta arabo, cinese, cirillico e molte altre lingue. Basta abilitare il flag della lingua corrispondente (ad es., `engine.getLanguage().setChineseSimplified(true);`). Ricorda di aggiungere i file di font appropriati se stai eseguendo su un server headless. + +--- + +## Passo 6 – Verifica il risultato programmaticamente + +In una pipeline di produzione dovrai spesso verificare che l'output OCR soddisfi certe soglie di qualità. Un modo rapido è calcolare un punteggio di confidenza (disponibile nelle versioni più recenti) o semplicemente controllare la lunghezza della stringa restituita. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Esempio completo funzionante + +Di seguito trovi la classe Java completa, pronta per l'esecuzione, che incorpora tutti i passaggi sopra. Incollala in un file chiamato `HeifExample.java`, regola il percorso al tuo file HEIC e esegui `javac` + `java` come al solito. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Dovresti vedere la stringa estratta stampata sulla console, confermando che hai convertito con successo **HEIC in testo**. + +--- + +## Conclusione + +Abbiamo illustrato tutto ciò di cui hai bisogno per **estrarre testo da HEIC** usando Aspose OCR in Java. Dall'aggiunta della libreria alla gestione dei casi limite, la guida mostra una soluzione pulita, a singolo passaggio, che elimina la necessità di un'utilità di conversione separata. + +Ora puoi: + +- **Convertire HEIC in testo** al volo in servizi web, back‑end mobile o lavori batch. +- Estendere il supporto ad altre lingue con una singola riga di configurazione. +- Scalare il processo riutilizzando lo stesso `OcrEngine` per molti file. + +Prossimamente, potresti esplorare **l'inserimento del risultato OCR in un indice ricercabile** (ad es., Elasticsearch) o **l'aggiunta di pre‑elaborazione dell'immagine** per aumentare la precisione su foto HEIC a basso contrasto. Il cielo è il limite—sperimenta, misura e itera. + +Hai domande o ti imbatti in un file HEIC problematico? Lascia un commento qui sotto, e buona programmazione! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/japanese/java/advanced-ocr-techniques/_index.md b/ocr/japanese/java/advanced-ocr-techniques/_index.md index 426421afe..d5c1cb55f 100644 --- a/ocr/japanese/java/advanced-ocr-techniques/_index.md +++ b/ocr/japanese/java/advanced-ocr-techniques/_index.md @@ -45,25 +45,20 @@ Aspose.OCR を使用して Java アプリケーションを強化し、正確な Aspose.OCR for Java で許可された文字を指定することで、画像からテキストを簡単に抽出できます。ステップバイステップのガイドに従って効率的に統合し、シームレスなテキスト認識エクスペリエンスを確保します。 Aspose.OCR 機能を使用して Java アプリケーションを強化します。 -## 結論 - -Aspose.OCR for Java を使用すると、高度な OCR テクニックを習得するのがこれまでになく簡単になります。これらのチュートリアルを学習して、Java プロジェクトにおけるテキスト認識の可能性を最大限に引き出してください。シームレスな統合、高精度、多用途のテキスト抽出機能により、アプリケーションを強化します。今すぐダウンロードして、Aspose.OCR for Java で優れた OCR への第一歩を踏み出しましょう! -## 高度な OCR テクニックのチュートリアル -### [Aspose.OCR for Java での BufferedImage に対する OCR の実行](./perform-ocr-buffered-image/) -Aspose.OCR for Java を使用して、BufferedImage で OCR を簡単に実行できます。画像からテキストをシームレスに抽出します。今すぐダウンロードして、多彩なテキスト認識エクスペリエンスを体験してください。 -### [Aspose.OCR for Java で URL からの画像に対して OCR を実行する](./perform-ocr-image-from-url/) -Aspose.OCR を使用して、Java でのシームレスな画像テキスト抽出をロック解除します。簡単に統合できる高精度 OCR。 -### [Aspose.OCR の特定のページで OCR を実行する](./perform-ocr-on-page/) -特定のページで OCR を実行するためのステップバイステップ ガイドを使用して、Aspose.OCR for Java の機能を最大限に活用してください。画像からテキストを簡単に抽出し、Java プロジェクトを強化します。 -### [Aspose.OCR で OCR 用の長方形を準備する](./prepare-rectangles-for-ocr/) -Aspose.OCR for Java でテキスト認識の能力を解放します。シームレスな統合については、ステップバイステップのガイドに従ってください。効率的な OCR 機能で Java アプリケーションを強化します。 -### [Aspose.OCR for Java での行の認識](./recognize-lines/) -Aspose.OCR を使用して Java アプリケーションを強化し、正確なテキスト認識を実現します。簡単な統合、高精度。 -### [Aspose.OCR で許可される文字を指定する](./specify-allowed-characters/) -Aspose.OCR for Java を使用して、画像からのテキスト抽出をシームレスに解除します。効率的に統合するには、ステップバイステップのガイドに従ってください。 +## [Java OCR の GPU を有効にする方法 – 完全チュートリアル](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Java で OCR 処理を高速化するために GPU を有効化する手順をステップバイステップで解説します。 + +## [Java で並列 OCR 用の固定スレッドプールを作成する](./create-fixed-thread-pool-for-parallel-ocr-in-java/) + +このチュートリアルでは、Java の固定スレッドプールを使用して OCR 処理を並列化し、パフォーマンスを向上させる方法を解説します。 + +## [Java で OCR 精度を向上させる – 完全 Aspose OCR ガイド](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) + +この包括的なガイドでは、Java アプリケーションで OCR の精度を最大化するためのベストプラクティスと設定方法をステップバイステップで解説します。 + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/japanese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/japanese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..44849fb21 --- /dev/null +++ b/ocr/japanese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,215 @@ +--- +category: general +date: 2026-05-03 +description: Javaで固定スレッドプールを作成し、画像からテキストを迅速に抽出します。OCRの実行方法、画像をテキストに変換する方法、そして並列OCR処理でパフォーマンスを向上させる方法を学びましょう。 +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: ja +og_description: Javaで固定スレッドプールを作成し、画像からテキストを迅速に抽出します。OCRの実行方法、画像をテキストに変換する方法、そして並列OCR処理でパフォーマンスを向上させる方法を学びましょう。 +og_title: Javaで並列OCRのための固定スレッドプールを作成する +tags: +- Java +- OCR +- Multithreading +title: Javaで並列OCRのための固定スレッドプールを作成する +url: /ja/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Javaで並列OCRのための固定スレッドプールを作成する + +OCRジョブを高速化するために **固定スレッドプールを作成** したいと思ったことはありませんか?でもどこから始めればいいか分からない…という方は多いです。画像が多いプロジェクトでは、ボトルネックはシングルスレッドのOCR呼び出しです。その解決策は意外とシンプルで、ワーカースレッドのプールを立ち上げ、ファイルを並列に処理させるだけです。 + +このチュートリアルでは、Aspose OCR を使用して **画像からテキストを抽出** する方法、**OCR を効率的に実行** する方法、そして CPU を過度に使用せずに **画像をテキストに変換** する方法を学びます。最後には、サンプル画像数枚で **並列OCR処理** を実演する、すぐに実行できる Java プログラムが手に入ります。 + +## 作成するもの + +小さなコンソールアプリを作ります。 + +* 画像パスのリストを読み取ります(PNG、JPG、TIFF、BMP)。 +* **CPUコア数に合わせた固定スレッドプールを作成** します。 +* 各画像に対して OCR タスクをディスパッチします。 +* 認識されたテキストを収集し、コンソールに出力します。 +* エグゼキュータをきれいにシャットダウンします。 + +外部のビルドツールや高度なフレームワークは不要です—純粋な Java と Aspose OCR ライブラリだけです。Java 8 以上と適切な IDE があればすぐに始められます。 + +## 前提条件 + +* **Java Development Kit (JDK) 8 以上** – コードはラムダ式を使用しているため、古いバージョンではコンパイルできません。 +* **Aspose OCR for Java** – Aspose のウェブサイトから JAR をダウンロードするか、Maven (`com.aspose:aspose-ocr`) で取得してください。 +* テスト画像が数枚入ったフォルダー(コードは `YOUR_DIRECTORY` を指しています)。 +* Java の並行処理に関する基本的な知識(残りは本チュートリアルで解説します)。 + +> *Pro tip:* Maven を使用している場合は、依存関係を `pom.xml` に追加し、IDE にクラスパスの管理を任せてください。 + +--- + +## 手順 1: 必要なインポートを追加する + +まず、必要なクラスをスコープに持ち込みます。これは単なる定型文ではなく、各インポートが JVM に OCR エンジン、画像処理ユーティリティ、そして **固定スレッドプール** インスタンスを作成できる並行処理ツールの場所を教える役割を持ちます。 + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – コア OCR API。 +* `java.util.*` – 画像パスや結果を格納するコレクション。 +* `java.util.concurrent.*` – `ExecutorService` と `Future` を含む並行処理パッケージ。 + +## 手順 2: 処理する画像を定義する + +次に、**画像からテキストを抽出** したいファイルのリストを作ります。`Arrays.asList` を使うことでコードが簡潔になり、ロジックの他の部分を変更せずに自分のディレクトリに差し替えることができます。 + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +エントリを自由に追加してください。スレッドプールは CPU コア数に応じて自動的にスケールします。 + +## 手順 3: CPU コア数に合わせて **固定スレッドプールを作成** + +これがチュートリアルの核心です。ランタイムに利用可能なコア数を問い合わせ、`Executors` ファクトリにそのサイズのプールを作成させます。なぜ固定かというと、スレッド数を予測可能に保つことで、OS のリソースを枯渇させる恐れのある「スレッド爆発」を防げるからです。 + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` は論理コア数(ハイパースレッドを含む)を返します。 +* `newFixedThreadPool(coreCount)` は CPU の容量を超えないことを保証し、並列で **OCR を実行** する最も安全な方法です。 + +## 手順 4: 各画像に対して OCR タスクを送信する + +ここでは、各ファイルパスを **OCR を実行** し、テキストを認識して結果を返す Callable に変換します。ラムダ式内で新しい `OcrEngine` をインスタンス化している点に注目してください—これによりエンジンの状態をスレッド間で共有することによる安全性の問題を回避できます。 + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* 各 `submit` 呼び出しはラムダ式をプールに渡し、アイドルスレッドでスケジュールされます。 +* `Future` オブジェクトにより、後で認識されたテキストを取得でき、必要に応じて順序を保ちます。 + +## 手順 5: 認識されたテキストを取得して表示する + +すべてのタスクがキューに入ったら、`Future` リストを反復し、`get()` を呼び出して各 OCR ジョブが完了するまで待機します。ここが **画像をテキストに変換** するステップが実際に見える部分で、`engine.getText()` 呼び出しが生の文字列を返します。 + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +典型的なコンソール出力は次のようになります: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +ファイルが失敗した場合(たとえば破損しているなど)、`Failed:` で始まりパスが続く行が表示されます—デバッグに便利です。 + +## 手順 6: Executor Service をクリーンアップする + +プールのシャットダウンを忘れないでください。さもなければ、JVM がまだ作業があると考えてプロセスが終了しません。適切にシャットダウンすれば、実行中のタスクが完了してからプロセスが終了します。 + +```java +executor.shutdown(); +``` + +`awaitTermination` を呼び出してタイムアウトを設定することもできますが、ほとんどのコマンドラインユーティリティでは単純な `shutdown()` で十分です。 + +## 完全な動作例 + +以下に、完全な実行可能プログラムを示します。`ParallelOcrTutorial.java` という名前のファイルにコピー&ペーストし、画像パスを調整した上で、通常通り `javac` と `java` を実行してください。 + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**期待される結果:** 各画像のテキスト内容がコンソールに `imagePaths` リストと同じ順序で出力されます。画像の処理に失敗した場合は、空行の代わりに失敗通知が表示されます。 + +## よくある質問とエッジケース + +### スレッド数より画像が多い場合は? + +固定スレッドプールは余剰タスクを自動的にキューに入れます。スレッドが現在の OCR ジョブを完了すると、次のタスクを取得します。このキューイング動作が **並列 OCR 処理** の本質で、CPU を過負荷にせず最大スループットを実現します。 + +### 言語を変更できますか? + +もちろんです。`engine.getLanguage().setEnglish(true);` を目的の言語フラグに置き換えてください。例: `setFrench(true)`、または `recognize()` の前に複数のセッターを呼び出して複数言語を有効にできます。 + +### 非常に大きな画像を扱うには? + +大きなファイルはスレッドごとに多くのメモリを消費します。`OutOfMemoryError` が発生した場合は、エンジンに渡す前に画像を縮小するか、`-Xmx` でヒープサイズを増やすことを検討してください。別のアプローチとして **キャッシュスレッドプール** を使用する方法があります (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/japanese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/japanese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..e7ba123a9 --- /dev/null +++ b/ocr/japanese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-05-03 +description: Java OCRでGPUをすぐに有効にする方法 – Aspose OCRで画像からテキストを抽出する方法を学びましょう。完全なJava OCRチュートリアルが含まれています。 +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: ja +og_description: 数分でJava OCRにGPUを有効にする方法。このチュートリアルでは、GPUアクセラレーションを使用したJava OCRで画像からテキストを抽出する方法を示します。 +og_title: Java OCRでGPUを有効にする方法 – ステップバイステップガイド +tags: +- Java +- OCR +- GPU +- Aspose +title: Java OCRでGPUを有効にする方法 – 完全チュートリアル +url: /ja/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Java OCR の GPU を有効化する方法 – 完全チュートリアル + +Ever wondered **how to enable gpu** when you’re trying to extract text from a picture? If you’ve ever needed to run OCR on a high‑resolution scan and felt the CPU grind to a halt, you’re not alone. In this guide we’ll walk through a **java ocr tutorial** that not only shows you how to extract text but also demonstrates the fastest way to **recognize text image java**‑style by turning on experimental GPU support. + +We’ll start by pulling in the Aspose OCR library, then enable the GPU, load a sample image, and finally pull the recognized string out of the file. By the end you’ll have a ready‑to‑run snippet that you can drop into any Maven project, and you’ll understand why GPU matters, when it might not help, and how to troubleshoot common hiccups. No external docs required—everything you need is right here. + +--- + +## What You’ll Need + +- **Java Development Kit (JDK) 8+** – the code runs on any modern JDK. +- **Maven** (or Gradle) to pull the Aspose OCR dependency. +- A **GPU‑compatible machine** (CUDA‑enabled NVIDIA card works best, but the Aspose API will fall back gracefully). +- A sample image, e.g., `sample-highres.png`, placed in a folder you can reference. +- A sprinkle of curiosity about **image to text conversion java** techniques. + +If you’re missing any of these, grab the JDK from Oracle or OpenJDK, install Maven, and make sure your graphics driver is up‑to‑date. That’s all the prep work; the rest is pure Java. + +--- + +## Step 1: Add Aspose OCR to Your Project + +First things first, we need the OCR engine itself. Aspose provides a clean Maven artifact; just drop this snippet into your `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +If you prefer Gradle, the equivalent is: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Once the dependency resolves, you’ll have access to `OcrEngine`, `ImageStream`, and the language helpers that make **java ocr tutorial** painless. + +--- + +## Step 2: How to Enable GPU (Primary Keyword in Action) + +Now we get to the heart of the matter: **how to enable gpu** for the OCR engine. The Aspose API exposes a single boolean flag—`setUseGpu(true)`. It’s experimental, but on a decent graphics card you’ll see the recognition time drop dramatically, especially for large, high‑resolution images. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** If your environment lacks a compatible GPU, the flag will be ignored silently, and the engine falls back to CPU mode. No crash, just slower performance. + +--- + +## Step 3: Load the Image You Want to Process + +The OCR engine works with an `ImageStream`. Point it at the file you wish to convert from picture to plain text. Here’s a compact way to do it: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Make sure the path is absolute or relative to your project’s working directory. If the file isn’t found, you’ll get an `IOException`—we’ll catch that later. + +--- + +## Step 4: Choose the Language (Optional but Recommended) + +Aspose OCR can handle many alphabets, but you should tell it which one you expect. For English, it’s a one‑liner: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +If you need French or Chinese, just swap the flag (`setFrench(true)`, `setChineseSimplified(true)`, etc.). This tiny hint often boosts accuracy because the engine can prune unlikely character candidates. + +--- + +## Step 5: Recognize Text Image Java – Run the Engine + +Now comes the moment of truth: **recognize text image java** style. We call `recognize()` and, if it returns `true`, pull the resulting string with `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +The output will be the raw text extracted from `sample-highres.png`. For a clean document, you might want to post‑process the string (trim whitespace, replace line breaks, etc.). Here’s a quick example: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Step 6: Full Working Example (Copy‑Paste Ready) + +Below is the complete **java ocr tutorial** that you can compile and run directly. It includes error handling and prints the expected output. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Expected output (example):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +If the image contains multiple lines, they’ll appear separated by line‑break characters (`\n`). The engine preserves the original layout as best it can. + +--- + +## Step 7: Edge Cases, Tips, and Common Questions + +### What if the GPU isn’t detected? + +Aspose silently disables GPU support when it can’t find a compatible device. You can verify the mode by checking the flag after initialization: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +If it prints `false`, double‑check your driver version and that the `CUDA` runtime is on the `PATH`. + +### Does GPU help with tiny images? + +Not always. The overhead of transferring a small bitmap to the GPU can outweigh the speed gain. For images under 500 KB, you might actually see a slight slowdown. In such cases, simply set `setUseGpu(false)`. + +### How to handle multi‑language documents? + +You can enable several languages simultaneously: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +The engine will attempt to match characters from either set, which is handy for bilingual PDFs. + +### Can I process PDFs directly? + +Aspose OCR works with image streams, so you’ll need to rasterize each PDF page first (e.g., with Aspose PDF or PDFBox) and then feed the resulting `BufferedImage` to `setImage`. + +--- + +## Visual Summary + +![GPU を有効化した Java OCR エンジン](/images/gpu-ocr.png "GPU 加速 OCR パイプラインの図解") + +*The diagram illustrates the flow from image loading → GPU‑enabled OCR → text extraction.* + +--- + +## Conclusion + +We’ve covered **how to enable gpu** for a Java OCR workflow, walked through a full **java ocr tutorial**, and demonstrated **image to text conversion java** in a practical, copy‑paste example. By toggling a single flag, you can shave seconds—or even minutes—off the processing time of large scans, making your applications feel snappier and more responsive. + +What’s next? Try feeding a batch of images through a loop, experiment with different languages, or combine this with Apache Tika to index the extracted text automatically. The sky’s the limit when you pair GPU‑accelerated OCR with other Java libraries. + +Got questions about **how to extract text** from tricky images, or want to know more about **recognize text image java** tricks? Drop a comment below, and happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/japanese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/japanese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..8b12bee3f --- /dev/null +++ b/ocr/japanese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java を使用して OCR の精度を迅速に向上させましょう。OCR 用に画像を読み込む方法、言語を有効にする方法、そして数ステップで積極的なスペル補正を適用する方法を学びます。 +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: ja +og_description: Aspose OCR JavaでOCR精度を即座に向上させましょう。このガイドでは、OCR用に画像を読み込む方法、言語を有効にする方法、そして積極的なスペル補正の使用方法を示します。 +og_title: JavaでOCR精度を向上させる – ステップバイステップ Aspose OCRチュートリアル +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: JavaでOCRの精度を向上させる – 完全なAspose OCRガイド +url: /ja/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# JavaでOCR精度を向上させる – 完全なAspose OCRガイド + +OCRの結果が幼児の手書きのように見えることに疑問を抱いたことはありませんか?文字が抜けたり、誤った単語が出たり、単なる意味不明な文字列になっているとお困りなら、あなたは一人ではありません。**Improve OCR accuracy** は、テキスト抽出が信頼できないと感じたときにほとんどの開発者が最初に手を付けることです。 + +このチュートリアルでは、**load image for OCR** だけでなく、Aspose の組み込みスペル補正エンジンを活用して品質を向上させる実践的な解決策を順に解説します。最後まで読むと、英語とフランス語のテキストを積極的な補正で認識できる、すぐに実行可能な Java プログラムが手に入ります—外部辞書は不要です。 + +## 学習できること + +- Aspose の `ImageStream` を使用した **load image for OCR** の方法 +- 正しい言語を有効にすることが精度に与える影響 +- 多言語ドキュメントに対する積極的なスペル補正の効果 +- 任意の Maven/Gradle プロジェクトに組み込める、完全な実行可能コードサンプル +- スケーリング時のヒント、落とし穴、次のステップのアイデア + +> **Prerequisites** – Java 8 以上、最新の Aspose.OCR for Java JAR(v23.12 以降)、および英語とフランス語のテキストを含む画像ファイル(`multilingual.png`)。以上だけで完了です—余分なモデルや API は不要です。 + +## Improve OCR Accuracy: Configure the Aspose OCR Engine + +任意の OCR パイプラインの中心はエンジン設定です。Aspose に期待する内容を正確に伝えることで、正しく認識させるチャンスを与えます。 + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Why this matters:** +- **Engine instance** – `OcrEngine` はすべての設定を保持します。新しいインスタンスを作成することで、前回の実行からの状態が引き継がれることを防げます。 +- **Image loading** – `ImageStream.fromFile` を使用するのが **load image for OCR** の最も簡単な方法です。PNG、JPEG、BMP、TIFF を標準でサポートします。 +- **Language flags** – 英語 + フランス語をオンにするだけで、適切な文字セットと語彙モデルが使用され、精度が 10‑15 % 向上することがあります。 +- **Aggressive spell correction** – `SpellCorrectionLevel.AGGRESSIVE` を設定すると、内部辞書が疑わしい単語を積極的に書き換えます。これはノイズの多いスキャンで **improve OCR accuracy** するための重要なレバーです。 + +## Load Image for OCR – Setting the Source File + +エンジンが何かを行う前に、ビットマップが必要です。破損したストリームや誤ったパスを渡すと、"null pointer" と言う前に例外が発生します。 + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** ユーザーがアップロードした画像を処理する場合は、ロードロジックを try‑catch ブロックで囲み、ファイルサイズやフォーマットを事前に検証してください。これにより、巨大な PDF や未対応フォーマットでエンジンが詰まるのを防げます。 + +## Enable Multiple Languages for Better Recognition + +ほとんどの OCR ライブラリはデフォルトで英語のみです。ドキュメントに複数言語が混在すると、誤認識文字が急増します。Aspose なら追加言語の切り替えが非常に簡単です。 + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Why enable more than one language?** +- **Character set expansion** – フランス語には “é” や “ç” といったアクセント付き文字が含まれます。フランス語フラグを付けないと、これらが “e” や “c” に変換され、後続のスペル補正が混乱します。 +- **Contextual hints** – OCR エンジンは言語モデルを使って単語境界を予測します。バイリンガルモデルを使用すると、誤った分割が減少します。 + +## Apply Aggressive Spell Correction + +スペル補正は「あると便利」だけでなく、低品質スキャンで **improve OCR accuracy** する際のゲームチェンジャーです。 + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Levels at a glance + +| レベル | 挙動 | +|--------|------| +| **NONE** | 補正なし – エンジンの生出力のみ | +| **LIGHT** | 明らかなタイプミスを修正、過度な補正リスクは低い | +| **AGGRESSIVE** | 辞書参照を積極的に適用;ノイズが多い画像に最適 | + +**Caution:** Aggressive モードは正当な固有名詞(例: “McDonald” → “Mcdonald”)を書き換えることがあります。ドメインに多数の名前が含まれる場合は、後処理フィルタの導入を検討してください。 + +## Run Recognition and Verify the Output + +すべての設定が整ったので、いよいよ Aspose に重い処理を任せましょう。 + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Expected output (sample) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +文字化けが出た場合は、次を再確認してください: + +1. 画像の品質(ぼやけている、低 DPI の画像は精度を低下させます)。 +2. 言語フラグ – フランス語が無効だとアクセントが失われます。 +3. スペル補正レベル – 過度な補正が見られる場合は `LIGHT` に変更してみてください。 + +## Full Working Example (All Steps in One File) + +以下はそのままコンパイルして実行できる完全版プログラムです。`SpellCorrectionTutorial.java` として保存し、画像パスを調整したうえで `javac && java` で実行してください。 + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Compile & run: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +コンソールに補正された多言語テキストが表示されるはずです。 + +## Common Pitfalls & How to Avoid Them + +| 症状 | 考えられる原因 | 対策 | +|------|----------------|------| +| **Blank output** | 画像パスが間違っている、またはファイルが読めない | `ImageStream.fromFile` のパスを確認し、ファイル存在チェックを追加 | +| **Missing accents** | フランス語が有効になっていない | `ocrEngine.getLanguage().setFrench(true)` を呼び出す | +| **Garbage characters** | 低解像度画像(< 150 dpi) | 解像度を上げてスキャンし直す、または画像強化ライブラリで前処理 | +| **Over‑corrected names** | 固有名詞に対する Aggressive スペル補正 | 既知の名前リストをホワイトリストとして使用するか、`LIGHT` レベルに切り替える | + +## Next Steps: Scaling Up Your OCR Pipeline + +- **Batch processing:** ディレクトリ内の画像をループし、パフォーマンス向上のために単一の `OcrEngine` インスタンスを再利用。 +- **PDF extraction:** Aspose.PDF を使って各ページを画像に変換し、OCR エンジンに渡す。 +- **Custom dictionaries:** 医療・法務など専門用語が多い場合は、`ocrEngine.getSpellCorrector().addUserDictionary(...)` でカスタム単語リストを投入。 +- **Parallelism:** Java の `ForkJoinPool` で複数の OCR タスクを同時実行可能。ただし、各エンジンが画像バッファを保持するためメモリ使用量に注意。 + +![Improve OCR accuracy example](/images/ocr-example.png){alt="改善された OCR 精度のスクリーンショット、補正された多言語テキストを表示"} + +## Conclusion + +私たちはちょうど **improved OCR** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/japanese/java/ocr-operations/_index.md b/ocr/japanese/java/ocr-operations/_index.md index 8ef234c98..1cc553209 100644 --- a/ocr/japanese/java/ocr-operations/_index.md +++ b/ocr/japanese/java/ocr-operations/_index.md @@ -80,6 +80,10 @@ Aspose.OCR を使用した Java での OCR の力を解き放ちます。PDF 文 Aspose.OCR を使用した Java での強力なテキスト認識を実現します。TIFF 画像内のテキストを手間なく認識し、シームレスな OCR 体験を提供します。 ### [Aspose OCR で画像テキストを認識 – 完全 Java OCR チュートリアル](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Aspose OCR を使用して画像からテキストを認識する完全な Java チュートリアルです。ステップバイステップで実装方法を解説します。 +### [Aspose OCR Java 例: 領域からテキストを抽出](./aspose-ocr-java-example-extract-text-from-a-region/) +Aspose OCR for Java を使用して、画像の特定領域からテキストを抽出する方法をステップバイステップで解説します。 +### [HEIC からテキストを抽出 – 完全 Java ガイド](./extract-text-from-heic-complete-java-guide/) +HEIC 画像からテキストを抽出する完全な Java チュートリアルです。ステップバイステップで実装方法を解説します。 ## よくある質問 diff --git a/ocr/japanese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/japanese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..73dbe9e7d --- /dev/null +++ b/ocr/japanese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,171 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java のサンプルは、画像を OCR 用に読み込み、数行のコードで領域からテキストを抽出する方法を示しています。 +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: ja +og_description: Aspose OCR Java のサンプルは、画像を OCR 用に読み込み、特定の領域からテキストを抽出する方法を示し、請求書処理に最適です。 +og_title: Aspose OCR Java の例 – 領域テキスト抽出 +tags: +- Aspose OCR +- Java +- Image Processing +title: Aspose OCR Java の例:領域からテキストを抽出する +url: /ja/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java の例: 領域からテキストを抽出する + +画像から必要な部分だけを取得できる **Aspose OCR Java example** をお探しですか?このガイドでは **loading an image for OCR** と **extracting text from a region** の手順を解説します。請求書番号やフォームフィールド、または大きな画像の中に隠れたデータの抽出に最適です。 + +OCR をページ全体ではなく矩形に限定する理由が気になるかもしれません。簡潔に言えば、速度と精度です。エンジンが定義されたスライスだけを見ることで、不要なノイズをスキップし、処理が速くなり、よりクリーンな結果が得られます。このチュートリアルの最後までに、まさにそれを実現する自己完結型の Java プログラムが手に入り、初心者が陥りやすい落とし穴を回避するためのヒントもいくつか得られます。 + +## 必要なもの + +- **Java Development Kit (JDK) 11** 以上がインストールされていること。 +- **Aspose.OCR for Java** ライブラリ(Maven Central リポジトリまたは Aspose ダウンロードポータルから最新の JAR を取得できます)。 +- 読み取り対象のテキストを含む画像ファイル – デモでは `invoice.png` を使用します。この画像は右上付近に請求書番号が配置されています。 +- お好みの IDE またはシンプルなテキストエディタとターミナル;任意のビルドツール(Maven、Gradle、またはプレーンな `javac`)で構いません。 + +それだけです。余計な OCR エンジンやネイティブバイナリは不要で、純粋に Java と Aspose だけです。 + +![Aspose OCR Java の例 スクリーンショット](/images/aspose-ocr-java-example.png "領域抽出を示す Aspose OCR Java の例") + +## Aspose OCR Java の例 – OCR エンジンの初期化 + +任意の OCR ワークフローで最初に必要なのはエンジンインスタンスです。Aspose は画像の読み込みから言語選択までをすべて処理する軽量な `OcrEngine` クラスを提供しています。 + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Why this matters:** エンジンを事前に作成しておくことで、設定すべきクリーンなオブジェクトが得られます。バッチ処理で複数画像を扱う場合、同じ `OcrEngine` を再利用できるため、メモリと初期化時間を節約できます。 + +## OCR 用画像の読み込み + +次にエンジンにスキャン対象の画像を指示します。Aspose は低レベルな `FileInputStream` のボイラープレートを抽象化した `ImageStream.fromFile` ヘルパーを提供しています。 + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tip:** `YOUR_DIRECTORY` を `invoice.png` を保存した絶対パスまたは相対パスに置き換えてください。ファイルが見つからない場合、Aspose は `IOException` をスローするため、実装時には try‑catch でラップすることを検討してください。 + +## 領域を定義してテキストを抽出する + +ここが本題です。エンジンに「どこを見るか」を指示する矩形です。`java.awt.Rectangle` コンストラクタは `(x, y, width, height)` を受け取り、すべてピクセル単位で指定します。 + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**How it works:** `setRegion` を呼び出すことで、左端から 120 ピクセル、上端から 250 ピクセルの位置に幅 300 ピクセルのスライスに OCR スキャンを限定します。自分のレイアウトに合わせて数値を調整してください。ピクセル座標を表示できる任意の画像エディタで確認すると簡単です。 + +## 言語を有効化して認識を実行する + +Aspose OCR は多数の言語をサポートしていますが、請求書番号の抽出には英語だけで十分です。適切な言語だけを有効にすることで、誤検出を大幅に減らせます。 + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Why enable English only?** OCR エンジンは有効化されたすべての言語セットから文字を照合しようとするため、単純な英数字だけの場合は混乱の原因になります。言語範囲を絞ることで速度と精度の両方が向上します。 + +### 期待される出力 + +すべてが正しく設定されていれば、次のような出力が得られます。 + +``` +Extracted region text: INV-12345 +``` + +矩形が数ピクセルずれていると、出力が乱れたり空になることがあります。簡単な動作確認として、プログラムを実行しコンソールを確認、画像に表示されているテキストと一致しているかを確かめてください。 + +## コードを実行して出力を確認する + +Maven を使用している前提で、`pom.xml` に Aspose OCR の依存関係を追加します。 + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +コンパイルして実行: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +あるいはプレーンな `javac` を使う場合: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +コンソールに **Extracted region text** 行が表示されるはずです。もし “OCR recognition failed” と表示されたら、ファイルパスを再確認し、矩形が実際に読み取り可能な文字を含んでいるか確認してください。 + +## エッジケースと一般的なバリエーション + +| 状況 | 変更点 | +|-----------|----------------| +| **Multiple languages** (e.g., English + Spanish) | Call `ocrEngine.getLanguage().setSpanish(true);` alongside English. | +| **Region outside image bounds** | Aspose will silently clip the rectangle, but you’ll lose data. Use `ImageInfo` (`ocrEngine.getImage().getWidth()`) to verify dimensions before setting the region. | +| **Dynamic invoices** (different layouts) | Consider running a lightweight pre‑scan on the whole image to locate keywords like “Invoice #” and then compute the rectangle programmatically. | +| **Higher DPI images** | Increase `ocrEngine.getImage().setResolution(300);` for better accuracy on scanned documents. | +| **Performance tuning** | Disable unnecessary languages, keep the region as small as possible, and reuse a single `OcrEngine` instance across many files. | + +## 現場からのプロティップス + +- **Pro tip:** If you only need digits (common for invoice numbers), enable the numeric mode with `ocrEngine.getLanguage().setDigits(true);`. This eliminates alphabetic noise. +- **Watch out for:** Transparent PNGs. Aspose sometimes misinterprets the alpha channel; converting the image to a solid‑background JPEG first can solve odd blank outputs. +- **Remember:** The rectangle uses the image’s native coordinate system, not any UI scaling you might see on screen. Always test with the exact file you’ll process in production. + +## 次にやることは? + +これで領域ベース抽出のための堅実な **Aspose OCR Java example** が手に入りました。以下のような方向で拡張できます: + +- **Batch processing:** Loop over a folder of invoices, reusing the same `OcrEngine` to improve throughput. +- **Data validation:** Pipe the extracted text through a regex like `INV-\\d{5}` to ensure you captured a valid invoice number. +- **Integration with PDF:** Use Aspose.PDF to overlay the extracted text back onto the original document for audit trails. +- **Cloud deployment:** Wrap the code in a lightweight REST service (Spring Boot) so other systems can call it on demand. + +これらのステップはすべて同じコア概念—**load image for OCR**、**extract text from a region**、結果の処理—に基づいているため、移行はスムーズです。 + +--- + +*Happy coding! If you hit any snags, drop a comment below or check the Aspose forums where the community shares real‑world tweaks for tricky layouts.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/japanese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/japanese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..bd7430e66 --- /dev/null +++ b/ocr/japanese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-05-03 +description: JavaでAspose OCRを使用してHEIC画像からテキストを抽出します。ステップバイステップの例で、HEICをテキストに迅速に変換する方法を学びましょう。 +draft: false +keywords: +- extract text from heic +- convert heic to text +language: ja +og_description: JavaでAspose OCRを使用してHEIC画像からテキストを抽出します。このガイドでは、HEICを数分でテキストに変換する方法を示します。 +og_title: HEICからテキストを抽出 – Java OCRチュートリアル +tags: +- OCR +- Java +- Aspose +title: HEICからテキストを抽出する – 完全なJavaガイド +url: /ja/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HEIC からテキストを抽出 – 完全な Java ガイド + +JPEG や PNG に変換せずに **HEIC からテキストを抽出** する方法を考えたことがありますか? あなたは一人ではありません。モバイルアプリが `.heic` 写真を渡してきて、インデックス作成や分析のために埋め込まれたテキストが必要になると、多くの開発者が壁にぶつかります。良いニュースは、Aspose OCR for Java を使えば **HEIC から直接テキストを抽出** でき、余分な変換ステップは不要です。 + +このチュートリアルでは、**HEIC をテキストに変換** する方法も、シンプルでクリーンなパイプラインで示します。コードを任意の Java プロジェクトに貼り付けるだけで、すぐに高効率画像から文字列を取得できるようになります。 + +![HEIC からテキストを抽出する例](https://example.com/placeholder.png "HEIC からテキストを抽出する例") + +## 学習内容 + +- Maven/Gradle プロジェクトに Aspose OCR を設定する方法。 +- HEIC 画像から **テキストを抽出** するために必要な正確な Java コード。 +- このアプローチが、2 段階の `convert‑then‑OCR` ワークフローよりも高速でエラーが少ない理由。 +- 一般的な落とし穴(例:言語パックが欠如している)とその回避方法。 +- バッチ処理シナリオでソリューションをスケールさせるためのヒント。 + +ガイドの最後までに、数行のコードだけで **HEIC をテキストに変換** できるようになり、各ステップの「なぜ」も理解できるようになります。 + +--- + +## 前提条件 + +1. Java 8 以上 – Aspose OCR は最新の JDK で動作します。 +2. Maven または Gradle – Aspose OCR ライブラリを自動的に取得します。 +3. テストしたい **HEIC 画像**(`sample.heic` にリネームし、アクセス可能な場所に配置)。 +4. 任意ですが便利な IDE(IntelliJ IDEA や VS Code など)。 + +他に外部ツールは必要ありません。ライブラリが HEIC フォーマットをネイティブに処理します。 + +--- + +## ステップ 1 – プロジェクトに Aspose OCR を追加 + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **プロのコツ:** バージョン番号は公式の Aspose リリースと同期させてください。新しいバージョンは追加の HEIC バリアントをサポートし、言語精度が向上します。 + +--- + +## ステップ 2 – **HEIC からテキストを抽出** するために OCR エンジンを初期化 + +`OcrEngine` インスタンスを作成することは、HEIC からテキストを抽出するための最初の具体的なステップです。エンジンは低レベルのデコードを抽象化するため、HEIC コンテナ形式を意識する必要はありません。 + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**なぜ重要か:** +HEIC は HEIF コンテナに基づく最新の画像フォーマットです。従来の OCR ライブラリは JPEG/PNG を前提としているため、品質が劣化する可能性のある別途変換ステップが必要です。Aspose OCR のネイティブサポートにより、**HEIC からテキストを一括で抽出** でき、元のピクセルデータを保持し CPU サイクルを節約します。 + +--- + +## ステップ 3 – 必要な言語を有効化 + +デフォルトではエンジンは英語のみを対象とします。他の言語で **HEIC をテキストに変換** したい場合は、該当するフラグを切り替えるだけです。 + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **なぜ言語を明示的に有効化するのか?** +> 言語パックは必要に応じてロードされます。必要なものだけを有効化することでメモリ使用量が削減され、認識速度が向上します。 + +--- + +## ステップ 4 – 認識プロセスを実行 + +これでエンジンに画像を読み込んで文字列を生成させます。 + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**期待される出力**(画像にフレーズ “Hello World” が含まれていると仮定した場合): + +``` +=== Recognized Text === +Hello World +``` + +画像が空白またはテキストが読めない場合、エンジンは `false` を返し、フォールバックメッセージが表示されます。 + +--- + +## ステップ 5 – エッジケースとよくある質問の処理 + +### HEIC ファイルが破損している場合は? + +Aspose OCR はコンテナのデコードに失敗すると `IOException` をスローします。呼び出しを `try‑catch` ブロックで囲み、エラーを後で確認できるようにログに記録してください。 + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### バッチで�数の HEIC ファイルを処理できますか? + +もちろん可能です。ディレクトリをループし、同じ `OcrEngine` インスタンスを再利用して初期化のオーバーヘッドを回避してください。 + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### 非ラテン文字スクリプトでも **HEIC をテキストに変換** できますか? + +はい。Aspose OCR はアラビア語、中国語、キリル文字など多数の言語をサポートしています。対応する言語フラグを有効にするだけです(例:`engine.getLanguage().setChineseSimplified(true);`)。ヘッドレスサーバーで実行する場合は、適切なフォントファイルを追加することを忘れないでください。 + +--- + +## ステップ 6 – プログラムで結果を検証 + +本番パイプラインでは、OCR 出力が一定の品質基準を満たすか検証する必要があります。簡単な方法は、信頼度スコア(新しいバージョンで利用可能)を計算するか、返された文字列の長さをチェックすることです。 + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## 完全な動作例 + +以下は、上記すべてのステップを組み込んだ、完全な実行可能 Java クラスです。`HeifExample.java` という名前のファイルに貼り付け、HEIC ファイルへのパスを調整し、通常通り `javac` と `java` を実行してください。 + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +実行方法: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +コンソールに抽出された文字列が表示され、**HEIC をテキストに変換** に成功したことが確認できます。 + +--- + +## 結論 + +Java で Aspose OCR を使用して **HEIC からテキストを抽出** するために必要なすべてを解説しました。ライブラリの追加からエッジケースの処理まで、別途変換ユーティリティが不要なクリーンな単一ステップのソリューションを示しています。 + +- Web サービス、モバイルバックエンド、バッチジョブで **HEIC をテキストに変換** をリアルタイムに実行。 +- 1 行の設定で他言語へのサポートを拡張。 +- 多数のファイルで同じ `OcrEngine` を再利用してプロセスをスケール。 + +次のステップとして、**OCR 結果を検索可能なインデックスに埋め込む**(例:Elasticsearch)や、**画像前処理を追加して低コントラストの HEIC 写真の精度を向上させる**ことを検討できるでしょう。可能性は無限です—実験し、測定し、改善を繰り返してください。 + +質問や難しい HEIC ファイルに遭遇した場合は、下にコメントを残してください。ハッピーコーディング! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/korean/java/advanced-ocr-techniques/_index.md b/ocr/korean/java/advanced-ocr-techniques/_index.md index fb7e0f2eb..e52f76cf4 100644 --- a/ocr/korean/java/advanced-ocr-techniques/_index.md +++ b/ocr/korean/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,15 @@ Java용 Aspose.OCR을 사용하여 텍스트 인식 기능을 활용하세요. 정확한 텍스트 인식을 위해 Aspose.OCR로 Java 애플리케이션을 강화하세요. 통합이 쉽고 정확도가 높습니다. ### [Aspose.OCR에서 허용되는 문자 지정](./specify-allowed-characters/) Java용 Aspose.OCR을 사용하여 이미지에서 텍스트 추출을 원활하게 잠금 해제하세요. 효율적인 통합을 위한 단계별 가이드를 따르세요. +### [Java OCR을 위한 GPU 활성화 방법 – 완전 튜토리얼](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Java용 Aspose.OCR에서 GPU 가속을 설정하여 OCR 성능을 극대화하는 방법을 단계별로 안내합니다. +### [Java에서 병렬 OCR을 위한 고정 스레드 풀 생성](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Java용 Aspose.OCR을 활용해 병렬 OCR 처리를 위해 고정 스레드 풀을 설정하고 효율적으로 텍스트를 추출하는 방법을 안내합니다. +### [Java용 Aspose.OCR에서 OCR 정확도 향상 – 완전 가이드](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Java용 Aspose.OCR을 활용해 OCR 정확도를 극대화하는 방법을 단계별로 안내합니다. {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/korean/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/korean/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..b976c7219 --- /dev/null +++ b/ocr/korean/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-05-03 +description: Java에서 고정 스레드 풀을 생성하여 이미지를 빠르게 텍스트로 추출하세요. OCR을 실행하고 이미지를 텍스트로 변환하는 방법을 + 배우며, 병렬 OCR 처리로 성능을 향상시킵니다. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: ko +og_description: Java에서 고정 스레드 풀을 생성하여 이미지를 빠르게 텍스트로 추출하세요. OCR을 실행하고 이미지를 텍스트로 변환하는 + 방법을 배우며, 병렬 OCR 처리로 성능을 향상시킵니다. +og_title: Java에서 병렬 OCR을 위한 고정 스레드 풀 생성 +tags: +- Java +- OCR +- Multithreading +title: Java에서 병렬 OCR을 위한 고정 스레드 풀 생성 +url: /ko/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 고정 스레드 풀을 사용한 Java 병렬 OCR 만들기 + +OCR 작업을 **고정 스레드 풀**로 가속화해야 했지만 어디서 시작해야 할지 몰랐던 적이 있나요? 여러분만 그런 것이 아닙니다. 이미지가 많은 프로젝트에서는 단일 스레드 OCR 호출이 병목이 되는 경우가 많으며, 해결 방법은 놀라울 정도로 간단합니다: 작업자 스레드 풀을 만들고 파일들을 병렬로 처리하도록 하는 것입니다. + +이 튜토리얼에서는 Aspose OCR을 사용해 **이미지에서 텍스트를 추출**하는 방법, **OCR을 효율적으로 실행**하는 방법, 그리고 **이미지를 텍스트로 변환**하면서 CPU를 과도하게 사용하지 않는 방법을 배웁니다. 마지막에는 샘플 이미지 몇 장에 대해 **병렬 OCR 처리**를 시연하는 실행 가능한 Java 프로그램을 얻게 됩니다. + +## 만들게 될 것 + +다음과 같은 작은 콘솔 애플리케이션을 만들 것입니다: + +* 이미지 경로 목록(PNG, JPG, TIFF, BMP)을 읽음 +* **고정 스레드 풀**을 CPU 코어 수만큼 생성 +* 각 이미지에 대해 OCR 작업을 디스패치 +* 인식된 텍스트를 수집해 콘솔에 출력 +* 실행자를 깔끔하게 종료 + +외부 빌드 도구나 복잡한 프레임워크는 필요 없습니다—순수 Java와 Aspose OCR 라이브러리만 있으면 됩니다. Java 8 이상과 괜찮은 IDE만 있으면 바로 시작할 수 있습니다. + +## 사전 요구 사항 + +* **Java Development Kit (JDK) 8 이상** – 코드에 람다가 사용되므로 이전 버전에서는 컴파일되지 않습니다. +* **Aspose OCR for Java** – Aspose 웹사이트에서 JAR를 다운로드하거나 Maven(`com.aspose:aspose-ocr`)으로 가져옵니다. +* 몇 개의 테스트 이미지가 들어 있는 폴더(코드에서는 `YOUR_DIRECTORY`를 가리킵니다). +* Java 동시성에 대한 기본 지식(나머지는 여기서 설명합니다). + +> *Pro tip:* Maven을 사용한다면 `pom.xml`에 의존성을 추가하고 IDE가 클래스패스를 관리하도록 하세요. + +--- + +## 1단계: 필요한 임포트 추가 + +먼저, 사용할 클래스를 가져옵니다. 이것은 단순히 보일러플레이트가 아니라, 각 임포트가 OCR 엔진, 이미지 처리 유틸리티, 그리고 **고정 스레드 풀** 인스턴스를 만들 수 있게 해주는 동시성 도구들을 JVM에 알려주는 역할을 합니다. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – 핵심 OCR API. +* `java.util.*` – 이미지 경로와 결과를 저장할 컬렉션. +* `java.util.concurrent.*` – `ExecutorService`와 `Future`를 포함한 동시성 패키지. + +--- + +## 2단계: 처리할 이미지 정의 + +다음으로, **이미지에서 텍스트를 추출**하려는 파일들을 나열합니다. `Arrays.asList`를 사용하면 코드가 간결해지고, 나머지 로직을 건드리지 않고도 디렉터리를 자유롭게 교체할 수 있습니다. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +필요에 따라 항목을 더 추가하세요. 스레드 풀은 CPU 코어 수에 따라 자동으로 확장됩니다. + +--- + +## 3단계: CPU 코어 수에 맞는 **고정 스레드 풀** 생성 + +튜토리얼의 핵심 부분입니다. 런타임에 사용 가능한 코어 수를 조회하고, `Executors` 팩토리를 통해 정확히 그 크기의 풀을 얻습니다. 고정 풀을 사용하는 이유는 예측 가능한 스레드 수가 OS 자원을 고갈시키는 “스레드 폭발”을 방지하기 때문입니다. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()`는 논리 코어 수(하이퍼스레드 포함)를 반환합니다. +* `newFixedThreadPool(coreCount)`는 CPU 용량을 초과하지 않도록 보장하므로, **병렬 OCR 실행**에 가장 안전한 방법입니다. + +--- + +## 4단계: 각 이미지에 OCR 작업 제출 + +이제 각 파일 경로를 **OCR을 실행**하고 텍스트를 인식한 뒤 결과를 반환하는 `Callable`로 변환합니다. 람다 안에서 새 `OcrEngine`을 인스턴스화하는 이유는 엔진 상태가 스레드에 안전하지 않기 때문입니다. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* 각 `submit` 호출은 람다를 풀에 전달하고, 풀은 유휴 스레드에 작업을 스케줄합니다. +* `Future` 객체를 통해 나중에 인식된 텍스트를 가져올 수 있으며, 필요하면 순서를 유지할 수도 있습니다. + +--- + +## 5단계: 인식된 텍스트 가져와서 표시 + +모든 작업이 큐에 들어가면 `Future` 리스트를 순회하면서 `get()`을 호출해 각 OCR 작업이 끝날 때까지 블록합니다. 여기서 **이미지를 텍스트로 변환** 단계가 실제로 보이게 됩니다: `engine.getText()` 호출이 원시 문자열을 반환합니다. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +일반적인 콘솔 출력 예시: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +파일이 손상되었거나 처리에 실패하면 `Failed:` 로 시작하고 경로가 이어지는 라인이 표시됩니다—빠른 디버깅에 유용합니다. + +--- + +## 6단계: Executor Service 정리 + +풀을 종료하는 것을 절대 잊지 마세요. 그렇지 않으면 JVM이 아직 작업이 남아 있다고 생각해 프로세스가 종료되지 않을 수 있습니다. 정상적인 종료는 실행 중인 작업이 모두 끝난 뒤 프로세스가 종료되도록 합니다. + +```java +executor.shutdown(); +``` + +필요에 따라 `awaitTermination`을 호출해 타임아웃을 강제할 수 있지만, 대부분의 커맨드라인 유틸리티에서는 간단히 `shutdown()`만으로 충분합니다. + +--- + +## 전체 작업 예제 + +아래는 완전한 실행 가능한 프로그램입니다. `ParallelOcrTutorial.java`라는 파일에 복사·붙여넣기하고, 이미지 경로를 조정한 뒤 `javac`와 `java`로 일반적인 방법대로 실행하세요. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**예상 결과:** `imagePaths` 리스트와 동일한 순서로 각 이미지의 텍스트 내용이 콘솔에 출력됩니다. 처리할 수 없는 이미지가 있으면 빈 줄 대신 실패 알림이 표시됩니다. + +--- + +## 자주 묻는 질문 및 예외 상황 + +### 이미지 수가 스레드 수보다 많으면 어떻게 되나요? + +고정 스레드 풀은 초과 작업을 자동으로 큐에 넣습니다. 스레드가 현재 OCR 작업을 마치면 대기 중인 다음 작업을 가져갑니다. 이 큐잉 동작이 바로 **병렬 OCR 처리**의 핵심이며, CPU를 과부하시키지 않으면서 최대 처리량을 얻을 수 있습니다. + +### 언어를 바꿀 수 있나요? + +물론입니다. `engine.getLanguage().setEnglish(true);`를 원하는 언어 플래그로 교체하면 됩니다. 예를 들어 `setFrench(true)` 혹은 여러 언어를 동시에 사용하려면 `recognize()` 전에 여러 셋터를 호출하면 됩니다. + +### 매우 큰 이미지는 어떻게 처리하나요? + +큰 파일은 스레드당 많은 메모리를 차지할 수 있습니다. `OutOfMemoryError`가 발생한다면 엔진에 전달하기 전에 이미지를 축소하거나, `-Xmx` 옵션으로 힙 크기를 늘리세요. 또 다른 방법은 **캐시드 스레드 풀**(`Executors.newCachedThreadPool()`)을 사용하는 것입니다. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/korean/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/korean/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..1dd8bf7f4 --- /dev/null +++ b/ocr/korean/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-05-03 +description: Java OCR에서 GPU를 빠르게 활성화하는 방법 – Aspose OCR을 사용하여 이미지에서 텍스트를 추출하는 방법을 배워보세요. + 전체 Java OCR 튜토리얼 포함. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: ko +og_description: 몇 분 만에 Java OCR에 GPU를 활성화하는 방법. 이 튜토리얼에서는 GPU 가속을 이용한 Java OCR 튜토리얼로 + 이미지에서 텍스트를 추출하는 방법을 보여줍니다. +og_title: Java OCR에서 GPU를 활성화하는 방법 – 단계별 가이드 +tags: +- Java +- OCR +- GPU +- Aspose +title: Java OCR에서 GPU를 활성화하는 방법 – 완전 튜토리얼 +url: /ko/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Java OCR에서 GPU 활성화 방법 – 전체 튜토리얼 + +그림에서 텍스트를 추출하려고 할 때 **GPU를 어떻게 활성화하는지** 궁금해 본 적 있나요? 고해상도 스캔에 OCR을 실행해야 했고 CPU가 멈춘 듯 느껴졌다면, 당신만 그런 것이 아닙니다. 이 가이드에서는 텍스트 추출 방법을 보여줄 뿐만 아니라 실험적인 GPU 지원을 켜서 **java 이미지 텍스트 인식**을 가장 빠르게 수행하는 방법을 시연하는 **java ocr tutorial**을 단계별로 안내합니다. + +먼저 Aspose OCR 라이브러리를 가져오고, GPU를 활성화한 뒤 샘플 이미지를 로드하고, 마지막으로 파일에서 인식된 문자열을 추출합니다. 최종적으로 Maven 프로젝트에 바로 삽입할 수 있는 실행 가능한 코드 조각을 얻게 되며, GPU가 왜 중요한지, 언제 도움이 되지 않을 수 있는지, 일반적인 문제를 어떻게 해결하는지 이해하게 됩니다. 외부 문서는 필요 없으며, 필요한 모든 것이 여기 있습니다. + +--- + +## 필요 사항 + +- **Java Development Kit (JDK) 8+** – 코드는 최신 JDK에서 모두 실행됩니다. +- **Maven** (또는 Gradle)으로 Aspose OCR 의존성을 가져옵니다. +- **GPU 호환 머신** (CUDA 지원 NVIDIA 카드가 가장 좋지만, Aspose API는 자동으로 CPU 모드로 전환됩니다). +- 예시 이미지, 예: `sample-highres.png`, 참조 가능한 폴더에 배치합니다. +- **image to text conversion java** 기술에 대한 약간의 호기심. + +이 중 하나라도 없으면 Oracle 또는 OpenJDK에서 JDK를 다운로드하고, Maven을 설치한 뒤 그래픽 드라이버를 최신 상태로 유지하세요. 준비 작업은 여기까지이며, 나머지는 순수 Java입니다. + +--- + +## 단계 1: 프로젝트에 Aspose OCR 추가 + +우선 OCR 엔진 자체가 필요합니다. Aspose는 깔끔한 Maven 아티팩트를 제공하므로, 아래 코드를 `pom.xml`에 삽입하면 됩니다: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Gradle을 선호한다면, 동일한 내용은 다음과 같습니다: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +의존성이 해결되면 `OcrEngine`, `ImageStream`, 그리고 **java ocr tutorial**을 손쉽게 만들 언어 헬퍼에 접근할 수 있습니다. + +--- + +## 단계 2: GPU 활성화 방법 (핵심 키워드 적용) + +이제 핵심 단계인 OCR 엔진에 대한 **GPU 활성화 방법**에 들어갑니다. Aspose API는 단일 불리언 플래그 `setUseGpu(true)`를 제공합니다. 실험적인 기능이지만, 적절한 그래픽 카드에서는 특히 크고 고해상도 이미지에서 인식 시간이 크게 단축됩니다. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **전문가 팁:** 환경에 호환 가능한 GPU가 없으면 이 플래그는 조용히 무시되고 엔진은 CPU 모드로 자동 전환됩니다. 충돌은 없으며, 단지 성능이 느려집니다. + +--- + +## 단계 3: 처리할 이미지 로드 + +OCR 엔진은 `ImageStream`을 사용합니다. 그림을 텍스트로 변환하려는 파일을 지정하면 됩니다. 간결한 방법은 다음과 같습니다: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +경로는 절대 경로나 프로젝트 작업 디렉터리 기준 상대 경로여야 합니다. 파일을 찾을 수 없으면 `IOException`이 발생하며, 이는 나중에 처리합니다. + +--- + +## 단계 4: 언어 선택 (선택 사항이지만 권장) + +Aspose OCR은 다양한 알파벳을 지원하지만, 기대하는 언어를 지정해 주어야 합니다. 영어의 경우 한 줄 코드로 설정합니다: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +프랑스어나 중국어가 필요하면 플래그를 교체하면 됩니다 (`setFrench(true)`, `setChineseSimplified(true)` 등). 이 작은 힌트는 엔진이 가능성이 낮은 문자 후보를 제거할 수 있어 정확도를 높이는 경우가 많습니다. + +--- + +## 단계 5: Recognize Text Image Java – 엔진 실행 + +이제 진짜 순간입니다: **recognize text image java** 방식. `recognize()`를 호출하고, 반환값이 `true`이면 `getText()`로 결과 문자열을 가져옵니다. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +출력은 `sample-highres.png`에서 추출된 원시 텍스트가 됩니다. 깔끔한 문서를 위해 문자열을 후처리(공백 제거, 줄 바꿈 교체 등)할 수 있습니다. 간단한 예시는 다음과 같습니다: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## 단계 6: 전체 작업 예제 (복사‑붙여넣기 가능) + +아래는 바로 컴파일하고 실행할 수 있는 전체 **java ocr tutorial** 예제입니다. 오류 처리와 예상 출력이 포함되어 있습니다. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**예상 출력 (예시):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +이미지에 여러 줄이 포함되어 있으면 줄 바꿈 문자(`\n`)로 구분됩니다. 엔진은 가능한 한 원본 레이아웃을 유지합니다. + +--- + +## 단계 7: 엣지 케이스, 팁 및 일반 질문 + +### GPU가 감지되지 않으면 어떻게 하나요? + +Aspose는 호환 가능한 장치를 찾지 못하면 GPU 지원을 조용히 비활성화합니다. 초기화 후 플래그를 확인하여 모드를 검증할 수 있습니다: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +`false`가 출력되면 드라이버 버전과 `CUDA` 런타임이 `PATH`에 포함되어 있는지 다시 확인하세요. + +### 작은 이미지에도 GPU가 도움이 될까? + +항상 그런 것은 아닙니다. 작은 비트맵을 GPU로 전송하는 오버헤드가 속도 향상보다 클 수 있습니다. 500 KB 이하 이미지에서는 오히려 약간 느려질 수 있습니다. 이런 경우 `setUseGpu(false)`로 설정하면 됩니다. + +### 다국어 문서는 어떻게 처리하나요? + +여러 언어를 동시에 활성화할 수 있습니다: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +엔진은 두 언어 집합 중 하나의 문자를 매칭하려 시도하므로, 이중 언어 PDF에 유용합니다. + +### PDF를 직접 처리할 수 있나요? + +Aspose OCR은 이미지 스트림을 사용하므로, 먼저 각 PDF 페이지를 래스터화해야 합니다(예: Aspose PDF 또는 PDFBox 사용). 그런 다음 생성된 `BufferedImage`를 `setImage`에 전달합니다. + +--- + +## 시각적 요약 + +![how to enable gpu for Java OCR engine](/images/gpu-ocr.png "Diagram showing GPU‑accelerated OCR pipeline") + +*다이어그램은 이미지 로드 → GPU 활성화 OCR → 텍스트 추출 흐름을 보여줍니다.* + +--- + +## 결론 + +우리는 Java OCR 워크플로우에서 **GPU 활성화 방법**을 다루고, 전체 **java ocr tutorial**을 진행했으며, 실용적인 복사‑붙여넣기 예제로 **image to text conversion java**를 시연했습니다. 단일 플래그를 전환함으로써 대용량 스캔 처리 시간을 몇 초, 심지어 몇 분까지 단축시켜 애플리케이션을 더 빠르고 반응성 있게 만들 수 있습니다. + +다음 단계는? 이미지를 배치로 루프 처리해 보거나, 다양한 언어를 실험하거나, Apache Tika와 결합해 추출된 텍스트를 자동으로 색인화해 보세요. GPU 가속 OCR을 다른 Java 라이브러리와 결합하면 가능성은 무한합니다. + +**어려운 이미지에서 텍스트를 추출하는 방법**에 대한 질문이 있거나 **recognize text image java** 팁을 더 알고 싶다면 아래에 댓글을 남겨 주세요. 즐거운 코딩 되세요! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/korean/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/korean/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..bff177f95 --- /dev/null +++ b/ocr/korean/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java를 사용하여 OCR 정확도를 빠르게 향상시키세요. 몇 단계만으로 OCR용 이미지를 로드하고, 언어를 + 활성화하며, 강력한 맞춤법 교정을 적용하는 방법을 배워보세요. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: ko +og_description: Aspose OCR Java로 OCR 정확도를 즉시 향상시키세요. 이 가이드는 OCR을 위한 이미지 로드 방법, 언어 + 활성화, 그리고 강력한 맞춤법 교정 사용법을 보여줍니다. +og_title: Java에서 OCR 정확도 향상 – 단계별 Aspose OCR 튜토리얼 +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Java에서 OCR 정확도 향상 – 완전한 Aspose OCR 가이드 +url: /ko/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Java에서 OCR 정확도 향상 – Aspose OCR 완전 가이드 + +OCR 결과가 어린아이의 손글씨처럼 보인 적 있나요? 문자가 누락되거나, 잘못된 단어가 나오거나, 완전한 난독화가 발생한다면 혼자가 아닙니다. **OCR 정확도 향상**은 텍스트 추출이 신뢰할 수 없을 때 대부분의 개발자가 가장 먼저 찾는 해결책입니다. + +이 튜토리얼에서는 **load image for OCR**을 수행할 뿐만 아니라 Aspose의 내장 맞춤법 교정 엔진을 활용해 품질을 크게 끌어올리는 실용적인 솔루션을 단계별로 살펴봅니다. 최종적으로는 영어 + 프랑스어 텍스트를 공격적인 교정으로 인식하는 실행 가능한 Java 프로그램을 얻게 됩니다—외부 사전은 전혀 필요 없습니다. + +## 배울 내용 + +- Aspose의 `ImageStream`을 사용해 **load image for OCR**하는 방법 +- 정확도 향상을 위해 올바른 언어를 활성화하는 이유 +- 다국어 문서에서 공격적인 맞춤법 교정이 미치는 영향 +- Maven/Gradle 프로젝트에 바로 넣을 수 있는 완전한 실행 코드 샘플 +- 확장 시 고려해야 할 팁, 함정, 다음 단계 아이디어 + +> **전제 조건** – Java 8 이상, 최신 Aspose.OCR for Java JAR (v23.12 이상), 그리고 영어와 프랑스어 텍스트가 포함된 이미지 파일(`multilingual.png`). 그 외에 추가 모델이나 API는 필요 없습니다. + +--- + +## OCR 정확도 향상: Aspose OCR 엔진 구성 + +OCR 파이프라인의 핵심은 엔진 설정입니다. Aspose에 정확히 무엇을 기대하는지 알려주면 올바른 결과를 얻을 가능성이 크게 높아집니다. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**왜 중요한가:** +- **엔진 인스턴스** – `OcrEngine`은 모든 설정을 보관합니다; 새 인스턴스를 만들면 이전 실행에서 남은 상태가 섞이는 것을 방지합니다. +- **이미지 로드** – `ImageStream.fromFile`을 사용하는 것이 **load image for OCR**을 위한 가장 직관적인 방법이며, PNG, JPEG, BMP, TIFF를 기본 지원합니다. +- **언어 플래그** – 영어 + 프랑스를 활성화하면 인식기가 해당 문자 집합과 언어 모델을 사용하게 되며, 이는 정확도를 10‑15 % 정도 끌어올릴 수 있습니다. +- **공격적인 맞춤법 교정** – `SpellCorrectionLevel.AGGRESSIVE`를 설정하면 내부 사전이 의심스러운 단어를 적극적으로 교정합니다. 이는 잡음이 많은 스캔에서 **OCR 정확도 향상**을 위한 핵심 레버입니다. + +--- + +## OCR을 위한 이미지 로드 – 소스 파일 지정 + +엔진이 작업을 시작하려면 비트맵이 필요합니다. 손상된 스트림이나 잘못된 경로를 전달하면 “null pointer” 오류가 바로 발생합니다. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**프로 팁:** 사용자가 업로드한 이미지를 처리할 경우, 로딩 로직을 try‑catch 블록으로 감싸고 파일 크기·형식을 먼저 검증하세요. 이렇게 하면 엔진이 거대한 PDF나 지원되지 않는 포맷에 걸려 멈추는 일을 방지할 수 있습니다. + +--- + +## 더 나은 인식을 위한 다중 언어 활성화 + +대부분의 OCR 라이브러리는 기본적으로 영어만 지원합니다. 문서에 여러 언어가 섞여 있으면 인식 오류가 급증합니다. Aspose는 추가 언어 전환을 매우 간단하게 해줍니다. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**왜 여러 언어를 활성화해야 할까?** +- **문자 집합 확장** – 프랑스어에는 “é”, “ç”와 같은 악센트 문자가 포함됩니다. 프랑스어 플래그가 없으면 이 문자들이 “e”, “c”로 변환돼 이후 맞춤법 교정기에 혼란을 줍니다. +- **맥락 힌트** – OCR 엔진은 언어 모델을 활용해 단어 경계를 예측합니다; 이중 언어 모델은 잘못된 분할을 줄여줍니다. + +--- + +## 공격적인 맞춤법 교정 적용 + +맞춤법 교정은 선택 사항이 아니라, 저품질 스캔에서 **OCR 정확도 향상**을 위해 반드시 필요한 요소입니다. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### 레벨 한눈에 보기 + +| 레벨 | 동작 | +|-----------|------------------------------------------------| +| **NONE** | 교정 없음 – 엔진의 원시 출력만 반환합니다. | +| **LIGHT** | 명백한 오타를 수정, 과도한 교정 위험 낮음. | +| **AGGRESSIVE** | 사전 조회를 적극적으로 적용; 잡음이 많은 이미지에 최적. | + +**주의:** 공격 모드는 정식 고유명사(예: “McDonald” → “Mcdonald”)를 바꿀 수 있습니다. 도메인에 이름이 많이 포함돼 있다면 사후 처리 필터를 고려하세요. + +--- + +## 인식 실행 및 출력 확인 + +모든 설정이 완료되었으니 이제 Aspose에게 무거운 작업을 맡겨봅시다. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### 예상 출력 (예시) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +만약 난독화된 텍스트가 나온다면 다음을 재확인하세요: + +1. 이미지 품질 (흐리거나 저해상도 이미지가 정확도를 저하시킵니다). +2. 언어 플래그 – 프랑스어가 누락되면 악센트가 사라집니다. +3. 맞춤법 교정 레벨 – 과도한 교정이 눈에 띈다면 `LIGHT`로 바꿔보세요. + +--- + +## 전체 작업 예제 (한 파일에 모든 단계) + +아래는 바로 컴파일하고 실행할 수 있는 완전한 프로그램입니다. 파일명을 `SpellCorrectionTutorial.java`로 저장하고 이미지 경로를 조정한 뒤 `javac && java`로 실행하세요. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +컴파일 및 실행: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +콘솔에 교정된 다국어 텍스트가 출력될 것입니다. + +--- + +## 흔히 겪는 문제와 해결 방법 + +| 증상 | 예상 원인 | 해결 방법 | +|------|-----------|-----------| +| **빈 출력** | 이미지 경로 오류 또는 파일 읽기 실패 | `ImageStream.fromFile` 경로를 확인하고 파일 존재 여부를 체크하세요. | +| **악센트 누락** | 프랑스어 언어 미활성화 | `ocrEngine.getLanguage().setFrench(true)` 호출을 추가하세요. | +| **깨진 문자** | 저해상도 이미지 (< 150 dpi) | 해상도를 높이거나 재스캔하고, 이미지 향상 라이브러리로 전처리하세요. | +| **과도하게 교정된 이름** | 공격적인 맞춤법 교정 적용 | 이름 화이트리스트를 사용하거나 `LIGHT` 레벨로 전환하세요. | + +--- + +## 다음 단계: OCR 파이프라인 확장하기 + +- **배치 처리:** 이미지 디렉터리를 순회하면서 단일 `OcrEngine` 인스턴스를 재사용해 성능을 최적화합니다. +- **PDF 추출:** Aspose.PDF를 이용해 각 페이지를 이미지로 변환한 뒤 OCR 엔진에 전달합니다. +- **맞춤 사전:** 의료·법률 등 전문 용어가 많다면 `ocrEngine.getSpellCorrector().addUserDictionary(...)`로 사용자 사전을 추가합니다. +- **병렬 처리:** Java `ForkJoinPool`을 사용해 여러 OCR 작업을 동시에 실행할 수 있지만, 각 엔진이 이미지 버퍼를 보유하므로 메모리 사용량을 주의하세요. + +--- + +![OCR 정확도 향상 예시](/images/ocr-example.png){alt="수정된 다국어 텍스트가 표시된 OCR 정확도 향상 스크린샷"} + +--- + +## 결론 + +우리는 이제 **OCR 정확도를 향상시켰습니다** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/korean/java/ocr-operations/_index.md b/ocr/korean/java/ocr-operations/_index.md index 339c6eca7..7c283eee9 100644 --- a/ocr/korean/java/ocr-operations/_index.md +++ b/ocr/korean/java/ocr-operations/_index.md @@ -80,6 +80,10 @@ Aspose.OCR 로 Java에서 OCR의 힘을 활용하세요. PDF 문서의 텍스트 Aspose.OCR 로 Java에서 강력한 텍스트 인식을 구현하세요. TIFF 이미지의 텍스트를 손쉽게 인식하고, 원활한 OCR 경험을 위해 지금 다운로드하세요. ### [Aspose OCR을 사용한 텍스트 이미지 인식 – 전체 Java OCR 튜토리얼](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Aspose OCR을 활용해 Java에서 텍스트 이미지 전체 인식 과정을 단계별로 안내합니다. +### [Aspose OCR Java 예제: 영역에서 텍스트 추출](./aspose-ocr-java-example-extract-text-from-a-region/) +Aspose OCR for Java를 사용해 이미지의 특정 영역에서 텍스트를 추출하는 방법을 단계별로 안내합니다. +### [HEIC에서 텍스트 추출 – 전체 Java 가이드](./extract-text-from-heic-complete-java-guide/) +Aspose.OCR for Java를 사용해 HEIC 이미지에서 텍스트를 추출하는 전체 단계별 가이드입니다. ## 자주 묻는 질문 diff --git a/ocr/korean/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/korean/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..fdfde7288 --- /dev/null +++ b/ocr/korean/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,172 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java 예제는 OCR을 위해 이미지를 로드하고 몇 줄의 코드만으로 영역에서 텍스트를 추출하는 방법을 보여줍니다. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: ko +og_description: Aspose OCR Java 예제는 OCR을 위해 이미지를 로드하고 특정 영역에서 텍스트를 추출하는 방법을 보여주며, + 인보이스 처리에 최적입니다. +og_title: Aspose OCR Java 예제 – 영역 텍스트 추출 +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Aspose OCR Java 예제: 영역에서 텍스트 추출' +url: /ko/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java 예제: 영역에서 텍스트 추출 + +이미지에서 필요한 부분만 추출할 수 있는 **Aspose OCR Java 예제**를 찾고 계신가요? 이 가이드에서는 **OCR을 위한 이미지 로드**와 **영역에서 텍스트 추출**을 단계별로 살펴보겠습니다. 인보이스 번호, 양식 필드 또는 큰 이미지 안에 숨겨진 데이터 조각을 추출하는 데 적합합니다. + +전체 페이지를 스캔하는 대신 OCR을 사각형 영역으로 제한하는 이유가 궁금하실 겁니다. 짧게 말하면: 속도와 정확도 때문입니다. 엔진이 정의된 영역만 살펴보면 관련 없는 잡음을 건너뛰고, 더 빠르게 실행되며, 종종 더 깔끔한 결과를 제공합니다. 이 튜토리얼을 마치면 바로 그 작업을 수행하는 독립형 Java 프로그램을 얻을 수 있으며, 초보자들이 흔히 겪는 함정을 피할 수 있는 몇 가지 팁도 함께 제공합니다. + +## 필요 사항 + +- **Java Development Kit (JDK) 11** 이상이 설치되어 있어야 합니다. +- **Aspose.OCR for Java** 라이브러리 (Maven Central 저장소 또는 Aspose 다운로드 포털에서 최신 JAR를 받을 수 있습니다). +- 읽고자 하는 텍스트가 포함된 이미지 파일 – 데모에서는 `invoice.png`를 사용합니다. 이 파일은 오른쪽 상단 근처에 인보이스 번호가 있습니다. +- 선호하는 IDE 또는 간단한 텍스트 편집기와 터미널; Maven, Gradle, 혹은 일반 `javac` 등 어떤 빌드 도구도 사용 가능합니다. + +그게 전부입니다. 추가 OCR 엔진이나 네이티브 바이너리 없이 순수 Java와 Aspose만 있으면 됩니다. + +![Aspose OCR Java example screenshot](/images/aspose-ocr-java-example.png "Aspose OCR Java example showing region extraction") + +## Aspose OCR Java 예제 – OCR 엔진 초기화 + +OCR 워크플로우에서 가장 먼저 필요한 것은 엔진 인스턴스입니다. Aspose는 이미지 로드부터 언어 선택까지 모든 작업을 처리하는 가벼운 `OcrEngine` 클래스를 제공합니다. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Why this matters:** 엔진을 미리 생성하면 구성할 수 있는 깨끗한 객체를 얻을 수 있습니다. 배치를 처리하는 경우 동일한 `OcrEngine`을 여러 이미지에 재사용할 수 있어 메모리와 초기화 시간을 절약합니다. + +## OCR을 위한 이미지 로드 + +다음으로 엔진에게 스캔할 사진을 알려줍니다. Aspose는 저수준 `FileInputStream` 보일러플레이트를 추상화한 `ImageStream.fromFile` 헬퍼를 제공합니다. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tip:** `YOUR_DIRECTORY`를 `invoice.png`가 저장된 절대 경로나 상대 경로로 교체하세요. 파일을 찾을 수 없으면 Aspose가 `IOException`을 발생시키므로, 실제 코드에서는 이를 try‑catch 블록으로 감싸는 것이 좋습니다. + +## 영역 정의 및 텍스트 추출 + +이제 쇼의 스타인, 엔진에게 어디를 볼지 알려주는 사각형이 등장합니다. `java.awt.Rectangle` 생성자는 `(x, y, width, height)`를 인수로 받으며, 모두 픽셀 단위입니다. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**How it works:** `setRegion`을 호출하면 OCR 스캔을 왼쪽 가장자리에서 120픽셀, 위쪽 가장자리에서 250픽셀 떨어진 지점부터 시작하는 가로 300픽셀 폭의 슬라이스로 제한합니다. 자신의 레이아웃에 맞게 숫자를 조정하세요; 픽셀 좌표를 표시하는 그래픽 편집기에서 빠르게 확인할 수 있습니다. + +## 언어 설정 및 인식 실행 + +Aspose OCR은 수십 개의 언어를 지원하지만, 인보이스 번호에는 영어만 필요합니다. 올바른 언어만 활성화하면 오탐이 크게 줄어듭니다. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Why enable English only?** OCR 엔진은 활성화된 모든 언어 집합의 문자를 매칭하려고 시도하므로, 텍스트가 단순한 영숫자일 때 혼란을 줄 수 있습니다. 언어 범위를 좁히면 속도와 정밀도가 모두 향상됩니다. + +### 예상 출력 + +모든 것이 정상적으로 맞춰지면 다음과 같은 결과가 표시됩니다: + +``` +Extracted region text: INV-12345 +``` + +사각형이 몇 픽셀이라도 어긋나면 출력이 깨지거나 비어 있을 수 있습니다. 이는 간단한 검증 방법입니다: 프로그램을 실행하고 콘솔을 확인하여 텍스트가 이미지에 보이는 내용과 일치하는지 확인하세요. + +## 코드 실행 및 출력 확인 + +Maven을 사용한다고 가정하고, `pom.xml`에 Aspose OCR 의존성을 추가합니다: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +컴파일하고 실행합니다: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +또는 일반 `javac`를 선호한다면: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +콘솔에 **Extracted region text** 라인이 출력되어야 합니다. “OCR recognition failed”라는 메시지가 나타나면 파일 경로를 다시 확인하고, 해당 영역에 읽을 수 있는 문자가 실제로 포함되어 있는지 확인하세요. + +## 엣지 케이스 및 일반 변형 + +| 상황 | 변경 방법 | +|-----------|----------------| +| **Multiple languages** (예: English + Spanish) | 영어와 함께 `ocrEngine.getLanguage().setSpanish(true);`를 호출합니다. | +| **Region outside image bounds** | Aspose는 사각형을 조용히 클립하지만 데이터가 손실됩니다. `ImageInfo` (`ocrEngine.getImage().getWidth()`)를 사용해 차원을 확인한 뒤 영역을 설정하세요. | +| **Dynamic invoices** (different layouts) | 전체 이미지에 가벼운 사전 스캔을 실행해 “Invoice #”와 같은 키워드를 찾은 다음, 프로그램matically 사각형을 계산하는 방식을 고려하세요. | +| **Higher DPI images** | 스캔 문서의 정확도를 높이려면 `ocrEngine.getImage().setResolution(300);`을 증가시킵니다. | +| **Performance tuning** | 불필요한 언어를 비활성화하고, 영역을 가능한 작게 유지하며, 여러 파일에 걸쳐 단일 `OcrEngine` 인스턴스를 재사용합니다. | + +## 현장에서 얻은 프로 팁 + +- **Pro tip:** 숫자만 필요할 경우(인보이스 번호에 일반적) `ocrEngine.getLanguage().setDigits(true);`로 숫자 모드를 활성화하세요. 알파벳 노이즈를 제거할 수 있습니다. +- **Watch out for:** 투명 PNG. Aspose가 알파 채널을 오해하는 경우가 있어, 이미지를 배경이 있는 JPEG로 변환하면 이상한 빈 출력 문제를 해결할 수 있습니다. +- **Remember:** 사각형은 이미지의 고유 좌표 시스템을 사용하며, 화면에 보이는 UI 스케일링과는 무관합니다. 프로덕션에서 처리할 정확한 파일로 항상 테스트하세요. + +## 다음 단계는? + +이제 영역 기반 추출을 위한 견고한 **Aspose OCR Java 예제**를 갖추었으니, 여러 유용한 방향으로 확장할 수 있습니다: + +- **Batch processing:** 인보이스 폴더를 순회하면서 동일한 `OcrEngine`을 재사용해 처리량을 높입니다. +- **Data validation:** 추출된 텍스트를 `INV-\\d{5}`와 같은 정규식에 파이프하여 유효한 인보이스 번호인지 확인합니다. +- **Integration with PDF:** Aspose.PDF를 사용해 추출된 텍스트를 원본 문서에 오버레이하여 감사 추적을 남깁니다. +- **Cloud deployment:** 코드를 가벼운 REST 서비스(Sprint Boot)로 래핑해 다른 시스템이 필요할 때 호출할 수 있게 합니다. + +이러한 단계들은 모두 동일한 핵심 개념—**OCR을 위한 이미지 로드**, **영역에서 텍스트 추출**, 결과 처리—을 포함하므로 전환이 손쉽습니다. + +--- + +*행복한 코딩 되세요! 문제가 발생하면 아래에 댓글을 남기거나, 커뮤니티가 실제 레이아웃에 대한 팁을 공유하는 Aspose 포럼을 확인해 보세요.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/korean/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/korean/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..60b0e3e01 --- /dev/null +++ b/ocr/korean/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Java에서 Aspose OCR을 사용해 HEIC 이미지에서 텍스트를 추출합니다. 단계별 예제로 HEIC를 텍스트로 빠르게 + 변환하는 방법을 배워보세요. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: ko +og_description: Java에서 Aspose OCR을 사용하여 HEIC 이미지에서 텍스트를 추출합니다. 이 가이드는 몇 분 안에 HEIC를 + 텍스트로 변환하는 방법을 보여줍니다. +og_title: HEIC에서 텍스트 추출 – Java OCR 튜토리얼 +tags: +- OCR +- Java +- Aspose +title: HEIC에서 텍스트 추출 – 완전한 Java 가이드 +url: /ko/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HEIC에서 텍스트 추출 – 완전한 Java 가이드 + +HEIC 파일을 JPEG 또는 PNG로 먼저 변환하지 않고 **HEIC에서 텍스트를 추출**하는 방법이 궁금했나요? 당신만 그런 것이 아닙니다. 많은 개발자들이 모바일 앱에서 `.heic` 사진을 받아 인덱싱이나 분석을 위해 내장된 텍스트가 필요할 때 난관에 부딪힙니다. 좋은 소식은? Aspose OCR for Java를 사용하면 **HEIC에서 텍스트를 직접 추출**할 수 있어 추가 변환 단계가 필요 없습니다. + +이 튜토리얼에서는 **HEIC를 텍스트로 변환**하는 방법도 하나의 깔끔한 파이프라인으로 보여드릴 것이며, 코드를 어떤 Java 프로젝트에든 삽입하여 오늘 바로 고효율 이미지에서 문자열을 추출할 수 있습니다. + +![extract text from heic example](https://example.com/placeholder.png "extract text from heic example") + +## 배울 내용 + +- Maven/Gradle 프로젝트에서 Aspose OCR 설정 방법. +- **HEIC에서 텍스트를 추출**하기 위해 필요한 정확한 Java 코드. +- 이 접근 방식이 두 단계 `convert‑then‑OCR` 워크플로보다 더 빠르고 오류가 적은 이유. +- 일반적인 함정(예: 언어 팩 누락)과 회피 방법. +- 배치 처리 시 솔루션을 확장하는 팁. + +가이드가 끝날 때쯤이면 몇 줄의 코드만으로 **HEIC를 텍스트로 변환**할 수 있게 되며, 각 단계 뒤에 숨은 “왜”에 대해서도 이해하게 될 것입니다. + +--- + +## 사전 요구 사항 + +시작하기 전에 다음을 준비하세요: + +1. **Java 8 이상** – Aspose OCR은 최신 JDK에서 실행됩니다. +2. **Maven 또는 Gradle** – Aspose OCR 라이브러리를 자동으로 가져옵니다. +3. 테스트하고 싶은 **HEIC 이미지**(`sample.heic`로 이름을 바꾸고 접근 가능한 위치에 두세요). +4. 선택 사항이지만 유용한 IDE, 예: IntelliJ IDEA 또는 VS Code. + +다른 외부 도구는 필요하지 않습니다; 라이브러리가 HEIC 포맷을 기본적으로 처리합니다. + +--- + +## Step 1 – 프로젝트에 Aspose OCR 추가 + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Pro tip:** 버전 번호를 공식 Aspose 릴리스와 맞추세요; 최신 버전은 추가 HEIC 변형을 지원하고 언어 정확도를 향상시킵니다. + +--- + +## Step 2 – **HEIC에서 텍스트를 추출**하기 위해 OCR 엔진 초기화 + +`OcrEngine` 인스턴스를 생성하는 것이 HEIC에서 텍스트를 추출하기 위한 첫 번째 구체적인 단계입니다. 엔진은 모든 저수준 디코딩을 추상화하므로 HEIC 컨테이너 포맷에 대해 신경 쓸 필요가 없습니다. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**왜 중요한가:** +HEIC는 HEIF 컨테이너를 기반으로 하는 최신 이미지 포맷입니다. 기존 OCR 라이브러리는 JPEG/PNG를 기대해 별도의 변환 단계를 거쳐야 하며, 이는 품질 저하를 초래할 수 있습니다. Aspose OCR의 네이티브 지원을 통해 **HEIC에서 텍스트를 한 번에 추출**할 수 있어 원본 픽셀 데이터를 보존하고 CPU 사이클을 절약합니다. + +--- + +## Step 3 – 원하는 언어 활성화 + +기본적으로 엔진은 영어만 찾습니다. 다른 언어로 **HEIC를 텍스트로 변환**해야 한다면 해당 플래그를 토글하면 됩니다. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **왜 언어를 명시적으로 활성화하나요?** +> 언어 팩은 필요할 때 로드됩니다. 필요한 것만 활성화하면 메모리 사용량이 줄고 인식 속도가 빨라집니다. + +--- + +## Step 4 – 인식 프로세스 실행 + +이제 엔진에 이미지를 읽고 문자열을 생성하도록 요청합니다. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Expected output** (assuming the image contains the phrase “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +이미지가 비어 있거나 텍스트를 읽을 수 없으면 엔진은 `false`를 반환하고 대체 메시지가 표시됩니다. + +--- + +## Step 5 – 엣지 케이스 및 일반 질문 처리 + +### HEIC 파일이 손상된 경우는? + +Aspose OCR은 컨테이너를 디코딩할 수 없을 때 `IOException`을 발생시킵니다. 호출을 `try‑catch` 블록으로 감싸고 오류를 나중에 확인할 수 있도록 로그에 기록하세요. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### 여러 HEIC 파일을 배치로 처리할 수 있나요? + +물론입니다. 디렉터리를 순회하면서 동일한 `OcrEngine` 인스턴스를 재사용하면 반복 초기화 오버헤드를 피할 수 있습니다. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### 비라틴 스크립트에 대해서도 **HEIC를 텍스트로 변환**하나요? + +예—Aspose OCR은 아랍어, 중국어, 키릴 문자 등 많은 언어를 지원합니다. 해당 언어 플래그를 활성화하면 됩니다(예: `engine.getLanguage().setChineseSimplified(true);`). 헤드리스 서버에서 실행한다면 적절한 폰트 파일을 추가하는 것을 잊지 마세요. + +--- + +## Step 6 – 프로그래밍 방식으로 결과 검증 + +프로덕션 파이프라인에서는 OCR 출력이 특정 품질 기준을 충족하는지 확인해야 할 때가 많습니다. 빠른 방법은 신뢰도 점수를 계산하거나(새 버전에서 제공) 반환된 문자열의 길이를 확인하는 것입니다. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## 전체 작동 예제 + +아래는 위의 모든 단계를 포함한 완전하고 바로 실행 가능한 Java 클래스입니다. `HeifExample.java`라는 파일에 붙여넣고, HEIC 파일 경로를 조정한 뒤, 일반적으로 `javac`와 `java`를 실행하세요. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +콘솔에 추출된 문자열이 출력되어 **HEIC를 텍스트로 성공적으로 변환**했음을 확인할 수 있습니다. + +--- + +## 결론 + +우리는 Aspose OCR을 사용해 Java에서 **HEIC에서 텍스트를 추출**하는 데 필요한 모든 과정을 살펴보았습니다. 라이브러리 추가부터 엣지 케이스 처리까지, 이 가이드는 별도의 변환 유틸리티가 필요 없는 깔끔한 단일 단계 솔루션을 보여줍니다. + +이제 할 수 있습니다: + +- 웹 서비스, 모바일 백엔드 또는 배치 작업에서 HEIC를 실시간으로 **텍스트로 변환**할 수 있습니다. +- 한 줄의 설정으로 다른 언어 지원을 확장합니다. +- 많은 파일에 대해 동일한 `OcrEngine`을 재사용하여 프로세스를 확장합니다. + +다음 단계로 **OCR 결과를 검색 가능한 인덱스**(예: Elasticsearch)에 삽입하거나 **이미지 전처리**를 추가해 저대비 HEIC 사진의 정확도를 높이는 것을 탐색해 볼 수 있습니다. 가능성은 무한합니다—실험하고, 측정하고, 반복하세요. + +질문이 있거나 까다로운 HEIC 파일에 직면했나요? 아래에 댓글을 남겨 주세요. 즐거운 코딩 되세요! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/polish/java/advanced-ocr-techniques/_index.md b/ocr/polish/java/advanced-ocr-techniques/_index.md index 22b1b6739..6d2846b5b 100644 --- a/ocr/polish/java/advanced-ocr-techniques/_index.md +++ b/ocr/polish/java/advanced-ocr-techniques/_index.md @@ -51,19 +51,34 @@ Dzięki Aspose.OCR dla Java opanowanie zaawansowanych technik OCR nigdy nie był ## Zaawansowane samouczki dotyczące technik OCR ### [Wykonywanie OCR na BufferedImage w Aspose.OCR dla Java](./perform-ocr-buffered-image/) Wykonuj OCR na BufferedImage bez wysiłku dzięki Aspose.OCR dla Java. Płynnie wyodrębniaj tekst z obrazów. Pobierz teraz, aby uzyskać wszechstronne możliwości rozpoznawania tekstu. + ### [Wykonywanie OCR na obrazie z adresu URL w Aspose.OCR dla Java](./perform-ocr-image-from-url/) Odblokuj płynną ekstrakcję tekstu obrazu w Javie za pomocą Aspose.OCR. Wysoka dokładność OCR z łatwą integracją. + ### [Wykonywanie OCR na określonej stronie w Aspose.OCR](./perform-ocr-on-page/) Odblokuj moc Aspose.OCR dla Java, korzystając z naszego przewodnika krok po kroku dotyczącego wykonywania OCR na określonych stronach. Wyodrębnij tekst z obrazów bez wysiłku i ulepsz swoje projekty Java. + ### [Przygotowanie prostokątów do OCR w Aspose.OCR](./prepare-rectangles-for-ocr/) Odblokuj moc rozpoznawania tekstu dzięki Aspose.OCR dla Java. Postępuj zgodnie z naszym przewodnikiem krok po kroku, aby zapewnić bezproblemową integrację. Ulepsz swoje aplikacje Java dzięki wydajnym funkcjom OCR. + ### [Rozpoznawanie linii w Aspose.OCR dla Java](./recognize-lines/) Wzmocnij swoje aplikacje Java za pomocą Aspose.OCR w celu precyzyjnego rozpoznawania tekstu. Łatwa integracja, wysoka dokładność. + ### [Określanie dozwolonych znaków w Aspose.OCR](./specify-allowed-characters/) Odblokuj płynnie wyodrębnianie tekstu z obrazów za pomocą Aspose.OCR dla Java. Postępuj zgodnie z naszym przewodnikiem krok po kroku, aby zapewnić skuteczną integrację. + +### [Jak włączyć GPU dla OCR w Javie – Kompletny samouczek](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Dowiedz się, jak skonfigurować GPU, aby przyspieszyć OCR w aplikacjach Java przy użyciu Aspose.OCR. + +### [Utwórz stałą pulę wątków dla równoległego OCR w Javie](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Dowiedz się, jak skonfigurować stałą pulę wątków, aby przyspieszyć przetwarzanie OCR równolegle w aplikacjach Java. + +### [Popraw dokładność OCR w Javie – Kompletny przewodnik Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Dowiedz się, jak zwiększyć dokładność OCR w aplikacjach Java, korzystając z pełnego przewodnika Aspose OCR. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/polish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/polish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..d82d4ca2d --- /dev/null +++ b/ocr/polish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,219 @@ +--- +category: general +date: 2026-05-03 +description: Utwórz stałą pulę wątków w Javie, aby szybko wyodrębniać tekst z obrazów. + Dowiedz się, jak uruchomić OCR, konwertować obraz na tekst i zwiększyć wydajność + dzięki równoległemu przetwarzaniu OCR. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: pl +og_description: Utwórz stałą pulę wątków w Javie, aby szybko wyodrębniać tekst z obrazów. + Dowiedz się, jak uruchomić OCR, konwertować obraz na tekst i zwiększyć wydajność + dzięki równoległemu przetwarzaniu OCR. +og_title: Utwórz stałą pulę wątków do równoległego OCR w Javie +tags: +- Java +- OCR +- Multithreading +title: Utwórz stałą pulę wątków dla równoległego OCR w Javie +url: /pl/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create Fixed Thread Pool for Parallel OCR in Java + +Czy kiedykolwiek potrzebowałeś **create fixed thread pool**, aby przyspieszyć zadania OCR, ale nie wiedziałeś, od czego zacząć? Nie jesteś sam. W wielu projektach z dużą liczbą obrazów wąskim gardłem jest jednowątkowe wywołanie OCR, a rozwiązanie jest zaskakująco proste: uruchom pulę wątków pracowników i pozwól im przetwarzać pliki równolegle. + +W tym samouczku dowiesz się, jak **extract text from images** przy użyciu Aspose OCR, jak **run OCR** wydajnie oraz jak **convert image to text** bez nadmiernego obciążania procesora. Po zakończeniu będziesz mieć gotowy do uruchomienia program w Javie, który demonstruje **parallel OCR processing** na kilku przykładowych obrazach. + +## Co zbudujesz + +Zbudujemy małą aplikację konsolową, która: + +* Odczytuje listę ścieżek do obrazów (PNG, JPG, TIFF, BMP). +* **Creates a fixed thread pool** o rozmiarze równym liczbie rdzeni CPU. +* Rozsyła zadanie OCR dla każdego obrazu. +* Zbiera rozpoznany tekst i wypisuje go w konsoli. +* Czyści i zamyka executor. + +Bez zewnętrznych narzędzi budujących, bez skomplikowanych frameworków — tylko czysta Java i biblioteka Aspose OCR. Jeśli masz Java 8+ i przyzwoite IDE, jesteś gotowy. + +## Wymagania wstępne + +* **Java Development Kit (JDK) 8 or newer** – kod używa lambd, więc starsze wersje nie skompilują się. +* **Aspose OCR for Java** – pobierz plik JAR ze strony Aspose lub pobierz go przez Maven (`com.aspose:aspose-ocr`). +* Folder z kilkoma obrazami testowymi (kod odwołuje się do `YOUR_DIRECTORY`). +* Podstawowa znajomość współbieżności w Javie (resztę wyjaśnimy). + +> *Pro tip:* Jeśli używasz Maven, dodaj zależność do swojego `pom.xml` i pozwól IDE obsłużyć classpath. + +--- + +## Krok 1: Dodaj wymagane importy + +Najpierw wprowadź klasy, których potrzebujemy. To nie jest tylko szablon; każdy import informuje JVM, gdzie znaleźć silnik OCR, narzędzia do obsługi obrazów oraz narzędzia współbieżności, które pozwalają nam **create fixed thread pool**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – podstawowe API OCR. +* `java.util.*` – kolekcje do przechowywania ścieżek do obrazów i wyników. +* `java.util.concurrent.*` – pakiet współbieżności zawierający `ExecutorService` i `Future`. + +## Krok 2: Zdefiniuj obrazy do przetworzenia + +Następnie wymieniamy pliki, z których chcemy **extract text from images**. Użycie `Arrays.asList` utrzymuje kod zwięzły i pozwala zamienić własny katalog bez modyfikacji reszty logiki. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Śmiało dodawaj kolejne pozycje; pula wątków automatycznie dopasuje się do liczby rdzeni CPU, które posiadasz. + +## Krok 3: **Create Fixed Thread Pool** dopasowany do rdzeni CPU + +To serce samouczka. Zapytujemy środowisko, ile rdzeni jest dostępnych i prosimy fabrykę `Executors` o pulę dokładnie tego rozmiaru. Dlaczego stała? Ponieważ przewidywalna liczba wątków zapobiega przerażającemu „wybuchowi wątków”, który może pozbawić system operacyjny zasobów. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` zwraca liczbę logicznych rdzeni (w tym hyper‑threads). +* `newFixedThreadPool(coreCount)` gwarantuje, że nigdy nie przekroczymy pojemności CPU, co jest najbezpieczniejszym sposobem na **run OCR** równolegle. + +## Krok 4: Prześlij zadanie OCR dla każdego obrazu + +Teraz zamieniamy każdą ścieżkę pliku w callable, który **runs OCR**, rozpoznaje tekst i zwraca wynik. Zauważ, że tworzymy nowy `OcrEngine` wewnątrz lambdy — zapobiega to niebezpiecznemu współdzieleniu stanu silnika między wątkami. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Każde wywołanie `submit` przekazuje lambdę do puli, która planuje ją na wolnym wątku. +* Obiekty `Future` pozwalają później pobrać rozpoznany tekst, zachowując kolejność, jeśli jest potrzebna. + +## Krok 5: Pobierz i wyświetl rozpoznany tekst + +Gdy wszystkie zadania są w kolejce, po prostu iterujemy po liście `Future`, wywołując `get()`, aby zablokować się aż każde zadanie OCR zakończy się. To właśnie w tym miejscu krok **convert image to text** staje się widoczny: wywołanie `engine.getText()` zwraca surowy ciąg znaków. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Typowy wyjściowy tekst w konsoli wygląda tak: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Jeśli plik się nie uda (np. jest uszkodzony), zobaczysz linię zaczynającą się od `Failed:` i ścieżkę — przydatne do szybkiego debugowania. + +## Krok 6: Posprzątaj usługę Executor + +Nigdy nie zapominaj zamknąć puli; w przeciwnym razie JVM może pozostać aktywna, myśląc, że wciąż są zadania do wykonania. Łagodne zamknięcie pozwala zakończyć wszystkie uruchomione zadania przed zakończeniem procesu. + +```java +executor.shutdown(); +``` + +Możesz także wywołać `awaitTermination`, jeśli potrzebujesz wymusić limit czasu, ale dla większości narzędzi wiersza poleceń zwykłe `shutdown()` wystarczy. + +## Pełny działający przykład + +Poniżej znajduje się kompletny, gotowy do uruchomienia program. Skopiuj go do pliku o nazwie `ParallelOcrTutorial.java`, dostosuj ścieżki do obrazów i uruchom `javac` + `java` tak jak zwykle. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Oczekiwany rezultat:** treść tekstowa każdego obrazu wypisana w konsoli, w tej samej kolejności co lista `imagePaths`. Jeśli któryś obraz nie może zostać przetworzony, zobaczysz komunikat o niepowodzeniu zamiast pustej linii. + +## Częste pytania i przypadki brzegowe + +### Co jeśli mam więcej obrazów niż wątków? + +Stała pula wątków automatycznie umieści w kolejce nadmiarowe zadania. Gdy wątek zakończy bieżące zadanie OCR, przejmuje kolejne. To zachowanie kolejki jest istotą **parallel OCR processing** — uzyskujesz maksymalną przepustowość bez przeciążania CPU. + +### Czy mogę zmienić język? + +Oczywiście. Zastąp `engine.getLanguage().setEnglish(true);` odpowiednią flagą językową, np. `setFrench(true)` lub włącz wiele języków, wywołując kilka setterów przed `recognize()`. + +### Jak obsłużyć bardzo duże obrazy? + +Duże pliki mogą zużywać dużo pamięci na wątek. Jeśli zauważysz `OutOfMemoryError`, rozważ zmniejszenie obrazu przed przekazaniem go do silnika lub zwiększ rozmiar sterty przy pomocy `-Xmx`. Inne podejście to użycie **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/polish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/polish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..019f42eea --- /dev/null +++ b/ocr/polish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,219 @@ +--- +category: general +date: 2026-05-03 +description: jak szybko włączyć GPU w Java OCR – dowiedz się, jak wyodrębniać tekst + z obrazów przy użyciu Aspose OCR. Pełny samouczek Java OCR w zestawie. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: pl +og_description: jak w kilka minut włączyć GPU dla Java OCR. Ten poradnik pokazuje, + jak wyodrębnić tekst z obrazów przy użyciu Java OCR z przyspieszeniem GPU. +og_title: Jak włączyć GPU dla Java OCR – przewodnik krok po kroku +tags: +- Java +- OCR +- GPU +- Aspose +title: Jak włączyć GPU dla Java OCR – Kompletny poradnik +url: /pl/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# jak włączyć gpu dla Java OCR – Kompletny samouczek + +Zastanawiałeś się kiedyś **jak włączyć gpu**, próbując wyodrębnić tekst z obrazu? Jeśli kiedykolwiek musiałeś uruchomić OCR na skanie o wysokiej rozdzielczości i poczułeś, że CPU zwalnia do zera, nie jesteś sam. W tym przewodniku przeprowadzimy Cię przez **java ocr tutorial**, który nie tylko pokaże, jak wyodrębnić tekst, ale także zademonstruje najszybszy sposób **recognize text image java**‑style poprzez włączenie eksperymentalnego wsparcia GPU. + +Zaczniemy od pobrania biblioteki Aspose OCR, następnie włączymy GPU, załadujemy przykładowy obraz i w końcu wyciągniemy rozpoznany ciąg znaków z pliku. Po zakończeniu będziesz mieć gotowy do uruchomienia fragment kodu, który możesz wkleić do dowolnego projektu Maven, a także zrozumiesz, dlaczego GPU ma znaczenie, kiedy może nie pomóc i jak rozwiązywać typowe problemy. Nie potrzebujesz zewnętrznej dokumentacji — wszystko, czego potrzebujesz, znajduje się tutaj. + +--- + +## Czego będziesz potrzebować + +- **Java Development Kit (JDK) 8+** – kod działa na każdym nowoczesnym JDK. +- **Maven** (lub Gradle) do pobrania zależności Aspose OCR. +- Maszyna **kompatybilna z GPU** (karta NVIDIA z obsługą CUDA działa najlepiej, ale API Aspose w razie potrzeby przełączy się na CPU). +- Przykładowy obraz, np. `sample-highres.png`, umieszczony w folderze, do którego możesz odwołać się. +- Odrobina ciekawości dotyczącej technik **image to text conversion java**. + +Jeśli brakuje Ci któregoś z powyższych elementów, pobierz JDK od Oracle lub OpenJDK, zainstaluj Maven i upewnij się, że sterownik graficzny jest aktualny. To wszystko, co trzeba przygotować; reszta to czysta Java. + +## Krok 1: Dodaj Aspose OCR do swojego projektu + +Najpierw potrzebujemy samego silnika OCR. Aspose udostępnia czysty artefakt Maven; po prostu wklej ten fragment do swojego `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Jeśli wolisz Gradle, równoważny zapis wygląda tak: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Gdy zależność zostanie rozwiązana, będziesz mieć dostęp do `OcrEngine`, `ImageStream` oraz pomocników językowych, które sprawiają, że **java ocr tutorial** jest bezproblemowy. + +## Krok 2: Jak włączyć GPU (Główne słowo kluczowe w akcji) + +Teraz przechodzimy do sedna sprawy: **jak włączyć gpu** dla silnika OCR. API Aspose udostępnia pojedynczy flag boolean — `setUseGpu(true)`. Jest to funkcja eksperymentalna, ale na przyzwoitej karcie graficznej zobaczysz dramatyczne skrócenie czasu rozpoznawania, szczególnie przy dużych, wysokiej rozdzielczości obrazach. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** Jeśli Twoje środowisko nie posiada kompatybilnego GPU, flaga zostanie po cichu zignorowana, a silnik przełączy się w tryb CPU. Nie nastąpi awaria, tylko wolniejsze działanie. + +## Krok 3: Załaduj obraz, który chcesz przetworzyć + +Silnik OCR pracuje z `ImageStream`. skieruj go na plik, który chcesz zamienić z obrazu na czysty tekst. Oto zwięzły sposób: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Upewnij się, że ścieżka jest absolutna lub względna względem katalogu roboczego projektu. Jeśli plik nie zostanie znaleziony, otrzymasz `IOException` — złapiemy to później. + +## Krok 4: Wybierz język (Opcjonalnie, ale zalecane) + +Aspose OCR potrafi obsłużyć wiele alfabetów, ale powinieneś poinformować go, którego się spodziewasz. Dla języka angielskiego wystarczy jednowierszowy zapis: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Jeśli potrzebujesz francuskiego lub chińskiego, po prostu zamień flagę (`setFrench(true)`, `setChineseSimplified(true)` itp.). Ta mała podpowiedź często zwiększa dokładność, ponieważ silnik może odrzucić mało prawdopodobne kandydatury znaków. + +## Krok 5: Rozpoznaj tekst obrazu Java – Uruchom silnik + +Nadszedł moment prawdy: **recognize text image java** style. Wywołujemy `recognize()`, a jeśli zwróci `true`, pobieramy wynikowy ciąg znaków metodą `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +Wyjściem będzie surowy tekst wyodrębniony z `sample-highres.png`. Dla czystego dokumentu możesz chcieć dodatkowo przetworzyć ciąg (przyciąć białe znaki, zamienić podziały linii itp.). Oto szybki przykład: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +## Krok 6: Pełny działający przykład (gotowy do kopiowania) + +Poniżej znajduje się kompletny **java ocr tutorial**, który możesz skompilować i uruchomić od razu. Zawiera obsługę błędów i wypisuje oczekiwany wynik. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Oczekiwany wynik (przykład):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Jeśli obraz zawiera wiele linii, pojawią się one oddzielone znakami podziału linii (`\n`). Silnik zachowuje oryginalny układ tak dobrze, jak to możliwe. + +## Krok 7: Przypadki brzegowe, wskazówki i najczęstsze pytania + +### Co zrobić, gdy GPU nie zostanie wykryte? + +Aspose po cichu wyłącza wsparcie GPU, gdy nie znajdzie kompatybilnego urządzenia. Możesz zweryfikować tryb, sprawdzając flagę po inicjalizacji: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Jeśli wypisze `false`, sprawdź wersję sterownika oraz czy środowisko uruchomieniowe `CUDA` znajduje się na `PATH`. + +### Czy GPU pomaga przy małych obrazach? + +Nie zawsze. Narzut związany z przesyłaniem małego bitmapu do GPU może przewyższyć zysk w szybkości. Dla obrazów poniżej 500 KB możesz nawet zauważyć niewielkie spowolnienie. W takich przypadkach po prostu ustaw `setUseGpu(false)`. + +### Jak obsłużyć dokumenty wielojęzyczne? + +Możesz włączyć kilka języków jednocześnie: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Silnik spróbuje dopasować znaki z obu zestawów, co jest przydatne przy dwujęzycznych PDF‑ach. + +### Czy mogę przetwarzać PDF‑y bezpośrednio? + +Aspose OCR pracuje z strumieniami obrazów, więc najpierw musisz rasteryzować każdą stronę PDF (np. przy użyciu Aspose PDF lub PDFBox), a następnie przekazać powstały `BufferedImage` do `setImage`. + +## Podsumowanie wizualne + +![jak włączyć gpu dla silnika OCR w Javie](/images/gpu-ocr.png "Diagram przedstawiający przyspieszony GPU‑pipeline OCR") + +*Diagram ilustruje przepływ od ładowania obrazu → OCR z włączonym GPU → wyodrębnianie tekstu.* + +## Zakończenie + +Omówiliśmy **jak włączyć gpu** w przepływie pracy Java OCR, przeszliśmy przez pełny **java ocr tutorial** i zademonstrowaliśmy **image to text conversion java** w praktycznym, gotowym do kopiowania przykładzie. Przełączając jedną flagę, możesz zaoszczędzić sekundy — a nawet minuty — przy przetwarzaniu dużych skanów, sprawiając, że Twoje aplikacje będą szybsze i bardziej responsywne. + +Co dalej? Spróbuj przetworzyć partię obrazów w pętli, eksperymentuj z różnymi językami lub połącz to z Apache Tika, aby automatycznie indeksować wyodrębniony tekst. Nie ma granic, gdy połączysz przyspieszony GPU OCR z innymi bibliotekami Java. + +Masz pytania o **jak wyodrębnić tekst** z trudnych obrazów, lub chcesz dowiedzieć się więcej o trikach **recognize text image java**? zostaw komentarz poniżej i powodzenia w kodowaniu! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/polish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/polish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..770860ff6 --- /dev/null +++ b/ocr/polish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-05-03 +description: Szybko zwiększ dokładność OCR przy użyciu Aspose OCR Java. Dowiedz się, + jak wczytać obraz do OCR, włączyć języki i zastosować agresywną korektę pisowni + w kilku krokach. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: pl +og_description: Popraw dokładność OCR natychmiast dzięki Aspose OCR Java. Ten przewodnik + pokazuje, jak wczytać obraz do OCR, włączyć języki i używać agresywnej korekty pisowni. +og_title: Popraw dokładność OCR w Javie – krok po kroku tutorial Aspose OCR +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Popraw dokładność OCR w Javie – Kompletny przewodnik Aspose OCR +url: /pl/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Popraw dokładność OCR w Javie – Kompletny przewodnik Aspose OCR + +Zastanawiałeś się kiedyś, dlaczego wyniki OCR wyglądają jak pisanie przedszkolaka? Jeśli walczysz z brakującymi literami, błędnymi słowami lub po prostu z bełkotem, nie jesteś sam. **Improve OCR accuracy** to pierwsza rzecz, do której sięgają większość programistów, gdy ich wyodrębnianie tekstu jest niepewne. + +W tym samouczku przeprowadzimy praktyczne rozwiązanie, które nie tylko **load image for OCR**, ale także wykorzystuje wbudowany silnik korekty pisowni Aspose, aby podnieść jakość. Po zakończeniu będziesz mieć gotowy do uruchomienia program w Javie, który rozpoznaje tekst w języku angielskim + francuskim z agresywną korektą — bez potrzeby zewnętrznych słowników. + +## Czego się nauczysz + +- Jak **load image for OCR** przy użyciu `ImageStream` Aspose. +- Dlaczego włączenie odpowiednich języków ma znaczenie dla dokładności. +- Wpływ agresywnej korekty pisowni na dokumenty wielojęzyczne. +- Pełny, uruchamialny przykład kodu, który możesz wkleić do dowolnego projektu Maven/Gradle. +- Wskazówki, pułapki i pomysły na kolejne kroki przy skalowaniu tego podejścia. + +> **Prerequisites** – Java 8 lub nowsza, aktualny plik JAR Aspose.OCR for Java (v23.12 lub późniejszy) oraz plik obrazu (`multilingual.png`) zawierający tekst po angielsku i francusku. To wszystko — bez dodatkowych modeli czy API. + +## Popraw dokładność OCR: skonfiguruj silnik Aspose OCR + +Serce każdej pipeline OCR stanowi konfiguracja silnika. Mówiąc Aspose dokładnie, czego oczekujesz, dajesz mu szansę na prawidłowe działanie. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Dlaczego to ma znaczenie:** + +- **Engine instance** – `OcrEngine` przechowuje wszystkie ustawienia; utworzenie nowej instancji zapobiega przenoszeniu stanu z poprzednich uruchomień. +- **Image loading** – Użycie `ImageStream.fromFile` jest najprostszym sposobem na **load image for OCR**. Obsługuje PNG, JPEG, BMP i TIFF od razu. +- **Language flags** – Włączenie angielskiego + francuskiego informuje rozpoznawacz, aby używał odpowiednich zestawów znaków i modeli językowych, co samo w sobie może zwiększyć dokładność o 10‑15 %. +- **Aggressive spell correction** – Ustawienie `SpellCorrectionLevel.AGGRESSIVE` powoduje, że wewnętrzny słownik agresywnie przepisuje wątpliwe słowa, co jest kluczowe, gdy chcesz **improve OCR accuracy** na szumnych skanach. + +## Ładowanie obrazu do OCR – ustawianie pliku źródłowego + +Zanim silnik będzie mógł cokolwiek zrobić, potrzebuje bitmapy. Jeśli podasz mu uszkodzony strumień lub niewłaściwą ścieżkę, napotkasz wyjątek szybciej niż zdążysz powiedzieć „null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** Jeśli przetwarzasz obrazy przesyłane przez użytkowników, otocz logikę ładowania blokiem try‑catch i najpierw zweryfikuj rozmiar/format pliku. Zapobiega to zacięciu silnika przy ogromnych PDF‑ach lub nieobsługiwanych formatach. + +## Włącz wiele języków dla lepszego rozpoznawania + +Większość bibliotek OCR domyślnie obsługuje tylko język angielski. Gdy dokument miesza języki, zauważysz wzrost liczby niepoprawnie rozpoznanych znaków. Aspose ułatwia przełączanie dodatkowych języków. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Dlaczego włączać więcej niż jeden język?** +- **Rozszerzenie zestawu znaków** – Francuski zawiera litery z akcentami, takie jak „é” i „ç”. Bez flagi francuskiej zamieniają się na „e” lub „c”, co później myli korektor pisowni. +- **Wskazówki kontekstowe** – Silnik OCR używa modeli językowych do przewidywania granic słów; model dwujęzyczny zmniejsza liczbę błędnych podziałów. + +## Zastosuj agresywną korektę pisowni + +Korekta pisowni nie jest tylko „miłym dodatkiem”; to zmieniacz gry, gdy musisz **improve OCR accuracy** na skanach niskiej jakości. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Poziomy w skrócie + +| Poziom | Zachowanie | +|------------|----------------------------------------------| +| **NONE** | Brak korekty – tylko surowy wynik silnika. | +| **LIGHT** | Naprawia oczywiste literówki, niskie ryzyko nadmiernej korekty. | +| **AGGRESSIVE** | Aggresywnie korzysta ze słownika; najlepszy dla szumnych obrazów. | + +**Uwaga:** Tryb agresywny może przepisać prawidłowe nazwy własne (np. „McDonald” → „Mcdonald”). Jeśli Twoja domena zawiera wiele nazw, rozważ filtr post‑procesowy. + +## Uruchom rozpoznawanie i zweryfikuj wynik + +Teraz, gdy wszystko jest skonfigurowane, czas pozwolić Aspose wykonać ciężką pracę. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Oczekiwany wynik (przykład) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Jeśli zamiast tego widzisz bełkot, sprawdź ponownie: + +1. Jakość obrazu (rozmyte lub niskiej rozdzielczości obrazy obniżają dokładność). +2. Flagi językowe – brak francuskiego spowoduje utratę akcentów. +3. Poziom korekty pisowni – wypróbuj `LIGHT`, jeśli zauważysz nadmierną korektę. + +## Pełny działający przykład (wszystkie kroki w jednym pliku) + +Poniżej znajduje się kompletny program, który możesz skompilować i uruchomić bezpośrednio. Zapisz go jako `SpellCorrectionTutorial.java`, dostosuj ścieżkę do obrazu i uruchom poleceniem `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Kompiluj i uruchom: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Powinieneś zobaczyć poprawiony wielojęzyczny tekst wypisany w konsoli. + +## Typowe pułapki i jak ich unikać + +| Objaw | Prawdopodobna przyczyna | Rozwiązanie | +|---------|--------------|-----| +| **Blank output** | Ścieżka obrazu nieprawidłowa lub plik nieczytelny | Sprawdź ścieżkę w `ImageStream.fromFile`; dodaj sprawdzenie istnienia pliku. | +| **Missing accents** | Nie włączono języka francuskiego | Wywołaj `ocrEngine.getLanguage().setFrench(true)`. | +| **Garbage characters** | Obraz o niskiej rozdzielczości (< 150 dpi) | Zwiększ rozdzielczość lub zeskanuj ponownie w wyższej DPI; rozważ wstępne przetwarzanie przy użyciu bibliotek do poprawy obrazu. | +| **Over‑corrected names** | Agresywna korekta pisowni na nazwiskach własnych | Post‑process z białą listą znanych nazw lub przełącz na poziom `LIGHT`. | + +## Kolejne kroki: skalowanie pipeline OCR + +- **Batch processing:** Przeglądaj katalog obrazów, ponownie używaj jednej instancji `OcrEngine` dla wydajności. +- **PDF extraction:** Użyj Aspose.PDF do konwersji każdej strony na obraz, a następnie podaj go silnikowi OCR. +- **Custom dictionaries:** Jeśli Twoja domena używa specjalistycznej terminologii (medycznej, prawnej), wczytaj własną listę słów do `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Parallelism:** `ForkJoinPool` w Javie może uruchamiać wiele zadań OCR równocześnie, ale zwróć uwagę na zużycie pamięci, ponieważ każdy silnik przechowuje bufory obrazu. + +![Poprawa dokładności OCR przykład](/images/ocr-example.png){alt="Zrzut ekranu poprawy dokładności OCR pokazujący poprawiony tekst wielojęzyczny"} + +## Podsumowanie + +Właśnie **poprawiliśmy OCR** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/polish/java/ocr-operations/_index.md b/ocr/polish/java/ocr-operations/_index.md index 8c31cecde..645b5f821 100644 --- a/ocr/polish/java/ocr-operations/_index.md +++ b/ocr/polish/java/ocr-operations/_index.md @@ -73,6 +73,8 @@ Podsumowując, dzięki naszej liście tutoriali Aspose.OCR dla Javy masz klucz d ## Tutoriale operacji OCR ### [Performing OCR with Detect Areas Mode in Aspose.OCR](./perform-ocr-detect-areas-mode/) Odblokuj moc wyodrębniania tekstu z obrazów przy użyciu Aspose.OCR dla Javy. Kompleksowy tutorial o OCR w trybie Detect Areas. +### [Aspose OCR Java – Przykład: Wyodrębnianie tekstu z obszaru](./aspose-ocr-java-example-extract-text-from-a-region/) +Przykładowy kod w Javie pokazujący, jak wyodrębnić tekst z określonego regionu obrazu przy użyciu Aspose.OCR. ### [Performing OCR with Language Selection in Aspose.OCR](./perform-ocr-language-selection/) Odblokuj precyzyjne wyodrębnianie tekstu z obrazów przy użyciu Aspose.OCR dla Javy. Postępuj zgodnie z naszym przewodnikiem krok po kroku, aby uzyskać dokładny OCR z wyborem języka. ### [OCR Recognizing PDF Documents in Aspose.OCR for Java](./recognize-pdf/) @@ -81,6 +83,8 @@ Odblokuj moc OCR w Javie z Aspose.OCR. Rozpoznawaj tekst w dokumentach PDF bez w Odblokuj potężne rozpoznawanie tekstu w Javie z Aspose.OCR. Bez wysiłku rozpoznawaj tekst w obrazach TIFF. Pobierz już teraz, aby cieszyć się płynnym doświadczeniem OCR. ### [Rozpoznawanie tekstu na obrazie przy użyciu Aspose OCR – Pełny samouczek OCR w Javie](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Kompletny przewodnik po rozpoznawaniu tekstu na obrazach w Javie przy użyciu Aspose OCR, obejmujący wszystkie kluczowe kroki. +### [Wyodrębnianie tekstu z HEIC – Kompletny przewodnik Java](./extract-text-from-heic-complete-java-guide/) +Pełny przewodnik po wyodrębnianiu tekstu z plików HEIC w Javie przy użyciu Aspose.OCR. ## Najczęściej zadawane pytania diff --git a/ocr/polish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/polish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..74af6497a --- /dev/null +++ b/ocr/polish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,171 @@ +--- +category: general +date: 2026-05-03 +description: Przykład Aspose OCR Java pokazuje, jak wczytać obraz do OCR i wyodrębnić + tekst z regionu w zaledwie kilku linijkach kodu. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: pl +og_description: Przykład Aspose OCR w Javie demonstruje ładowanie obrazu do OCR oraz + wyodrębnianie tekstu z określonego regionu, co jest idealne do przetwarzania faktur. +og_title: Przykład Aspose OCR w Javie – Ekstrakcja tekstu z regionu +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Przykład Aspose OCR w Javie: Wyodrębnianie tekstu z obszaru' +url: /pl/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Przykład Aspose OCR Java: Wyodrębnianie tekstu z regionu + +Szukasz **przykładu Aspose OCR Java**, który pozwala pobrać tylko potrzebną część obrazu? W tym przewodniku przeprowadzimy Cię przez **ładowanie obrazu do OCR** oraz **wyodrębnianie tekstu z regionu**, co jest idealne dla numerów faktur, pól formularzy lub dowolnych danych ukrytych w większym obrazie. + +Możesz się zastanawiać, dlaczego warto ograniczyć OCR do prostokąta zamiast skanować całą stronę. Krótkie wyjaśnienie: szybkość i precyzja. Gdy silnik analizuje tylko określony fragment, pomija nieistotny szum, działa szybciej i często daje czystsze wyniki. Po zakończeniu tego samouczka będziesz mieć samodzielny program w Javie, który robi dokładnie to, a także kilka wskazówek, jak uniknąć typowych pułapek, które napotykają nowicjusze. + +## Czego będziesz potrzebować + +- **Java Development Kit (JDK) 11** lub nowszy, zainstalowany. +- Biblioteka **Aspose.OCR for Java** (możesz pobrać najnowszy JAR z repozytorium Maven Central lub portalu pobierania Aspose). +- Plik obrazu zawierający tekst, który chcesz odczytać – w naszym demo użyjemy `invoice.png`, który zawiera numer faktury w pobliżu prawego górnego rogu. +- Ulubione IDE lub prosty edytor tekstu wraz z terminalem; dowolne narzędzie budujące (Maven, Gradle lub zwykły `javac`) wystarczy. + +To wszystko. Bez dodatkowych silników OCR, bez natywnych binarek, tylko czysta Java i Aspose. + +![Zrzut ekranu przykładu Aspose OCR Java](/images/aspose-ocr-java-example.png "Przykład Aspose OCR Java pokazujący wyodrębnianie regionu") + +## Przykład Aspose OCR Java – Inicjalizacja silnika OCR + +Pierwszą rzeczą, której potrzebuje każdy przepływ pracy OCR, jest instancja silnika. Aspose udostępnia lekką klasę `OcrEngine`, która obsługuje wszystko, od ładowania obrazu po wybór języka. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Dlaczego to ważne:** Utworzenie silnika z góry daje czysty obiekt do konfiguracji. Możesz ponownie używać tego samego `OcrEngine` dla wielu obrazów, jeśli przetwarzasz partię, co oszczędza pamięć i czas inicjalizacji. + +## Ładowanie obrazu do OCR + +Następnie informujemy silnik, który obraz ma zeskanować. Aspose udostępnia pomocniczą metodę `ImageStream.fromFile`, która ukrywa niskopoziomowy kod szkieletowy `FileInputStream`. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Wskazówka:** Zastąp `YOUR_DIRECTORY` ścieżką bezwzględną lub względną wskazującą miejsce, w którym przechowujesz `invoice.png`. Jeśli plik nie zostanie znaleziony, Aspose zgłasza `IOException`, więc warto otoczyć to blokiem try‑catch w kodzie produkcyjnym. + +## Definiowanie i wyodrębnianie tekstu z regionu + +Teraz pojawia się gwiazda programu: prostokąt, który określa silnikowi, gdzie patrzeć. Konstruktor `java.awt.Rectangle` przyjmuje `(x, y, width, height)` – wszystkie wartości w pikselach. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Jak to działa:** Wywołując `setRegion`, ograniczasz skanowanie OCR do fragmentu o szerokości 300 pikseli, zaczynającego się 120 pikseli od lewej krawędzi i 250 pikseli od góry. Dostosuj te liczby do własnego układu; szybki sposób na ich znalezienie to otworzyć obraz w dowolnym edytorze graficznym, który wyświetla współrzędne pikseli. + +## Włączenie języka i uruchomienie rozpoznawania + +Aspose OCR obsługuje dziesiątki języków, ale dla numeru faktury potrzebujemy tylko angielskiego. Włączenie właściwego języka znacząco zmniejsza liczbę fałszywych trafień. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Dlaczego włączać tylko angielski?** Silnik OCR będzie próbował dopasować znaki ze wszystkich włączonych zestawów językowych, co może go zmylić, gdy tekst składa się z prostych znaków alfanumerycznych. Zawężenie zakresu językowego poprawia zarówno szybkość, jak i precyzję. + +### Oczekiwany wynik + +Gdy wszystko się zgadza, zobaczysz coś w rodzaju: + +``` +Extracted region text: INV-12345 +``` + +Jeśli prostokąt jest przesunięty o kilka pikseli, wynik może być zniekształcony lub pusty. To prosty test poprawności: uruchom program, spójrz na konsolę i sprawdź, czy tekst odpowiada temu, co widzisz na obrazie. + +## Uruchomienie kodu i weryfikacja wyniku + +Zakładając, że używasz Maven, dodaj zależność Aspose OCR do swojego `pom.xml`: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Skompiluj i uruchom: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Albo, jeśli wolisz zwykły `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Powinieneś zobaczyć w konsoli linię **Extracted region text**. Jeśli otrzymasz komunikat „OCR recognition failed”, sprawdź ponownie ścieżkę do pliku i upewnij się, że region faktycznie zawiera czytelne znaki. + +## Przypadki brzegowe i typowe wariacje + +| Situation | What to Change | +|-----------|----------------| +| **Wiele języków** (np. angielski + hiszpański) | Wywołaj `ocrEngine.getLanguage().setSpanish(true);` wraz z angielskim. | +| **Region poza granicami obrazu** | Aspose cicho przytnie prostokąt, ale utracisz dane. Użyj `ImageInfo` (`ocrEngine.getImage().getWidth()`) aby zweryfikować wymiary przed ustawieniem regionu. | +| **Dynamiczne faktury** (różne układy) | Rozważ wykonanie lekkiego wstępnego skanowania całego obrazu w celu znalezienia słów kluczowych, takich jak „Invoice #”, a następnie oblicz prostokąt programowo. | +| **Obrazy o wyższej rozdzielczości DPI** | Zwiększ `ocrEngine.getImage().setResolution(300);` aby uzyskać lepszą dokładność w zeskanowanych dokumentach. | +| **Dostrajanie wydajności** | Wyłącz niepotrzebne języki, utrzymuj region jak najmniejszy i ponownie używaj jednej instancji `OcrEngine` dla wielu plików. | + +## Profesjonalne wskazówki z frontu + +- **Pro tip:** Jeśli potrzebujesz tylko cyfr (częste w numerach faktur), włącz tryb numeryczny za pomocą `ocrEngine.getLanguage().setDigits(true);`. To eliminuje szum alfabetowy. +- **Uwaga:** Przezroczyste PNG‑y. Aspose czasami błędnie interpretuje kanał alfa; konwersja obrazu do JPEG z jednolitym tłem może rozwiązać dziwne puste wyniki. +- **Pamiętaj:** Prostokąt używa natywnego systemu współrzędnych obrazu, a nie skalowania UI, które możesz widzieć na ekranie. Zawsze testuj na dokładnym pliku, który będziesz przetwarzać w produkcji. + +## Co dalej? + +Teraz, gdy masz solidny **przykład Aspose OCR Java** dla wyodrębniania opartego na regionie, możesz go rozwinąć w kilku przydatnych kierunkach: + +- **Przetwarzanie wsadowe:** Przeglądaj folder z fakturami, ponownie używając tego samego `OcrEngine`, aby zwiększyć przepustowość. +- **Walidacja danych:** Przekaż wyodrębniony tekst przez wyrażenie regularne, np. `INV-\\d{5}`, aby upewnić się, że przechwycono prawidłowy numer faktury. +- **Integracja z PDF:** Użyj Aspose.PDF, aby nałożyć wyodrębniony tekst z powrotem na oryginalny dokument w celach audytu. +- **Wdrożenie w chmurze:** Owiń kod w lekki serwis REST (Spring Boot), aby inne systemy mogły wywoływać go na żądanie. + +Każdy z tych kroków naturalnie obejmuje te same podstawowe koncepcje — **ładowanie obrazu do OCR**, **wyodrębnianie tekstu z regionu** oraz obsługę wyników — więc przejście będzie bezproblemowe. + +*Miłego kodowania! Jeśli napotkasz problemy, zostaw komentarz poniżej lub sprawdź fora Aspose, gdzie społeczność dzieli się praktycznymi poprawkami dla trudnych układów.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/polish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/polish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..d1eef4d04 --- /dev/null +++ b/ocr/polish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-05-03 +description: Wyodrębnij tekst z obrazów HEIC przy użyciu Aspose OCR w Javie. Dowiedz + się, jak szybko konwertować HEIC na tekst, korzystając z przykładu krok po kroku. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: pl +og_description: Wyodrębnij tekst z obrazów HEIC za pomocą Aspose OCR w Javie. Ten + przewodnik pokaże Ci, jak w kilka minut przetworzyć HEIC na tekst. +og_title: Wyodrębnij tekst z HEIC – samouczek OCR w Javie +tags: +- OCR +- Java +- Aspose +title: Wyodrębnij tekst z HEIC – Kompletny przewodnik Java +url: /pl/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wyodrębnianie tekstu z HEIC – Kompletny przewodnik Java + +Zastanawiałeś się kiedyś, jak **wyodrębnić tekst z plików HEIC** bez najpierw konwertowania ich na JPEG lub PNG? Nie jesteś sam. Wielu programistów napotyka problem, gdy aplikacja mobilna przekazuje im zdjęcie w formacie `.heic` i potrzebują wbudowanego tekstu do indeksowania lub analiz. Dobra wiadomość? Dzięki Aspose OCR for Java możesz **wyodrębnić tekst z HEIC** bezpośrednio — bez dodatkowego kroku konwersji. + +W tym samouczku pokażemy także, jak **przekształcić HEIC na tekst** w jednym, czystym potoku, abyś mógł wkleić kod do dowolnego projektu Java i od razu zacząć wyciągać ciągi znaków z tych wysokowydajnych obrazów. + +![przykład wyodrębniania tekstu z heic](https://example.com/placeholder.png "przykład wyodrębniania tekstu z heic") + +## Czego się nauczysz + +- Jak skonfigurować Aspose OCR w projekcie Maven/Gradle. +- Dokładny kod Java potrzebny do **wyodrębnienia tekstu z obrazów HEIC**. +- Dlaczego to podejście jest szybsze i mniej podatne na błędy niż dwustopniowy przepływ pracy `konwertuj‑następnie‑OCR`. +- Typowe pułapki (np. brakujące pakiety językowe) i jak ich unikać. +- Wskazówki dotyczące skalowania rozwiązania w scenariuszu przetwarzania wsadowego. + +Pod koniec przewodnika będziesz w stanie **przekształcić HEIC na tekst** przy użyciu zaledwie kilku linii kodu i zrozumiesz „dlaczego” każdego kroku. + +--- + +## Wymagania wstępne + +1. **Java 8 lub wyższy** – Aspose OCR działa na każdym nowoczesnym JDK. +2. **Maven lub Gradle** – aby automatycznie pobrać bibliotekę Aspose OCR. +3. Obraz **HEIC**, który chcesz przetestować (zmień jego nazwę na `sample.heic` i umieść w dostępnym miejscu). +4. Opcjonalnie, ale przydatne: IDE, takie jak IntelliJ IDEA lub VS Code. + +Żadne inne zewnętrzne narzędzia nie są wymagane; biblioteka obsługuje format HEIC natywnie. + +## Krok 1 – Dodaj Aspose OCR do swojego projektu + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Wskazówka:** Utrzymuj numer wersji zgodny z oficjalnymi wydaniami Aspose; nowsze wersje dodają wsparcie dla dodatkowych wariantów HEIC i poprawiają dokładność językową. + +## Krok 2 – Zainicjalizuj silnik OCR do **wyodrębnienia tekstu z HEIC** + +Utworzenie instancji `OcrEngine` jest pierwszym konkretnym krokiem w kierunku wyodrębniania tekstu z HEIC. Silnik abstrahuje wszystkie niskopoziomowe dekodowanie, więc nie musisz martwić się o format kontenera HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Dlaczego to ważne:** +HEIC to nowoczesny format obrazu oparty na kontenerze HEIF. Tradycyjne biblioteki OCR oczekują JPEG/PNG, zmuszając do uruchomienia osobnego kroku konwersji, który może obniżać jakość. Natychmiastowe wsparcie Aspose OCR pozwala **wyodrębnić tekst z HEIC** w jednym kroku, zachowując oryginalne dane pikseli i oszczędzając cykle CPU. + +## Krok 3 – Włącz żądane języki + +Domyślnie silnik szuka tylko języka angielskiego. Jeśli potrzebujesz **przekształcić HEIC na tekst** w innym języku, po prostu przełącz odpowiednią flagę. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Dlaczego włączać języki explicite?** +> Pakiety językowe są ładowane na żądanie. Włączanie tylko potrzebnych zmniejsza zużycie pamięci i przyspiesza rozpoznawanie. + +## Krok 4 – Uruchom proces rozpoznawania + +Teraz faktycznie prosimy silnik o odczytanie obrazu i wygenerowanie ciągu znaków. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Oczekiwany wynik** (zakładając, że obraz zawiera frazę „Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Jeśli obraz jest pusty lub tekst nieczytelny, silnik zwraca `false`, a Ty zobaczysz komunikat awaryjny. + +## Krok 5 – Obsługa przypadków brzegowych i typowe pytania + +### Co zrobić, gdy plik HEIC jest uszkodzony? + +Aspose OCR wyrzuca `IOException`, gdy nie może zdekodować kontenera. Owiń wywołanie w blok `try‑catch` i zaloguj błąd do późniejszej analizy. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Czy mogę przetwarzać wiele plików HEIC w partii? + +Oczywiście. Po prostu iteruj po katalogu i ponownie używaj tej samej instancji `OcrEngine`, aby uniknąć powtarzalnego kosztu inicjalizacji. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Czy to także **przekształca HEIC na tekst** dla skryptów niełacińskich? + +Tak — Aspose OCR obsługuje arabski, chiński, cyrylicę i wiele innych języków. Po prostu włącz odpowiednią flagę językową (np. `engine.getLanguage().setChineseSimplified(true);`). Pamiętaj, aby dodać odpowiednie pliki czcionek, jeśli uruchamiasz na serwerze bez interfejsu graficznego. + +## Krok 6 – Zweryfikuj wynik programowo + +W produkcyjnym potoku często trzeba sprawdzić, czy wynik OCR spełnia określone progi jakości. Szybkim sposobem jest obliczenie wyniku pewności (dostępnego w nowszych wersjach) lub po prostu sprawdzenie długości zwróconego ciągu. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +## Pełny działający przykład + +Poniżej znajduje się kompletny, gotowy do uruchomienia kod klasy Java, który zawiera wszystkie powyższe kroki. Wklej go do pliku o nazwie `HeifExample.java`, dostosuj ścieżkę do swojego pliku HEIC i uruchom `javac` + `java` jak zwykle. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Uruchom: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Powinieneś zobaczyć wyodrębniony ciąg wypisany w konsoli, co potwierdza, że pomyślnie **przekształciłeś HEIC na tekst**. + +## Zakończenie + +Przeprowadziliśmy Cię przez wszystko, co potrzebne, aby **wyodrębnić tekst z HEIC** przy użyciu Aspose OCR w Javie. Od dodania biblioteki po obsługę przypadków brzegowych, przewodnik prezentuje czyste, jednoprzebiegowe rozwiązanie, które eliminuje potrzebę osobnego narzędzia konwertującego. + +Teraz możesz: + +- **Przekształcić HEIC na tekst** w locie w usługach webowych, backendach mobilnych lub zadaniach wsadowych. +- Rozszerzyć wsparcie na inne języki za pomocą jednej linii konfiguracji. +- Skalować proces, ponownie używając tej samej `OcrEngine` dla wielu plików. + +Następnie możesz zbadać **osadzanie wyniku OCR w indeksie przeszukiwalnym** (np. Elasticsearch) lub **dodawanie przetwarzania wstępnego obrazu**, aby zwiększyć dokładność przy słabo kontrastowych zdjęciach HEIC. Nie ma granic — eksperymentuj, mierz i iteruj. + +Masz pytania lub napotkałeś trudny plik HEIC? zostaw komentarz poniżej i powodzenia w kodowaniu! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/portuguese/java/advanced-ocr-techniques/_index.md b/ocr/portuguese/java/advanced-ocr-techniques/_index.md index b736419f5..23f89c570 100644 --- a/ocr/portuguese/java/advanced-ocr-techniques/_index.md +++ b/ocr/portuguese/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,16 @@ Desbloqueie o poder do reconhecimento de texto com Aspose.OCR para Java. Siga no Capacite seus aplicativos Java com Aspose.OCR para reconhecimento preciso de texto. Fácil integração, alta precisão. ### [Especificando caracteres permitidos em Aspose.OCR](./specify-allowed-characters/) Desbloqueie a extração de texto de imagens perfeitamente com Aspose.OCR para Java. Siga nosso guia passo a passo para uma integração eficiente. +### [Criar Pool de Threads Fixas para OCR Paralelo em Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Aprenda a criar um pool de threads fixas para executar OCR em paralelo, melhorando o desempenho em aplicações Java. +### [Como habilitar GPU para OCR Java – Tutorial Completo](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Aprenda a ativar a aceleração GPU no Aspose.OCR para Java e melhorar o desempenho do reconhecimento de texto. +### [Melhorar a Precisão do OCR em Java – Guia Completo Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Aprenda a otimizar a precisão do OCR em Java com Aspose OCR, seguindo este guia completo passo a passo. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/portuguese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/portuguese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..29a3123b0 --- /dev/null +++ b/ocr/portuguese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Crie um pool de threads fixo em Java para extrair texto de imagens rapidamente. + Aprenda como executar OCR, converter imagem em texto e melhorar o desempenho com + processamento de OCR em paralelo. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: pt +og_description: Crie um pool de threads fixo em Java para extrair texto de imagens + rapidamente. Aprenda como executar OCR, converter imagem em texto e aumentar o desempenho + com processamento de OCR em paralelo. +og_title: Criar pool de threads fixas para OCR paralela em Java +tags: +- Java +- OCR +- Multithreading +title: Criar pool de threads fixas para OCR paralela em Java +url: /pt/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar Pool de Threads Fixas para OCR Paralelo em Java + +Já precisou **criar pool de threads fixas** para acelerar trabalhos de OCR, mas não sabia por onde começar? Você não está sozinho. Em muitos projetos pesados em imagens, o gargalo é a chamada de OCR de thread única, e a solução é surpreendentemente simples: iniciar um pool de threads de trabalho e deixá‑las processar os arquivos em paralelo. + +Neste tutorial você aprenderá como **extrair texto de imagens** usando Aspose OCR, como **executar OCR** de forma eficiente e como **converter imagem em texto** sem sobrecarregar sua CPU. Ao final, você terá um programa Java pronto‑para‑executar que demonstra **processamento de OCR paralelo** em um conjunto de imagens de exemplo. + +## O que você vai construir + +Vamos montar um pequeno aplicativo de console que: + +* Lê uma lista de caminhos de imagens (PNG, JPG, TIFF, BMP). +* **Cria um pool de threads fixas** dimensionado ao número de núcleos da CPU. +* Dispara uma tarefa de OCR para cada imagem. +* Coleta o texto reconhecido e o imprime no console. +* Encerra o executor de forma limpa. + +Sem ferramentas de build externas, sem frameworks sofisticados — apenas Java puro e a biblioteca Aspose OCR. Se você tem Java 8+ e um IDE decente, está pronto. + +## Pré‑requisitos + +* **Java Development Kit (JDK) 8 ou mais recente** – o código usa lambdas, então versões mais antigas não compilarão. +* **Aspose OCR for Java** – baixe o JAR no site da Aspose ou inclua via Maven (`com.aspose:aspose-ocr`). +* Uma pasta com algumas imagens de teste (o código aponta para `YOUR_DIRECTORY`). +* Familiaridade básica com concorrência em Java (explicaremos o restante). + +> *Dica profissional:* Se você usa Maven, adicione a dependência ao seu `pom.xml` e deixe o IDE cuidar do classpath. + +--- + +## Etapa 1: Adicionar as Importações Necessárias + +Primeiro, traga as classes que precisamos para o escopo. Isso não é apenas boilerplate; cada importação indica à JVM onde encontrar o motor de OCR, as utilidades de manipulação de imagens e as ferramentas de concorrência que nos permitem **criar pool de threads fixas**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – a API principal de OCR. +* `java.util.*` – coleções para armazenar caminhos de imagens e resultados. +* `java.util.concurrent.*` – o pacote de concorrência que contém `ExecutorService` e `Future`. + +--- + +## Etapa 2: Definir as Imagens a Processar + +Em seguida, listamos os arquivos dos quais queremos **extrair texto de imagens**. Usar `Arrays.asList` mantém o código conciso e permite trocar para seu próprio diretório sem alterar o restante da lógica. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Sinta‑se à vontade para adicionar mais entradas; o pool de threads escalará automaticamente com base no número de núcleos da CPU que você possui. + +--- + +## Etapa 3: **Criar Pool de Threads Fixas** Correspondente aos Núcleos da CPU + +Aqui está o coração do tutorial. Perguntamos ao runtime quantos núcleos estão disponíveis e pedimos à fábrica `Executors` que nos dê um pool exatamente desse tamanho. Por que fixo? Porque um número previsível de threads evita a temida “explosão de threads” que pode privar o SO de recursos. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` devolve a contagem de núcleos lógicos (incluindo hyper‑threads). +* `newFixedThreadPool(coreCount)` garante que nunca excedamos a capacidade da CPU, que é a forma mais segura de **executar OCR** em paralelo. + +--- + +## Etapa 4: Enviar uma Tarefa de OCR para Cada Imagem + +Agora transformamos cada caminho de arquivo em um `Callable` que **executa OCR**, reconhece o texto e devolve o resultado. Observe que instanciamos um novo `OcrEngine` dentro da lambda — isso evita o compartilhamento não‑thread‑safe do estado do motor. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Cada chamada a `submit` entrega a lambda ao pool, que a agenda em uma thread ociosa. +* Os objetos `Future` nos permitem recuperar o texto reconhecido mais tarde, preservando a ordem se necessário. + +--- + +## Etapa 5: Recuperar e Exibir o Texto Reconhecido + +Com todas as tarefas enfileiradas, simplesmente iteramos sobre a lista de `Future`, chamando `get()` para bloquear até que cada trabalho de OCR termine. É aqui que o passo **converter imagem em texto** se torna visível: a chamada `engine.getText()` devolve a string bruta. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +A saída típica no console se parece com: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Se um arquivo falhar (por exemplo, estiver corrompido), você verá uma linha que começa com `Failed:` seguida do caminho — útil para depuração rápida. + +--- + +## Etapa 6: Limpar o Serviço de Executor + +Nunca se esqueça de encerrar o pool; caso contrário a JVM pode permanecer ativa, pensando que ainda há trabalho a ser feito. Um encerramento gracioso permite que tarefas em execução terminem antes que o processo finalize. + +```java +executor.shutdown(); +``` + +Você também pode chamar `awaitTermination` se precisar impor um timeout, mas para a maioria das utilidades de linha de comando um simples `shutdown()` é suficiente. + +--- + +## Exemplo Completo Funcional + +Abaixo está o programa completo, pronto‑para‑executar. Copie‑e‑cole em um arquivo chamado `ParallelOcrTutorial.java`, ajuste os caminhos das imagens e execute `javac` + `java` como de costume. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Resultado esperado:** o conteúdo textual de cada imagem impresso no console, na mesma ordem da lista `imagePaths`. Se alguma imagem não puder ser processada, você verá um aviso de falha em vez de uma linha em branco. + +--- + +## Perguntas Frequentes & Casos de Borda + +### E se eu tiver mais imagens do que threads? + +O pool de threads fixas enfileirará automaticamente as tarefas excedentes. Assim que uma thread terminar seu trabalho atual de OCR, ela pegará a próxima. Esse comportamento de enfileiramento é a essência do **processamento de OCR paralelo** — você obtém o máximo de throughput sem sobrecarregar a CPU. + +### Posso mudar o idioma? + +Com certeza. Substitua `engine.getLanguage().setEnglish(true);` pela flag de idioma apropriada, por exemplo `setFrench(true)` ou habilite múltiplos idiomas chamando vários setters antes de `recognize()`. + +### Como lidar com imagens muito grandes? + +Arquivos grandes podem consumir muita memória por thread. Se você notar `OutOfMemoryError`, considere reduzir a escala da imagem antes de enviá‑la ao motor, ou aumente o tamanho do heap com `-Xmx`. Outra abordagem é usar um **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/portuguese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/portuguese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..915f5355e --- /dev/null +++ b/ocr/portuguese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-05-03 +description: como habilitar GPU para OCR Java rapidamente – aprenda a extrair texto + de imagens com Aspose OCR. Tutorial completo de OCR Java incluído. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: pt +og_description: como habilitar GPU para OCR Java em minutos. este tutorial mostra + como extrair texto de imagens usando um tutorial de OCR Java com aceleração GPU. +og_title: como habilitar GPU para OCR Java – Guia passo a passo +tags: +- Java +- OCR +- GPU +- Aspose +title: como habilitar GPU para OCR em Java – tutorial completo +url: /pt/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# como habilitar gpu para OCR Java – Tutorial Completo + +Já se perguntou **how to enable gpu** quando está tentando extrair texto de uma imagem? Se você já precisou executar OCR em um escaneamento de alta resolução e sentiu a CPU travar, não está sozinho. Neste guia, vamos percorrer um **java ocr tutorial** que não só mostra como extrair texto, mas também demonstra a forma mais rápida de **recognize text image java**‑style ativando o suporte experimental a GPU. + +Começaremos importando a biblioteca Aspose OCR, depois habilitando a GPU, carregando uma imagem de exemplo e, por fim, extraindo a string reconhecida do arquivo. Ao final, você terá um trecho pronto‑para‑executar que pode ser inserido em qualquer projeto Maven, e entenderá por que a GPU importa, quando ela pode não ajudar e como solucionar problemas comuns. Nenhuma documentação externa necessária — tudo o que você precisa está aqui. + +--- + +## O que você precisará + +- **Java Development Kit (JDK) 8+** – o código roda em qualquer JDK moderno. +- **Maven** (ou Gradle) para obter a dependência Aspose OCR. +- Uma **máquina compatível com GPU** (placa NVIDIA com CUDA funciona melhor, mas a API Aspose reverte graciosamente). +- Uma imagem de exemplo, por exemplo `sample-highres.png`, colocada em uma pasta que você possa referenciar. +- Um toque de curiosidade sobre técnicas de **image to text conversion java**. + +Se estiver faltando algum desses itens, baixe o JDK da Oracle ou OpenJDK, instale o Maven e certifique‑se de que o driver gráfico está atualizado. Isso é tudo que precisa ser preparado; o resto é puro Java. + +--- + +## Etapa 1: Adicionar Aspose OCR ao seu Projeto + +Primeiro de tudo, precisamos do próprio motor OCR. A Aspose fornece um artefato Maven limpo; basta inserir este trecho no seu `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Se preferir Gradle, o equivalente é: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Depois que a dependência for resolvida, você terá acesso a `OcrEngine`, `ImageStream` e aos auxiliares de idioma que tornam o **java ocr tutorial** simples. + +--- + +## Etapa 2: Como habilitar GPU (Palavra‑chave principal em ação) + +Agora chegamos ao ponto central: **how to enable gpu** para o motor OCR. A API Aspose expõe uma única flag booleana — `setUseGpu(true)`. É experimental, mas em uma placa gráfica decente você verá o tempo de reconhecimento cair drasticamente, especialmente para imagens grandes e de alta resolução. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** Se o seu ambiente não possuir uma GPU compatível, a flag será ignorada silenciosamente, e o motor reverterá para o modo CPU. Sem travamentos, apenas desempenho mais lento. + +--- + +## Etapa 3: Carregar a Imagem que Você Deseja Processar + +O motor OCR trabalha com um `ImageStream`. Aponte‑o para o arquivo que você deseja converter de imagem para texto puro. Aqui está uma forma compacta de fazer isso: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Certifique‑se de que o caminho seja absoluto ou relativo ao diretório de trabalho do seu projeto. Se o arquivo não for encontrado, você receberá um `IOException` — lidaremos com isso mais adiante. + +--- + +## Etapa 4: Escolher o Idioma (Opcional, mas Recomendado) + +O Aspose OCR pode lidar com muitos alfabetos, mas você deve informar qual espera. Para inglês, é uma linha só: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Se precisar de francês ou chinês, basta trocar a flag (`setFrench(true)`, `setChineseSimplified(true)`, etc.). Essa pequena dica costuma aumentar a precisão porque o motor pode eliminar candidatos de caracteres improváveis. + +--- + +## Etapa 5: Recognize Text Image Java – Executar o Motor + +Chegou o momento da verdade: **recognize text image java** style. Chamamos `recognize()` e, se ele retornar `true`, extraímos a string resultante com `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +A saída será o texto bruto extraído de `sample-highres.png`. Para um documento limpo, talvez você queira pós‑processar a string (remover espaços em branco, substituir quebras de linha, etc.). Aqui vai um exemplo rápido: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Etapa 6: Exemplo Completo Funcional (Pronto para Copiar‑Colar) + +Abaixo está o **java ocr tutorial** completo que você pode compilar e executar diretamente. Inclui tratamento de erros e imprime a saída esperada. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Saída esperada (exemplo):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Se a imagem contiver várias linhas, elas aparecerão separadas por caracteres de quebra de linha (`\n`). O motor preserva o layout original o melhor que pode. + +--- + +## Etapa 7: Casos Limite, Dicas e Perguntas Frequentes + +### E se a GPU não for detectada? + +A Aspose desativa silenciosamente o suporte a GPU quando não encontra um dispositivo compatível. Você pode verificar o modo checando a flag após a inicialização: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Se imprimir `false`, verifique novamente a versão do driver e se o runtime `CUDA` está no `PATH`. + +### A GPU ajuda com imagens pequenas? + +Nem sempre. O overhead de transferir um bitmap pequeno para a GPU pode superar o ganho de velocidade. Para imagens abaixo de 500 KB, você pode observar uma leve desaceleração. Nesses casos, basta definir `setUseGpu(false)`. + +### Como lidar com documentos multilíngues? + +É possível habilitar vários idiomas simultaneamente: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +O motor tentará combinar caracteres de ambos os conjuntos, o que é útil para PDFs bilíngues. + +### Posso processar PDFs diretamente? + +O Aspose OCR trabalha com fluxos de imagem, portanto você precisará rasterizar cada página PDF primeiro (por exemplo, com Aspose PDF ou PDFBox) e então alimentar o `BufferedImage` resultante ao `setImage`. + +--- + +## Resumo Visual + +![how to enable gpu for Java OCR engine](/images/gpu-ocr.png "Diagram showing GPU‑accelerated OCR pipeline") + +*O diagrama ilustra o fluxo desde o carregamento da imagem → OCR habilitado por GPU → extração de texto.* + +--- + +## Conclusão + +Cobremos **how to enable gpu** para um fluxo de trabalho OCR em Java, percorremos um **java ocr tutorial** completo e demonstramos **image to text conversion java** em um exemplo prático, pronto‑para‑copiar. Ao alternar uma única flag, você pode economizar segundos — ou até minutos — no tempo de processamento de escaneamentos grandes, tornando suas aplicações mais ágeis e responsivas. + +Qual o próximo passo? Experimente alimentar um lote de imagens em um loop, teste diferentes idiomas ou combine isso com o Apache Tika para indexar o texto extraído automaticamente. O céu é o limite quando você combina OCR acelerado por GPU com outras bibliotecas Java. + +Tem dúvidas sobre **how to extract text** de imagens difíceis, ou quer saber mais sobre truques de **recognize text image java**? Deixe um comentário abaixo e feliz codificação! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/portuguese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/portuguese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..36d7d3704 --- /dev/null +++ b/ocr/portuguese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-05-03 +description: Melhore a precisão do OCR rapidamente usando Aspose OCR Java. Aprenda + como carregar a imagem para OCR, habilitar idiomas e aplicar correção ortográfica + agressiva em poucos passos. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: pt +og_description: Melhore a precisão do OCR instantaneamente com Aspose OCR Java. Este + guia mostra como carregar a imagem para OCR, habilitar idiomas e usar correção ortográfica + agressiva. +og_title: Melhore a Precisão do OCR em Java – Tutorial Aspose OCR Passo a Passo +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Melhore a Precisão do OCR em Java – Guia Completo de OCR da Aspose +url: /pt/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Melhore a Precisão do OCR em Java – Guia Completo do Aspose OCR + +Já se perguntou por que os resultados do seu OCR parecem a caligrafia de uma criança? Se você está lutando contra letras ausentes, palavras erradas ou simplesmente um monte de lixo, não está sozinho. **Melhorar a precisão do OCR** é a primeira coisa que a maioria dos desenvolvedores procura quando a extração de texto parece pouco confiável. + +Neste tutorial, vamos percorrer uma solução prática que não só **carrega imagem para OCR** como também aproveita o mecanismo de correção ortográfica embutido da Aspose para melhorar a qualidade. Ao final, você terá um programa Java pronto‑para‑executar que reconhece texto em inglês + francês com correção agressiva — sem necessidade de dicionários externos. + +## O que você aprenderá + +- Como **carregar imagem para OCR** usando o `ImageStream` da Aspose. +- Por que habilitar os idiomas corretos importa para a precisão. +- O impacto da correção ortográfica agressiva em documentos multilíngues. +- Um exemplo de código completo e executável que você pode inserir em qualquer projeto Maven/Gradle. +- Dicas, armadilhas e ideias de próximos passos para escalar esta abordagem. + +> **Pré‑requisitos** – Java 8 ou superior, um JAR recente do Aspose.OCR for Java (v23.12 ou posterior) e um arquivo de imagem (`multilingual.png`) contendo texto em inglês e francês. É só isso — sem modelos ou APIs extras. + +--- + +## Melhore a Precisão do OCR: Configure o Motor Aspose OCR + +O coração de qualquer pipeline de OCR é a configuração do motor. Ao dizer à Aspose exatamente o que você espera, você lhe dá uma chance real de acertar. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Por que isso importa:** +- **Instância do motor** – `OcrEngine` contém todas as configurações; criar uma nova evita vazamento de estado de execuções anteriores. +- **Carregamento de imagem** – Usar `ImageStream.fromFile` é a maneira mais direta de **carregar imagem para OCR**. Ele suporta PNG, JPEG, BMP e TIFF nativamente. +- **Bandeiras de idioma** – Ativar inglês + francês informa ao reconhecedor para usar os conjuntos de caracteres e modelos de idioma apropriados, o que por si só pode aumentar a precisão em 10‑15 %. +- **Correção ortográfica agressiva** – Definir `SpellCorrectionLevel.AGGRESSIVE` faz o dicionário interno reescrever palavras duvidosas, um ponto chave quando você precisa **melhorar a precisão do OCR** em digitalizações ruidosas. + +--- + +## Carregar Imagem para OCR – Definindo o Arquivo Fonte + +Antes que o motor possa fazer qualquer coisa, ele precisa de um bitmap. Se você alimentá‑lo com um stream corrompido ou o caminho errado, encontrará uma exceção mais rápido do que pode dizer “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Dica profissional:** Se você estiver processando imagens enviadas por usuários, envolva a lógica de carregamento em um bloco try‑catch e valide primeiro o tamanho/formato do arquivo. Isso impede que o motor falhe ao lidar com PDFs massivos ou formatos não suportados. + +--- + +## Habilite Múltiplos Idiomas para um Reconhecimento Melhor + +A maioria das bibliotecas de OCR tem como padrão apenas o inglês. Quando seu documento mistura idiomas, você verá um aumento nos caracteres reconhecidos incorretamente. A Aspose torna fácil alternar idiomas adicionais. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Por que habilitar mais de um idioma?** +- **Expansão do conjunto de caracteres** – O francês inclui letras acentuadas como “é” e “ç”. Sem a bandeira do francês, essas se tornam “e” ou “c”, o que depois confunde o corretor ortográfico. +- **Dicas contextuais** – O motor OCR usa modelos de idioma para prever limites de palavras; um modelo bilíngue reduz divisões falsas. + +--- + +## Aplique Correção Ortográfica Agressiva + +A correção ortográfica não é apenas um “bom‑de‑se‑ter”; é um divisor de águas quando você precisa **melhorar a precisão do OCR** em digitalizações de baixa qualidade. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Níveis em um relance + +| Nível | Comportamento | +|------------|--------------------------------------------------| +| **NONE** | Sem correção – apenas saída bruta do motor. | +| **LIGHT** | Corrige erros óbvios, baixo risco de correção excessiva. | +| **AGGRESSIVE** | Aplica buscas no dicionário de forma agressiva; ideal para imagens ruidosas. | + +**Cuidado:** O modo agressivo pode reescrever nomes próprios legítimos (ex.: “McDonald” → “Mcdonald”). Se seu domínio contém muitos nomes, considere um filtro de pós‑processamento. + +--- + +## Execute o Reconhecimento e Verifique a Saída + +Agora que tudo está configurado, é hora de deixar a Aspose fazer o trabalho pesado. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Saída esperada (exemplo) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Se você vir lixo em vez disso, verifique novamente: + +1. A qualidade da imagem (imagens desfocadas ou com baixa DPI prejudicam a precisão). +2. Bandeiras de idioma – a falta do francês removerá os acentos. +3. Nível de correção ortográfica – experimente `LIGHT` se notar correção excessiva. + +--- + +## Exemplo Completo Funcional (Todas as Etapas em Um Arquivo) + +Abaixo está o programa completo que você pode compilar e executar diretamente. Salve como `SpellCorrectionTutorial.java`, ajuste o caminho da imagem e execute com `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Compilar e executar: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Você deverá ver o texto multilíngue corrigido impresso no console. + +--- + +## Armadilhas Comuns & Como Evitá‑las + +| Sintoma | Causa Provável | Solução | +|---------|----------------|---------| +| **Blank output** | Image path wrong or file unreadable | Verifique o caminho em `ImageStream.fromFile`; adicione verificação de existência do arquivo. | +| **Missing accents** | French language not enabled | Chame `ocrEngine.getLanguage().setFrench(true)`. | +| **Garbage characters** | Low‑resolution image (< 150 dpi) | Aumente a escala ou digitalize novamente em DPI maior; considere pré‑processamento com bibliotecas de aprimoramento de imagem. | +| **Over‑corrected names** | Aggressive spell correction on proper nouns | Faça pós‑processamento com uma lista branca de nomes conhecidos ou troque para o nível `LIGHT`. | + +--- + +## Próximos Passos: Escalando Seu Pipeline de OCR + +- **Processamento em lote:** Percorra um diretório de imagens, reutilizando uma única instância de `OcrEngine` para desempenho. +- **Extração de PDF:** Use Aspose.PDF para converter cada página em uma imagem e, em seguida, alimentá‑la ao motor OCR. +- **Dicionários personalizados:** Se seu domínio usa terminologia especializada (médica, jurídica), forneça uma lista de palavras personalizada em `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Paralelismo:** O `ForkJoinPool` do Java pode executar múltiplas tarefas de OCR simultaneamente, mas fique atento ao uso de memória, pois cada motor mantém buffers de imagem. + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Captura de tela mostrando texto multilíngue corrigido"} + +--- + +## Conclusão + +Acabamos de **melhorar o OCR + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/portuguese/java/ocr-operations/_index.md b/ocr/portuguese/java/ocr-operations/_index.md index e1b3ddd89..3b4be3dd8 100644 --- a/ocr/portuguese/java/ocr-operations/_index.md +++ b/ocr/portuguese/java/ocr-operations/_index.md @@ -82,6 +82,10 @@ Desbloqueie o poder do OCR em Java com Aspose.OCR. Reconheça texto em documento Desbloqueie um poderoso reconhecimento de texto em Java com Aspose.OCR. Reconheça texto em imagens TIFF sem esforço. Baixe agora para uma experiência de OCR perfeita. ### [Reconhecer texto em imagem com Aspose OCR – Tutorial completo de OCR em Java](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Aprenda a reconhecer texto em imagens usando Aspose OCR com um tutorial completo em Java, cobrindo configuração e melhores práticas. +### [Exemplo Aspose OCR Java: Extrair Texto de uma Região](./aspose-ocr-java-example-extract-text-from-a-region/) +Aprenda a usar Aspose OCR para Java e extrair texto de áreas específicas de uma imagem com este exemplo prático. +### [Extrair Texto de HEIC – Guia Completo em Java](./extract-text-from-heic-complete-java-guide/) +Desbloqueie a extração de texto de arquivos HEIC com Aspose.OCR para Java. Guia completo passo a passo para reconhecer texto em imagens HEIC. ## Perguntas Frequentes diff --git a/ocr/portuguese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/portuguese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..466adca77 --- /dev/null +++ b/ocr/portuguese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,176 @@ +--- +category: general +date: 2026-05-03 +description: O exemplo Aspose OCR Java mostra como carregar uma imagem para OCR e + extrair texto de uma região em apenas algumas linhas de código. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: pt +og_description: O exemplo Aspose OCR Java demonstra o carregamento de uma imagem para + OCR e a extração de texto de uma região específica, perfeito para o processamento + de faturas. +og_title: Exemplo de OCR Aspose Java – Extração de Texto por Região +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Exemplo Aspose OCR Java: Extrair Texto de uma Região' +url: /pt/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Exemplo Aspose OCR Java: Extrair Texto de uma Região + +Procurando um **exemplo Aspose OCR Java** que permita extrair apenas a parte que você precisa de uma imagem? Neste guia vamos percorrer **carregamento de imagem para OCR** e **extração de texto de uma região**, ideal para números de nota fiscal, campos de formulário ou qualquer dado escondido dentro de uma imagem maior. + +Você pode estar se perguntando por que limitar o OCR a um retângulo em vez de escanear a página inteira. A resposta curta: velocidade e precisão. Quando o mecanismo olha apenas para um recorte definido, ele ignora ruídos irrelevantes, executa mais rápido e costuma produzir resultados mais limpos. Ao final deste tutorial você terá um programa Java autônomo que faz exatamente isso, além de algumas dicas para evitar armadilhas comuns que atrapalham iniciantes. + +## O que você precisará + +Antes de mergulharmos, certifique‑se de que tem: + +- **Java Development Kit (JDK) 11** ou superior instalado. +- Biblioteca **Aspose.OCR for Java** (você pode baixar o JAR mais recente do repositório Maven Central ou do portal de download da Aspose). +- Um arquivo de imagem que contenha o texto que você deseja ler – para a demonstração usaremos `invoice.png`, que possui o número da nota fiscal próximo ao canto superior direito. +- Seu IDE favorito ou um editor de texto simples mais um terminal; qualquer ferramenta de build (Maven, Gradle ou apenas `javac`) serve. + +É isso. Sem motores OCR adicionais, sem binários nativos, apenas Java puro e Aspose. + +![Captura de tela do exemplo Aspose OCR Java](/images/aspose-ocr-java-example.png "Exemplo Aspose OCR Java mostrando extração de região") + +## Exemplo Aspose OCR Java – Inicializar o Motor OCR + +A primeira coisa que qualquer fluxo de OCR precisa é uma instância do motor. Aspose fornece a classe leve `OcrEngine` que cuida de tudo, desde o carregamento da imagem até a seleção de idioma. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Por que isso importa:** Criar o motor antecipadamente fornece um objeto limpo para configuração. Você pode reutilizar o mesmo `OcrEngine` para várias imagens se estiver processando um lote, o que economiza memória e tempo de inicialização. + +## Carregar Imagem para OCR + +Em seguida, informamos ao motor qual imagem escanear. Aspose oferece o auxiliar `ImageStream.fromFile`, que abstrai o boilerplate de baixo nível do `FileInputStream`. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Dica:** Substitua `YOUR_DIRECTORY` por um caminho absoluto ou relativo que aponte para onde você armazenou `invoice.png`. Se o arquivo não for encontrado, Aspose lança uma `IOException`, então pode ser interessante envolver isso em um bloco try‑catch para código de produção. + +## Definir e Extrair Texto de uma Região + +Agora vem a estrela do show: o retângulo que indica ao motor onde olhar. O construtor `java.awt.Rectangle` recebe `(x, y, width, height)` – todos medidos em pixels. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Como funciona:** Ao chamar `setRegion`, você limita a varredura OCR a um recorte de 300 pixels de largura que começa 120 pixels da borda esquerda e 250 pixels do topo. Ajuste esses números para combinar com seu próprio layout; uma maneira rápida de encontrá‑los é abrir a imagem em qualquer editor gráfico que mostre coordenadas de pixel. + +## Habilitar Idioma e Executar o Reconhecimento + +Aspose OCR suporta dezenas de idiomas, mas para um número de nota fiscal precisamos apenas de Inglês. Habilitar o idioma correto reduz falsos positivos drasticamente. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Por que habilitar apenas o Inglês?** O motor OCR tentará combinar caracteres de todos os idiomas habilitados, o que pode confundi‑lo quando o texto é apenas alfanumérico simples. Restringir o escopo de idioma melhora tanto a velocidade quanto a precisão. + +### Saída Esperada + +Quando tudo estiver configurado, você verá algo como: + +``` +Extracted region text: INV-12345 +``` + +Se o retângulo estiver deslocado alguns pixels, a saída pode ficar corrompida ou vazia. Essa é uma verificação simples de sanidade: execute o programa, observe o console e verifique se o texto corresponde ao que você vê na imagem. + +## Executar o Código e Verificar a Saída + +Assumindo que você usa Maven, adicione a dependência Aspose OCR ao seu `pom.xml`: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Compile e execute: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Ou, se preferir usar apenas `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Você deverá ver a linha **Extracted region text** impressa no console. Se receber “OCR recognition failed”, verifique novamente o caminho do arquivo e assegure‑se de que a região realmente contém caracteres legíveis. + +## Casos Limite & Variações Comuns + +| Situação | O que mudar | +|-----------|----------------| +| **Múltiplos idiomas** (ex.: Inglês + Espanhol) | Chame `ocrEngine.getLanguage().setSpanish(true);` juntamente com o Inglês. | +| **Região fora dos limites da imagem** | Aspose recortará silenciosamente o retângulo, mas você perderá dados. Use `ImageInfo` (`ocrEngine.getImage().getWidth()`) para verificar as dimensões antes de definir a região. | +| **Notas fiscais dinâmicas** (layouts diferentes) | Considere fazer uma pré‑varredura leve na imagem inteira para localizar palavras‑chave como “Invoice #” e então calcular o retângulo programaticamente. | +| **Imagens com DPI alto** | Aumente `ocrEngine.getImage().setResolution(300);` para melhorar a precisão em documentos escaneados. | +| **Ajuste de desempenho** | Desabilite idiomas desnecessários, mantenha a região o menor possível e reutilize uma única instância de `OcrEngine` em vários arquivos. | + +## Dicas Profissionais da Linha de Frente + +- **Dica pro:** Se você precisa apenas de dígitos (comum para números de nota fiscal), habilite o modo numérico com `ocrEngine.getLanguage().setDigits(true);`. Isso elimina ruído alfabético. +- **Cuidado com:** PNGs transparentes. Aspose às vezes interpreta mal o canal alfa; converter a imagem para JPEG com fundo sólido primeiro pode resolver saídas vazias estranhas. +- **Lembre‑se:** O retângulo usa o sistema de coordenadas nativo da imagem, não qualquer escala de UI que você veja na tela. Sempre teste com o arquivo exato que será processado em produção. + +## E agora? + +Agora que você tem um **exemplo Aspose OCR Java** robusto para extração baseada em região, pode expandi‑lo em várias direções úteis: + +- **Processamento em lote:** Percorra uma pasta de notas fiscais, reutilizando o mesmo `OcrEngine` para melhorar o throughput. +- **Validação de dados:** Encaminhe o texto extraído por uma expressão regular como `INV-\\d{5}` para garantir que você capturou um número de nota válido. +- **Integração com PDF:** Use Aspose.PDF para sobrepor o texto extraído de volta ao documento original para trilhas de auditoria. +- **Implantação na nuvem:** Empacote o código em um serviço REST leve (Spring Boot) para que outros sistemas possam chamá‑lo sob demanda. + +Cada um desses passos envolve naturalmente os mesmos conceitos centrais — **carregar imagem para OCR**, **extrair texto de uma região** e lidar com os resultados — então a transição será tranquila. + +--- + +*Feliz codificação! Se encontrar algum obstáculo, deixe um comentário abaixo ou consulte os fóruns da Aspose, onde a comunidade compartilha ajustes reais para layouts complicados.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/portuguese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/portuguese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..dd2bfef0d --- /dev/null +++ b/ocr/portuguese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Extraia texto de imagens HEIC usando Aspose OCR em Java. Aprenda como + converter HEIC para texto rapidamente com um exemplo passo a passo. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: pt +og_description: Extraia texto de imagens HEIC com Aspose OCR em Java. Este guia mostra + como converter HEIC em texto em minutos. +og_title: Extrair Texto de HEIC – Tutorial de OCR em Java +tags: +- OCR +- Java +- Aspose +title: Extrair Texto de HEIC – Guia Completo de Java +url: /pt/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrair Texto de HEIC – Guia Completo em Java + +Já se perguntou como **extrair texto de arquivos HEIC** sem primeiro convertê‑los para JPEG ou PNG? Você não está sozinho. Muitos desenvolvedores se deparam com um obstáculo quando um aplicativo móvel entrega a eles uma foto `.heic` e eles precisam do texto incorporado para indexação ou análise. A boa notícia? Com Aspose OCR para Java você pode **extrair texto de HEIC** diretamente—nenhum passo extra de conversão é necessário. + +Neste tutorial também mostraremos como **converter HEIC em texto** em um único pipeline limpo, para que você possa inserir o código em qualquer projeto Java e começar a extrair strings dessas imagens de alta eficiência hoje. + +![exemplo de extração de texto de heic](https://example.com/placeholder.png "exemplo de extração de texto de heic") + +## O que você aprenderá + +- Como configurar o Aspose OCR em um projeto Maven/Gradle. +- O código Java exato necessário para **extrair texto de imagens HEIC**. +- Por que esta abordagem é mais rápida e menos propensa a erros do que um fluxo de trabalho de duas etapas `converter‑então‑OCR`. +- Armadilhas comuns (por exemplo, pacotes de idioma ausentes) e como evitá‑las. +- Dicas para escalar a solução em um cenário de processamento em lote. + +Ao final do guia, você será capaz de **converter HEIC em texto** com apenas algumas linhas de código, e entenderá o “porquê” por trás de cada etapa. + +--- + +## Pré‑requisitos + +Antes de mergulharmos, certifique‑se de que você tem: + +1. **Java 8 ou superior** – Aspose OCR funciona em qualquer JDK moderno. +2. **Maven ou Gradle** – para obter a biblioteca Aspose OCR automaticamente. +3. Uma **imagem HEIC** que você deseja testar (renomeie‑a para `sample.heic` e coloque‑a em um local acessível). +4. Opcional, mas útil: uma IDE como IntelliJ IDEA ou VS Code. + +Nenhuma outra ferramenta externa é necessária; a biblioteca lida com o formato HEIC nativamente. + +--- + +## Etapa 1 – Adicionar Aspose OCR ao seu Projeto + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Dica profissional:** Mantenha o número da versão sincronizado com os lançamentos oficiais da Aspose; versões mais recentes adicionam suporte a variantes adicionais de HEIC e melhoram a precisão dos idiomas. + +--- + +## Etapa 2 – Inicializar o Motor OCR para **Extrair Texto de HEIC** + +Criar uma instância de `OcrEngine` é o primeiro passo concreto para extrair texto de HEIC. O motor abstrai toda a decodificação de baixo nível, de modo que você não precise se preocupar com o formato de contêiner HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Por que isso importa:** +HEIC é um formato de imagem moderno baseado no contêiner HEIF. Bibliotecas OCR tradicionais esperam JPEG/PNG, forçando a execução de um passo de conversão separado que pode degradar a qualidade. O suporte nativo do Aspose OCR permite que você **extraia texto de HEIC** de uma só vez, preservando os dados de pixel originais e economizando ciclos de CPU. + +--- + +## Etapa 3 – Habilitar o(s) Idioma(s) Desejado(s) + +Por padrão, o motor procura apenas o inglês. Se você precisar **converter HEIC em texto** em outro idioma, basta alternar a flag apropriada. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Por que habilitar idiomas explicitamente?** +> Pacotes de idioma são carregados sob demanda. Habilitar apenas o que você precisa reduz a pegada de memória e acelera o reconhecimento. + +--- + +## Etapa 4 – Executar o Processo de Reconhecimento + +Agora realmente pedimos ao motor que leia a imagem e produza uma string. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Saída esperada** (supondo que a imagem contenha a frase “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Se a imagem estiver em branco ou o texto for ilegível, o motor retorna `false`, e você verá a mensagem de fallback. + +--- + +## Etapa 5 – Lidando com Casos de Borda e Perguntas Frequentes + +### E se o arquivo HEIC estiver corrompido? + +Aspose OCR lança um `IOException` quando não consegue decodificar o contêiner. Envolva a chamada em um bloco `try‑catch` e registre o erro para inspeção posterior. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Posso processar vários arquivos HEIC em lote? + +Absolutamente. Basta percorrer um diretório e reutilizar a mesma instância de `OcrEngine` para evitar sobrecarga de inicialização repetida. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Isso também **converte HEIC em texto** para scripts não latinos? + +Sim—Aspose OCR suporta Árabe, Chinês, Cirílico e muitas outras línguas. Basta habilitar a flag de idioma correspondente (por exemplo, `engine.getLanguage().setChineseSimplified(true);`). Lembre‑se de adicionar os arquivos de fonte apropriados se estiver executando em um servidor sem interface gráfica. + +--- + +## Etapa 6 – Verificar o Resultado Programaticamente + +Em um pipeline de produção você frequentemente precisará garantir que a saída do OCR atenda a certos limites de qualidade. Uma forma rápida é calcular uma pontuação de confiança (disponível em versões mais recentes) ou simplesmente verificar o tamanho da string retornada. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Exemplo Completo Funcional + +A seguir está a classe Java completa, pronta para ser executada, que incorpora todas as etapas acima. Cole‑a em um arquivo chamado `HeifExample.java`, ajuste o caminho para o seu arquivo HEIC e execute `javac` + `java` como de costume. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Execute: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Você deverá ver a string extraída impressa no console, confirmando que você converteu HEIC em texto com sucesso. + +--- + +## Conclusão + +Caminhamos por tudo que você precisa para **extrair texto de HEIC** usando Aspose OCR em Java. Desde a adição da biblioteca até o tratamento de casos de borda, o guia apresenta uma solução limpa e de passo único que elimina a necessidade de uma ferramenta de conversão separada. + +Agora você pode: + +- **Converter HEIC em texto** em tempo real em serviços web, back‑ends móveis ou trabalhos em lote. +- Estender o suporte a outros idiomas com uma única linha de configuração. +- Escalar o processo reutilizando o mesmo `OcrEngine` em vários arquivos. + +Em seguida, você pode explorar **incorporar o resultado do OCR em um índice pesquisável** (por exemplo, Elasticsearch) ou **adicionar pré‑processamento de imagem** para melhorar a precisão em fotos HEIC de baixo contraste. O céu é o limite—experimente, meça e itere. + +Tem perguntas ou encontrou um arquivo HEIC complicado? Deixe um comentário abaixo, e feliz codificação! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/russian/java/advanced-ocr-techniques/_index.md b/ocr/russian/java/advanced-ocr-techniques/_index.md index 863e08e89..9110981b1 100644 --- a/ocr/russian/java/advanced-ocr-techniques/_index.md +++ b/ocr/russian/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,16 @@ Aspose.OCR для Java меняет правила игры, когда дело Расширьте возможности своих Java-приложений с помощью Aspose.OCR для точного распознавания текста. Простая интеграция, высокая точность. ### [Указание разрешенных символов в Aspose.OCR](./specify-allowed-characters/) Легко разблокируйте извлечение текста из изображений с помощью Aspose.OCR для Java. Следуйте нашему пошаговому руководству для эффективной интеграции. +### [Как включить GPU для OCR в Java – Полное руководство](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Узнайте, как активировать GPU для ускорения OCR в Aspose.OCR для Java. Пошаговое руководство для повышения производительности. +### [Создание фиксированного пула потоков для параллельного OCR в Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Узнайте, как создать фиксированный пул потоков для параллельного выполнения OCR с Aspose.OCR в Java, повышая производительность обработки изображений. +### [Повышение точности OCR в Java – Полное руководство по Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Узнайте, как улучшить точность распознавания текста в Java с помощью Aspose OCR, следуя подробному пошаговому руководству. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/russian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/russian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..5ebc9abbb --- /dev/null +++ b/ocr/russian/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Создайте фиксированный пул потоков в Java для быстрого извлечения текста + из изображений. Узнайте, как запускать OCR, преобразовывать изображение в текст + и повышать производительность с помощью параллельной обработки OCR. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: ru +og_description: Создайте фиксированный пул потоков в Java для быстрого извлечения + текста из изображений. Узнайте, как запускать OCR, преобразовывать изображение в + текст и повышать производительность с помощью параллельной обработки OCR. +og_title: Создать фиксированный пул потоков для параллельного OCR в Java +tags: +- Java +- OCR +- Multithreading +title: Создать фиксированный пул потоков для параллельного OCR в Java +url: /ru/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание фиксированного пула потоков для параллельного OCR в Java + +Когда‑то вам нужно **создать фиксированный пул потоков**, чтобы ускорить задачи OCR, но вы не знали, с чего начать? Вы не одиноки. Во многих проектах, где много изображений, узким местом является однопоточный вызов OCR, а решение удивительно простое: запустить пул рабочих потоков и позволить им обрабатывать файлы параллельно. + +В этом руководстве вы узнаете, как **извлекать текст из изображений** с помощью Aspose OCR, как **эффективно запускать OCR** и как **преобразовать изображение в текст**, не перегружая процессор. К концу вы получите готовую к запуску Java‑программу, демонстрирующую **параллельную обработку OCR** на нескольких примерах изображений. + +## Что вы построите + +Мы соберём небольшое консольное приложение, которое: + +* Считывает список путей к изображениям (PNG, JPG, TIFF, BMP). +* **Создаёт фиксированный пул потоков**, размер которого соответствует количеству ядер CPU. +* Отправляет задачу OCR для каждого изображения. +* Сбирает распознанный текст и выводит его в консоль. +* Аккуратно завершает работу исполнителя. + +Никаких внешних средств сборки, никаких сложных фреймворков — только чистый Java и библиотека Aspose OCR. Если у вас есть Java 8+ и хороший IDE, вы готовы к работе. + +## Требования + +* **Java Development Kit (JDK) 8 или новее** — код использует лямбда‑выражения, поэтому более старые версии не скомпилируются. +* **Aspose OCR for Java** — скачайте JAR с сайта Aspose или подключите его через Maven (`com.aspose:aspose-ocr`). +* Папка с несколькими тестовыми изображениями (в коде указано `YOUR_DIRECTORY`). +* Базовое знакомство с конкуренцией в Java (остальное мы объясним). + +> *Pro tip:* Если вы используете Maven, добавьте зависимость в ваш `pom.xml` и позвольте IDE управлять classpath. + +--- + +## Шаг 1: Добавьте необходимые импорты + +Сначала импортируем нужные классы. Это не просто шаблонный код; каждый импорт указывает JVM, где находятся движок OCR, утилиты для работы с изображениями и инструменты конкуренции, позволяющие нам **создавать фиксированный пул потоков**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – основной API OCR. +* `java.util.*` – коллекции для хранения путей к изображениям и результатов. +* `java.util.concurrent.*` – пакет конкуренции, содержащий `ExecutorService` и `Future`. + +--- + +## Шаг 2: Определите изображения для обработки + +Далее перечисляем файлы, из которых хотим **извлекать текст из изображений**. Использование `Arrays.asList` делает код лаконичным и позволяет заменить каталог без изменения остальной логики. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Не стесняйтесь добавлять новые записи; пул потоков автоматически масштабируется в зависимости от количества ядер процессора. + +--- + +## Шаг 3: **Создайте фиксированный пул потоков**, соответствующий ядрам CPU + +Это сердце руководства. Мы запрашиваем у среды выполнения количество доступных ядер и просим фабрику `Executors` создать пул именно такого размера. Почему фиксированный? Потому что предсказуемое количество потоков предотвращает «взрыв потоков», который может лишить ОС ресурсов. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` возвращает логическое количество ядер (включая гипертреды). +* `newFixedThreadPool(coreCount)` гарантирует, что мы никогда не превысим возможности CPU, что является самым безопасным способом **запускать OCR** параллельно. + +--- + +## Шаг 4: Отправьте задачу OCR для каждого изображения + +Теперь каждый путь к файлу превращаем в `Callable`, который **выполняет OCR**, распознаёт текст и возвращает результат. Обратите внимание, что внутри лямбда‑выражения мы создаём новый `OcrEngine` — так мы избегаем небезопасного совместного использования состояния движка между потоками. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Каждый вызов `submit` передаёт лямбду в пул, который планирует её на свободный поток. +* Объекты `Future` позволяют позже получить распознанный текст, сохраняя порядок, если это необходимо. + +--- + +## Шаг 5: Получите и отобразите распознанный текст + +После того как все задачи поставлены в очередь, мы просто проходим по списку `Future`, вызывая `get()`, чтобы блокировать выполнение до завершения каждой OCR‑работы. Здесь и проявляется шаг **преобразовать изображение в текст**: вызов `engine.getText()` возвращает готовую строку. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Типичный вывод в консоль выглядит так: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Если файл не удалось обработать (например, он повреждён), вы увидите строку, начинающуюся с `Failed:` и путь к файлу — удобно для быстрой отладки. + +--- + +## Шаг 6: Очистите сервис исполнителя + +Никогда не забывайте закрывать пул; иначе JVM может продолжать работать, полагая, что есть ещё задачи. Корректное завершение позволяет завершить все запущенные задачи перед выходом процесса. + +```java +executor.shutdown(); +``` + +При необходимости можно вызвать `awaitTermination`, чтобы задать тайм‑аут, но для большинства консольных утилит достаточно простого `shutdown()`. + +--- + +## Полный рабочий пример + +Ниже представлен полностью готовый к запуску код. Скопируйте его в файл `ParallelOcrTutorial.java`, поправьте пути к изображениям и запустите `javac` + `java` как обычно. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Ожидаемый результат:** текстовое содержимое каждого изображения выводится в консоль в том же порядке, что и в списке `imagePaths`. Если какое‑то изображение не может быть обработано, вместо пустой строки появится сообщение о сбое. + +--- + +## Часто задаваемые вопросы и особые случаи + +### Что делать, если изображений больше, чем потоков? + +Фиксированный пул потоков автоматически ставит лишние задачи в очередь. Как только поток завершит текущую работу OCR, он берёт следующую задачу. Такое поведение очереди — суть **параллельной обработки OCR**: вы получаете максимальную пропускную способность без перегрузки процессора. + +### Можно ли изменить язык? + +Конечно. Замените `engine.getLanguage().setEnglish(true);` на нужный флаг, например `setFrench(true)` или включите несколько языков, вызвав несколько сеттеров перед `recognize()`. + +### Как работать с очень большими изображениями? + +Большие файлы могут потреблять много памяти на каждый поток. Если появляется `OutOfMemoryError`, попробуйте уменьшить размер изображения перед передачей его в движок или увеличьте размер кучи с помощью `-Xmx`. Другой вариант — использовать **кеширующий пул потоков** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/russian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/russian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..2265bbe1d --- /dev/null +++ b/ocr/russian/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-05-03 +description: Как быстро включить GPU для Java OCR – узнайте, как извлекать текст из + изображений с помощью Aspose OCR. Включено полное руководство по Java OCR. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: ru +og_description: Как включить GPU для Java OCR за несколько минут. Этот учебник покажет, + как извлекать текст из изображений с помощью Java OCR с ускорением на GPU. +og_title: Как включить GPU для Java OCR – пошаговое руководство +tags: +- Java +- OCR +- GPU +- Aspose +title: как включить GPU для Java OCR — Полный учебник +url: /ru/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# как включить gpu для Java OCR – Полный учебник + +Когда‑то задавались вопросом **how to enable gpu**, пытаясь извлечь текст из изображения? Если вам приходилось запускать OCR на сканах высокого разрешения и наблюдать, как процессор «запирается», вы не одиноки. В этом руководстве мы пройдём **java ocr tutorial**, который не только покажет, как извлечь текст, но и продемонстрирует самый быстрый способ **recognize text image java**‑стиля, включив экспериментальную поддержку GPU. + +Мы начнём с подключения библиотеки Aspose OCR, затем включим GPU, загрузим пример изображения и, наконец, получим распознанную строку из файла. К концу вы получите готовый фрагмент кода, который можно вставить в любой Maven‑проект, а также поймёте, почему GPU важен, когда он может не помочь и как устранять типичные проблемы. Внешних документов не требуется — всё, что нужно, находится здесь. + +--- + +## Что понадобится + +- **Java Development Kit (JDK) 8+** — код работает на любой современной JDK. +- **Maven** (или Gradle) для загрузки зависимости Aspose OCR. +- **GPU‑совместимая машина** (карта NVIDIA с поддержкой CUDA работает лучше всего, но API Aspose автоматически переключится в режим CPU, если GPU недоступен). +- Пример изображения, например `sample-highres.png`, помещённый в папку, к которой вы можете обратиться. +- Капля любопытства к техникам **image to text conversion java**. + +Если чего‑то не хватает, скачайте JDK с сайта Oracle или OpenJDK, установите Maven и убедитесь, что драйвер видеокарты обновлён. Это всё, что нужно подготовить; остальное — чистый Java. + +--- + +## Шаг 1: Добавьте Aspose OCR в проект + +Первым делом нам нужен сам движок OCR. Aspose предоставляет чистый Maven‑артефакт; просто вставьте этот фрагмент в ваш `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Если вы предпочитаете Gradle, эквивалент выглядит так: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +После разрешения зависимости у вас появятся классы `OcrEngine`, `ImageStream` и вспомогательные средства для **java ocr tutorial**, работающие без проблем. + +--- + +## Шаг 2: Как включить GPU (ключевое слово в действии) + +Теперь переходим к главному: **how to enable gpu** для OCR‑движка. API Aspose раскрывает один булевый флаг — `setUseGpu(true)`. Это экспериментальная возможность, но на приличной видеокарте вы заметите резкое сокращение времени распознавания, особенно для больших изображений высокого разрешения. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro tip:** Если в вашей среде нет совместимого GPU, флаг будет тихо проигнорирован, и движок переключится в режим CPU. Никаких сбоев, просто будет медленнее. + +--- + +## Шаг 3: Загрузите изображение для обработки + +OCR‑движок работает с `ImageStream`. Укажите путь к файлу, который хотите преобразовать из картинки в обычный текст. Вот компактный способ сделать это: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Убедитесь, что путь абсолютный или относительный к рабочей директории проекта. Если файл не найден, будет выброшено `IOException` — мы перехватим его позже. + +--- + +## Шаг 4: Выберите язык (необязательно, но рекомендуется) + +Aspose OCR поддерживает множество алфавитов, но стоит явно указать ожидаемый язык. Для английского это однострочник: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Если нужен французский или китайский, просто замените флаг (`setFrench(true)`, `setChineseSimplified(true)` и т.д.). Эта небольшая подсказка часто повышает точность, позволяя движку отсеивать маловероятные варианты символов. + +--- + +## Шаг 5: Recognize Text Image Java — Запустите движок + +Настал момент истины: **recognize text image java**‑стиль. Вызываем `recognize()`, и если он вернёт `true`, получаем строку через `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +В результате будет получен «сырой» текст из `sample-highres.png`. Для чистого документа, возможно, понадобится пост‑обработка строки (удалить лишние пробелы, заменить разрывы строк и т.п.). Вот быстрый пример: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Шаг 6: Полный рабочий пример (готов к копированию) + +Ниже представлен полный **java ocr tutorial**, который можно сразу скомпилировать и запустить. В нём есть обработка ошибок и вывод ожидаемого результата. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Ожидаемый вывод (пример):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Если изображение содержит несколько строк, они будут разделены символами переноса строки (`\n`). Движок сохраняет оригинальное расположение текста насколько это возможно. + +--- + +## Шаг 7: Пограничные случаи, советы и часто задаваемые вопросы + +### Что делать, если GPU не обнаружен? + +Aspose автоматически отключает поддержку GPU, когда не находит совместимое устройство. Проверить текущий режим можно, проверив флаг после инициализации: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Если он выводит `false`, проверьте версию драйвера и наличие `CUDA`‑runtime в переменной `PATH`. + +### Помогает ли GPU для маленьких изображений? + +Не всегда. Накладные расходы на передачу небольшого битмапа на GPU могут превысить выигрыш в скорости. Для изображений менее 500 KB вы можете даже заметить небольшое замедление. В таких случаях просто установите `setUseGpu(false)`. + +### Как работать с многоязычными документами? + +Можно включить несколько языков одновременно: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Движок будет пытаться сопоставить символы из любого из указанных наборов, что удобно для двуязычных PDF‑файлов. + +### Можно ли обрабатывать PDF‑файлы напрямую? + +Aspose OCR работает с потоками изображений, поэтому сначала нужно растеризовать каждую страницу PDF (например, с помощью Aspose PDF или PDFBox), а затем передать полученный `BufferedImage` в `setImage`. + +--- + +## Визуальное резюме + +![как включить gpu для Java OCR engine](/images/gpu-ocr.png "Схема ускоренного GPU‑OCR конвейера") + +*Диаграмма иллюстрирует поток от загрузки изображения → OCR с включённым GPU → извлечение текста.* + +--- + +## Заключение + +Мы рассмотрели, **how to enable gpu** в Java‑OCR‑конвейере, прошли полный **java ocr tutorial** и продемонстрировали **image to text conversion java** на практическом примере, готовом к копированию. Переключив один флаг, вы можете сэкономить секунды — а то и минуты — при обработке больших сканов, делая приложения более отзывчивыми. + +Что дальше? Попробуйте обработать пакет изображений в цикле, поэкспериментируйте с разными языками или объедините это с Apache Tika для автоматической индексации извлечённого текста. Возможности безграничны, когда вы сочетаете ускоренный GPU OCR с другими Java‑библиотеками. + +Есть вопросы о **how to extract text** из сложных изображений или хотите узнать больше о трюках **recognize text image java**? Оставляйте комментарий ниже, и счастливого кодинга! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/russian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/russian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..9e2e31e8a --- /dev/null +++ b/ocr/russian/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-05-03 +description: Быстро улучшайте точность OCR с помощью Aspose OCR Java. Узнайте, как + загрузить изображение для OCR, включить языки и применить агрессивную коррекцию + орфографии за несколько шагов. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: ru +og_description: Улучшите точность OCR мгновенно с помощью Aspose OCR Java. Это руководство + показывает, как загрузить изображение для OCR, включить языки и использовать агрессивную + коррекцию орфографии. +og_title: Повышение точности OCR в Java – пошаговое руководство по Aspose OCR +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Повышение точности OCR в Java — Полное руководство по Aspose OCR +url: /ru/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Улучшение точности OCR в Java – Полное руководство по Aspose OCR + +Вы когда‑нибудь задумывались, почему результаты вашего OCR выглядят как детский почерк? Если вы сталкиваетесь с пропущенными буквами, неправильными словами или просто бессмыслицей, вы не одиноки. **Improve OCR accuracy** — первое, к чему обращаются большинство разработчиков, когда их извлечение текста кажется ненадёжным. + +В этом руководстве мы пройдём практическое решение, которое не только **load image for OCR**, но и использует встроенный в Aspose движок исправления орфографии для повышения качества. К концу вы получите готовую к запуску программу на Java, распознающую английский + французский текст с агрессивным исправлением — без необходимости во внешних словарях. + +## Что вы узнаете + +- Как **load image for OCR** с помощью `ImageStream` от Aspose. +- Почему включение нужных языков важно для точности. +- Влияние агрессивного исправления орфографии на многоязычные документы. +- Полный, исполняемый пример кода, который можно добавить в любой проект Maven/Gradle. +- Советы, подводные камни и идеи для дальнейшего масштабирования этого подхода. + +> **Prerequisites** – Java 8 или новее, свежий JAR Aspose.OCR for Java (v23.12 или новее) и файл изображения (`multilingual.png`) с английским и французским текстом. Всё — никаких дополнительных моделей или API. + +--- + +## Улучшение точности OCR: настройка движка Aspose OCR + +Сердцем любой OCR‑конвейера является конфигурация движка. Указывая Aspose точно, чего вы ожидаете, вы даёте ему шанс правильно выполнить задачу. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Почему это важно:** +- **Engine instance** – `OcrEngine` хранит все настройки; создание нового экземпляра предотвращает перенос состояния от предыдущих запусков. +- **Image loading** – Использование `ImageStream.fromFile` — самый простой способ **load image for OCR**. Он поддерживает PNG, JPEG, BMP и TIFF из коробки. +- **Language flags** – Включение английского + французского сообщает распознавателю использовать соответствующие наборы символов и языковые модели, что само по себе может повысить точность на 10‑15 %. +- **Aggressive spell correction** – Установка `SpellCorrectionLevel.AGGRESSIVE` заставляет внутренний словарь переписывать сомнительные слова, что является ключевым рычагом, когда нужно **improve OCR accuracy** на зашумлённых сканах. + +--- + +## Загрузка изображения для OCR – установка исходного файла + +Прежде чем движок сможет что‑то сделать, ему нужен битмап. Если передать ему повреждённый поток или неверный путь, вы получите исключение быстрее, чем успеете сказать «null pointer». + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** Если вы обрабатываете изображения, загруженные пользователями, оберните логику загрузки в блок try‑catch и сначала проверьте размер/формат файла. Это предотвратит сбой движка при работе с огромными PDF или неподдерживаемыми форматами. + +--- + +## Включение нескольких языков для лучшего распознавания + +Большинство OCR‑библиотек по умолчанию поддерживают только английский. Когда ваш документ содержит несколько языков, вы заметите рост количества неверно распознанных символов. Aspose делает переключение дополнительных языков простым. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Почему стоит включать более одного языка?** +- **Character set expansion** – Во французском есть буквы с диакритиками, такие как “é” и “ç”. Без французского флага они превращаются в “e” или “c”, что затем сбивает с толку spell‑corrector. +- **Contextual hints** – OCR‑движок использует языковые модели для предсказания границ слов; двуязычная модель уменьшает ложные разбиения. + +--- + +## Применение агрессивного исправления орфографии + +Исправление орфографии — это не просто «nice‑to‑have»; это переломный момент, когда нужно **improve OCR accuracy** на сканах низкого качества. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Уровни в обзоре + +| Уровень | Поведение | +|--------------|----------------------------------------------| +| **NONE** | Без исправления — только необработанный вывод движка. | +| **LIGHT** | Исправляет очевидные опечатки, низкий риск пере‑исправления. | +| **AGGRESSIVE** | Агрессивно использует словарные запросы; лучший вариант для шумных изображений. | + +**Caution:** Режим Aggressive может переписать законные собственные имена (например, “McDonald” → “Mcdonald”). Если ваш домен содержит много имён, рассмотрите пост‑обработку с фильтром. + +--- + +## Запуск распознавания и проверка вывода + +Теперь, когда всё настроено, пришло время позволить Aspose выполнить тяжёлую работу. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Ожидаемый вывод (пример) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Если вместо этого вы видите бессмыслицу, проверьте следующее: + +1. Качество изображения (размытие или низкое DPI ухудшают точность). +2. Флаги языков — отсутствие французского уберёт акценты. +3. Уровень исправления орфографии — попробуйте `LIGHT`, если замечаете пере‑исправление. + +--- + +## Полный рабочий пример (все шаги в одном файле) + +Ниже представлен полный код программы, который можно сразу скомпилировать и запустить. Сохраните его как `SpellCorrectionTutorial.java`, укажите путь к изображению и выполните `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Скомпилировать и запустить: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Вы должны увидеть исправленный многоязычный текст, выведенный в консоль. + +--- + +## Распространённые проблемы и как их избежать + +| Симптом | Вероятная причина | Решение | +|-----------------------|-------------------------------------------------|---------| +| **Blank output** | Неправильный путь к изображению или файл нечитаем | Проверьте путь в `ImageStream.fromFile`; добавьте проверку существования файла. | +| **Missing accents** | Французский язык не включён | Вызовите `ocrEngine.getLanguage().setFrench(true)`. | +| **Garbage characters**| Низкое разрешение изображения (< 150 dpi) | Увеличьте масштаб или переснимите с более высоким DPI; рассмотрите предобработку с помощью библиотек улучшения изображений. | +| **Over‑corrected names**| Агрессивное исправление орфографии над собственными именами | Пост‑обработайте с помощью белого списка известных имён или переключитесь на уровень `LIGHT`. | + +--- + +## Следующие шаги: масштабирование вашего OCR‑конвейера + +- **Batch processing:** Обход каталога изображений, повторное использование одного экземпляра `OcrEngine` для повышения производительности. +- **PDF extraction:** Использовать Aspose.PDF для преобразования каждой страницы в изображение, затем передать его OCR‑движку. +- **Custom dictionaries:** Если ваш домен использует специализированную терминологию (медицинскую, юридическую), загрузите пользовательский список слов в `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Parallelism:** `ForkJoinPool` в Java может выполнять несколько OCR‑задач одновременно, но следите за использованием памяти, так как каждый движок хранит буферы изображений. + +--- + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Скриншот улучшения точности OCR, показывающий исправленный многоязычный текст"} + +--- + +## Заключение + +Мы только что **improved OCR + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/russian/java/ocr-operations/_index.md b/ocr/russian/java/ocr-operations/_index.md index d3f16f84f..dc03e24fe 100644 --- a/ocr/russian/java/ocr-operations/_index.md +++ b/ocr/russian/java/ocr-operations/_index.md @@ -81,6 +81,10 @@ weight: 21 Мощное распознавание текста в Java с Aspose.OCR. Легко распознавайте текст в TIFF‑изображениях. Скачайте сейчас для бесшовного OCR‑опыта. ### [Распознавание текста на изображении с Aspose OCR – Полный Java OCR туториал](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Полный пошаговый туториал по распознаванию текста на изображениях с использованием Aspose OCR в Java. +### [Aspose OCR Java пример: извлечение текста из области](./aspose-ocr-java-example-extract-text-from-a-region/) +Показан пример использования Aspose OCR для Java, позволяющий извлекать текст из заданного региона изображения. +### [Извлечение текста из HEIC – Полный Java‑гид](./extract-text-from-heic-complete-java-guide/) +Полный пошаговый туториал по извлечению текста из файлов HEIC с помощью Aspose.OCR для Java. ## Часто задаваемые вопросы diff --git a/ocr/russian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/russian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..d012ab268 --- /dev/null +++ b/ocr/russian/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: Пример Aspose OCR на Java показывает, как загрузить изображение для OCR + и извлечь текст из области всего за несколько строк кода. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: ru +og_description: Пример Aspose OCR на Java демонстрирует загрузку изображения для OCR + и извлечение текста из определённого региона, идеально подходит для обработки счетов. +og_title: Пример Aspose OCR на Java – извлечение текста из области +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Пример Aspose OCR на Java: извлечение текста из области' +url: /ru/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Пример Aspose OCR Java: Извлечение текста из области + +Ищете **пример Aspose OCR Java**, который позволяет извлечь только нужную часть изображения? В этом руководстве мы пройдемся по **загрузке изображения для OCR** и **извлечению текста из области**, что идеально подходит для номеров счетов, полей форм или любой части данных, скрытой внутри более крупного изображения. + +Вы, возможно, задаётесь вопросом, зачем ограничивать OCR прямоугольником вместо сканирования всей страницы. Краткий ответ: скорость и точность. Когда движок смотрит только на определённый фрагмент, он пропускает лишний шум, работает быстрее и часто даёт более чистый результат. К концу этого урока у вас будет автономная Java‑программа, делающая именно это, плюс несколько советов, как избежать типичных подводных камней для новичков. + +## Что понадобится + +- **Java Development Kit (JDK) 11** или новее, установленный на вашем компьютере. +- **Aspose.OCR for Java** библиотека (можно скачать последнюю JAR‑файл из репозитория Maven Central или портала загрузок Aspose). +- Файл изображения, содержащий текст, который нужно прочитать – для демонстрации мы будем использовать `invoice.png`, где номер счета расположен где‑то в правом верхнем углу. +- Любая любимая IDE или простой текстовый редактор плюс терминал; любой инструмент сборки (Maven, Gradle или обычный `javac`) подойдёт. + +Это всё. Никаких дополнительных OCR‑движков, никаких нативных бинарных файлов, только чистый Java и Aspose. + +![Скриншот примера Aspose OCR Java](/images/aspose-ocr-java-example.png "Пример Aspose OCR Java, показывающий извлечение области") + +## Пример Aspose OCR Java – Инициализация OCR‑движка + +Первое, что требуется в любом OCR‑процессе, – это экземпляр движка. Aspose поставляет лёгкий класс `OcrEngine`, который управляет всем: от загрузки изображения до выбора языка. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Почему это важно:** Создание движка заранее даёт вам чистый объект для настройки. Вы можете переиспользовать один и тот же `OcrEngine` для нескольких изображений, если обрабатываете пакет, что экономит память и время инициализации. + +## Загрузка изображения для OCR + +Далее мы указываем движку, какое изображение сканировать. Aspose предоставляет вспомогательный метод `ImageStream.fromFile`, который скрывает низкоуровневый шаблон `FileInputStream`. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Подсказка:** Замените `YOUR_DIRECTORY` на абсолютный путь или относительный, указывающий на место, где хранится `invoice.png`. Если файл не найден, Aspose бросит `IOException`, поэтому в продакшн‑коде стоит обернуть вызов в блок `try‑catch`. + +## Определение и извлечение текста из области + +Теперь звезда шоу: прямоугольник, который говорит движку, где искать. Конструктор `java.awt.Rectangle` принимает параметры `(x, y, width, height)` – все измеряется в пикселях. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Как это работает:** Вызвав `setRegion`, вы ограничиваете сканирование OCR‑ом 300‑пиксельным срезом, начинающимся в 120 пикселях от левого края и 250 пикселях от верхнего. Подгоните эти числа под ваш макет; быстрый способ узнать их – открыть изображение в любом графическом редакторе, показывающем координаты пикселей. + +## Включение языка и запуск распознавания + +Aspose OCR поддерживает десятки языков, но для номера счета нам нужен только английский. Включение нужного языка значительно снижает количество ложных срабатываний. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Почему включать только английский?** Движок будет пытаться сопоставлять символы из всех включённых языков, что может запутать его, когда текст состоит из простых буквенно‑цифровых комбинаций. Ограничение набора языков улучшает и скорость, и точность. + +### Ожидаемый вывод + +Когда всё настроено правильно, вы увидите что‑то вроде: + +``` +Extracted region text: INV-12345 +``` + +Если прямоугольник смещён на несколько пикселей, вывод может быть искажённым или пустым. Это простой способ проверки: запустите программу, посмотрите консоль и убедитесь, что текст совпадает с тем, что видно на изображении. + +## Запуск кода и проверка вывода + +Предположим, вы используете Maven, добавьте зависимость Aspose OCR в ваш `pom.xml`: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Скомпилируйте и выполните: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Или, если предпочитаете обычный `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Вы должны увидеть строку **Extracted region text**, напечатанную в консоли. Если появилось сообщение «OCR recognition failed», дважды проверьте путь к файлу и убедитесь, что выбранная область действительно содержит читаемые символы. + +## Пограничные случаи и распространённые варианты + +| Ситуация | Что изменить | +|-----------|----------------| +| **Несколько языков** (например, English + Spanish) | Вызовите `ocrEngine.getLanguage().setSpanish(true);` вместе с английским. | +| **Область за пределами изображения** | Aspose тихо обрежет прямоугольник, но вы потеряете данные. Используйте `ImageInfo` (`ocrEngine.getImage().getWidth()`) для проверки размеров перед установкой области. | +| **Динамические счета** (разные макеты) | Рассмотрите возможность лёгкого предварительного сканирования всего изображения для поиска ключевых слов вроде “Invoice #”, а затем вычисляйте прямоугольник программно. | +| **Изображения с высоким DPI** | Увеличьте `ocrEngine.getImage().setResolution(300);` для лучшей точности на отсканированных документах. | +| **Тонкая настройка производительности** | Отключите ненужные языки, держите область как можно меньше и переиспользуйте один экземпляр `OcrEngine` для множества файлов. | + +## Профессиональные советы из практики + +- **Pro tip:** Если нужны только цифры (часто для номеров счетов), включите числовой режим с помощью `ocrEngine.getLanguage().setDigits(true);`. Это устраняет буквенный шум. +- **Watch out for:** Прозрачные PNG. Aspose иногда неверно интерпретирует альфа‑канал; предварительное преобразование изображения в JPEG с однотонным фоном может решить проблему пустых выводов. +- **Remember:** Прямоугольник использует собственную систему координат изображения, а не масштабирование UI, которое вы видите на экране. Всегда тестируйте с тем же файлом, который будете обрабатывать в продакшене. + +## Что дальше? + +Теперь, когда у вас есть надёжный **пример Aspose OCR Java** для извлечения по области, вы можете расширить его в нескольких полезных направлениях: + +- **Batch processing:** Пройдитесь по папке со счетами, переиспользуя один и тот же `OcrEngine` для повышения пропускной способности. +- **Data validation:** Пропустите извлечённый текст через регулярное выражение вроде `INV-\\d{5}`, чтобы убедиться, что захвачен корректный номер счета. +- **Integration with PDF:** Используйте Aspose.PDF, чтобы наложить извлечённый текст обратно на оригинальный документ для аудита. +- **Cloud deployment:** Оберните код в лёгкий REST‑сервис (Spring Boot), чтобы другие системы могли вызывать его по требованию. + +Каждый из этих шагов естественно опирается на те же базовые концепции – **загрузка изображения для OCR**, **извлечение текста из области** и обработка результатов – поэтому переход будет безболезненным. + +--- + +*Счастливого кодинга! Если возникнут проблемы, оставьте комментарий ниже или загляните на форумы Aspose, где сообщество делится реальными настройками для сложных макетов.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/russian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/russian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..59c35a39e --- /dev/null +++ b/ocr/russian/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Извлекайте текст из изображений HEIC с помощью Aspose OCR в Java. Узнайте, + как быстро преобразовать HEIC в текст с пошаговым примером. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: ru +og_description: Извлекайте текст из изображений HEIC с помощью Aspose OCR в Java. + Это руководство покажет, как за несколько минут преобразовать HEIC в текст. +og_title: Извлечение текста из HEIC — учебник по OCR на Java +tags: +- OCR +- Java +- Aspose +title: Извлечение текста из HEIC – Полное руководство по Java +url: /ru/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Извлечение текста из HEIC – Полное руководство по Java + +Задумывались ли вы когда‑нибудь, как **извлечь текст из HEIC** файлов без предварительного преобразования их в JPEG или PNG? Вы не одиноки. Многие разработчики сталкиваются с проблемой, когда мобильное приложение передаёт им фото в формате `.heic`, а им нужен встроенный текст для индексации или аналитики. Хорошая новость? С Aspose OCR для Java вы можете **извлечь текст из HEIC** напрямую — без дополнительного шага конвертации. + +В этом руководстве мы также покажем, как **конвертировать HEIC в текст** в едином, чистом конвейере, чтобы вы могли вставить код в любой Java‑проект и сразу начать извлекать строки из этих высокоэффективных изображений. + +![extract text from heic example](https://example.com/placeholder.png "extract text from heic example") + +## Что вы узнаете + +- Как настроить Aspose OCR в проекте Maven/Gradle. +- Точный Java‑код, необходимый для **извлечения текста из HEIC** изображений. +- Почему этот подход быстрее и менее подвержен ошибкам, чем двухшаговый процесс `convert‑then‑OCR`. +- Распространённые подводные камни (например, отсутствие языковых пакетов) и как их избежать. +- Советы по масштабированию решения в сценарии пакетной обработки. + +К концу руководства вы сможете **конвертировать HEIC в текст** всего несколькими строками кода и поймёте «почему» каждого шага. + +--- + +## Предварительные требования + +Прежде чем погрузиться в детали, убедитесь, что у вас есть: + +1. **Java 8 или выше** — Aspose OCR работает на любой современной JDK. +2. **Maven или Gradle** — для автоматического получения библиотеки Aspose OCR. +3. **HEIC‑изображение**, которое вы хотите протестировать (переименуйте его в `sample.heic` и разместите в доступном месте). +4. Необязательно, но удобно: IDE, например IntelliJ IDEA или VS Code. + +Никакие другие внешние инструменты не требуются; библиотека нативно обрабатывает формат HEIC. + +--- + +## Шаг 1 — Добавьте Aspose OCR в ваш проект + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Совет:** Держите номер версии в синхронизации с официальными выпусками Aspose; более новые версии добавляют поддержку дополнительных вариантов HEIC и повышают точность распознавания языков. + +--- + +## Шаг 2 — Инициализируйте OCR‑движок для **извлечения текста из HEIC** + +Создание экземпляра `OcrEngine` — первый конкретный шаг к извлечению текста из HEIC. Движок абстрагирует всю низкоуровневую декодировку, поэтому вам не нужно беспокоиться о формате контейнера HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Почему это важно:** +HEIC — современный формат изображения, основанный на контейнере HEIF. Традиционные OCR‑библиотеки ожидают JPEG/PNG, заставляя выполнять отдельный шаг конвертации, который может ухудшить качество. Нативная поддержка Aspose OCR позволяет **извлекать текст из HEIC** за один проход, сохраняя оригинальные пиксельные данные и экономя процессорные ресурсы. + +--- + +## Шаг 3 — Включите нужные язык(и) + +По умолчанию движок ищет только английский. Если вам нужно **конвертировать HEIC в текст** на другом языке, просто переключите соответствующий флаг. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Почему явно включать языки?** +> Языковые пакеты загружаются по требованию. Включение только нужных уменьшает объём памяти и ускоряет распознавание. + +--- + +## Шаг 4 — Запустите процесс распознавания + +Теперь мы действительно просим движок прочитать изображение и вернуть строку. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Expected output** (assuming the image contains the phrase “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Если изображение пустое или текст нечитаемый, движок возвращает `false`, и вы увидите сообщение резервного варианта. + +--- + +## Шаг 5 — Обработка граничных случаев и часто задаваемых вопросов + +### Что делать, если файл HEIC повреждён? + +Aspose OCR бросает `IOException`, когда не может декодировать контейнер. Оберните вызов в блок `try‑catch` и запишите ошибку в журнал для последующего анализа. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Можно ли обрабатывать несколько файлов HEIC пакетно? + +Абсолютно. Просто пройдитесь по директории в цикле и переиспользуйте один и тот же экземпляр `OcrEngine`, чтобы избежать повторных затрат на инициализацию. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Это также **конвертирует HEIC в текст** для нелатинских скриптов? + +Да — Aspose OCR поддерживает арабский, китайский, кириллицу и многие другие языки. Просто включите соответствующий языковой флаг (например, `engine.getLanguage().setChineseSimplified(true);`). Не забудьте добавить нужные файлы шрифтов, если вы работаете на сервере без графического интерфейса. + +--- + +## Шаг 6 — Программно проверьте результат + +В производственном конвейере вам часто понадобится убедиться, что вывод OCR соответствует определённым порогам качества. Быстрый способ — вычислить коэффициент уверенности (доступен в более новых версиях) или просто проверить длину возвращённой строки. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Полный рабочий пример + +Ниже приведён полностью готовый к запуску Java‑класс, включающий все шаги выше. Вставьте его в файл с именем `HeifExample.java`, скорректируйте путь к вашему HEIC‑файлу и запустите `javac` + `java` как обычно. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Вы должны увидеть извлечённую строку, напечатанную в консоли, что подтверждает успешное **конвертирование HEIC в текст**. + +--- + +## Заключение + +Мы прошли всё, что нужно для **извлечения текста из HEIC** с помощью Aspose OCR в Java. От добавления библиотеки до обработки граничных случаев, руководство демонстрирует чистое, одношаговое решение, устраняющее необходимость в отдельной утилите конвертации. + +Теперь вы можете: + +- **Конвертировать HEIC в текст** «на лету» в веб‑службах, мобильных бек‑эндах или пакетных заданиях. +- Расширить поддержку других языков одной строкой конфигурации. +- Масштабировать процесс, переиспользуя один и тот же `OcrEngine` для множества файлов. + +Дальше вы можете исследовать **встраивание результата OCR в поисковый индекс** (например, Elasticsearch) или **добавление предобработки изображений** для повышения точности на низкоконтрастных HEIC‑фотографиях. Возможности безграничны — экспериментируйте, измеряйте и улучшайте. + +Есть вопросы или столкнулись с проблемным файлом HEIC? Оставьте комментарий ниже, и удачной разработки! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/spanish/java/advanced-ocr-techniques/_index.md b/ocr/spanish/java/advanced-ocr-techniques/_index.md index ad92a78f6..73a08a608 100644 --- a/ocr/spanish/java/advanced-ocr-techniques/_index.md +++ b/ocr/spanish/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,16 @@ Desbloquee el poder del reconocimiento de texto con Aspose.OCR para Java. Siga n Potencia tus aplicaciones Java con Aspose.OCR para un reconocimiento de texto preciso. Fácil integración, alta precisión. ### [Especificación de caracteres permitidos en Aspose.OCR](./specify-allowed-characters/) Desbloquee la extracción de texto de imágenes sin problemas con Aspose.OCR para Java. Siga nuestra guía paso a paso para una integración eficiente. +### [Cómo habilitar GPU para OCR en Java – Tutorial completo](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Aprenda a activar la aceleración GPU en Aspose.OCR para Java y mejore el rendimiento del reconocimiento de texto. +### [Crear pool de hilos fijos para OCR paralelo en Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Aprenda a crear un pool de hilos fijos y ejecutar OCR en paralelo, mejorando el rendimiento de sus aplicaciones Java. +### [Mejorar la precisión del OCR en Java – Guía completa de Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Aprenda técnicas avanzadas para aumentar la exactitud del OCR en Java con Aspose OCR y optimice la extracción de texto. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/spanish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/spanish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..a1306b025 --- /dev/null +++ b/ocr/spanish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Crea un pool de hilos fijo en Java para extraer texto de imágenes rápidamente. + Aprende cómo ejecutar OCR, convertir imágenes a texto y mejorar el rendimiento con + procesamiento OCR en paralelo. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: es +og_description: Crea un pool de hilos fijo en Java para extraer texto de imágenes + rápidamente. Aprende cómo ejecutar OCR, convertir imágenes a texto y mejorar el + rendimiento con procesamiento OCR paralelo. +og_title: Crear un pool de hilos fijo para OCR paralelo en Java +tags: +- Java +- OCR +- Multithreading +title: Crear un pool de hilos fijo para OCR paralelo en Java +url: /es/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear un Fixed Thread Pool para OCR Paralelo en Java + +¿Alguna vez necesitaste **crear un fixed thread pool** para acelerar trabajos de OCR, pero no sabías por dónde empezar? No estás solo. En muchos proyectos con gran cantidad de imágenes, el cuello de botella es la llamada de OCR de un solo hilo, y la solución es sorprendentemente simple: levantar un pool de hilos trabajadores y dejar que procesen los archivos en paralelo. + +En este tutorial aprenderás cómo **extraer texto de imágenes** usando Aspose OCR, cómo **ejecutar OCR** de manera eficiente y cómo **convertir imagen a texto** sin sobrecargar tu CPU. Al final tendrás un programa Java listo para ejecutar que demuestra **procesamiento de OCR en paralelo** con un conjunto de imágenes de ejemplo. + +## Lo que construirás + +Crearemos una pequeña aplicación de consola que: + +* Lee una lista de rutas de imágenes (PNG, JPG, TIFF, BMP). +* **Crea un fixed thread pool** dimensionado al número de núcleos de CPU. +* Despacha una tarea de OCR para cada imagen. +* Recoge el texto reconocido y lo imprime en la consola. +* Cierra el executor de forma limpia. + +Sin herramientas de compilación externas, sin frameworks elegantes—solo Java puro y la librería Aspose OCR. Si tienes Java 8+ y un IDE decente, estás listo. + +## Requisitos previos + +* **Java Development Kit (JDK) 8 o superior** – el código usa lambdas, por lo que versiones anteriores no compilarán. +* **Aspose OCR for Java** – descarga el JAR desde el sitio web de Aspose o inclúyelo mediante Maven (`com.aspose:aspose-ocr`). +* Una carpeta con algunas imágenes de prueba (el código apunta a `YOUR_DIRECTORY`). +* Familiaridad básica con la concurrencia en Java (explicaremos el resto). + +> *Consejo profesional:* Si usas Maven, agrega la dependencia a tu `pom.xml` y deja que el IDE gestione el classpath. + +--- + +## Paso 1: Añadir las importaciones necesarias + +Primero, trae las clases que necesitamos al alcance. No es solo código boilerplate; cada importación indica a la JVM dónde encontrar el motor OCR, las utilidades de manejo de imágenes y las herramientas de concurrencia que nos permiten **crear fixed thread pool**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – la API central de OCR. +* `java.util.*` – colecciones para almacenar rutas de imágenes y resultados. +* `java.util.concurrent.*` – el paquete de concurrencia que contiene `ExecutorService` y `Future`. + +--- + +## Paso 2: Definir las imágenes a procesar + +A continuación, listamos los archivos de los que queremos **extraer texto de imágenes**. Usar `Arrays.asList` mantiene el código conciso y nos permite cambiar a tu propio directorio sin tocar el resto de la lógica. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Siéntete libre de añadir más entradas; el thread pool escalará automáticamente según la cantidad de núcleos de CPU que tengas. + +--- + +## Paso 3: **Crear Fixed Thread Pool** acorde a los núcleos de CPU + +Este es el corazón del tutorial. Preguntamos al runtime cuántos núcleos están disponibles y pedimos a la fábrica `Executors` que nos devuelva un pool de exactamente ese tamaño. ¿Por qué fijo? Porque un número predecible de hilos evita la temida “explosión de hilos” que puede dejar sin recursos al sistema operativo. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` devuelve el recuento de núcleos lógicos (incluyendo hyper‑threads). +* `newFixedThreadPool(coreCount)` garantiza que nunca superemos la capacidad de la CPU, que es la forma más segura de **ejecutar OCR** en paralelo. + +--- + +## Paso 4: Enviar una tarea de OCR para cada imagen + +Ahora convertimos cada ruta de archivo en un `Callable` que **ejecuta OCR**, reconoce el texto y devuelve el resultado. Observa que instanciamos un `OcrEngine` nuevo dentro de la lambda—esto evita compartir estado del motor entre hilos, lo cual no es seguro. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Cada llamada a `submit` entrega la lambda al pool, que la programa en un hilo disponible. +* Los objetos `Future` nos permiten recuperar el texto reconocido más tarde, preservando el orden si lo necesitas. + +--- + +## Paso 5: Recuperar y mostrar el texto reconocido + +Una vez que todas las tareas están en cola, simplemente iteramos sobre la lista de `Future`, llamando a `get()` para bloquear hasta que cada trabajo de OCR finalice. Aquí es donde el paso **convertir imagen a texto** se vuelve visible: la llamada `engine.getText()` devuelve la cadena cruda. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Una salida típica en la consola se ve así: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Si un archivo falla (por ejemplo, está corrupto), verás una línea que comienza con `Failed:` seguida de la ruta—muy útil para depuración rápida. + +--- + +## Paso 6: Limpiar el Executor Service + +Nunca olvides cerrar el pool; de lo contrario la JVM puede quedarse viva pensando que aún hay trabajo pendiente. Un cierre elegante permite que cualquier tarea en ejecución termine antes de que el proceso finalice. + +```java +executor.shutdown(); +``` + +También puedes llamar a `awaitTermination` si necesitas imponer un tiempo límite, pero para la mayoría de utilidades de línea de comandos un simple `shutdown()` es suficiente. + +--- + +## Ejemplo completo y funcional + +A continuación tienes el programa completo, listo para ejecutar. Copia‑pega el código en un archivo llamado `ParallelOcrTutorial.java`, ajusta las rutas de las imágenes y compílalo/ejecútalo con `javac` + `java` como de costumbre. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Resultado esperado:** el contenido textual de cada imagen impreso en la consola, en el mismo orden que la lista `imagePaths`. Si alguna imagen no puede procesarse, verás un aviso de error en lugar de una línea en blanco. + +--- + +## Preguntas frecuentes y casos especiales + +### ¿Qué pasa si tengo más imágenes que hilos? + +El fixed thread pool encolará automáticamente las tareas excedentes. Tan pronto como un hilo termine su trabajo actual de OCR, tomará la siguiente. Este comportamiento de encolado es la esencia del **procesamiento de OCR en paralelo**—obtienes el máximo rendimiento sin saturar la CPU. + +### ¿Puedo cambiar el idioma? + +Claro. Reemplaza `engine.getLanguage().setEnglish(true);` por la bandera de idioma correspondiente, por ejemplo `setFrench(true)` o habilita varios idiomas llamando a varios setters antes de `recognize()`. + +### ¿Cómo manejo imágenes muy grandes? + +Los archivos grandes pueden consumir mucha memoria por hilo. Si notas `OutOfMemoryError`, considera reducir la escala de la imagen antes de pasarla al motor, o aumenta el tamaño del heap con `-Xmx`. Otra opción es usar un **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/spanish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/spanish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..2de03666b --- /dev/null +++ b/ocr/spanish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,220 @@ +--- +category: general +date: 2026-05-03 +description: cómo habilitar la GPU para OCR en Java rápidamente – aprende cómo extraer + texto de imágenes con Aspose OCR. Tutorial completo de OCR en Java incluido. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: es +og_description: Cómo habilitar la GPU para OCR en Java en minutos. Este tutorial te + muestra cómo extraer texto de imágenes usando un tutorial de OCR en Java con aceleración + GPU. +og_title: Cómo habilitar GPU para OCR en Java – Guía paso a paso +tags: +- Java +- OCR +- GPU +- Aspose +title: Cómo habilitar la GPU para OCR en Java – Tutorial completo +url: /es/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cómo habilitar la GPU para OCR en Java – Tutorial completo + +¿Alguna vez te has preguntado **how to enable gpu** cuando intentas extraer texto de una imagen? Si alguna vez necesitaste ejecutar OCR en un escaneo de alta resolución y sentiste que la CPU se detenía, no estás solo. En esta guía recorreremos un **java ocr tutorial** que no solo muestra cómo extraer texto sino que también demuestra la forma más rápida de **recognize text image java**‑style activando el soporte experimental de GPU. + +Comenzaremos importando la biblioteca Aspose OCR, luego habilitaremos la GPU, cargaremos una imagen de ejemplo y, finalmente, extraeremos la cadena reconocida del archivo. Al final tendrás un fragmento listo‑para‑ejecutar que puedes insertar en cualquier proyecto Maven, y comprenderás por qué la GPU es importante, cuándo podría no ayudar y cómo solucionar problemas comunes. No se requieren documentos externos—todo lo que necesitas está aquí. + +--- + +## Lo que necesitarás + +- **Java Development Kit (JDK) 8+** – el código se ejecuta en cualquier JDK moderno. +- **Maven** (o Gradle) para obtener la dependencia Aspose OCR. +- Una **máquina compatible con GPU** (una tarjeta NVIDIA con CUDA funciona mejor, pero la API de Aspose retrocederá de forma elegante). +- Una imagen de ejemplo, por ejemplo `sample-highres.png`, ubicada en una carpeta a la que puedas hacer referencia. +- Un toque de curiosidad sobre técnicas de **image to text conversion java**. + +Si te falta alguno de estos, descarga el JDK de Oracle o OpenJDK, instala Maven y asegúrate de que tu controlador gráfico esté actualizado. Eso es todo el trabajo de preparación; el resto es puro Java. + +## Paso 1: Añadir Aspose OCR a tu proyecto + +Primero lo primero, necesitamos el motor OCR en sí. Aspose proporciona un artefacto Maven limpio; simplemente inserta este fragmento en tu `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Si prefieres Gradle, el equivalente es: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Una vez que la dependencia se resuelva, tendrás acceso a `OcrEngine`, `ImageStream` y los ayudantes de idioma que hacen que el **java ocr tutorial** sea sencillo. + +## Paso 2: Cómo habilitar la GPU (Palabra clave principal en acción) + +Ahora llegamos al corazón del asunto: **how to enable gpu** para el motor OCR. La API de Aspose expone una única bandera booleana—`setUseGpu(true)`. Es experimental, pero en una tarjeta gráfica decente verás que el tiempo de reconocimiento disminuye drásticamente, especialmente para imágenes grandes y de alta resolución. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Consejo profesional:** Si tu entorno no tiene una GPU compatible, la bandera será ignorada silenciosamente y el motor volverá al modo CPU. No habrá fallos, solo un rendimiento más lento. + +## Paso 3: Cargar la imagen que deseas procesar + +El motor OCR trabaja con un `ImageStream`. Apúntalo al archivo que deseas convertir de imagen a texto plano. Aquí tienes una forma compacta de hacerlo: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Asegúrate de que la ruta sea absoluta o relativa al directorio de trabajo de tu proyecto. Si el archivo no se encuentra, obtendrás un `IOException`—lo capturaremos más adelante. + +## Paso 4: Elegir el idioma (Opcional pero recomendado) + +Aspose OCR puede manejar muchos alfabetos, pero debes indicarle cuál esperas. Para inglés, es una sola línea: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Si necesitas francés o chino, simplemente cambia la bandera (`setFrench(true)`, `setChineseSimplified(true)`, etc.). Esta pequeña pista a menudo mejora la precisión porque el motor puede eliminar candidatos de caracteres improbables. + +## Paso 5: Reconocer texto imagen Java – Ejecutar el motor + +Ahora llega el momento de la verdad: estilo **recognize text image java**. Llamamos a `recognize()` y, si devuelve `true`, extraemos la cadena resultante con `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +La salida será el texto bruto extraído de `sample-highres.png`. Para un documento limpio, quizás quieras post‑procesar la cadena (eliminar espacios, reemplazar saltos de línea, etc.). Aquí tienes un ejemplo rápido: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +## Paso 6: Ejemplo completo funcional (listo para copiar‑pegar) + +A continuación tienes el **java ocr tutorial** completo que puedes compilar y ejecutar directamente. Incluye manejo de errores e imprime la salida esperada. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Salida esperada (ejemplo):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Si la imagen contiene varias líneas, aparecerán separadas por caracteres de salto de línea (`\n`). El motor preserva el diseño original lo mejor posible. + +## Paso 7: Casos límite, consejos y preguntas frecuentes + +### ¿Qué pasa si no se detecta la GPU? + +Aspose desactiva silenciosamente el soporte GPU cuando no encuentra un dispositivo compatible. Puedes verificar el modo comprobando la bandera después de la inicialización: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Si imprime `false`, verifica nuevamente la versión de tu controlador y que el runtime `CUDA` esté en el `PATH`. + +### ¿Ayuda la GPU con imágenes pequeñas? + +No siempre. La sobrecarga de transferir un bitmap pequeño a la GPU puede superar la ganancia de velocidad. Para imágenes menores de 500 KB, podrías ver una ligera desaceleración. En esos casos, simplemente establece `setUseGpu(false)`. + +### ¿Cómo manejar documentos multilingües? + +Puedes habilitar varios idiomas simultáneamente: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +El motor intentará coincidir caracteres de cualquiera de los conjuntos, lo cual es útil para PDFs bilingües. + +### ¿Puedo procesar PDFs directamente? + +Aspose OCR funciona con flujos de imagen, por lo que primero deberás rasterizar cada página del PDF (p. ej., con Aspose PDF o PDFBox) y luego pasar el `BufferedImage` resultante a `setImage`. + +## Resumen visual + +![cómo habilitar la GPU para el motor OCR en Java](/images/gpu-ocr.png "Diagrama que muestra la canalización OCR acelerada por GPU") + +*El diagrama ilustra el flujo desde la carga de la imagen → OCR con GPU habilitada → extracción de texto.* + +## Conclusión + +Hemos cubierto **how to enable gpu** para un flujo de trabajo OCR en Java, recorrido un **java ocr tutorial** completo y demostrado **image to text conversion java** en un ejemplo práctico listo para copiar‑pegar. Al alternar una sola bandera, puedes ahorrar segundos—o incluso minutos—en el tiempo de procesamiento de escaneos grandes, haciendo que tus aplicaciones se sientan más ágiles y receptivas. + +¿Qué sigue? Intenta procesar un lote de imágenes en un bucle, experimenta con diferentes idiomas, o combina esto con Apache Tika para indexar el texto extraído automáticamente. El cielo es el límite cuando emparejas OCR acelerado por GPU con otras bibliotecas Java. + +¿Tienes preguntas sobre **how to extract text** de imágenes difíciles, o quieres saber más sobre trucos de **recognize text image java**? Deja un comentario abajo, ¡y feliz codificación! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/spanish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/spanish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..ba30fb0e9 --- /dev/null +++ b/ocr/spanish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-05-03 +description: Mejora la precisión del OCR rápidamente usando Aspose OCR Java. Aprende + cómo cargar una imagen para OCR, habilitar idiomas y aplicar una corrección ortográfica + agresiva en unos pocos pasos. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: es +og_description: Mejora la precisión del OCR al instante con Aspose OCR Java. Esta + guía muestra cómo cargar una imagen para OCR, habilitar idiomas y usar corrección + ortográfica agresiva. +og_title: Mejora la precisión del OCR en Java – Tutorial paso a paso de Aspose OCR +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Mejora la precisión del OCR en Java – Guía completa de Aspose OCR +url: /es/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Mejorar la precisión OCR en Java – Guía completa de Aspose OCR + +¿Alguna vez te has preguntado por qué los resultados de tu OCR parecen la escritura de un niño pequeño? Si estás luchando con letras ausentes, palabras incorrectas o simplemente con garabatos, no estás solo. **Improve OCR accuracy** es lo primero que la mayoría de los desarrolladores busca cuando la extracción de texto no es fiable. + +En este tutorial recorreremos una solución práctica que no solo **load image for OCR** sino que también aprovecha el motor de corrección ortográfica incorporado de Aspose para mejorar la calidad. Al final tendrás un programa Java listo para ejecutar que reconoce texto en inglés + francés con corrección agresiva—sin necesidad de diccionarios externos. + +## Lo que aprenderás + +- Cómo **load image for OCR** usando `ImageStream` de Aspose. +- Por qué habilitar los idiomas correctos es importante para la precisión. +- El impacto de la corrección ortográfica agresiva en documentos multilingües. +- Un ejemplo de código completo y ejecutable que puedes insertar en cualquier proyecto Maven/Gradle. +- Consejos, trampas y ideas para los siguientes pasos al escalar este enfoque. + +> **Prerequisites** – Java 8 o más reciente, un JAR reciente de Aspose.OCR para Java (v23.12 o posterior), y un archivo de imagen (`multilingual.png`) que contiene texto en inglés y francés. Eso es todo—sin modelos o API adicionales. + +--- + +## Mejorar la precisión OCR: Configurar el motor OCR de Aspose + +El corazón de cualquier canal de OCR es la configuración del motor. Al indicarle a Aspose exactamente lo que esperas, le das una oportunidad real de hacerlo bien. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Why this matters:** +- **Engine instance** – `OcrEngine` contiene todas las configuraciones; crear una nueva evita la contaminación de estado de ejecuciones anteriores. +- **Image loading** – Usar `ImageStream.fromFile` es la forma más directa de **load image for OCR**. Soporta PNG, JPEG, BMP y TIFF de forma nativa. +- **Language flags** – Activar inglés + francés indica al reconocedor que use los conjuntos de caracteres y modelos de idioma apropiados, lo que por sí solo puede aumentar la precisión en un 10‑15 %. +- **Aggressive spell correction** – Configurar `SpellCorrectionLevel.AGGRESSIVE` impulsa al diccionario interno a reescribir palabras dudosas, una palanca clave cuando necesitas **improve OCR accuracy** en escaneos ruidosos. + +--- + +## Cargar imagen para OCR – Configurando el archivo fuente + +Antes de que el motor pueda hacer algo, necesita un mapa de bits. Si le proporcionas un flujo corrupto o una ruta incorrecta, obtendrás una excepción más rápido de lo que puedes decir “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** Si estás procesando imágenes subidas por usuarios, envuelve la lógica de carga en un bloque try‑catch y valida primero el tamaño/formato del archivo. Esto evita que el motor se bloquee con PDFs masivos o formatos no compatibles. + +--- + +## Habilitar varios idiomas para un mejor reconocimiento + +La mayoría de las bibliotecas OCR por defecto solo admiten inglés. Cuando tu documento mezcla idiomas, verás un aumento en los caracteres mal reconocidos. Aspose lo hace sencillo para alternar idiomas adicionales. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Why enable more than one language?** +- **Character set expansion** – El francés incluye letras acentuadas como “é” y “ç”. Sin la bandera francesa, esas se convierten en “e” o “c”, lo que luego confunde al corrector ortográfico. +- **Contextual hints** – El motor OCR usa modelos de idioma para predecir los límites de palabras; un modelo bilingüe reduce divisiones falsas. + +--- + +## Aplicar corrección ortográfica agresiva + +La corrección ortográfica no es solo un “nice‑to‑have”; es un cambio de juego cuando necesitas **improve OCR accuracy** en escaneos de baja calidad. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Niveles de un vistazo + +| Nivel | Comportamiento | +|------------|---------------------------------------------------| +| **NONE** | Sin corrección – solo salida cruda del motor. | +| **LIGHT** | Corrige errores tipográficos evidentes, bajo riesgo de sobre‑corrección. | +| **AGGRESSIVE** | Realiza búsquedas en el diccionario de forma agresiva; ideal para imágenes ruidosas. | + +**Caution:** El modo agresivo puede reescribir nombres propios legítimos (p.ej., “McDonald” → “Mcdonald”). Si tu dominio contiene muchos nombres, considera un filtro de post‑procesamiento. + +--- + +## Ejecutar reconocimiento y verificar la salida + +Ahora que todo está configurado, es hora de dejar que Aspose haga el trabajo pesado. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Salida esperada (ejemplo) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Si ves garabatos en su lugar, verifica: + +1. La calidad de la imagen (imágenes borrosas o de baja dpi afectan la precisión). +2. Banderas de idioma – la falta de francés eliminará los acentos. +3. Nivel de corrección ortográfica – prueba `LIGHT` si notas sobre‑corrección. + +--- + +## Ejemplo completo funcional (Todos los pasos en un solo archivo) + +A continuación está el programa completo que puedes compilar y ejecutar directamente. Guárdalo como `SpellCorrectionTutorial.java`, ajusta la ruta de la imagen y ejecútalo con `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Compilar y ejecutar: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Deberías ver el texto multilingüe corregido impreso en la consola. + +--- + +## Errores comunes y cómo evitarlos + +| Síntoma | Causa probable | Solución | +|---------|----------------|----------| +| **Blank output** | Ruta de imagen incorrecta o archivo ilegible | Verifica la ruta de `ImageStream.fromFile`; agrega una comprobación de existencia del archivo. | +| **Missing accents** | Idioma francés no habilitado | Llama a `ocrEngine.getLanguage().setFrench(true)`. | +| **Garbage characters** | Imagen de baja resolución (< 150 dpi) | Aumenta la escala o vuelve a escanear a mayor DPI; considera preprocesamiento con bibliotecas de mejora de imagen. | +| **Over‑corrected names** | Corrección ortográfica agresiva en nombres propios | Post‑procesa con una lista blanca de nombres conocidos o cambia al nivel `LIGHT`. | + +--- + +## Próximos pasos: Escalar tu canal OCR + +- **Batch processing:** Recorrer un directorio de imágenes, reutilizar una única instancia de `OcrEngine` para mejorar el rendimiento. +- **PDF extraction:** Usar Aspose.PDF para convertir cada página a una imagen, y luego pasarla al motor OCR. +- **Custom dictionaries:** Si tu dominio usa terminología especializada (médica, legal), suministra una lista de palabras personalizada a `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Parallelism:** `ForkJoinPool` de Java puede ejecutar múltiples tareas OCR concurrentemente, pero vigila el uso de memoria porque cada motor mantiene buffers de imagen. + +--- + +![Improve OCR accuracy example](/images/ocr-example.png){alt="Captura de pantalla que muestra texto multilingüe corregido"} + +--- + +## Conclusión + +We’ve just **improved OCR + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/spanish/java/ocr-operations/_index.md b/ocr/spanish/java/ocr-operations/_index.md index 89cdfd8fa..78e37ee2d 100644 --- a/ocr/spanish/java/ocr-operations/_index.md +++ b/ocr/spanish/java/ocr-operations/_index.md @@ -82,6 +82,10 @@ Desbloquea el poder del OCR en Java con Aspose.OCR. Reconoce texto en documentos Desbloquea un poderoso reconocimiento de texto en Java con Aspose.OCR. Reconoce texto en imágenes TIFF sin esfuerzo. Descárgalo ahora para una experiencia OCR fluida. ### [Reconocer texto en imagen con Aspose OCR – Tutorial completo de OCR en Java](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Desbloquea la extracción completa de texto de imágenes usando Aspose OCR en Java. Sigue este tutorial paso a paso. +### [Ejemplo de Aspose OCR Java: Extraer texto de una región](./aspose-ocr-java-example-extract-text-from-a-region/) +Ejemplo práctico para extraer texto de una zona específica de una imagen usando Aspose OCR en Java. +### [Extraer texto de HEIC – Guía completa de Java](./extract-text-from-heic-complete-java-guide/) +Desbloquea la extracción completa de texto de archivos HEIC usando Aspose.OCR en Java. ## Preguntas frecuentes diff --git a/ocr/spanish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/spanish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..8df87a9da --- /dev/null +++ b/ocr/spanish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: El ejemplo de Aspose OCR Java muestra cómo cargar una imagen para OCR + y extraer texto de una región en solo unas pocas líneas de código. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: es +og_description: Ejemplo de Aspose OCR Java que muestra cómo cargar una imagen para + OCR y extraer texto de una región específica, ideal para el procesamiento de facturas. +og_title: Ejemplo de OCR en Java de Aspose – Extracción de texto por región +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Ejemplo de Aspose OCR en Java: Extraer texto de una región' +url: /es/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ejemplo de Aspose OCR Java: Extraer texto de una región + +¿Busca un **ejemplo de Aspose OCR Java** que le permita extraer solo la parte que necesita de una imagen? En esta guía recorreremos **cargar una imagen para OCR** y **extraer texto de una región**, perfecto para números de factura, campos de formularios o cualquier dato oculto dentro de una imagen más grande. + +Quizá se pregunte por qué molestarse en restringir el OCR a un rectángulo en lugar de escanear toda la página. La respuesta corta: velocidad y precisión. Cuando el motor solo analiza una porción definida, omite el ruido irrelevante, se ejecuta más rápido y a menudo produce resultados más limpios. Al final de este tutorial tendrá un programa Java autónomo que hace exactamente eso, además de varios consejos para evitar los errores comunes que tropiezan a los principiantes. + +## Lo que necesitará + +- **Java Development Kit (JDK) 11** o una versión más reciente instalada. +- Biblioteca **Aspose.OCR for Java** (puede obtener el último JAR del repositorio Maven Central o del portal de descargas de Aspose). +- Un archivo de imagen que contenga el texto que desea leer – para nuestra demostración usaremos `invoice.png`, que contiene un número de factura cerca de la esquina superior derecha. +- Un IDE favorito o un editor de texto simple más una terminal; cualquier herramienta de compilación (Maven, Gradle o simplemente `javac`) servirá. + +Eso es todo. Sin motores OCR adicionales, sin binarios nativos, solo Java puro y Aspose. + +![Aspose OCR Java example screenshot](/images/aspose-ocr-java-example.png "Aspose OCR Java example showing region extraction") + +## Ejemplo de Aspose OCR Java – Inicializar el motor OCR + +Lo primero que necesita cualquier flujo de trabajo OCR es una instancia del motor. Aspose incluye una clase ligera `OcrEngine` que maneja todo, desde la carga de la imagen hasta la selección de idioma. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Por qué es importante:** Crear el motor al inicio le brinda un objeto limpio para configurar. Puede reutilizar el mismo `OcrEngine` para varias imágenes si está procesando un lote, lo que ahorra memoria y tiempo de inicialización. + +## Cargar imagen para OCR + +A continuación indicamos al motor qué imagen escanear. Aspose proporciona el asistente `ImageStream.fromFile`, que abstrae el código boilerplate de bajo nivel `FileInputStream`. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Consejo:** Reemplace `YOUR_DIRECTORY` con una ruta absoluta o relativa que apunte a donde guardó `invoice.png`. Si el archivo no se encuentra, Aspose lanza una `IOException`, por lo que podría envolver esto en un bloque try‑catch para código de producción. + +## Definir y extraer texto de una región + +Ahora llega la estrella del espectáculo: el rectángulo que indica al motor dónde buscar. El constructor `java.awt.Rectangle` recibe `(x, y, width, height)` – todos medidos en píxeles. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Cómo funciona:** Al llamar a `setRegion`, limita el escaneo OCR a una franja de 300 píxeles de ancho que comienza a 120 píxeles del borde izquierdo y 250 píxeles desde la parte superior. Ajuste estos números para que coincidan con su propio diseño; una forma rápida de encontrarlos es abrir la imagen en cualquier editor gráfico que muestre coordenadas de píxeles. + +## Habilitar idioma y ejecutar reconocimiento + +Aspose OCR admite docenas de idiomas, pero para un número de factura solo necesitamos inglés. Habilitar el idioma correcto reduce drásticamente los falsos positivos. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**¿Por qué habilitar solo inglés?** El motor OCR intentará coincidir caracteres de todos los conjuntos de idiomas habilitados, lo que puede confundirlo cuando el texto es simplemente alfanumérico. Limitar el alcance del idioma mejora tanto la velocidad como la precisión. + +### Salida esperada + +Cuando todo esté alineado, verá algo como: + +``` +Extracted region text: INV-12345 +``` + +Si el rectángulo está desviado unos pocos píxeles, la salida puede estar distorsionada o vacía. Esa es una verificación rápida: ejecute el programa, mire la consola y verifique que el texto coincida con lo que ve en la imagen. + +## Ejecutar el código y verificar la salida + +Suponiendo que use Maven, agregue la dependencia de Aspose OCR a su `pom.xml`: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Compilar y ejecutar: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +O, si prefiere usar `javac` simple: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Debería ver la línea **Extracted region text** impresa en la consola. Si obtiene “OCR recognition failed”, verifique nuevamente la ruta del archivo y asegúrese de que la región realmente contenga caracteres legibles. + +## Casos límite y variaciones comunes + +| Situation | What to Change | +|-----------|----------------| +| **Múltiples idiomas** (p.ej., English + Spanish) | Call `ocrEngine.getLanguage().setSpanish(true);` junto con English. | +| **Región fuera de los límites de la imagen** | Aspose recortará silenciosamente el rectángulo, pero perderá datos. Use `ImageInfo` (`ocrEngine.getImage().getWidth()`) para verificar las dimensiones antes de establecer la región. | +| **Facturas dinámicas** (diferentes diseños) | Considere ejecutar un pre‑escaneo ligero en toda la imagen para localizar palabras clave como “Invoice #” y luego calcular el rectángulo programáticamente. | +| **Imágenes con mayor DPI** | Aumente `ocrEngine.getImage().setResolution(300);` para obtener mayor precisión en documentos escaneados. | +| **Ajuste de rendimiento** | Desactive los idiomas innecesarios, mantenga la región lo más pequeña posible y reutilice una única instancia de `OcrEngine` en muchos archivos. | + +## Consejos profesionales desde la práctica + +- **Consejo pro:** Si solo necesita dígitos (común para números de factura), habilite el modo numérico con `ocrEngine.getLanguage().setDigits(true);`. Esto elimina el ruido alfabético. +- **Cuidado con:** PNGs transparentes. Aspose a veces interpreta mal el canal alfa; convertir la imagen a un JPEG con fondo sólido primero puede resolver salidas en blanco extrañas. +- **Recuerde:** El rectángulo usa el sistema de coordenadas nativo de la imagen, no cualquier escala de UI que pueda ver en pantalla. Siempre pruebe con el archivo exacto que procesará en producción. + +## ¿Qué sigue? + +Ahora que tiene un sólido **ejemplo de Aspose OCR Java** para extracción basada en regiones, puede ampliarlo en varias direcciones útiles: + +- **Procesamiento por lotes:** Recorrer una carpeta de facturas, reutilizando el mismo `OcrEngine` para mejorar el rendimiento. +- **Validación de datos:** Pasar el texto extraído a través de una expresión regular como `INV-\\d{5}` para asegurarse de haber capturado un número de factura válido. +- **Integración con PDF:** Use Aspose.PDF para superponer el texto extraído sobre el documento original para auditorías. +- **Despliegue en la nube:** Envuelva el código en un servicio REST ligero (Spring Boot) para que otros sistemas lo llamen bajo demanda. + +Cada uno de estos pasos involucra naturalmente los mismos conceptos básicos—**cargar imagen para OCR**, **extraer texto de una región**, y manejar los resultados—por lo que encontrará la transición sin problemas. + +--- + +*¡Feliz codificación! Si encuentra algún problema, deje un comentario abajo o consulte los foros de Aspose donde la comunidad comparte ajustes del mundo real para diseños complicados.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/spanish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/spanish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..0be0776c0 --- /dev/null +++ b/ocr/spanish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Extraiga texto de imágenes HEIC usando Aspose OCR en Java. Aprenda a + convertir HEIC a texto rápidamente con un ejemplo paso a paso. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: es +og_description: Extrae texto de imágenes HEIC con Aspose OCR en Java. Esta guía te + muestra cómo convertir HEIC a texto en minutos. +og_title: Extraer texto de HEIC – Tutorial de OCR en Java +tags: +- OCR +- Java +- Aspose +title: Extraer texto de HEIC – Guía completa de Java +url: /es/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extraer texto de HEIC – Guía completa de Java + +¿Alguna vez te has preguntado cómo **extraer texto de archivos HEIC** sin convertirlos primero a JPEG o PNG? No estás solo. Muchos desarrolladores se topan con un obstáculo cuando una aplicación móvil les entrega una foto `.heic` y necesitan el texto incrustado para indexación o análisis. ¿La buena noticia? Con Aspose OCR para Java puedes **extraer texto de HEIC** directamente—sin paso de conversión adicional. + +En este tutorial también te mostraremos cómo **convertir HEIC a texto** en una única y limpia canalización, para que puedas insertar el código en cualquier proyecto Java y comenzar a obtener cadenas de esas imágenes de alta eficiencia hoy mismo. + +![extract text from heic example](https://example.com/placeholder.png "extract text from heic example") + +## Lo que aprenderás + +- Cómo configurar Aspose OCR en un proyecto Maven/Gradle. +- El código Java exacto necesario para **extraer texto de HEIC**. +- Por qué este enfoque es más rápido y menos propenso a errores que un flujo de trabajo de `convertir‑luego‑OCR` en dos pasos. +- Trampas comunes (p. ej., paquetes de idioma faltantes) y cómo evitarlas. +- Consejos para escalar la solución en un escenario de procesamiento por lotes. + +Al final de la guía podrás **convertir HEIC a texto** con solo unas pocas líneas de código, y comprenderás el “por qué” detrás de cada paso. + +--- + +## Requisitos previos + +Antes de sumergirnos, asegúrate de contar con: + +1. **Java 8 o superior** – Aspose OCR funciona en cualquier JDK moderno. +2. **Maven o Gradle** – para obtener la biblioteca Aspose OCR automáticamente. +3. Una **imagen HEIC** que quieras probar (renómbrala a `sample.heic` y colócala en una ubicación accesible). +4. Opcional pero útil: un IDE como IntelliJ IDEA o VS Code. + +No se requieren otras herramientas externas; la biblioteca maneja el formato HEIC de forma nativa. + +--- + +## Paso 1 – Añadir Aspose OCR a tu proyecto + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Consejo profesional:** Mantén el número de versión sincronizado con los lanzamientos oficiales de Aspose; las versiones más recientes añaden soporte para variantes adicionales de HEIC y mejoran la precisión del idioma. + +--- + +## Paso 2 – Inicializar el motor OCR para **extraer texto de HEIC** + +Crear una instancia de `OcrEngine` es el primer paso concreto para extraer texto de HEIC. El motor abstrae todo el decodificado de bajo nivel, por lo que no tienes que preocuparte por el formato contenedor HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Por qué es importante:** +HEIC es un formato de imagen moderno basado en el contenedor HEIF. Las bibliotecas OCR tradicionales esperan JPEG/PNG, obligándote a ejecutar un paso de conversión separado que puede degradar la calidad. El soporte nativo de Aspose OCR te permite **extraer texto de HEIC** de una sola vez, preservando los datos de píxeles originales y ahorrando ciclos de CPU. + +--- + +## Paso 3 – Habilitar el/los idioma(s) deseado(s) + +Por defecto el motor busca solo inglés. Si necesitas **convertir HEIC a texto** en otro idioma, simplemente activa la bandera correspondiente. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **¿Por qué habilitar los idiomas explícitamente?** +> Los paquetes de idioma se cargan bajo demanda. Habilitar solo lo que necesitas reduce el consumo de memoria y acelera el reconocimiento. + +--- + +## Paso 4 – Ejecutar el proceso de reconocimiento + +Ahora le pedimos al motor que lea la imagen y produzca una cadena. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Salida esperada** (suponiendo que la imagen contiene la frase “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Si la imagen está en blanco o el texto es ilegible, el motor devuelve `false`, y verás el mensaje de respaldo. + +--- + +## Paso 5 – Manejo de casos límite y preguntas frecuentes + +### ¿Qué pasa si el archivo HEIC está corrupto? + +Aspose OCR lanza una `IOException` cuando no puede decodificar el contenedor. Envuelve la llamada en un bloque `try‑catch` y registra el error para inspección posterior. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### ¿Puedo procesar varios archivos HEIC en lote? + +Absolutamente. Simplemente recorre un directorio y reutiliza la misma instancia de `OcrEngine` para evitar la sobrecarga de inicializaciones repetidas. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### ¿Esto también **convierte HEIC a texto** para scripts no latinos? + +Sí—Aspose OCR soporta árabe, chino, cirílico y muchos más idiomas. Solo habilita la bandera de idioma correspondiente (p. ej., `engine.getLanguage().setChineseSimplified(true);`). Recuerda añadir los archivos de fuentes adecuados si ejecutas en un servidor sin interfaz gráfica. + +--- + +## Paso 6 – Verificar el resultado programáticamente + +En una canalización de producción a menudo necesitarás afirmar que la salida OCR cumple ciertos umbrales de calidad. Una forma rápida es calcular una puntuación de confianza (disponible en versiones más recientes) o simplemente comprobar la longitud de la cadena devuelta. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Ejemplo completo funcional + +A continuación tienes la clase Java completa, lista para ejecutar, que incorpora todos los pasos anteriores. Pégala en un archivo llamado `HeifExample.java`, ajusta la ruta a tu archivo HEIC y ejecuta `javac` + `java` como de costumbre. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Ejecutarlo: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Deberías ver la cadena extraída impresa en la consola, confirmando que has **convertido HEIC a texto** con éxito. + +--- + +## Conclusión + +Hemos recorrido todo lo necesario para **extraer texto de HEIC** usando Aspose OCR en Java. Desde añadir la biblioteca hasta manejar casos límite, la guía muestra una solución limpia de un solo paso que elimina la necesidad de una utilidad de conversión separada. + +Ahora puedes: + +- **Convertir HEIC a texto** al vuelo en servicios web, back‑ends móviles o trabajos por lotes. +- Extender el soporte a otros idiomas con una sola línea de configuración. +- Escalar el proceso reutilizando el mismo `OcrEngine` para muchos archivos. + +A continuación, podrías explorar **incorporar el resultado OCR en un índice buscable** (p. ej., Elasticsearch) o **añadir pre‑procesamiento de imagen** para mejorar la precisión en fotos HEIC de bajo contraste. El cielo es el límite—experimenta, mide e itera. + +¿Tienes preguntas o te encuentras con un archivo HEIC complicado? Deja un comentario abajo, ¡y feliz codificación! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/swedish/java/advanced-ocr-techniques/_index.md b/ocr/swedish/java/advanced-ocr-techniques/_index.md index fcf82f5fd..98a9e9852 100644 --- a/ocr/swedish/java/advanced-ocr-techniques/_index.md +++ b/ocr/swedish/java/advanced-ocr-techniques/_index.md @@ -45,25 +45,19 @@ Styr dina Java-applikationer med Aspose.OCR för exakt textigenkänning. Denna h Extrahera text från bilder utan ansträngning genom att ange tillåtna tecken med Aspose.OCR för Java. Följ vår steg-för-steg-guide för effektiv integration, vilket säkerställer en sömlös textigenkänningsupplevelse. Förbättra dina Java-applikationer med Aspose.OCR-funktioner. -## Slutsats - -Med Aspose.OCR för Java har det aldrig varit enklare att behärska avancerade OCR-tekniker. Dyk in i dessa handledningar och lås upp den fulla potentialen för textigenkänning i dina Java-projekt. Höj dina applikationer med sömlös integration, hög noggrannhet och mångsidiga textextraheringsmöjligheter. Ladda ner nu och ta det första steget mot OCR-excellens med Aspose.OCR för Java! -## Handledningar för avancerade OCR-tekniker -### [Utför OCR på BufferedImage i Aspose.OCR för Java](./perform-ocr-buffered-image/) -Utför OCR på BufferedImage utan ansträngning med Aspose.OCR för Java. Extrahera text från bilder sömlöst. Ladda ner nu för en mångsidig textigenkänningsupplevelse. -### [Utför OCR på bild från URL i Aspose.OCR för Java](./perform-ocr-image-from-url/) -Lås upp sömlös bildtextextraktion i Java med Aspose.OCR. OCR med hög noggrannhet med enkel integration. -### [Utför OCR på specifik sida i Aspose.OCR](./perform-ocr-on-page/) -Lås upp kraften i Aspose.OCR för Java med vår steg-för-steg-guide om hur du utför OCR på specifika sidor. Extrahera text utan ansträngning från bilder och förbättra dina Java-projekt. -### [Förbereda rektanglar för OCR i Aspose.OCR](./prepare-rectangles-for-ocr/) -Lås upp kraften i textigenkänning med Aspose.OCR för Java. Följ vår steg-för-steg-guide för sömlös integration. Förbättra dina Java-applikationer med effektiva OCR-funktioner. -### [Identifiera linjer i Aspose.OCR för Java](./recognize-lines/) -Styr dina Java-applikationer med Aspose.OCR för exakt textigenkänning. Enkel integration, hög noggrannhet. -### [Ange tillåtna tecken i Aspose.OCR](./specify-allowed-characters/) -Lås upp textextraktion från bilder sömlöst med Aspose.OCR för Java. Följ vår steg-för-steg-guide för effektiv integration. +## [Förbättra OCR‑noggrannheten i Java – Komplett Aspose OCR‑guide](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) + +Lär dig avancerade tekniker för att öka OCR‑noggrannheten i Java med Aspose OCR i vår kompletta guide. + +## [Skapa fast trådpool för parallell OCR i Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Skapa en fast trådpool för att köra OCR parallellt i Java med Aspose.OCR, förbättra prestanda och hastighet. + +## [Hur du aktiverar GPU för Java OCR – Komplett handledning](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Lär dig hur du aktiverar GPU-acceleration för OCR i Java med Aspose.OCR för förbättrad prestanda och snabbare textigenkänning. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/swedish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/swedish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..bcb667e34 --- /dev/null +++ b/ocr/swedish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Skapa en fast trådpott i Java för att snabbt extrahera text från bilder. + Lär dig hur du kör OCR, konverterar bilder till text och förbättrar prestandan med + parallell OCR‑behandling. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: sv +og_description: Skapa en fast trådpott i Java för att snabbt extrahera text från bilder. + Lär dig hur du kör OCR, konverterar bild till text och ökar prestanda med parallell + OCR‑behandling. +og_title: Skapa fast trådpool för parallell OCR i Java +tags: +- Java +- OCR +- Multithreading +title: Skapa en fast trådpool för parallell OCR i Java +url: /sv/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa Fixed Thread Pool för parallell OCR i Java + +Har du någonsin behövt **create fixed thread pool** för att snabba upp OCR‑jobb, men var osäker på var du skulle börja? Du är inte ensam. I många bildtunga projekt är flaskhalsen det enkeltrådade OCR‑anropet, och lösningen är förvånansvärt enkel: starta en pool av arbetstrådar och låt dem bearbeta filerna parallellt. + +I den här handledningen kommer du att lära dig hur du **extract text from images** med Aspose OCR, hur du **run OCR** effektivt, och hur du **convert image to text** utan att överbelasta din CPU. I slutet har du ett färdigt Java‑program som demonstrerar **parallel OCR processing** på ett fåtal exempelbilder. + +## Vad du kommer att bygga + +Vi sätter ihop en liten konsolapp som: + +* Läser en lista med bildvägar (PNG, JPG, TIFF, BMP). +* **Creates a fixed thread pool** storlek anpassad till antalet CPU‑kärnor. +* Skickar en OCR‑uppgift för varje bild. +* Samlar in den igenkända texten och skriver ut den i konsolen. +* Stänger av exekutorn på ett rent sätt. + +Inga externa byggverktyg, inga avancerade ramverk—bara ren Java och Aspose OCR‑biblioteket. Om du har Java 8+ och en bra IDE, är du redo. + +## Förutsättningar + +* **Java Development Kit (JDK) 8 or newer** – koden använder lambdas, så äldre versioner kompilerar inte. +* **Aspose OCR for Java** – ladda ner JAR‑filen från Aspose‑webbplatsen eller hämta den via Maven (`com.aspose:aspose-ocr`). +* En mapp med några testbilder (koden pekar på `YOUR_DIRECTORY`). +* Grundläggande kunskap om Java‑konkurrens (vi förklarar resten). + +> *Pro tip:* Om du använder Maven, lägg till beroendet i din `pom.xml` och låt IDE:n hantera classpath. + +--- + +## Steg 1: Lägg till de nödvändiga importerna + +Först, importera de klasser vi behöver. Detta är inte bara boilerplate; varje import talar om för JVM var OCR‑motorn, bildhanteringsverktygen och konkurrensverktygen som låter oss **create fixed thread pool**‑instanser finns. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – kärn‑OCR‑API:n. +* `java.util.*` – samlingar för att lagra bildvägar och resultat. +* `java.util.concurrent.*` – konkurrenspaketet som innehåller `ExecutorService` och `Future`. + +--- + +## Steg 2: Definiera bilderna som ska bearbetas + +Nästa steg, vi listar filerna vi vill **extract text from images**. Att använda `Arrays.asList` håller koden kortfattad och låter oss byta ut din egen katalog utan att röra resten av logiken. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Känn dig fri att lägga till fler poster; trådpottens storlek skalas automatiskt baserat på antalet CPU‑kärnor du har. + +--- + +## Steg 3: **Create Fixed Thread Pool** som matchar CPU‑kärnorna + +Här är kärnan i handledningen. Vi frågar runtime hur många kärnor som är tillgängliga och ber `Executors`‑fabriken att ge oss en pool med exakt den storleken. Varför fast? För att ett förutsägbart antal trådar förhindrar den fruktade “thread explosion” som kan svälta OS‑resurserna. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` returnerar det logiska antalet kärnor (inklusive hyper‑threads). +* `newFixedThreadPool(coreCount)` garanterar att vi aldrig överskrider CPU‑kapaciteten, vilket är det säkraste sättet att **run OCR** parallellt. + +--- + +## Steg 4: Skicka en OCR‑uppgift för varje bild + +Nu omvandlar vi varje filsökväg till ett callable som **runs OCR**, känner igen texten och returnerar resultatet. Observera att vi skapar en ny `OcrEngine` inuti lambda‑uttrycket—detta undviker trådsäker delning av motor‑tillstånd. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Varje `submit`‑anrop överlämnar lambda‑uttrycket till poolen, som schemalägger det på en ledig tråd. +* `Future`‑objekten låter oss hämta den igenkända texten senare, och bevarar ordningen om du behöver den. + +--- + +## Steg 5: Hämta och visa den igenkända texten + +När alla uppgifter är köade itererar vi helt enkelt över `Future`‑listan, anropar `get()` för att blockera tills varje OCR‑jobb är klart. Här blir steget **convert image to text** synligt för dig: anropet `engine.getText()` returnerar den råa strängen. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Typisk konsolutskrift ser ut så här: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Om en fil misslyckas (kanske den är korrupt) ser du en rad som börjar med `Failed:` följt av sökvägen—praktiskt för snabb felsökning. + +--- + +## Steg 6: Rensa upp Executor‑tjänsten + +Glöm aldrig att stänga av poolen; annars kan JVM:n hänga kvar och tro att det fortfarande finns arbete. En graciös nedstängning låter pågående uppgifter slutföras innan processen avslutas. + +```java +executor.shutdown(); +``` + +Du kan också anropa `awaitTermination` om du behöver tvinga en timeout, men för de flesta kommandoradsverktyg räcker ett enkelt `shutdown()`. + +--- + +## Fullt fungerande exempel + +Nedan är det kompletta, färdiga programmet. Kopiera och klistra in det i en fil med namnet `ParallelOcrTutorial.java`, justera bildvägarna och kör `javac` + `java` som du brukar. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Förväntat resultat:** varje bilds textinnehåll skrivs ut i konsolen, i samma ordning som `imagePaths`‑listan. Om någon bild inte kan bearbetas ser du ett felmeddelande istället för en tom rad. + +--- + +## Vanliga frågor & kantfall + +### Vad händer om jag har fler bilder än trådar? + +Den fasta trådpottens köar automatiskt de överskjutande uppgifterna. Så snart en tråd avslutar sitt nuvarande OCR‑jobb, plockar den upp nästa. Detta köbeteende är kärnan i **parallel OCR processing**—du får maximal genomströmning utan att överbelasta CPU:n. + +### Kan jag ändra språk? + +Absolut. Ersätt `engine.getLanguage().setEnglish(true);` med rätt språkflagga, t.ex. `setFrench(true)` eller aktivera flera språk genom att anropa flera setters innan `recognize()`. + +### Hur hanterar jag mycket stora bilder? + +Stora filer kan förbruka mycket minne per tråd. Om du märker `OutOfMemoryError`, överväg att skala ner bilden innan du skickar den till motorn, eller öka heap‑storleken med `-Xmx`. Ett annat tillvägagångssätt är att använda en **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/swedish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/swedish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..d293b7d87 --- /dev/null +++ b/ocr/swedish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-05-03 +description: hur man snabbt aktiverar GPU för Java OCR – lär dig hur du extraherar + text från bilder med Aspose OCR. Fullständig Java OCR-handledning inkluderad. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: sv +og_description: hur du aktiverar GPU för Java OCR på några minuter. Den här handledningen + visar hur du extraherar text från bilder med en Java OCR-handledning med GPU-acceleration. +og_title: hur man aktiverar GPU för Java OCR – steg‑för‑steg‑guide +tags: +- Java +- OCR +- GPU +- Aspose +title: så här aktiverar du GPU för Java OCR – Komplett handledning +url: /sv/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hur man aktiverar gpu för Java OCR – Komplett handledning + +Har du någonsin funderat **hur man aktiverar gpu** när du försöker extrahera text från en bild? Om du någonsin har behövt köra OCR på en högupplöst skanning och känt hur CPU:n saktar ner till ett stopp, är du inte ensam. I den här guiden går vi igenom en **java ocr tutorial** som inte bara visar hur du extraherar text utan också demonstrerar det snabbaste sättet att **recognize text image java**‑stil genom att slå på experimentellt GPU‑stöd. + +Vi börjar med att hämta Aspose OCR‑biblioteket, sedan aktiverar vi GPU:n, laddar ett exempel på bild och slutligen hämtar den igenkända strängen från filen. När du är klar har du ett färdigt kodexempel som du kan klistra in i vilket Maven‑projekt som helst, och du förstår varför GPU är viktigt, när det kanske inte hjälper, och hur du felsöker vanliga problem. Inga externa dokument behövs – allt du behöver finns här. + +--- + +## Vad du behöver + +- **Java Development Kit (JDK) 8+** – koden fungerar på alla moderna JDK. +- **Maven** (eller Gradle) för att hämta Aspose OCR‑beroendet. +- En **GPU‑kompatibel maskin** (CUDA‑aktiverat NVIDIA‑kort fungerar bäst, men Aspose‑API:t faller tillbaka smidigt). +- En exempelbild, t.ex. `sample-highres.png`, placerad i en mapp du kan referera till. +- En nypa nyfikenhet kring **image to text conversion java**‑tekniker. + +Om du saknar någon av dessa, hämta JDK från Oracle eller OpenJDK, installera Maven och se till att din grafikdrivrutin är uppdaterad. Det är allt förberedelse; resten är ren Java. + +--- + +## Steg 1: Lägg till Aspose OCR i ditt projekt + +Först och främst behöver vi OCR‑motorn själv. Aspose tillhandahåller ett rent Maven‑artefakt; släng bara in detta kodstycke i din `pom.xml`: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Om du föredrar Gradle är motsvarigheten: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +När beroendet har lösts får du tillgång till `OcrEngine`, `ImageStream` och språk‑hjälparklasserna som gör **java ocr tutorial** enkelt. + +--- + +## Steg 2: Hur man aktiverar GPU (Primärt nyckelord i handling) + +Nu kommer vi till kärnan: **hur man aktiverar gpu** för OCR‑motorn. Aspose‑API:t exponerar en enkel boolesk flagga – `setUseGpu(true)`. Den är experimentell, men på ett hyfsat grafikkort kommer du märka att igenkänningstiden sjunker dramatiskt, särskilt för stora, högupplösta bilder. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Proffstips:** Om din miljö saknar en kompatibel GPU kommer flaggan att ignoreras tyst, och motorn faller tillbaka till CPU‑läge. Ingen krasch, bara långsammare prestanda. + +--- + +## Steg 3: Ladda bilden du vill bearbeta + +OCR‑motorn arbetar med ett `ImageStream`. Peka den på filen du vill konvertera från bild till ren text. Så här gör du på ett kompakt sätt: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Se till att sökvägen är absolut eller relativ till ditt projekts arbetskatalog. Om filen inte hittas får du ett `IOException` – vi fångar det senare. + +--- + +## Steg 4: Välj språk (Valfritt men rekommenderat) + +Aspose OCR kan hantera många alfabet, men du bör berätta vilket du förväntar dig. För engelska är det en enkel rad: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Om du behöver franska eller kinesiska, byt bara flaggan (`setFrench(true)`, `setChineseSimplified(true)`, osv.). Denna lilla hint ökar ofta noggrannheten eftersom motorn kan utesluta osannolika tecken. + +--- + +## Steg 5: Recognize Text Image Java – Kör motorn + +Nu är det dags för sanningen: **recognize text image java**‑stil. Vi anropar `recognize()` och, om den returnerar `true`, hämtar den resulterande strängen med `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +Utdata blir den råa texten som extraherats från `sample-highres.png`. För ett rent dokument kanske du vill efterbehandla strängen (trimma whitespace, ersätta radbrytningar, osv.). Här är ett snabbt exempel: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Steg 6: Fullt fungerande exempel (Klar att kopiera‑klistra) + +Nedan är den kompletta **java ocr tutorial** som du kan kompilera och köra direkt. Den innehåller felhantering och skriver ut det förväntade resultatet. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Förväntad utdata (exempel):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Om bilden innehåller flera rader kommer de att visas separerade med radbrytningstecken (`\n`). Motorn bevarar layouten så gott det går. + +--- + +## Steg 7: Edge Cases, tips och vanliga frågor + +### Vad händer om GPU:n inte upptäcks? + +Aspose inaktiverar tyst GPU‑stöd när den inte hittar en kompatibel enhet. Du kan verifiera läget genom att kontrollera flaggan efter initiering: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Om den skriver ut `false`, dubbelkolla din drivrutinsversion och att `CUDA`‑runtime finns i `PATH`. + +### Hjälper GPU med små bilder? + +Inte alltid. Överföringskostnaden för en liten bitmap till GPU:n kan överväga hastighetsvinsten. För bilder under 500 KB kan du faktiskt se en liten fördröjning. I sådana fall sätt bara `setUseGpu(false)`. + +### Hur hanterar man flerspråkiga dokument? + +Du kan aktivera flera språk samtidigt: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Motorn försöker matcha tecken från någon av uppsättningarna, vilket är praktiskt för tvåspråkiga PDF‑filer. + +### Kan jag bearbeta PDF‑filer direkt? + +Aspose OCR arbetar med bild‑strömmar, så du måste rasterisera varje PDF‑sida först (t.ex. med Aspose PDF eller PDFBox) och sedan skicka den resulterande `BufferedImage` till `setImage`. + +--- + +## Visuell sammanfattning + +![how to enable gpu for Java OCR engine](/images/gpu-ocr.png "Diagram showing GPU‑accelerated OCR pipeline") + +*Diagrammet illustrerar flödet från bildladdning → GPU‑aktiverad OCR → textutvinning.* + +--- + +## Slutsats + +Vi har gått igenom **hur man aktiverar gpu** för ett Java OCR‑arbetsflöde, gått igenom en komplett **java ocr tutorial**, och demonstrerat **image to text conversion java** i ett praktiskt, kopiera‑klistra‑exempel. Genom att växla en enda flagga kan du spara sekunder – eller till och med minuter – på bearbetning av stora skanningar, vilket gör dina applikationer snabbare och mer responsiva. + +Vad blir nästa steg? Prova att bearbeta en batch av bilder i en loop, experimentera med olika språk, eller kombinera detta med Apache Tika för att automatiskt indexera den extraherade texten. Möjligheterna är oändliga när du parar GPU‑accelererad OCR med andra Java‑bibliotek. + +Har du frågor om **how to extract text** från knepiga bilder, eller vill veta mer om **recognize text image java**‑knep? Lämna en kommentar nedan, och lycka till med kodningen! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/swedish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/swedish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..43d862e08 --- /dev/null +++ b/ocr/swedish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-05-03 +description: Förbättra OCR‑noggrannheten snabbt med Aspose OCR Java. Lär dig hur du + laddar en bild för OCR, aktiverar språk och tillämpar aggressiv stavningskorrigering + i några få steg. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: sv +og_description: Förbättra OCR‑noggrannheten omedelbart med Aspose OCR Java. Den här + guiden visar hur du laddar en bild för OCR, aktiverar språk och använder aggressiv + stavningskorrigering. +og_title: Förbättra OCR‑noggrannheten i Java – Steg‑för‑steg Aspose OCR‑handledning +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Förbättra OCR‑noggrannheten i Java – Komplett Aspose OCR‑guide +url: /sv/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Förbättra OCR‑noggrannhet i Java – Komplett Aspose OCR‑guide + +Har du någonsin undrat varför dina OCR‑resultat ser ut som ett barns handstil? Om du kämpar med saknade bokstäver, felaktiga ord eller bara rena nonsens, är du inte ensam. **Improve OCR accuracy** är det första de flesta utvecklare tar till när deras textutvinning känns opålitlig. + +I den här handledningen går vi igenom en praktisk lösning som inte bara **load image for OCR** utan också utnyttjar Asposes inbyggda stavningskorrigeringsmotor för att höja kvaliteten. I slutet har du ett färdigt Java‑program som känner igen engelska + franska texter med aggressiv korrigering—utan externa ordböcker. + +## Vad du kommer att lära dig + +- Hur man **load image for OCR** med Asposes `ImageStream`. +- Varför aktivering av rätt språk är viktigt för noggrannheten. +- Effekten av aggressiv stavningskorrigering på flerspråkiga dokument. +- Ett komplett, körbart kodexempel som du kan lägga in i vilket Maven/Gradle‑projekt som helst. +- Tips, fallgropar och idéer för nästa steg för att skala upp detta tillvägagångssätt. + +> **Prerequisites** – Java 8 eller senare, en aktuell Aspose.OCR för Java‑JAR (v23.12 eller senare) och en bildfil (`multilingual.png`) som innehåller engelska och franska texter. Det är allt—inga extra modeller eller API:er. + +--- + +## Förbättra OCR‑noggrannhet: Konfigurera Aspose OCR‑motor + +Kärnan i varje OCR‑pipeline är motorens konfiguration. Genom att tala om för Aspose exakt vad du förväntar dig ger du den en chans att göra rätt. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Varför detta är viktigt:** + +- **Engine instance** – `OcrEngine` innehåller alla inställningar; att skapa en ny instans undviker att tillstånd läcker från tidigare körningar. +- **Image loading** – Att använda `ImageStream.fromFile` är det enklaste sättet att **load image for OCR**. Det stödjer PNG, JPEG, BMP och TIFF direkt. +- **Language flags** – Att slå på English + French talar om för igenkänningaren att använda rätt teckenuppsättningar och språkmodeller, vilket ensamt kan öka noggrannheten med 10‑15 %. +- **Aggressive spell correction** – Att sätta `SpellCorrectionLevel.AGGRESSIVE` får den interna ordboken att skriva om tveksamma ord, ett nyckelverktyg när du behöver **improve OCR accuracy** på brusiga skanningar. + +--- + +## Ladda bild för OCR – Ange källfilen + +Innan motorn kan göra någonting behöver den en bitmap. Om du matar den med en korrupt ström eller fel sökväg får du ett undantag snabbare än du hinner säga “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro tip:** Om du bearbetar bilder som laddas upp av användare, omslut laddningslogiken med ett try‑catch‑block och validera filens storlek/format först. Detta förhindrar att motorn kvävs av massiva PDF‑filer eller format som inte stöds. + +--- + +## Aktivera flera språk för bättre igenkänning + +De flesta OCR‑bibliotek är som standard endast på engelska. När ditt dokument blandar språk ser du en ökning av felaktigt igenkända tecken. Aspose gör det enkelt att växla ytterligare språk. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Varför aktivera mer än ett språk?** + +- **Character set expansion** – Franska innehåller accentuerade bokstäver som “é” och “ç”. Utan franskt flagga blir de “e” eller “c”, vilket senare förvirrar stavningskorrigeraren. +- **Contextual hints** – OCR‑motorn använder språkmodeller för att förutsäga ordgränser; en tvåspråkig modell minskar falska delningar. + +--- + +## Tillämpa aggressiv stavningskorrigering + +Stavningskorrigering är inte bara ett “nice‑to‑have”; det är en spelväxlare när du behöver **improve OCR accuracy** på lågkvalitativa skanningar. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Nivåer på ett ögonblick + +| Nivå | Beteende | +|------------|--------------------------------------------------------------------------| +| **NONE** | Ingen korrigering – endast rå motorutdata. | +| **LIGHT** | Fixar uppenbara stavfel, låg risk för över‑korrigering. | +| **AGGRESSIVE** | Utför ordboksuppslag aggressivt; bäst för brusiga bilder. | + +**Caution:** Aggressivt läge kan skriva om legitima egennamn (t.ex. “McDonald” → “Mcdonald”). Om ditt område innehåller många namn, överväg ett efterbearbetningsfilter. + +--- + +## Kör igenkänning och verifiera resultatet + +Nu när allt är konfigurerat är det dags att låta Aspose göra det tunga arbetet. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Förväntat resultat (exempel) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Om du ser nonsens istället, dubbelkolla: + +1. Bildkvaliteten (suddiga eller låg‑dpi‑bilder försämrar noggrannheten). +2. Språkflaggor – saknad franska tar bort accenter. +3. Stavningskorrigeringsnivå – prova `LIGHT` om du märker över‑korrigering. + +--- + +## Fullständigt fungerande exempel (alla steg i en fil) + +Nedan är det kompletta programmet som du kan kompilera och köra direkt. Spara det som `SpellCorrectionTutorial.java`, justera bildsökvägen och kör med `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Kompilera & kör: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Du bör se den korrigerade flerspråkiga texten skriven till konsolen. + +--- + +## Vanliga fallgropar & hur man undviker dem + +| Symtom | Trolig orsak | Åtgärd | +|----------------------|-------------------------------------------|--------------------------------------------------------------------------------------------| +| **Blank output** | Bildsökväg fel eller filen kan inte läsas | Verifiera `ImageStream.fromFile`‑sökväg; lägg till kontroll för filens existens. | +| **Missing accents** | Franska språket är inte aktiverat | Anropa `ocrEngine.getLanguage().setFrench(true)`. | +| **Garbage characters** | Lågupplöst bild (< 150 dpi) | Skala upp eller skanna om med högre DPI; överväg förbehandling med bildförbättringsbibliotek. | +| **Over‑corrected names** | Aggressiv stavningskorrigering på egennamn | Efterbehandla med en vitlista av kända namn eller byt till `LIGHT`‑nivå. | + +--- + +## Nästa steg: Skala upp din OCR‑pipeline + +- **Batch processing:** Loopa över en katalog med bilder, återanvänd en enda `OcrEngine`‑instans för prestanda. +- **PDF extraction:** Använd Aspose.PDF för att konvertera varje sida till en bild, och mata sedan in den i OCR‑motorn. +- **Custom dictionaries:** Om ditt område använder specialiserad terminologi (medicinsk, juridisk), mata in en anpassad ordlista i `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Parallelism:** Javas `ForkJoinPool` kan köra flera OCR‑uppgifter parallellt, men håll koll på minnesanvändning eftersom varje motor håller bildbuffertar. + +![Exempel på förbättrad OCR‑noggrannhet](/images/ocr-example.png){alt="Skärmdump som visar förbättrad OCR‑noggrannhet med korrigerad flerspråkig text"} + +--- + +## Slutsats + +Vi har just **förbättrat OCR** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/swedish/java/ocr-operations/_index.md b/ocr/swedish/java/ocr-operations/_index.md index c91019ce7..f989b4b6d 100644 --- a/ocr/swedish/java/ocr-operations/_index.md +++ b/ocr/swedish/java/ocr-operations/_index.md @@ -81,6 +81,10 @@ Lås upp kraften i OCR i Java med Aspose.OCR. Känn igen text i PDF‑dokument e Lås upp kraftfull textigenkänning i Java med Aspose.OCR. Känn igen text i TIFF‑bilder enkelt. Ladda ner nu för en sömlös OCR‑upplevelse. ### [Känna igen text i bild med Aspose OCR – Fullständig Java OCR-handledning](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) En komplett guide som visar hur du använder Aspose OCR för att känna igen text i bilder med Java. +### [Aspose OCR Java‑exempel: Extrahera text från ett område](./aspose-ocr-java-example-extract-text-from-a-region/) +Lär dig hur du med Aspose OCR för Java extraherar text från ett specifikt område i en bild. +### [Extrahera text från HEIC – Fullständig Java‑guide](./extract-text-from-heic-complete-java-guide/) +En komplett guide som visar hur du använder Aspose OCR för att extrahera text från HEIC‑bilder med Java. ## Vanliga frågor diff --git a/ocr/swedish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/swedish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..e4ef78b0b --- /dev/null +++ b/ocr/swedish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java‑exempel visar hur man laddar en bild för OCR och extraherar + text från ett område med bara några få rader kod. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: sv +og_description: Aspose OCR Java-exempel visar hur man laddar en bild för OCR och extraherar + text från ett specifikt område, perfekt för fakturabehandling. +og_title: Aspose OCR Java-exempel – Extrahering av regiontext +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Aspose OCR Java-exempel: Extrahera text från ett område' +url: /sv/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java‑exempel: Extrahera text från ett område + +Letar du efter ett **Aspose OCR Java‑exempel** som låter dig hämta bara den del du behöver från en bild? I den här guiden går vi igenom **laddning av en bild för OCR** och **extrahering av text från ett område**, perfekt för fakturanummer, formulärfält eller någon data som är gömd i en större bild. + +Du kanske undrar varför du skulle begränsa OCR till en rektangel istället för att skanna hela sidan. Kort svar: hastighet och noggrannhet. När motorn bara tittar på ett definierat utsnitt hoppar den över irrelevant brus, kör snabbare och ger ofta renare resultat. I slutet av den här handledningen har du ett självständigt Java‑program som gör exakt det, plus en rad tips för att undvika vanliga fallgropar som nybörjare ofta stöter på. + +## Vad du behöver + +- **Java Development Kit (JDK) 11** eller nyare installerat. +- **Aspose.OCR for Java**‑bibliotek (du kan hämta den senaste JAR‑filen från Maven Central‑arkivet eller Aspose‑nedladdningsportalen). +- En bildfil som innehåller den text du vill läsa – för vårt demo använder vi `invoice.png`, som har ett fakturanummer någonstans nära övre högra hörnet. +- En favorit‑IDE eller en enkel textredigerare plus en terminal; vilket byggverktyg som helst (Maven, Gradle eller ren `javac`) fungerar. + +Det är allt. Inga extra OCR‑motorer, inga inhemska binärer, bara ren Java och Aspose. + +![Aspose OCR Java‑exempel skärmbild](/images/aspose-ocr-java-example.png "Aspose OCR Java‑exempel som visar regionsextraktion") + +## Aspose OCR Java‑exempel – Initiera OCR‑motorn + +Det första som varje OCR‑arbetsflöde behöver är en motorinstans. Aspose levererar en lättviktig `OcrEngine`‑klass som hanterar allt från bildladdning till språkval. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Varför detta är viktigt:** Genom att skapa motorn i förväg får du ett rent objekt att konfigurera. Du kan återanvända samma `OcrEngine` för flera bilder om du bearbetar en batch, vilket sparar minne och initieringstid. + +## Ladda bild för OCR + +Nästa steg är att tala om för motorn vilken bild som ska skannas. Aspose tillhandahåller hjälpen `ImageStream.fromFile`, som abstraherar bort den lågnivå‑`FileInputStream`‑boilerplaten. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Tips:** Ersätt `YOUR_DIRECTORY` med en absolut sökväg eller en relativ som pekar på där du lagrade `invoice.png`. Om filen inte kan hittas kastar Aspose ett `IOException`, så du kanske vill omsluta detta i ett try‑catch‑block i produktionskod. + +## Definiera och extrahera text från ett område + +Nu kommer stjärnan i showen: rektangeln som talar om för motorn var den ska titta. `java.awt.Rectangle`‑konstruktorn tar `(x, y, width, height)` – alla mätta i pixlar. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Hur det fungerar:** Genom att anropa `setRegion` begränsar du OCR‑skanningen till ett 300‑pixel‑brett utsnitt som startar 120 pixlar från vänster kant och 250 pixlar från toppen. Justera dessa siffror så att de matchar din egen layout; ett snabbt sätt att hitta dem är att öppna bilden i någon grafikredigerare som visar pixelkoordinater. + +## Aktivera språk och kör igenkänning + +Aspose OCR stödjer dussintals språk, men för ett fakturanummer behöver vi bara engelska. Att aktivera rätt språk minskar falska positiva resultat dramatiskt. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Varför bara engelska?** OCR‑motorn kommer försöka matcha tecken från varje aktiverat språk, vilket kan förvirra den när texten bara är enkla alfanumeriska tecken. Att begränsa språkomfånget förbättrar både hastighet och precision. + +### Förväntad utdata + +När allt stämmer kommer du se något i stil med: + +``` +Extracted region text: INV-12345 +``` + +Om rektangeln är fel med några pixlar kan utdata bli förvrängd eller tom. Det är ett enkelt sanitetstest: kör programmet, titta på konsolen och verifiera att texten matchar vad du ser i bilden. + +## Kör koden och verifiera utdata + +Förutsatt att du använder Maven, lägg till Aspose OCR‑beroendet i din `pom.xml`: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Kompilera och kör: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Eller, om du föredrar ren `javac`: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Du bör se raden **Extracted region text** skriven till konsolen. Om du får “OCR recognition failed”, dubbelkolla filsökvägen och se till att området faktiskt innehåller läsbara tecken. + +## Edge Cases & vanliga variationer + +| Situation | Vad som ska ändras | +|-----------|--------------------| +| **Flera språk** (t.ex. English + Spanish) | Anropa `ocrEngine.getLanguage().setSpanish(true);` tillsammans med English. | +| **Region utanför bildens gränser** | Aspose kommer tyst att klippa rektangeln, men du förlorar data. Använd `ImageInfo` (`ocrEngine.getImage().getWidth()`) för att verifiera dimensionerna innan du ställer in regionen. | +| **Dynamiska fakturor** (olika layouter) | Överväg att köra en lättviktig förskanning på hela bilden för att hitta nyckelord som “Invoice #” och sedan beräkna rektangeln programatiskt. | +| **Bilder med hög DPI** | Öka `ocrEngine.getImage().setResolution(300);` för bättre noggrannhet på skannade dokument. | +| **Prestandaoptimering** | Inaktivera onödiga språk, håll regionen så liten som möjligt, och återanvänd en enda `OcrEngine`‑instans för många filer. | + +## Pro‑tips från frontlinjen + +- **Pro‑tips:** Om du bara behöver siffror (vanligt för fakturanummer), aktivera numeriskt läge med `ocrEngine.getLanguage().setDigits(true);`. Detta eliminerar alfabetiskt brus. +- **Se upp för:** Transparenta PNG‑filer. Aspose tolkar ibland alfakanalen fel; att konvertera bilden till en JPEG med solid bakgrund först kan lösa märkliga tomma utdata. +- **Kom ihåg:** Rektangeln använder bildens inhemska koordinatsystem, inte någon UI‑skalning du kanske ser på skärmen. Testa alltid med exakt den fil du kommer att bearbeta i produktion. + +## Vad blir nästa? + +Nu när du har ett gediget **Aspose OCR Java‑exempel** för region‑baserad extraktion kan du bygga vidare i flera användbara riktningar: + +- **Batch‑bearbetning:** Loopa igenom en mapp med fakturor, återanvänd samma `OcrEngine` för att förbättra genomströmning. +- **Datavalidering:** Skicka den extraherade texten genom ett regex som `INV-\\d{5}` för att säkerställa att du fångat ett giltigt fakturanummer. +- **Integration med PDF:** Använd Aspose.PDF för att överlagra den extraherade texten tillbaka på originaldokumentet för revisionsspår. +- **Moln‑distribution:** Packa in koden i en lättviktig REST‑tjänst (Spring Boot) så att andra system kan anropa den vid behov. + +Varje steg bygger naturligt på samma kärnkoncept — **ladda bild för OCR**, **extrahera text från ett område**, och hantera resultaten — så du kommer finna övergången smidig. + +--- + +*Lycka till med kodandet! Om du stöter på problem, lämna en kommentar nedan eller kolla Aspose‑forumet där communityn delar verkliga justeringar för knepiga layouter.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/swedish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/swedish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..ed997182f --- /dev/null +++ b/ocr/swedish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Extrahera text från HEIC‑bilder med Aspose OCR i Java. Lär dig hur du + snabbt konverterar HEIC till text med ett steg‑för‑steg‑exempel. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: sv +og_description: Extrahera text från HEIC‑bilder med Aspose OCR i Java. Den här guiden + visar hur du konverterar HEIC till text på några minuter. +og_title: Extrahera text från HEIC – Java OCR-handledning +tags: +- OCR +- Java +- Aspose +title: Extrahera text från HEIC – Komplett Java‑guide +url: /sv/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrahera text från HEIC – Komplett Java-guide + +Har du någonsin undrat hur man **extraherar text från HEIC**-filer utan att först konvertera dem till JPEG eller PNG? Du är inte ensam. Många utvecklare stöter på problem när en mobilapp ger dem ett `.heic`-foto och de behöver den inbäddade texten för indexering eller analys. Den goda nyheten? Med Aspose OCR för Java kan du **extrahera text från HEIC** direkt—ingen extra konverteringssteg behövs. + +I den här handledningen visar vi också hur du **konverterar HEIC till text** i en enda, ren pipeline, så att du kan klistra in koden i vilket Java‑projekt som helst och börja hämta strängar från dessa hög‑effektiva bilder redan idag. + +![extract text from heic example](https://example.com/placeholder.png "extract text from heic example") + +## Vad du kommer att lära dig + +- Hur du konfigurerar Aspose OCR i ett Maven/Gradle‑projekt. +- Den exakta Java‑koden som behövs för att **extrahera text från HEIC**‑bilder. +- Varför detta tillvägagångssätt är snabbare och mindre felbenäget än ett tvåstegs `convert‑then‑OCR`‑arbetsflöde. +- Vanliga fallgropar (t.ex. saknade språkpaket) och hur du undviker dem. +- Tips för att skala lösningen i ett batch‑bearbetningsscenario. + +I slutet av guiden kommer du att kunna **konvertera HEIC till text** med bara några rader kod, och du kommer att förstå “varför” bakom varje steg. + +--- + +## Förutsättningar + +Innan vi dyker ner, se till att du har: + +1. **Java 8 eller högre** – Aspose OCR körs på vilken modern JDK som helst. +2. **Maven eller Gradle** – för att automatiskt hämta Aspose OCR‑biblioteket. +3. En **HEIC‑bild** som du vill testa med (byt namn till `sample.heic` och placera den någonstans som är åtkomlig). +4. Valfritt men praktiskt: en IDE som IntelliJ IDEA eller VS Code. + +Inga andra externa verktyg krävs; biblioteket hanterar HEIC‑formatet nativt. + +--- + +## Steg 1 – Lägg till Aspose OCR i ditt projekt + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Pro tip:** Håll versionsnumret i synk med de officiella Aspose‑utgåvorna; nyare versioner lägger till stöd för ytterligare HEIC‑varianter och förbättrar språkprecision. + +--- + +## Steg 2 – Initiera OCR‑motorn för att **extrahera text från HEIC** + +Att skapa en `OcrEngine`‑instans är det första konkreta steget mot att extrahera text från HEIC. Motorn abstraherar all låg‑nivå‑avkodning, så du behöver inte oroa dig för HEIC‑containerformatet. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Varför detta är viktigt:** +HEIC är ett modernt bildformat baserat på HEIF‑containern. Traditionella OCR‑bibliotek förväntar sig JPEG/PNG, vilket tvingar dig att köra ett separat konverteringssteg som kan försämra kvaliteten. Aspose OCR:s inbyggda stöd låter dig **extrahera text från HEIC** i ett steg, bevarar den ursprungliga pixelinformationen och sparar CPU‑cykler. + +--- + +## Steg 3 – Aktivera önskade språk + +Som standard söker motorn bara efter engelska. Om du behöver **konvertera HEIC till text** på ett annat språk, slå bara på motsvarande flagga. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Varför aktivera språk explicit?** +> Språkpaket laddas på begäran. Att bara aktivera det du behöver minskar minnesfotavtrycket och snabbar upp igenkänningen. + +--- + +## Steg 4 – Kör igenkänningsprocessen + +Nu ber vi faktiskt motorn att läsa bilden och producera en sträng. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Förväntad output** (förutsatt att bilden innehåller frasen “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Om bilden är tom eller texten är oläslig, returnerar motorn `false`, och du ser fallback‑meddelandet. + +--- + +## Steg 5 – Hantera kantfall & vanliga frågor + +### Vad händer om HEIC‑filen är korrupt? + +Aspose OCR kastar ett `IOException` när den inte kan avkoda containern. Omge anropet med ett `try‑catch`‑block och logga felet för senare granskning. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Kan jag bearbeta flera HEIC‑filer i ett batch? + +Absolut. Loopa bara över en katalog och återanvänd samma `OcrEngine`‑instans för att undvika upprepad initieringskostnad. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Gör detta också **konvertera HEIC till text** för icke‑latinska skript? + +Ja—Aspose OCR stödjer arabiska, kinesiska, kyrilliska och många fler språk. Aktivera bara motsvarande språkflagga (t.ex. `engine.getLanguage().setChineseSimplified(true);`). Kom ihåg att lägga till de lämpliga teckensnitts‑filerna om du kör på en huvudlös server. + +--- + +## Steg 6 – Verifiera resultatet programatiskt + +I en produktionspipeline behöver du ofta säkerställa att OCR‑outputen uppfyller vissa kvalitetsgränser. Ett snabbt sätt är att beräkna ett förtroendescore (tillgängligt i nyare versioner) eller helt enkelt kontrollera längden på den returnerade strängen. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Fullt fungerande exempel + +Nedan är den kompletta, färdiga Java‑klassen som innehåller alla stegen ovan. Klistra in den i en fil med namnet `HeifExample.java`, justera sökvägen till din HEIC‑fil och kör `javac` + `java` som vanligt. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Du bör se den extraherade strängen skrivas ut i konsolen, vilket bekräftar att du framgångsrikt **konverterat HEIC till text**. + +--- + +## Slutsats + +Vi har gått igenom allt du behöver för att **extrahera text från HEIC** med Aspose OCR i Java. Från att lägga till biblioteket till att hantera kantfall visar guiden en ren, enstegslösning som eliminerar behovet av ett separat konverteringsverktyg. + +Nu kan du: + +- **Konvertera HEIC till text** i realtid i webb‑tjänster, mobila back‑ends eller batch‑jobb. +- Utöka stöd till andra språk med en enda rad konfiguration. +- Skala processen genom att återanvända samma `OcrEngine` över många filer. + +Nästa steg kan vara att utforska **inbäddning av OCR‑resultatet i ett sökbart index** (t.ex. Elasticsearch) eller **lägga till bild‑förbehandling** för att öka noggrannheten på låg‑kontrast HEIC‑foton. Himlen är gränsen—experimentera, mät och iterera. + +Har du frågor eller stöter på en knepig HEIC‑fil? Lämna en kommentar nedan, och lycka till med kodandet! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/thai/java/advanced-ocr-techniques/_index.md b/ocr/thai/java/advanced-ocr-techniques/_index.md index 39f6051c8..7be51d0b9 100644 --- a/ocr/thai/java/advanced-ocr-techniques/_index.md +++ b/ocr/thai/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,16 @@ Aspose.OCR สำหรับ Java เป็นตัวเปลี่ยนเ เสริมศักยภาพแอปพลิเคชัน Java ของคุณด้วย Aspose.OCR เพื่อการจดจำข้อความที่แม่นยำ บูรณาการได้ง่าย มีความแม่นยำสูง ### [การระบุอักขระที่อนุญาตใน Aspose.OCR](./specify-allowed-characters/) ปลดล็อกการแยกข้อความจากรูปภาพได้อย่างราบรื่นด้วย Aspose.OCR สำหรับ Java ปฏิบัติตามคำแนะนำทีละขั้นตอนของเราเพื่อการบูรณาการที่มีประสิทธิภาพ +### [วิธีเปิดใช้งาน GPU สำหรับ OCR ใน Java – คำแนะนำเต็ม](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +เรียนรู้วิธีตั้งค่า GPU เพื่อเพิ่มความเร็วการจดจำข้อความด้วย Aspose.OCR สำหรับ Java อย่างละเอียด +### [สร้าง Fixed Thread Pool สำหรับ OCR ขนานใน Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +เรียนรู้วิธีสร้าง Fixed Thread Pool เพื่อประมวลผล OCR พร้อมกันหลายภาพใน Java ด้วย Aspose.OCR +### [ปรับปรุงความแม่นยำของ OCR ใน Java – คำแนะนำเต็มของ Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +เรียนรู้เทคนิคการเพิ่มความแม่นยำของ OCR ใน Java ด้วย Aspose OCR อย่างละเอียดและครบถ้วน + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/thai/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/thai/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..9f7978605 --- /dev/null +++ b/ocr/thai/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-05-03 +description: สร้าง fixed thread pool ใน Java เพื่อดึงข้อความจากภาพอย่างรวดเร็ว เรียนรู้วิธีรัน + OCR, แปลงภาพเป็นข้อความ, และเพิ่มประสิทธิภาพด้วยการประมวลผล OCR แบบขนาน +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: th +og_description: สร้าง Fixed Thread Pool ใน Java เพื่อดึงข้อความจากภาพอย่างรวดเร็ว + เรียนรู้วิธีรัน OCR แปลงภาพเป็นข้อความ และเพิ่มประสิทธิภาพด้วยการประมวลผล OCR แบบขนาน +og_title: สร้าง Fixed Thread Pool สำหรับ OCR แบบขนานใน Java +tags: +- Java +- OCR +- Multithreading +title: สร้าง Fixed Thread Pool สำหรับ OCR แบบขนานใน Java +url: /th/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้าง Fixed Thread Pool สำหรับการทำ OCR แบบขนานใน Java + +เคยต้องการ **สร้าง fixed thread pool** เพื่อเร่งความเร็วงาน OCR แต่ไม่แน่ใจว่าจะเริ่มจากตรงไหนหรือไม่? คุณไม่ได้อยู่คนเดียว ในหลายโครงการที่มีรูปภาพจำนวนมาก จุดคอขวดมักเป็นการเรียก OCR แบบ single‑threaded และวิธีแก้ก็ง่ายกว่าที่คิด: สร้าง pool ของ worker threads แล้วให้พวกมันประมวลผลไฟล์แบบขนาน + +ในบทแนะนำนี้ คุณจะได้เรียนรู้วิธี **ดึงข้อความจากรูปภาพ** ด้วย Aspose OCR, วิธี **รัน OCR** อย่างมีประสิทธิภาพ, และวิธี **แปลงรูปภาพเป็นข้อความ** โดยไม่ทำให้ CPU ของคุณทำงานหนักเกินไป เมื่อเสร็จคุณจะมีโปรแกรม Java ที่พร้อมรันซึ่งแสดง **การประมวลผล OCR แบบขนาน** บนรูปตัวอย่างไม่กี่รูป + +## สิ่งที่คุณจะสร้าง + +เราจะประกอบแอปคอนโซลเล็ก ๆ ที่: + +* อ่านรายการเส้นทางของรูปภาพ (PNG, JPG, TIFF, BMP). +* **สร้าง fixed thread pool** ที่มีขนาดเท่ากับจำนวนคอร์ของ CPU. +* ส่งมอบงาน OCR สำหรับแต่ละรูปภาพ. +* รวบรวมข้อความที่ได้รับการจดจำและพิมพ์ออกที่คอนโซล. +* ปิด executor อย่างสะอาด. + +ไม่มีเครื่องมือ build ภายนอก ไม่มีเฟรมเวิร์กหรูหรา—แค่ Java ธรรมดาและไลบรารี Aspose OCR หากคุณมี Java 8+ และ IDE ที่ดี คุณก็พร้อมแล้ว + +## ข้อกำหนดเบื้องต้น + +* **Java Development Kit (JDK) 8 หรือใหม่กว่า** – โค้ดใช้ lambda ดังนั้นเวอร์ชันเก่าจะไม่คอมไพล์. +* **Aspose OCR for Java** – ดาวน์โหลด JAR จากเว็บไซต์ Aspose หรือดึงผ่าน Maven (`com.aspose:aspose-ocr`). +* โฟลเดอร์ที่มีรูปทดสอบหลายไฟล์ (โค้ดชี้ไปที่ `YOUR_DIRECTORY`). +* ความคุ้นเคยพื้นฐานกับการทำ concurrency ของ Java (เราจะอธิบายส่วนที่เหลือ). + +> *เคล็ดลับ:* หากคุณใช้ Maven ให้เพิ่ม dependency ลงใน `pom.xml` ของคุณและให้ IDE จัดการ classpath ให้เอง. + +--- + +## ขั้นตอนที่ 1: เพิ่มการนำเข้า (Imports) ที่จำเป็น + +ก่อนอื่น ให้นำเข้าคลาสที่เราต้องการใช้เข้ามาในสโคป นี่ไม่ใช่แค่โค้ดซ้ำซ้อน; แต่ละ import บอก JVM ว่าจะหา engine OCR, ยูทิลิตี้การจัดการรูปภาพ, และเครื่องมือ concurrency ที่ทำให้เราสามารถ **สร้าง fixed thread pool** ได้. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – API OCR หลัก. +* `java.util.*` – คอลเลกชันสำหรับเก็บเส้นทางรูปภาพและผลลัพธ์. +* `java.util.concurrent.*` – แพคเกจ concurrency ที่มี `ExecutorService` และ `Future`. + +--- + +## ขั้นตอนที่ 2: กำหนดรายการรูปภาพที่ต้องประมวลผล + +ต่อไป เราจะระบุไฟล์ที่ต้องการ **ดึงข้อความจากรูปภาพ** การใช้ `Arrays.asList` ทำให้โค้ดกระชับและให้คุณเปลี่ยนเป็นไดเรกทอรีของคุณเองได้โดยไม่ต้องแก้ไขส่วนอื่นของตรรกะ. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +เพิ่มรายการได้ตามต้องการ; pool ของเธรดจะปรับขนาดอัตโนมัติตามจำนวนคอร์ของ CPU ที่คุณมี. + +--- + +## ขั้นตอนที่ 3: **สร้าง Fixed Thread Pool** ให้ตรงกับจำนวนคอร์ของ CPU + +นี่คือหัวใจของบทแนะนำ เราถาม runtime ว่ามีคอร์กี่คอร์และขอให้ factory `Executors` สร้าง pool ที่มีขนาดเท่านั้น ทำไมต้อง fixed? เพราะจำนวนเธรดที่คาดเดาได้ช่วยป้องกันการ “ระเบิดเธรด” ที่อาจทำให้ OS ขาดแคลนทรัพยากร. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` คืนค่าจำนวนคอร์ลอจิก (รวม hyper‑threads). +* `newFixedThreadPool(coreCount)` รับประกันว่าเราไม่เกินความสามารถของ CPU ซึ่งเป็นวิธีที่ปลอดภัยที่สุดในการ **รัน OCR** แบบขนาน. + +--- + +## ขั้นตอนที่ 4: ส่งมอบงาน OCR สำหรับแต่ละรูปภาพ + +ตอนนี้เราจะแปลงแต่ละเส้นทางไฟล์ให้เป็น callable ที่ **รัน OCR**, จดจำข้อความ, และคืนผลลัพธ์ เราจะสร้าง `OcrEngine` ใหม่ภายใน lambda เพื่อหลีกเลี่ยงการแชร์สถานะของ engine ที่ไม่ปลอดภัยต่อเธรด. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* การเรียก `submit` แต่ละครั้งจะส่ง lambda ไปยัง pool ซึ่งจะจัดตารางให้กับเธรดที่ว่าง. +* วัตถุ `Future` ทำให้เราสามารถดึงข้อความที่จดจำได้ในภายหลัง และรักษาลำดับได้หากต้องการ. + +--- + +## ขั้นตอนที่ 5: ดึงและแสดงข้อความที่จดจำได้ + +เมื่อทุกงานถูกคิวแล้ว เราเพียงแค่วนลูปผ่านรายการ `Future` เรียก `get()` เพื่อบล็อกจนกว่าแต่ละงาน OCR จะเสร็จ นี่คือขั้นตอน **แปลงรูปภาพเป็นข้อความ** ที่คุณจะเห็น: การเรียก `engine.getText()` จะคืนสตริงดิบ. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +ผลลัพธ์ที่คาดว่าจะเห็นในคอนโซลเป็นแบบนี้: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +ถ้าไฟล์ล้มเหลว (เช่นไฟล์เสีย) คุณจะเห็นบรรทัดที่เริ่มด้วย `Failed:` ตามด้วยเส้นทาง—สะดวกสำหรับการดีบักอย่างรวดเร็ว. + +--- + +## ขั้นตอนที่ 6: ทำความสะอาด Executor Service + +อย่าลืมปิด pool; มิฉะนั้น JVM อาจค้างอยู่เพราะคิดว่ามีงานค้างอยู่ การปิดอย่างสุภาพทำให้งานที่กำลังทำอยู่เสร็จก่อนที่โปรเซสจะจบ. + +```java +executor.shutdown(); +``` + +คุณยังสามารถเรียก `awaitTermination` หากต้องการกำหนด timeout, แต่สำหรับยูทิลิตี้บรรทัดคำสั่งส่วนใหญ่ `shutdown()` ธรรมดาก็เพียงพอ. + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมเต็มที่พร้อมรัน คัดลอกและวางลงในไฟล์ชื่อ `ParallelOcrTutorial.java`, ปรับเส้นทางรูปภาพ, แล้วรัน `javac` + `java` ตามปกติ. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**ผลลัพธ์ที่คาดหวัง:** เนื้อหาข้อความของแต่ละรูปภาพจะถูกพิมพ์ออกที่คอนโซลตามลำดับเดียวกับรายการ `imagePaths`. หากรูปใดไม่สามารถประมวลผลได้ คุณจะเห็นข้อความแจ้งความล้มเหลวแทนบรรทัดว่าง. + +--- + +## คำถามทั่วไป & กรณีขอบ + +### ถ้าฉันมีรูปภาพมากกว่าจำนวนเธรด? + +Fixed thread pool จะจัดคิวงานที่เหลือโดยอัตโนมัติ เมื่อเธรดหนึ่งทำงาน OCR เสร็จ มันจะรับงานต่อไป การจัดคิวนี้คือแก่นของ **การประมวลผล OCR แบบขนาน** — คุณจะได้อัตราการผ่านสูงสุดโดยไม่ทำให้ CPU ทำงานหนักเกินไป. + +### ฉันสามารถเปลี่ยนภาษาได้หรือไม่? + +ได้เลย. แทนที่ `engine.getLanguage().setEnglish(true);` ด้วยฟลักซ์ภาษาที่ต้องการ เช่น `setFrench(true)` หรือเปิดหลายภาษาโดยเรียก setter หลายครั้งก่อน `recognize()`. + +### จะจัดการกับรูปภาพขนาดใหญ่มากอย่างไร? + +ไฟล์ขนาดใหญ่สามารถใช้หน่วยความจำต่อเธรดมาก หากคุณเจอ `OutOfMemoryError` ให้ลองย่อขนาดรูปก่อนส่งให้ engine, หรือเพิ่มขนาด heap ด้วย `-Xmx`. อีกวิธีหนึ่งคือใช้ **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/thai/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/thai/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..6aa8f6196 --- /dev/null +++ b/ocr/thai/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-05-03 +description: วิธีเปิดใช้งาน GPU สำหรับ Java OCR อย่างรวดเร็ว – เรียนรู้วิธีดึงข้อความจากภาพด้วย + Aspose OCR. มีคู่มือการสอน Java OCR เต็มรูปแบบรวมอยู่ด้วย. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: th +og_description: วิธีเปิดใช้งาน GPU สำหรับ Java OCR ในไม่กี่นาที การสอนนี้จะแสดงวิธีดึงข้อความจากภาพโดยใช้ + Java OCR พร้อมการเร่งความเร็วด้วย GPU +og_title: วิธีเปิดใช้งาน GPU สำหรับ Java OCR – คู่มือขั้นตอนโดยละเอียด +tags: +- Java +- OCR +- GPU +- Aspose +title: วิธีเปิดใช้งาน GPU สำหรับ Java OCR – บทเรียนครบถ้วน +url: /th/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีเปิดใช้งาน GPU สำหรับ Java OCR – บทเรียนเต็ม + +เคยสงสัย **วิธีเปิดใช้งาน GPU** เมื่อคุณพยายามดึงข้อความจากรูปภาพหรือไม่? หากคุณเคยต้องรัน OCR บนสแกนความละเอียดสูงและรู้สึกว่า CPU หยุดทำงาน คุณไม่ได้อยู่คนเดียว ในคู่มือนี้เราจะพาไปผ่าน **java ocr tutorial** ที่ไม่เพียงแสดงวิธีดึงข้อความเท่านั้น แต่ยังสาธิตวิธีที่เร็วที่สุดในการ **recognize text image java**‑style ด้วยการเปิดใช้งานการสนับสนุน GPU ทดลอง + +เราจะเริ่มด้วยการดึงไลบรารี Aspose OCR, จากนั้นเปิดใช้งาน GPU, โหลดภาพตัวอย่าง, และสุดท้ายดึงสตริงที่ได้รับการจดจำออกจากไฟล์ เมื่อเสร็จคุณจะมีโค้ดสแนปที่พร้อมรันที่คุณสามารถใส่ลงในโปรเจกต์ Maven ใดก็ได้ และคุณจะเข้าใจว่าทำไม GPU ถึงสำคัญ, เมื่อใดที่อาจไม่ช่วย, และวิธีแก้ไขปัญหาที่พบบ่อย ไม่ต้องอ้างอิงเอกสารภายนอก—ทุกอย่างที่คุณต้องการอยู่ที่นี่ + +--- + +## สิ่งที่คุณต้องมี + +- **Java Development Kit (JDK) 8+** – โค้ดทำงานบน JDK สมัยใหม่ใดก็ได้ +- **Maven** (หรือ Gradle) เพื่อดึง dependency ของ Aspose OCR +- เครื่องที่ **รองรับ GPU** (การ์ด NVIDIA ที่เปิดใช้งาน CUDA จะดีที่สุด, แต่ Aspose API จะถอยกลับไปใช้ CPU อย่างราบรื่น) +- ภาพตัวอย่าง เช่น `sample-highres.png` ที่วางไว้ในโฟลเดอร์ที่คุณอ้างอิงได้ +- ความสนใจเล็กน้อยเกี่ยวกับเทคนิค **image to text conversion java** + +หากคุณขาดสิ่งใดสิ่งหนึ่ง ให้ดาวน์โหลด JDK จาก Oracle หรือ OpenJDK, ติดตั้ง Maven, และตรวจสอบให้แน่ใจว่าไดรเวอร์กราฟิกของคุณเป็นเวอร์ชันล่าสุด นั่นคือการเตรียมการทั้งหมด; ส่วนที่เหลือเป็น Java แท้ๆ + +--- + +## ขั้นตอนที่ 1: เพิ่ม Aspose OCR ลงในโปรเจกต์ของคุณ + +สิ่งแรกที่ต้องทำคือให้ได้เอ็นจิน OCR เอง Aspose มี Maven artifact ที่สะอาดตา; เพียงแค่วางสแนปนี้ลงใน `pom.xml` ของคุณ: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +หากคุณใช้ Gradle, เวอร์ชันที่เทียบเท่าคือ: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +เมื่อ dependency ถูกดึงมาเรียบร้อย คุณจะสามารถเข้าถึง `OcrEngine`, `ImageStream`, และตัวช่วยด้านภาษา ที่ทำให้ **java ocr tutorial** ง่ายดาย + +--- + +## ขั้นตอนที่ 2: วิธีเปิดใช้งาน GPU (คีย์เวิร์ดหลักในแอคชัน) + +ตอนนี้เรามาถึงหัวใจของเรื่อง: **วิธีเปิดใช้งาน GPU** สำหรับเอ็นจิน OCR API ของ Aspose มีฟลักบูลีนเดียวที่เปิดใช้งาน — `setUseGpu(true)` มันเป็นฟีเจอร์ทดลอง, แต่บนการ์ดกราฟิกที่ดีคุณจะเห็นเวลาการจดจำลดลงอย่างมาก, โดยเฉพาะกับภาพขนาดใหญ่และความละเอียดสูง + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **เคล็ดลับมือโปร:** หากสภาพแวดล้อมของคุณไม่มี GPU ที่รองรับ, ฟลักจะถูกละเว้นโดยไม่มีการแจ้งเตือน, และเอ็นจินจะถอยกลับไปใช้โหมด CPU. ไม่เกิดการครช, เพียงแค่ประสิทธิภาพช้าลง + +--- + +## ขั้นตอนที่ 3: โหลดภาพที่คุณต้องการประมวลผล + +เอ็นจิน OCR ทำงานกับ `ImageStream`. ชี้ไปที่ไฟล์ที่คุณต้องการแปลงจากรูปภาพเป็นข้อความธรรมดา นี่คือตัวอย่างโค้ดสั้นๆ: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +ตรวจสอบให้แน่ใจว่าเส้นทางเป็นแบบ absolute หรือ relative ต่อไดเรกทอรีทำงานของโปรเจกต์ หากไฟล์ไม่พบ คุณจะได้รับ `IOException`—เราจะจับไว้ในขั้นตอนต่อไป + +--- + +## ขั้นตอนที่ 4: เลือกภาษา (ไม่บังคับแต่แนะนำ) + +Aspose OCR รองรับหลายอักษร, แต่คุณควรบอกเอ็นจินว่าคุณคาดหวังภาษาอะไร สำหรับภาษาอังกฤษ เพียงบรรทัดเดียว: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +หากต้องการภาษาฝรั่งเศสหรือจีน, เพียงสลับฟลัก (`setFrench(true)`, `setChineseSimplified(true)`, เป็นต้น) คำแนะนำเล็กๆ นี้มักช่วยเพิ่มความแม่นยำ เพราะเอ็นจินสามารถตัดตัวอักษรที่เป็นไปได้น้อยออกได้ + +--- + +## ขั้นตอนที่ 5: Recognize Text Image Java – รันเอ็นจิน + +นี่คือช่วงเวลาที่ต้องพิสูจน์: **recognize text image java** style เราเรียก `recognize()` และหากมันคืนค่า `true` เราก็ดึงสตริงผลลัพธ์ด้วย `getText()` + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +ผลลัพธ์จะเป็นข้อความดิบที่ดึงจาก `sample-highres.png`. หากต้องการเอกสารที่สะอาด คุณอาจต้องทำ post‑process สตริง (ตัด whitespace, แทนที่ line break, เป็นต้น) ตัวอย่างสั้นๆ มีดังนี้: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## ขั้นตอนที่ 6: ตัวอย่างทำงานเต็มรูปแบบ (พร้อมคัดลอก‑วาง) + +ด้านล่างเป็น **java ocr tutorial** เต็มที่คุณสามารถคอมไพล์และรันได้โดยตรง มีการจัดการข้อผิดพลาดและพิมพ์ผลลัพธ์ที่คาดหวัง + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**ผลลัพธ์ที่คาดหวัง (ตัวอย่าง):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +หากภาพมีหลายบรรทัด พวกมันจะปรากฏแยกด้วยอักขระ line‑break (`\n`). เอ็นจินจะพยายามรักษาเลย์เอาต์เดิมให้ได้มากที่สุด + +--- + +## ขั้นตอนที่ 7: กรณีขอบ, เคล็ดลับ, และคำถามที่พบบ่อย + +### ถ้า GPU ไม่ถูกตรวจพบจะทำอย่างไร? + +Aspose จะปิดการใช้งาน GPU อย่างเงียบเมื่อไม่พบอุปกรณ์ที่เข้ากันได้ คุณสามารถตรวจสอบโหมดโดยเช็คฟลักหลังการเริ่มต้น: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +หากพิมพ์ `false`, ให้ตรวจสอบเวอร์ชันไดรเวอร์และให้แน่ใจว่า runtime `CUDA` อยู่ใน `PATH` + +### GPU ช่วยกับภาพขนาดเล็กหรือไม่? + +ไม่เสมอไป ค่าตอบโอนย้ายบิตแมปขนาดเล็กไปยัง GPU อาจทำให้เสียเวลาเกินกว่าที่จะได้ประโยชน์ สำหรับภาพที่มีขนาดต่ำกว่า 500 KB คุณอาจเห็นการช้าลงเล็กน้อย ในกรณีนั้นให้ตั้ง `setUseGpu(false)` + +### จะจัดการกับเอกสารหลายภาษาอย่างไร? + +คุณสามารถเปิดหลายภาษาได้พร้อมกัน: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +เอ็นจินจะพยายามจับคู่ตัวอักษรจากชุดใดชุดหนึ่ง ซึ่งสะดวกสำหรับ PDF สองภาษา + +### สามารถประมวลผล PDF โดยตรงได้หรือไม่? + +Aspose OCR ทำงานกับ image streams, ดังนั้นคุณต้องแปลงแต่ละหน้า PDF เป็นภาพก่อน (เช่น ด้วย Aspose PDF หรือ PDFBox) แล้วจึงส่ง `BufferedImage` ที่ได้ให้กับ `setImage` + +--- + +## สรุปภาพรวม + +![วิธีเปิดใช้งาน GPU สำหรับเครื่องมือ Java OCR](/images/gpu-ocr.png "แผนภาพแสดงกระบวนการ OCR ที่เร่งด้วย GPU") + +*แผนภาพแสดงขั้นตอนจากการโหลดภาพ → OCR ที่เปิดใช้งาน GPU → การสกัดข้อความ* + +--- + +## สรุป + +เราได้ครอบคลุม **วิธีเปิดใช้งาน GPU** สำหรับเวิร์กโฟลว์ Java OCR, เดินผ่าน **java ocr tutorial** เต็มรูปแบบ, และสาธิต **image to text conversion java** ในตัวอย่างที่สามารถคัดลอก‑วางได้ ด้วยการสลับฟลักเดียว คุณสามารถลดเวลาการประมวลผลของสแกนขนาดใหญ่ได้หลายวินาทีหรือหลายนาที ทำให้แอปพลิเคชันของคุณตอบสนองเร็วขึ้น + +ต่อไปคุณจะทำอะไร? ลองประมวลผลชุดภาพด้วยลูป, ทดลองกับภาษาต่างๆ, หรือผสานกับ Apache Tika เพื่อทำดัชนีข้อความที่สกัดอัตโนมัติ ความเป็นไปได้ไม่มีที่สิ้นสุดเมื่อคุณจับคู่ OCR ที่เร่งด้วย GPU กับไลบรารี Java อื่นๆ + +มีคำถามเกี่ยวกับ **วิธีดึงข้อความ** จากภาพที่ซับซ้อน, หรืออยากรู้เพิ่มเติมเกี่ยวกับเทคนิค **recognize text image java**? ทิ้งคอมเมนต์ไว้ด้านล่าง แล้วขอให้สนุกกับการเขียนโค้ด! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/thai/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/thai/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..f6436e0e0 --- /dev/null +++ b/ocr/thai/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,258 @@ +--- +category: general +date: 2026-05-03 +description: ปรับปรุงความแม่นยำของ OCR อย่างรวดเร็วด้วย Aspose OCR Java เรียนรู้วิธีโหลดภาพสำหรับ + OCR, เปิดใช้งานภาษา, และใช้การแก้ไขการสะกดแบบเข้มข้นในไม่กี่ขั้นตอน. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: th +og_description: ปรับปรุงความแม่นยำของ OCR อย่างรวดเร็วด้วย Aspose OCR Java คู่มือนี้จะแสดงวิธีโหลดภาพสำหรับ + OCR, เปิดใช้งานภาษา, และใช้การแก้ไขการสะกดแบบเข้มข้น +og_title: เพิ่มความแม่นยำของ OCR ใน Java – คู่มือ Aspose OCR ขั้นตอนต่อขั้นตอน +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: ปรับปรุงความแม่นยำของ OCR ใน Java – คู่มือ Aspose OCR ฉบับสมบูรณ์ +url: /th/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# ปรับปรุงความแม่นยำของ OCR ใน Java – คู่มือ Aspose OCR ฉบับเต็ม + +เคยสงสัยไหมว่าผลลัพธ์ OCR ของคุณดูเหมือนลายมือของเด็กเล็ก? ถ้าคุณกำลังต่อสู้กับการพลาดตัวอักษร, คำที่ผิด, หรือข้อความที่ไม่มีความหมายเลย, คุณไม่ได้อยู่คนเดียว. **การปรับปรุงความแม่นยำของ OCR** คือสิ่งแรกที่นักพัฒนาส่วนใหญ่มองหาเมื่อการสกัดข้อความของพวกเขาไม่เชื่อถือได้. + +ในบทแนะนำนี้เราจะพาคุณผ่านโซลูชันเชิงปฏิบัติที่ไม่เพียงแต่ **load image for OCR** แต่ยังใช้เอนจินการแก้ไขการสะกดของ Aspose ที่ฝังมาเพื่อยกระดับคุณภาพ. เมื่อเสร็จคุณจะมีโปรแกรม Java ที่พร้อมรันซึ่งสามารถจดจำข้อความภาษาอังกฤษ + ฝรั่งเศสพร้อมการแก้ไขอย่างเข้มข้น—ไม่ต้องใช้พจนานุกรมภายนอก. + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธี **load image for OCR** ด้วย `ImageStream` ของ Aspose. +- ทำไมการเปิดใช้งานภาษาที่ถูกต้องจึงสำคัญต่อความแม่นยำ. +- ผลกระทบของการแก้ไขการสะกดอย่างเข้มข้นต่อเอกสารหลายภาษา. +- ตัวอย่างโค้ดที่สมบูรณ์และสามารถรันได้ซึ่งคุณสามารถนำไปใส่ในโปรเจกต์ Maven/Gradle ใดก็ได้. +- เคล็ดลับ, จุดหลบหลีก, และแนวคิดต่อไปสำหรับการขยายวิธีนี้. + +> **Prerequisites** – Java 8 หรือใหม่กว่า, JAR Aspose.OCR for Java เวอร์ชันล่าสุด (v23.12 หรือใหม่กว่า), และไฟล์ภาพ (`multilingual.png`) ที่มีข้อความภาษาอังกฤษและฝรั่งเศส. เท่านี้—ไม่ต้องมีโมเดลหรือ API เพิ่มเติม. + +--- + +## ปรับปรุงความแม่นยำของ OCR: ตั้งค่า Aspose OCR Engine + +หัวใจของทุก pipeline OCR คือการตั้งค่าเอนจิน. การบอก Aspose อย่างชัดเจนว่าคุณคาดหวังอะไร จะทำให้มันมีโอกาสที่ดีขึ้นในการทำงานให้ถูกต้อง. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**ทำไมเรื่องนี้ถึงสำคัญ:** +- **Engine instance** – `OcrEngine` เก็บการตั้งค่าทั้งหมด; การสร้างใหม่ทุกครั้งช่วยหลีกเลี่ยงการรั่วของสถานะจากการรันก่อนหน้า. +- **Image loading** – การใช้ `ImageStream.fromFile` เป็นวิธีที่ตรงที่สุดในการ **load image for OCR**. รองรับ PNG, JPEG, BMP, และ TIFF โดยอัตโนมัติ. +- **Language flags** – การเปิดใช้งาน English + French บอกให้ recogniser ใช้ชุดอักขระและโมเดลภาษาที่เหมาะสม, ซึ่งสามารถเพิ่มความแม่นยำได้ 10‑15 %. +- **Aggressive spell correction** – การตั้งค่า `SpellCorrectionLevel.AGGRESSIVE` ทำให้พจนานุกรมภายในเขียนทับคำที่สงสัย, เป็นตัวขับสำคัญเมื่อคุณต้อง **improve OCR accuracy** บนสแกนที่มีเสียงรบกวน. + +--- + +## Load Image for OCR – ตั้งค่าไฟล์ต้นทาง + +ก่อนที่เอนจินจะทำอะไรได้, มันต้องการ bitmap. หากคุณป้อนสตรีมที่เสียหายหรือพาธที่ผิด, คุณจะเจอ exception เร็วกว่าเวลาที่คุณพูดว่า “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**เคล็ดลับ:** หากคุณกำลังประมวลผลภาพที่ผู้ใช้อัปโหลด, ควรห่อหุ้มตรรกะการโหลดในบล็อก try‑catch และตรวจสอบขนาด/รูปแบบไฟล์ก่อน. วิธีนี้จะป้องกันไม่ให้เอนจินอึดอัดกับ PDF ขนาดใหญ่หรือรูปแบบที่ไม่รองรับ. + +--- + +## เปิดใช้งานหลายภาษาเพื่อการจดจำที่ดียิ่งขึ้น + +ไลบรารี OCR ส่วนใหญ่ตั้งค่าเริ่มต้นเป็นภาษาอังกฤษเท่านั้น. เมื่อเอกสารของคุณผสมหลายภาษา, คุณจะพบอัตราการจดจำตัวอักษรที่ผิดพลาดเพิ่มขึ้น. Aspose ทำให้การสลับภาษาเพิ่มเติมเป็นเรื่องง่ายดาย. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**ทำไมต้องเปิดใช้งานมากกว่าหนึ่งภาษา?** +- **Character set expansion** – ภาษาฝรั่งเศสมีอักขระที่มีเครื่องหมายสำเนียงเช่น “é” และ “ç”. หากไม่ได้เปิด flag ฝรั่งเศส, ตัวอักษรเหล่านั้นจะกลายเป็น “e” หรือ “c”, ซึ่งต่อมาจะทำให้ตัวแก้ไขการสะกดสับสน. +- **Contextual hints** – OCR engine ใช้โมเดลภาษาเพื่อทำนายขอบเขตคำ; โมเดลสองภาษาจะลดการแยกคำผิด. + +--- + +## ใช้ Aggressive Spell Correction + +การแก้ไขการสะกดไม่ใช่แค่ “nice‑to‑have”; มันเป็นตัวเปลี่ยนเกมเมื่อคุณต้อง **improve OCR accuracy** บนสแกนคุณภาพต่ำ. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### ระดับต่าง ๆ อย่างสรุป + +| ระดับ | พฤติกรรม | +|------------|----------------------------------------------| +| **NONE** | ไม่มีการแก้ไข – แสดงผลลัพธ์ดิบจากเอนจินเท่านั้น. | +| **LIGHT** | แก้ไขข้อผิดพลาดที่ชัดเจน, ความเสี่ยงต่อการแก้ไขเกินควรต่ำ. | +| **AGGRESSIVE** | ทำการค้นหาพจนานุกรมอย่างเข้มข้น; เหมาะกับภาพที่มีเสียงรบกวน. | + +**คำเตือน:** โหมด Aggressive อาจเขียนทับชื่อเฉพาะที่ถูกต้อง (เช่น “McDonald” → “Mcdonald”). หากโดเมนของคุณมีชื่อหลายชื่อ, ควรพิจารณาฟิลเตอร์หลังการประมวลผล. + +--- + +## รันการจดจำและตรวจสอบผลลัพธ์ + +เมื่อทุกอย่างตั้งค่าเรียบร้อย, ถึงเวลาปล่อยให้ Aspose ทำงานหนัก. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### ผลลัพธ์ที่คาดหวัง (ตัวอย่าง) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +หากคุณเห็นข้อความไร้สาระ, ให้ตรวจสอบอีกครั้ง: + +1. คุณภาพของภาพ (ภาพเบลอหรือ DPI ต่ำจะทำให้ความแม่นยำลดลง). +2. Language flags – หากไม่ได้เปิดฝรั่งเศสจะทำให้สูญเสียเครื่องหมายสำเนียง. +3. ระดับการแก้ไขการสะกด – ลอง `LIGHT` หากพบการแก้ไขเกินควร. + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ (ทุกขั้นตอนในไฟล์เดียว) + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคอมไพล์และรันได้โดยตรง. บันทึกเป็น `SpellCorrectionTutorial.java`, ปรับพาธของภาพ, แล้วรันด้วย `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +คอมไพล์และรัน: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +คุณควรเห็นข้อความหลายภาษาที่ได้รับการแก้ไขแสดงบนคอนโซล. + +--- + +## ข้อผิดพลาดทั่วไป & วิธีหลีกเลี่ยง + +| อาการ | สาเหตุที่เป็นไปได้ | วิธีแก้ | +|---------|--------------|-----| +| **ผลลัพธ์เป็นค่าว่าง** | พาธภาพผิดหรือไฟล์ไม่สามารถอ่านได้ | ตรวจสอบพาธ `ImageStream.fromFile`; เพิ่มการตรวจสอบการมีไฟล์. | +| **ขาดเครื่องหมายสำเนียง** | ไม่ได้เปิดใช้งานภาษาฝรั่งเศส | เรียก `ocrEngine.getLanguage().setFrench(true)`. | +| **อักขระแปลก** | ภาพความละเอียดต่ำ (< 150 dpi) | ขยายหรือสแกนใหม่ที่ DPI สูงกว่า; พิจารณา preprocess ด้วยไลบรารีปรับปรุงภาพ. | +| **ชื่อถูกแก้ไขเกิน** | Aggressive spell correction บนชื่อเฉพาะ | ใช้ whitelist ของชื่อที่รู้จักหรือเปลี่ยนเป็นระดับ `LIGHT`. | + +--- + +## ขั้นตอนต่อไป: ขยายขนาด Pipeline OCR ของคุณ + +- **การประมวลผลเป็นชุด:** วนลูปผ่านโฟลเดอร์ของภาพ, ใช้ `OcrEngine` ตัวเดียวซ้ำเพื่อประสิทธิภาพ. +- **การสกัด PDF:** ใช้ Aspose.PDF แปลงแต่ละหน้าเป็นภาพ, แล้วส่งต่อไปยัง OCR engine. +- **พจนานุกรมกำหนดเอง:** หากโดเมนของคุณใช้คำเฉพาะ (การแพทย์, กฎหมาย), สามารถใส่รายการคำของคุณเองเข้า `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **การทำงานแบบขนาน:** `ForkJoinPool` ของ Java สามารถรันงาน OCR หลายงานพร้อมกัน, แต่ต้องระวังการใช้หน่วยความจำเพราะแต่ละเอนจินเก็บบัฟเฟอร์ภาพ. + +--- + +![Improve OCR accuracy example](/images/ocr-example.png){alt="ภาพหน้าจอแสดงการปรับปรุงความแม่นยำของ OCR พร้อมข้อความหลายภาษาที่ได้รับการแก้ไข"} + +--- + +## สรุป + +เราเพิ่ง **improved OCR + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/thai/java/ocr-operations/_index.md b/ocr/thai/java/ocr-operations/_index.md index 62bd4ef9b..dc34c8f9a 100644 --- a/ocr/thai/java/ocr-operations/_index.md +++ b/ocr/thai/java/ocr-operations/_index.md @@ -80,6 +80,10 @@ weight: 21 ปลดล็อกการจดจำข้อความที่ทรงพลังใน Java ด้วย Aspose.OCR Recognize ข้อความในภาพ TIFF อย่างไม่มีอุปสรรค ดาวน์โหลดเลยเพื่อประสบการณ์ OCR ที่ไร้รอยต่อ ### [จดจำข้อความจากภาพด้วย Aspose OCR – คำแนะนำเต็มสำหรับ Java OCR](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) เรียนรู้ขั้นตอนเต็มเพื่อจดจำข้อความจากภาพด้วย Aspose OCR ใน Java +### [Aspose OCR Java Example: Extract Text from a Region](./aspose-ocr-java-example-extract-text-from-a-region/) + +### [Extract Text from HEIC – Complete Java Guide](./extract-text-from-heic-complete-java-guide/) +เรียนรู้วิธีสกัดข้อความจากไฟล์ HEIC ด้วย Aspose.OCR for Java อย่างละเอียดและครบถ้วน {{< /blocks/products/pf/tutorial-page-section >}} diff --git a/ocr/thai/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/thai/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..fe5f6b366 --- /dev/null +++ b/ocr/thai/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,174 @@ +--- +category: general +date: 2026-05-03 +description: ตัวอย่าง Aspose OCR Java แสดงวิธีการโหลดภาพเพื่อทำ OCR และสกัดข้อความจากบริเวณหนึ่งโดยใช้เพียงไม่กี่บรรทัดของโค้ด. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: th +og_description: ตัวอย่าง Aspose OCR Java แสดงการโหลดภาพเพื่อทำ OCR และสกัดข้อความจากพื้นที่เฉพาะ + เหมาะอย่างยิ่งสำหรับการประมวลผลใบแจ้งหนี้ +og_title: ตัวอย่าง Aspose OCR Java – การสกัดข้อความจากพื้นที่ +tags: +- Aspose OCR +- Java +- Image Processing +title: 'ตัวอย่าง Aspose OCR Java: ดึงข้อความจากพื้นที่' +url: /th/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# ตัวอย่าง Aspose OCR Java: ดึงข้อความจากพื้นที่ + +กำลังมองหาตัวอย่าง **Aspose OCR Java** ที่ให้คุณดึงเฉพาะส่วนที่ต้องการจากภาพหรือไม่? ในคู่มือนี้เราจะอธิบาย **การโหลดภาพสำหรับ OCR** และ **การดึงข้อความจากพื้นที่** ซึ่งเหมาะสำหรับหมายเลขใบแจ้งหนี้, ฟิลด์ฟอร์ม, หรือข้อมูลใด ๆ ที่ซ่อนอยู่ในภาพขนาดใหญ่ + +คุณอาจสงสัยว่าทำไมต้องจำกัด OCR ไว้ที่สี่เหลี่ยมแทนการสแกนทั้งหน้า คำตอบสั้น ๆ คือ ความเร็วและความแม่นยำ เมื่อเครื่องมือมองแค่ส่วนที่กำหนด มันจะข้ามเสียงรบกวนที่ไม่เกี่ยวข้อง, ทำงานเร็วขึ้น, และมักให้ผลลัพธ์ที่สะอาดกว่า เมื่อจบบทเรียนนี้คุณจะมีโปรแกรม Java ที่ทำงานอิสระได้อย่างครบถ้วน พร้อมเคล็ดลับหลากหลายเพื่อหลีกเลี่ยงข้อผิดพลาดทั่วไปที่ผู้เริ่มต้นมักเจอ + +## สิ่งที่คุณต้องมี + +ก่อนที่เราจะลงลึก, ตรวจสอบให้แน่ใจว่าคุณมี: + +- **Java Development Kit (JDK) 11** หรือใหม่กว่า +- ไลบรารี **Aspose.OCR for Java** (คุณสามารถดาวน์โหลด JAR ล่าสุดจาก Maven Central หรือพอร์ทัลดาวน์โหลดของ Aspose) +- ไฟล์ภาพที่มีข้อความที่คุณต้องการอ่าน – สำหรับสาธิตนี้เราจะใช้ `invoice.png` ซึ่งมีหมายเลขใบแจ้งหนี้อยู่ใกล้มุมบน‑ขวา +- IDE ที่คุณชื่นชอบหรือเพียงแค่ตัวแก้ไขข้อความธรรมดาพร้อมเทอร์มินัล; เครื่องมือสร้างใด ๆ (Maven, Gradle, หรือ `javac` ธรรมดา) ก็ใช้ได้ + +แค่นั้นเอง ไม่ต้องมีเอนจิน OCR เพิ่มเติม, ไม่ต้องมีไบนารีเนทีฟ, เพียงแค่ Java และ Aspose + +![ภาพตัวอย่าง Aspose OCR Java](/images/aspose-ocr-java-example.png "Aspose OCR Java แสดงการดึงข้อความจากพื้นที่") + +## ตัวอย่าง Aspose OCR Java – เริ่มต้น Engine OCR + +สิ่งแรกที่ทุก workflow ของ OCR ต้องมีคืออินสแตนซ์ของ engine. Aspose มีคลาส `OcrEngine` ที่เบาและจัดการทุกอย่างตั้งแต่การโหลดภาพจนถึงการเลือกภาษา + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**ทำไมจึงสำคัญ:** การสร้าง engine ล่วงหน้าจะให้คุณมีอ็อบเจกต์ที่สะอาดสำหรับการตั้งค่า คุณสามารถใช้ `OcrEngine` เดียวกันสำหรับหลายภาพได้หากต้องประมวลผลเป็นชุด, ช่วยประหยัดหน่วยความจำและเวลาเริ่มต้น + +## โหลดภาพสำหรับ OCR + +ต่อไปเราต้องบอก engine ว่าจะสแกนภาพไหน Aspose มีตัวช่วย `ImageStream.fromFile` ที่ทำให้คุณไม่ต้องจัดการกับโค้ด `FileInputStream` ระดับล่าง + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**เคล็ดลับ:** แทนที่ `YOUR_DIRECTORY` ด้วยพาธเต็มหรือพาธสัมพันธ์ที่ชี้ไปยังตำแหน่งที่คุณเก็บ `invoice.png` หากไฟล์ไม่พบ Aspose จะโยน `IOException` ดังนั้นคุณอาจต้องใส่โค้ดในบล็อก try‑catch สำหรับโค้ดที่ใช้ใน production + +## กำหนดและดึงข้อความจากพื้นที่ + +ตอนนี้มาถึงส่วนสำคัญ: สี่เหลี่ยมที่บอก engine ว่าจะมองที่ไหน คอนสตรัคเตอร์ `java.awt.Rectangle` รับค่า `(x, y, width, height)` – ทั้งหมดเป็นพิกเซล + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**วิธีทำงาน:** การเรียก `setRegion` จะจำกัดการสแกน OCR ให้เป็นส่วนกว้าง 300 พิกเซลที่เริ่มจาก 120 พิกเซลจากขอบซ้ายและ 250 พิกเซลจากด้านบน ปรับค่าตามเลย์เอาต์ของคุณ; วิธีง่าย ๆ คือเปิดภาพในโปรแกรมกราฟิกใด ๆ ที่แสดงพิกเซลคอร์ดิเนต + +## เปิดใช้งานภาษาและรันการจดจำ + +Aspose OCR รองรับหลายสิบภาษา, แต่สำหรับหมายเลขใบแจ้งหนี้เราต้องการแค่ภาษาอังกฤษเท่านั้น การเปิดใช้ภาษาเดียวจะลด false positives อย่างมาก + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**ทำไมต้องเปิดใช้เฉพาะอังกฤษ?** Engine OCR จะพยายามจับคู่ตัวอักษรจากทุกภาษาที่เปิดใช้งาน, ซึ่งอาจทำให้สับสนเมื่อข้อความเป็นอักขระอัลฟานูเมอริกง่าย ๆ การจำกัดขอบเขตภาษาเพิ่มความเร็วและความแม่นยำ + +### ผลลัพธ์ที่คาดหวัง + +เมื่อทุกอย่างทำงานตรงกัน, คุณจะเห็นข้อความประมาณนี้: + +``` +Extracted region text: INV-12345 +``` + +หากสี่เหลี่ยมเลื่อนตำแหน่งไปไม่ตรงพิกเซลไม่กี่พิกเซล, ผลลัพธ์อาจเป็นข้อความเสียหรือว่างเปล่า นี่คือการตรวจสอบอย่างง่าย: รันโปรแกรม, ดูที่คอนโซล, และยืนยันว่าข้อความตรงกับที่คุณเห็นในภาพ + +## รันโค้ดและตรวจสอบผลลัพธ์ + +สมมติว่าคุณใช้ Maven, เพิ่ม dependency ของ Aspose OCR ลงใน `pom.xml` ของคุณ: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +คอมไพล์และรัน: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +หรือ, หากคุณชอบใช้ `javac` ธรรมดา: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +คุณควรเห็นบรรทัด **Extracted region text** ปรากฏบนคอนโซล หากเจอ “OCR recognition failed,” ตรวจสอบพาธไฟล์และให้แน่ใจว่าพื้นที่ที่กำหนดมีอักขระที่อ่านได้จริง + +## กรณีขอบและความแปรผันทั่วไป + +| สถานการณ์ | สิ่งที่ต้องเปลี่ยน | +|-----------|----------------| +| **หลายภาษา** (เช่น อังกฤษ + สเปน) | เรียก `ocrEngine.getLanguage().setSpanish(true);` ควบคู่กับอังกฤษ | +| **พื้นที่อยู่นอกขอบภาพ** | Aspose จะตัดสี่เหลี่ยมโดยอัตโนมัติ, แต่คุณจะสูญเสียข้อมูล ใช้ `ImageInfo` (`ocrEngine.getImage().getWidth()`) เพื่อตรวจสอบขนาดก่อนตั้งค่า region | +| **ใบแจ้งหนี้แบบไดนามิก** (เลย์เอาต์ต่างกัน) | พิจารณาให้ทำการสแกนเบื้องต้นทั่วทั้งภาพเพื่อหาคำสำคัญเช่น “Invoice #” แล้วคำนวณสี่เหลี่ยมแบบโปรแกรม | +| **ภาพ DPI สูง** | เพิ่ม `ocrEngine.getImage().setResolution(300);` เพื่อความแม่นยำที่ดีขึ้นในเอกสารสแกน | +| **การปรับจูนประสิทธิภาพ** | ปิดภาษาที่ไม่จำเป็น, ทำให้ region เล็กที่สุดเท่าที่ทำได้, และใช้ `OcrEngine` ตัวเดียวกันหลายไฟล์ | + +## เคล็ดลับระดับมืออาชีพจากสนามรบ + +- **Pro tip:** หากคุณต้องการเฉพาะตัวเลข (เช่นหมายเลขใบแจ้งหนี้), เปิดโหมดตัวเลขด้วย `ocrEngine.getLanguage().setDigits(true);` จะช่วยกำจัดเสียงรบกวนจากอักษร +- **ระวัง:** PNG ที่มีความโปร่งใส Aspose บางครั้งอาจตีความช่อง alpha ผิด; การแปลงภาพเป็น JPEG พื้นหลังทึบก่อนจะช่วยแก้ปัญหาเอาต์พุตว่างแปลก ๆ +- **จำไว้:** สี่เหลี่ยมใช้ระบบพิกัดดิบของภาพ, ไม่ใช่การสเกล UI ที่คุณอาจเห็นบนหน้าจอ ควรทดสอบกับไฟล์จริงที่ใช้ใน production เสมอ + +## ขั้นตอนต่อไปคืออะไร? + +ตอนนี้คุณมี **ตัวอย่าง Aspose OCR Java** สำหรับการดึงข้อความจากพื้นที่แล้ว, คุณสามารถต่อยอดได้หลายทาง: + +- **ประมวลผลเป็นชุด:** วนลูปโฟลเดอร์ใบแจ้งหนี้, ใช้ `OcrEngine` ตัวเดียวเพื่อเพิ่มอัตราการทำงาน +- **ตรวจสอบข้อมูล:** ส่งข้อความที่ดึงมาให้ regex เช่น `INV-\\d{5}` เพื่อตรวจสอบว่าคุณได้หมายเลขใบแจ้งหนี้ที่ถูกต้องหรือไม่ +- **ผสานกับ PDF:** ใช้ Aspose.PDF เพื่อวางข้อความที่ดึงกลับไปบนเอกสารต้นฉบับเพื่อเป็นร่องรอยการตรวจสอบ +- **ปรับใช้บนคลาวด์:** ห่อโค้ดเป็นบริการ REST ขนาดเบา (Spring Boot) เพื่อให้ระบบอื่นเรียกใช้ตามต้องการ + +ขั้นตอนเหล่านี้ทั้งหมดใช้แนวคิดหลักเดียวกัน—**โหลดภาพสำหรับ OCR**, **ดึงข้อความจากพื้นที่**, และจัดการผลลัพธ์—ดังนั้นการเปลี่ยนแปลงจะเป็นเรื่องง่าย + +--- + +*ขอให้เขียนโค้ดอย่างสนุก! หากเจออุปสรรคใด ๆ, แสดงความคิดเห็นด้านล่างหรือเยี่ยมชมฟอรั่มของ Aspose ที่ชุมชนแชร์เทคนิคจริงสำหรับเลย์เอาต์ที่ซับซ้อน* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/thai/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/thai/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..827539ed5 --- /dev/null +++ b/ocr/thai/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-05-03 +description: ดึงข้อความจากภาพ HEIC ด้วย Aspose OCR ใน Java เรียนรู้วิธีแปลง HEIC เป็นข้อความอย่างรวดเร็วด้วยตัวอย่างขั้นตอนต่อขั้นตอน. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: th +og_description: ดึงข้อความจากภาพ HEIC ด้วย Aspose OCR ใน Java คู่มือนี้จะแสดงวิธีแปลง + HEIC เป็นข้อความในไม่กี่นาที. +og_title: ดึงข้อความจากไฟล์ HEIC – บทเรียน Java OCR +tags: +- OCR +- Java +- Aspose +title: ดึงข้อความจาก HEIC – คู่มือ Java ฉบับสมบูรณ์ +url: /th/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# ดึงข้อความจาก HEIC – คู่มือ Java ฉบับสมบูรณ์ + +เคยสงสัยว่าคุณสามารถ **extract text from HEIC** จากไฟล์โดยไม่ต้องแปลงเป็น JPEG หรือ PNG ก่อน? คุณไม่ได้เป็นคนเดียวที่เจอปัญหา นักพัฒนาจำนวนมากเจออุปสรรคเมื่อแอปมือถือส่งภาพ `.heic` ให้พวกเขาและต้องการข้อความที่ฝังอยู่สำหรับการทำดัชนีหรือการวิเคราะห์ ข่าวดีคือ? ด้วย Aspose OCR for Java คุณสามารถ **extract text from HEIC** ได้โดยตรง—ไม่ต้องมีขั้นตอนการแปลงเพิ่มเติม + +ในบทแนะนำนี้เราจะสาธิตวิธี **convert HEIC to text** ในกระบวนการเดียวที่สะอาดตา เพื่อให้คุณสามารถนำโค้ดไปใส่ในโปรเจค Java ใดก็ได้และเริ่มดึงข้อความจากภาพที่มีประสิทธิภาพสูงเหล่านั้นได้ทันที + +![extract text from heic example](https://example.com/placeholder.png "extract text from heic example") + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธีตั้งค่า Aspose OCR ในโปรเจค Maven/Gradle +- โค้ด Java ที่จำเป็นเพื่อ **extract text from HEIC** +- ทำไมวิธีนี้จึงเร็วกว่าและมีโอกาสเกิดข้อผิดพลาดน้อยกว่าการทำงานสองขั้นตอน `convert‑then‑OCR` +- ข้อผิดพลาดทั่วไป (เช่น การขาด language packs) และวิธีหลีกเลี่ยง +- เคล็ดลับการขยายโซลูชันในสถานการณ์การประมวลผลแบบแบตช์ + +เมื่อจบคู่มือคุณจะสามารถ **convert HEIC to text** ด้วยเพียงไม่กี่บรรทัดของโค้ด และคุณจะเข้าใจเหตุผลเบื้องหลังแต่ละขั้นตอน + +--- + +## ข้อกำหนดเบื้องต้น + +Before we dive in, make sure you have: + +1. **Java 8 หรือสูงกว่า** – Aspose OCR ทำงานบน JDK สมัยใหม่ใดก็ได้. +2. **Maven หรือ Gradle** – เพื่อดึงไลบรารี Aspose OCR อัตโนมัติ. +3. **ภาพ HEIC** ที่คุณต้องการทดสอบ (เปลี่ยนชื่อเป็น `sample.heic` แล้ววางไว้ในตำแหน่งที่เข้าถึงได้). +4. ตัวเลือกเพิ่มเติมแต่สะดวก: IDE เช่น IntelliJ IDEA หรือ VS Code. + +ไม่มีเครื่องมือภายนอกอื่นที่จำเป็น; ไลบรารีจัดการรูปแบบ HEIC โดยตรง. + +--- + +## ขั้นตอนที่ 1 – เพิ่ม Aspose OCR ไปยังโปรเจคของคุณ + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **เคล็ดลับระดับมืออาชีพ:** รักษาเลขเวอร์ชันให้สอดคล้องกับการปล่อยของ Aspose อย่างเป็นทางการ; เวอร์ชันใหม่เพิ่มการสนับสนุนรูปแบบ HEIC เพิ่มเติมและปรับปรุงความแม่นยำของภาษา. + +--- + +## ขั้นตอนที่ 2 – เริ่มต้น OCR Engine เพื่อ **Extract Text from HEIC** + +การสร้างอินสแตนซ์ `OcrEngine` เป็นขั้นตอนแรกที่เป็นรูปธรรมในการดึงข้อความจาก HEIC. Engine จะจัดการการถอดรหัสระดับต่ำทั้งหมด ดังนั้นคุณไม่ต้องกังวลเกี่ยวกับรูปแบบคอนเทนเนอร์ HEIC + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**ทำไมเรื่องนี้สำคัญ:** +HEIC เป็นรูปแบบภาพสมัยใหม่ที่อิงจากคอนเทนเนอร์ HEIF. ไลบรารี OCR แบบดั้งเดิมคาดหวัง JPEG/PNG ทำให้ต้องทำขั้นตอนแปลงแยกที่อาจทำให้คุณภาพลดลง. การสนับสนุนโดยเนทีฟของ Aspose OCR ทำให้คุณสามารถ **extract text from HEIC** ได้ในขั้นตอนเดียว, รักษาข้อมูลพิกเซลดั้งเดิมและประหยัดการใช้ CPU. + +--- + +## ขั้นตอนที่ 3 – เปิดใช้งานภาษา(ที่ต้องการ) + +โดยค่าเริ่มต้น engine จะมองหาเฉพาะภาษาอังกฤษ. หากคุณต้องการ **convert HEIC to text** ในภาษาอื่น เพียงสลับแฟล็กที่เหมาะสม. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **ทำไมต้องเปิดใช้งานภาษาโดยเจาะจง?** +> Language packs จะโหลดตามความต้องการ. การเปิดใช้งานเฉพาะที่คุณต้องการช่วยลดการใช้หน่วยความจำและเร่งความเร็วการจดจำ. + +--- + +## ขั้นตอนที่ 4 – เรียกใช้กระบวนการจดจำ + +ตอนนี้เราจะสั่งให้ engine อ่านภาพและสร้างสตริง. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**ผลลัพธ์ที่คาดหวัง** (สมมติว่าภาพมีข้อความ “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +หากภาพว่างหรือข้อความไม่สามารถอ่านได้, engine จะคืนค่า `false` และคุณจะเห็นข้อความสำรอง. + +--- + +## ขั้นตอนที่ 5 – การจัดการกรณีขอบและคำถามทั่วไป + +### ถ้าไฟล์ HEIC เสียหายจะทำอย่างไร? + +Aspose OCR จะโยน `IOException` เมื่อไม่สามารถถอดรหัสคอนเทนเนอร์ได้. ให้ห่อการเรียกในบล็อก `try‑catch` และบันทึกข้อผิดพลาดเพื่อการตรวจสอบในภายหลัง. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### ฉันสามารถประมวลผลไฟล์ HEIC หลายไฟล์ในแบบแบตช์ได้หรือไม่? + +ได้เลย. เพียงวนลูปผ่านไดเรกทอรีและใช้อินสแตนซ์ `OcrEngine` เดียวกันเพื่อหลีกเลี่ยงการเริ่มต้นซ้ำหลายครั้ง. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### วิธีนี้ยัง **convert HEIC to text** สำหรับสคริปต์ที่ไม่ใช่ละตินได้หรือไม่? + +ใช่—Aspose OCR รองรับ Arabic, Chinese, Cyrillic และหลายภาษาอื่น. เพียงเปิดใช้งานแฟล็กภาษาที่สอดคล้อง (เช่น `engine.getLanguage().setChineseSimplified(true);`). จำไว้ว่าให้เพิ่มไฟล์ฟอนต์ที่เหมาะสมหากคุณรันบนเซิร์ฟเวอร์แบบ headless. + +--- + +## ขั้นตอนที่ 6 – ตรวจสอบผลลัพธ์ด้วยโปรแกรม + +ในไพพ์ไลน์การผลิตคุณมักต้องยืนยันว่าผลลัพธ์ OCR ตรงตามเกณฑ์คุณภาพบางอย่าง. วิธีง่ายคือคำนวณคะแนนความมั่นใจ (มีในเวอร์ชันใหม่) หรือเพียงตรวจสอบความยาวของสตริงที่คืนค่า. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## ตัวอย่างการทำงานเต็มรูปแบบ + +ด้านล่างเป็นคลาส Java ที่พร้อมรันครบถ้วนซึ่งรวมทุกขั้นตอนข้างต้น. คัดลอกไปไฟล์ชื่อ `HeifExample.java`, ปรับเส้นทางไปยังไฟล์ HEIC ของคุณ, แล้วรัน `javac` + `java` ตามปกติ. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +คุณควรเห็นสตริงที่ดึงออกมาพิมพ์บนคอนโซล, ยืนยันว่าคุณได้ **convert HEIC to text** สำเร็จแล้ว. + +--- + +## สรุป + +เราได้อธิบายทุกอย่างที่คุณต้องการเพื่อ **extract text from HEIC** ด้วย Aspose OCR ใน Java. ตั้งแต่การเพิ่มไลบรารีจนถึงการจัดการกรณีขอบ, คู่มือนี้แสดงวิธีแก้ไขขั้นตอนเดียวที่ลบความจำเป็นของยูทิลิตี้แปลงแยก. + +ตอนนี้คุณสามารถ: + +- **Convert HEIC to text** แบบเรียลไทม์ในเว็บเซอร์วิส, backend มือถือ, หรืองานแบตช์. +- ขยายการสนับสนุนไปยังภาษาอื่นด้วยการตั้งค่าบรรทัดเดียว. +- ขยายกระบวนการโดยใช้ `OcrEngine` เดียวกันสำหรับหลายไฟล์. + +ขั้นตอนต่อไปคุณอาจสำรวจ **การฝังผล OCR ลงในดัชนีที่ค้นหาได้** (เช่น Elasticsearch) หรือ **การเพิ่มการประมวลผลภาพล่วงหน้า** เพื่อเพิ่มความแม่นยำบนภาพ HEIC ที่คอนทราสต์ต่ำ. ไม่มีขีดจำกัด—ทดลอง, วัดผล, และทำซ้ำ. + +มีคำถามหรือเจอไฟล์ HEIC ที่ยากต่อการประมวลผล? แสดงความคิดเห็นด้านล่าง, และขอให้สนุกกับการเขียนโค้ด! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/turkish/java/advanced-ocr-techniques/_index.md b/ocr/turkish/java/advanced-ocr-techniques/_index.md index fe9ccf330..099c67a03 100644 --- a/ocr/turkish/java/advanced-ocr-techniques/_index.md +++ b/ocr/turkish/java/advanced-ocr-techniques/_index.md @@ -61,9 +61,16 @@ Aspose.OCR for Java ile metin tanımanın gücünü ortaya çıkarın. Sorunsuz Hassas metin tanıma için Java uygulamalarınızı Aspose.OCR ile güçlendirin. Kolay entegrasyon, yüksek doğruluk. ### [Aspose.OCR'da İzin Verilen Karakterleri Belirleme](./specify-allowed-characters/) Aspose.OCR for Java ile görüntülerden metin çıkarmanın kilidini sorunsuz bir şekilde açın. Verimli entegrasyon için adım adım kılavuzumuzu izleyin. +### [Java OCR için GPU'yu Etkinleştirme – Tam Kılavuz](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Java OCR'da GPU desteğini etkinleştirerek yüksek performanslı metin tanıma elde edin. Adım adım kılavuz. +### [Java'da Paralel OCR için Sabit İş Parçacığı Havuzu Oluşturma](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Java'da paralel OCR işlemleri için sabit iş parçacığı havuzu oluşturarak performansı artırın. Adım adım kılavuz. +### [Java'da OCR Doğruluğunu Artırma – Tam Aspose OCR Kılavuzu](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Java projelerinizde OCR doğruluğunu artırmak için adım adım tam kılavuz. Aspose OCR ile yüksek hassasiyet elde edin. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/turkish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/turkish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..4aba64672 --- /dev/null +++ b/ocr/turkish/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-05-03 +description: Java’da sabit bir iş parçacığı havuzu oluşturarak görüntülerden metni + hızlıca çıkarın. OCR nasıl çalıştırılır, görüntüyü metne dönüştürür ve paralel OCR + işleme ile performansı nasıl artırırsınız öğrenin. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: tr +og_description: Java'da sabit bir iş parçacığı havuzu oluşturarak görüntülerden metni + hızlıca çıkarın. OCR nasıl çalıştırılır, görüntüyü metne dönüştürür ve paralel OCR + işleme ile performansı nasıl artırırsınız öğrenin. +og_title: Java'da Paralel OCR için Sabit İş Parçacığı Havuzu Oluştur +tags: +- Java +- OCR +- Multithreading +title: Java'da Paralel OCR için Sabit İş Parçacığı Havuzu Oluştur +url: /tr/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Paralel OCR için Sabit İş Parçacığı Havuzu Oluşturma (Java) + +**Sabit iş parçacığı havuzu** oluşturup OCR görevlerini hızlandırmanız gerektiğinde nereden başlayacağınızı bilemediğiniz oldu mu? Yalnız değilsiniz. Görüntü‑ağırlıklı birçok projede darboğaz tek iş parçacıklı OCR çağrısıdır ve çözüm şaşırtıcı derecede basittir: bir çalışan iş parçacığı havuzu oluşturun ve dosyaları paralel olarak işleyin. + +Bu öğreticide **görüntülerden metin çıkarma** işlemini Aspose OCR kullanarak, **OCR çalıştırma** verimliliğini ve **görüntüyü metne dönüştürme** işlemini CPU’nuzu zorlamadan nasıl yapacağınızı öğreneceksiniz. Sonunda, birkaç örnek resim üzerinde **paralel OCR işleme** gösteren çalıştırmaya hazır bir Java programına sahip olacaksınız. + +## Ne Oluşturacaksınız + +Küçük bir konsol uygulaması oluşturacağız: + +* Görüntü yollarının (PNG, JPG, TIFF, BMP) bir listesini okur. +* **CPU çekirdek sayısına** göre **sabit bir iş parçacığı havuzu** oluşturur. +* Her görüntü için bir OCR görevi gönderir. +* Tanınan metni toplar ve konsola yazdırır. +* Executor’ı temiz bir şekilde kapatır. + +Harici derleme araçları, süslü framework’ler yok—sadece saf Java ve Aspose OCR kütüphanesi. Java 8+ ve bir IDE’niz varsa hazırsınız. + +## Ön Koşullar + +* **Java Development Kit (JDK) 8 veya daha yeni** – kod lambda kullandığı için eski sürümler derlenmez. +* **Aspose OCR for Java** – JAR dosyasını Aspose web sitesinden indirin veya Maven ile ekleyin (`com.aspose:aspose-ocr`). +* Birkaç test görüntüsü içeren bir klasör (kod `YOUR_DIRECTORY` konumuna işaret eder). +* Java eşzamanlılığına temel aşinalık (gerisini açıklayacağız). + +> *İpucu:* Maven kullanıyorsanız, bağımlılığı `pom.xml` dosyanıza ekleyin ve IDE’nin sınıf yolunu yönetmesine izin verin. + +--- + +## Adım 1: Gerekli İçe Aktarmaları Ekleyin + +İlk olarak, ihtiyacımız olan sınıfları kapsam içine alalım. Bu sadece bir şablon değildir; her bir import JVM’e OCR motorunu, görüntü işleme yardımcılarını ve **sabit iş parçacığı havuzu** oluşturmayı sağlayan eşzamanlılık araçlarını nereden bulacağını söyler. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – temel OCR API’si. +* `java.util.*` – görüntü yolları ve sonuçları depolamak için koleksiyonlar. +* `java.util.concurrent.*` – `ExecutorService` ve `Future` gibi sınıfları barındıran eşzamanlılık paketi. + +--- + +## Adım 2: İşlenecek Görüntüleri Tanımlayın + +Şimdi **görüntülerden metin çıkarma** istediğimiz dosyaları listeleyelim. `Arrays.asList` kullanımı kodu kısa tutar ve mantıksal olarak kendi klasörünüzü eklemenize izin verir. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Daha fazla giriş eklemekten çekinmeyin; iş parçacığı havuzu CPU çekirdek sayınıza göre otomatik olarak ölçeklenecektir. + +--- + +## Adım 3: **CPU Çekirdeklerine Uygun Sabit İş Parçacığı Havuzu** Oluşturun + +İşte öğreticinin kalbi. Çalışma zamanına kaç çekirdek bulunduğunu sorar ve `Executors` fabrikasından tam bu sayı kadar bir havuz isteriz. Neden sabit? Çünkü öngörülebilir bir iş parçacığı sayısı, işletim sistemini kaynak sıkıntısına sürükleyen “iş parçacığı patlamasını” önler. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` mantıksal çekirdek sayısını (hiper‑iş parçacıkları dahil) döndürür. +* `newFixedThreadPool(coreCount)` CPU kapasitesini aşmayacağımızı garanti eder; bu da **paralel OCR çalıştırma** için en güvenli yoldur. + +--- + +## Adım 4: Her Görüntü İçin Bir OCR Görevi Gönderin + +Şimdi her dosya yolunu **OCR çalıştıran**, metni tanıyan ve sonucu döndüren bir callable’a dönüştürelim. Lambda içinde yeni bir `OcrEngine` örneği oluşturduğumuza dikkat edin—bu, motor durumunun iş parçacığı güvenli olmayan paylaşımını önler. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Her `submit` çağrısı lambda’yı havuza verir, havuz boş bir iş parçacığında çalıştırır. +* `Future` nesneleri, tanınan metni daha sonra almanıza olanak tanır; gerekirse sıralamayı korur. + +--- + +## Adım 5: Tanınan Metni Alın ve Görüntüleyin + +Tüm görevler kuyruğa alındıktan sonra, `Future` listesi üzerinde döngü kurup `get()` çağrısı yaparız; bu, her OCR işi bitene kadar bloklanmamızı sağlar. İşte **görüntüyü metne dönüştürme** adımının size görünür hâle geldiği yer: `engine.getText()` çağrısı ham dizeyi döndürür. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Tipik konsol çıktısı şöyle görünür: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Bir dosya başarısız olursa (örneğin bozuksa), `Failed:` ile başlayan ve ardından yol gelen bir satır görürsünüz—hızlı hata ayıklama için kullanışlıdır. + +--- + +## Adım 6: Executor Servisini Temizleyin + +Havuzu kapatmayı asla unutmayın; aksi takdirde JVM hâlâ çalışıyor olduğunu düşünerek kapanmayabilir. Zarif bir kapatma, çalışan görevlerin süreci sonlandırmadan önce bitmesini sağlar. + +```java +executor.shutdown(); +``` + +Zaman aşımı uygulamanız gerekiyorsa `awaitTermination` da çağırabilirsiniz, ancak çoğu komut‑satırı aracında basit bir `shutdown()` yeterlidir. + +--- + +## Tam Çalışan Örnek + +Aşağıda eksiksiz, çalıştırmaya hazır program yer alıyor. `ParallelOcrTutorial.java` adlı bir dosyaya kopyalayıp yapıştırın, görüntü yollarını ayarlayın ve normal şekilde `javac` + `java` komutlarıyla çalıştırın. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Beklenen sonuç:** her görüntünün metin içeriği konsola, `imagePaths` listesindeki aynı sırayla yazdırılır. İşlenemeyen bir görüntü varsa, boş satır yerine bir hata bildirimi görürsünüz. + +--- + +## Yaygın Sorular & Kenar Durumları + +### Daha fazla görüntüm olduğunda iş parçacıklarından az kalırsa ne olur? + +Sabit iş parçacığı havuzu fazla görevleri otomatik olarak kuyruğa alır. Bir iş parçacığı mevcut OCR görevini bitirdiğinde bir sonraki görevi alır. Bu kuyruklama davranışı **paralel OCR işleme** nin özüdür—CPU’yu aşırı yüklemeden maksimum verim elde edersiniz. + +### Dili değiştirebilir miyim? + +Kesinlikle. `engine.getLanguage().setEnglish(true);` satırını uygun dil bayrağıyla değiştirin; örneğin `setFrench(true)` ya da `recognize()` öncesinde birden fazla dil etkinleştirmek için birkaç setter çağırın. + +### Çok büyük görüntülerle nasıl başa çıkılır? + +Büyük dosyalar iş parçacığı başına çok bellek tüketebilir. `OutOfMemoryError` alırsanız, motoru beslemeden önce görüntüyü küçültmeyi ya da `-Xmx` ile yığın boyutunu artırmayı düşünün. Başka bir yaklaşım **cached thread pool** kullanmaktır (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/turkish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/turkish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..d2f2fcfd5 --- /dev/null +++ b/ocr/turkish/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-05-03 +description: Java OCR için GPU'yu hızlıca nasıl etkinleştirirsiniz – Aspose OCR ile + görüntülerden metin çıkarmayı öğrenin. Tam Java OCR öğreticisi dahil. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: tr +og_description: Dakikalar içinde Java OCR için GPU'yu nasıl etkinleştirirsiniz. Bu + öğretici, GPU hızlandırmalı bir Java OCR öğreticisi kullanarak görüntülerden metin + çıkarmayı gösterir. +og_title: Java OCR için GPU'yu nasıl etkinleştirirsiniz – Adım Adım Kılavuz +tags: +- Java +- OCR +- GPU +- Aspose +title: Java OCR için GPU'yu nasıl etkinleştirirsiniz – Tam Kılavuz +url: /tr/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Java OCR için GPU'yu nasıl etkinleştirirsiniz – Tam Kılavuz + +Bir resimden metin çıkarmaya çalışırken **how to enable gpu**'yi merak ettiniz mi? Yüksek çözünürlüklü bir tarama üzerinde OCR çalıştırmanız gerektiğinde CPU'nun durma noktasına geldiğini hissettiyseniz, yalnız değilsiniz. Bu rehberde, sadece metin çıkarmayı göstermekle kalmayıp aynı zamanda deneysel GPU desteğini açarak **recognize text image java**‑stilinde en hızlı yolu gösteren bir **java ocr tutorial** üzerinden geçeceğiz. + +GPU desteğini etkinleştirerek metin tanıma sürecini hızlandıracağız, bir örnek görüntü yükleyecek ve sonunda tanınan dizeyi dosyadan alacağız. Sonunda, herhangi bir Maven projesine ekleyebileceğiniz çalıştırmaya hazır bir kod parçacığına sahip olacaksınız ve GPU'nun neden önemli olduğunu, ne zaman yardımcı olmayabileceğini ve yaygın sorunları nasıl gidereceğinizi anlayacaksınız. Harici belgelere gerek yok—gereken her şey burada. + +--- + +## Gereksinimler + +- **Java Development Kit (JDK) 8+** – kod, modern bir JDK üzerinde çalışır. +- **Maven** (veya Gradle) – Aspose OCR bağımlılığını çekmek için. +- **GPU‑uyumlu bir makine** (CUDA‑destekli NVIDIA kartı en iyisidir, ancak Aspose API'si sorunsuz bir şekilde geri düşer). +- Örnek bir görüntü, ör. `sample-highres.png`, referans alabileceğiniz bir klasöre yerleştirilmiş. +- **image to text conversion java** tekniklerine dair bir tutam merak. + +Bu öğelerden birine sahip değilseniz, Oracle veya OpenJDK'dan JDK'yı indirin, Maven'ı kurun ve grafik sürücünüzün güncel olduğundan emin olun. Hazırlık bu kadar; geri kalan tamamen Java. + +--- + +## Adım 1: Aspose OCR'yi Projenize Ekleyin + +İlk olarak OCR motoruna ihtiyacımız var. Aspose temiz bir Maven artefaktı sunar; bu kod parçacığını `pom.xml` dosyanıza ekleyin: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Gradle tercih ediyorsanız eşdeğeri şudur: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Bağımlılık çözüldükten sonra `OcrEngine`, `ImageStream` ve **java ocr tutorial**'ı sorunsuz hâle getiren dil yardımcılarına erişebileceksiniz. + +--- + +## Adım 2: GPU'yu Nasıl Etkinleştirirsiniz (Anahtar Kelime Eylemde) + +Şimdi konunun özüne geliyoruz: OCR motoru için **how to enable gpu**. Aspose API'si tek bir boolean bayrağı sunar—`setUseGpu(true)`. Deneysel bir özellik olsa da, yeterli bir grafik kartı üzerinde tanıma süresinin özellikle büyük, yüksek çözünürlüklü görüntülerde dramatik şekilde azaldığını göreceksiniz. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Pro ipucu:** Ortamınız uyumlu bir GPU içermiyorsa, bayrak sessizce yok sayılır ve motor CPU moduna geri döner. Çökme olmaz, sadece performans yavaşlar. + +--- + +## Adım 3: İşlemek İstediğiniz Görüntüyü Yükleyin + +OCR motoru bir `ImageStream` ile çalışır. Görüntüyü, resmi düz metne dönüştürmek istediğiniz dosyaya yönlendirin. İşte kompakt bir yol: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Yolun mutlak ya da projenizin çalışma dizinine göre göreli olduğundan emin olun. Dosya bulunamazsa `IOException` alırsınız—bunu daha sonra yakalayacağız. + +--- + +## Adım 4: Dili Seçin (İsteğe Bağlı ama Tavsiye Edilir) + +Aspose OCR birçok alfabeyi destekler, ancak hangi dili beklediğinizi belirtmelisiniz. İngilizce için tek satır: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Fransızca veya Çince gibi diller gerekiyorsa, bayrağı (`setFrench(true)`, `setChineseSimplified(true)` vb.) değiştirmeniz yeterlidir. Bu küçük ipucu, motorun olası olmayan karakter adaylarını eleyebilmesi sayesinde doğruluğu artırır. + +--- + +## Adım 5: Recognize Text Image Java – Motoru Çalıştırın + +Şimdi gerçek an geliyor: **recognize text image java** stili. `recognize()` metodunu çağırıyoruz ve eğer `true` dönerse, sonucu `getText()` ile alıyoruz. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +Çıktı, `sample-highres.png` dosyasından çıkarılan ham metin olacaktır. Temiz bir belge için dizeyi (boşlukları kırpma, satır sonlarını değiştirme vb.) sonradan işlemek isteyebilirsiniz. İşte hızlı bir örnek: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Adım 6: Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +Aşağıda doğrudan derleyip çalıştırabileceğiniz eksiksiz bir **java ocr tutorial** yer alıyor. Hata yönetimi içerir ve beklenen çıktıyı yazdırır. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Beklenen çıktı (örnek):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Görüntü birden fazla satır içeriyorsa, satır sonu karakterleri (`\n`) ile ayrılmış olarak görünecek. Motor, orijinal düzeni mümkün olduğunca korur. + +--- + +## Adım 7: Kenar Durumları, İpuçları ve Yaygın Sorular + +### GPU Algılanmazsa Ne Olur? + +Aspose, uyumlu bir cihaz bulamadığında GPU desteğini sessizce devre dışı bırakır. Başlatmadan sonra bayrağı kontrol ederek modu doğrulayabilirsiniz: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Eğer `false` yazdırıyorsa, sürücü sürümünüzü ve `CUDA` çalışma zamanının `PATH` içinde olduğundan emin olun. + +### Küçük Görüntülerde GPU Yardımcı Olur mu? + +Her zaman değil. Küçük bir bitmap'i GPU'ya aktarma maliyeti, hız kazancını aşabilir. 500 KB altındaki görüntülerde hafif bir yavaşlama görebilirsiniz. Bu durumlarda sadece `setUseGpu(false)` ayarlayın. + +### Çok‑dilli Belgeler Nasıl Ele Alınır? + +Birden fazla dili aynı anda etkinleştirebilirsiniz: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Motor, her iki setten de karakter eşleştirmeye çalışır; bu, iki dilli PDF'ler için kullanışlıdır. + +### PDF'leri Doğrudan İşleyebilir miyim? + +Aspose OCR, görüntü akışlarıyla çalışır; bu nedenle önce her PDF sayfasını rasterleştirmeniz gerekir (ör. Aspose PDF veya PDFBox ile) ve ardından elde edilen `BufferedImage`'ı `setImage` metoduna beslemelisiniz. + +--- + +## Görsel Özet + +![Java OCR motoru için GPU'yu nasıl etkinleştireceğiniz](/images/gpu-ocr.png "GPU hızlandırmalı OCR hattını gösteren diyagram") + +*Diyagram, görüntü yüklemeden → GPU‑destekli OCR → metin çıkarımına kadar olan akışı gösterir.* + +--- + +## Sonuç + +**how to enable gpu**'yu bir Java OCR iş akışı için nasıl etkinleştireceğimizi, tam bir **java ocr tutorial** üzerinden yürüttük ve **image to text conversion java**'yı pratik bir kopyala‑yapıştır örneğiyle gösterdik. Tek bir bayrağı değiştirerek büyük taramaların işleme süresinden saniyeler—hatta dakikalar—kısaltabilir, uygulamalarınızın daha akıcı ve yanıt verir hâle gelmesini sağlayabilirsiniz. + +Sırada ne var? Görüntüleri bir döngüde toplu olarak işleyin, farklı dillerle deney yapın veya Apache Tika ile birleştirerek çıkarılan metni otomatik olarak indeksleyin. GPU‑hızlandırmalı OCR'yi diğer Java kütüphaneleriyle birleştirdiğinizde sınır yoktur. + +**how to extract text**'den zor görüntülerle ilgili sorularınız mı var, ya da **recognize text image java** püf noktalarını daha fazla öğrenmek mi istiyorsunuz? Aşağıya yorum bırakın, iyi kodlamalar! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/turkish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/turkish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..8db166ce5 --- /dev/null +++ b/ocr/turkish/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,260 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java kullanarak OCR doğruluğunu hızlıca artırın. OCR için + görüntüyü nasıl yükleyeceğinizi, dilleri nasıl etkinleştireceğinizi ve birkaç adımda + agresif yazım düzeltmesi uygulamayı öğrenin. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: tr +og_description: Aspose OCR Java ile OCR doğruluğunu anında artırın. Bu kılavuz, OCR + için görüntünün nasıl yükleneceğini, dilleri nasıl etkinleştireceğinizi ve agresif + yazım düzeltmesini nasıl kullanacağınızı gösterir. +og_title: Java'da OCR Doğruluğunu Artırın – Adım Adım Aspose OCR Öğreticisi +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Java'da OCR Doğruluğunu Artırın – Tam Aspose OCR Rehberi +url: /tr/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Java'da OCR Doğruluğunu Artırma – Tam Aspose OCR Rehberi + +Hiç merak ettiniz mi OCR sonuçlarınızın bir çocuğun el yazısına benzemesinin nedenini? Eğer eksik harfler, yanlış kelimeler ya da tamamen anlamsız metinlerle mücadele ediyorsanız, yalnız değilsiniz. **OCR doğruluğunu artır** çoğu geliştiricinin metin çıkarımı güvenilir olmadığında ilk başvurduğu şeydir. + +Bu öğreticide, yalnızca **load image for OCR** yapmakla kalmayıp aynı zamanda Aspose'un yerleşik yazım‑düzeltme motorunu kullanarak kaliteyi artıran pratik bir çözümü adım adım inceleyeceğiz. Sonunda, İngilizce + Fransızca metni agresif düzeltme ile tanıyan, çalıştırmaya hazır bir Java programına sahip olacaksınız—harici sözlükler gerekmez. + +## Öğrenecekleriniz + +- Aspose'un `ImageStream`'ini kullanarak **load image for OCR** nasıl yapılır. +- Doğru dilleri etkinleştirmenin doğruluk üzerindeki önemi. +- Çok dilli belgelerde agresif yazım düzeltmenin etkisi. +- Herhangi bir Maven/Gradle projesine ekleyebileceğiniz tam, çalıştırılabilir kod örneği. +- İpuçları, tuzaklar ve bu yaklaşımı ölçeklendirmek için sonraki adım fikirleri. + +> **Önkoşullar** – Java 8 veya daha yeni, güncel bir Aspose.OCR for Java JAR (v23.12 veya sonrası) ve İngilizce ve Fransızca metin içeren bir görüntü dosyası (`multilingual.png`). Hepsi bu—ekstra model veya API gerekmez. + +--- + +## OCR Doğruluğunu Artırma: Aspose OCR Motorunu Yapılandırma + +Herhangi bir OCR hattının kalbi motor yapılandırmasıdır. Aspose'a tam olarak ne beklediğinizi söyleyerek, işlerin doğru çıkması için ona bir şans vermiş olursunuz. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Neden önemli:** +- **Engine instance** – `OcrEngine` tüm ayarları tutar; yeni bir tane oluşturmak, önceki çalışmalardan durum sızıntısını önler. +- **Image loading** – `ImageStream.fromFile` kullanmak, **load image for OCR** için en basit yoldur. PNG, JPEG, BMP ve TIFF'ı kutudan çıkar çıkmaz destekler. +- **Language flags** – İngilizce + Fransızca'yı açmak, tanıyıcıya uygun karakter setlerini ve dil modellerini kullanmasını söyler; bu tek başına doğruluğu %10‑15 artırabilir. +- **Aggressive spell correction** – `SpellCorrectionLevel.AGGRESSIVE` ayarı, iç sözlüğü şüpheli kelimeleri yeniden yazmaya zorlar; gürültülü taramalarda **OCR doğruluğunu artır**manız gerektiğinde kilit bir etkendir. + +--- + +## OCR için Görüntü Yükleme – Kaynak Dosyayı Ayarlama + +Motor bir şey yapmadan önce bir bitmap'e ihtiyaç duyar. Eğer bozuk bir akış ya da yanlış bir yol verirseniz, “null pointer” demeden bir istisna alırsınız. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Pro ipucu:** Kullanıcılar tarafından yüklenen görüntüleri işliyorsanız, yükleme mantığını bir try‑catch bloğuna sarın ve önce dosya boyutunu/formatsını doğrulayın. Bu, motorun büyük PDF'lerde ya da desteklenmeyen formatlarda takılmasını önler. + +--- + +## Daha İyi Tanıma İçin Çoklu Dilleri Etkinleştirme + +Çoğu OCR kütüphanesi varsayılan olarak sadece İngilizce'yi destekler. Belgeniz birden fazla dil içerdiğinde, hatalı tanınan karakterlerde bir artış görürsünüz. Aspose, ek dilleri açmayı sorunsuz hale getirir. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Neden birden fazla dil etkinleştirilmeli?** +- **Character set expansion** – Fransızca, “é” ve “ç” gibi aksanlı harfler içerir. Fransızca bayrağı olmadan, bunlar “e” veya “c” olur ve daha sonra yazım‑düzelticiyi karıştırır. +- **Contextual hints** – OCR motoru, kelime sınırlarını tahmin etmek için dil modellerini kullanır; iki dilli bir model yanlış bölünmeleri azaltır. + +--- + +## Agresif Yazım Düzeltme Uygulama + +Yazım düzeltme sadece “iyi bir özellik” değildir; düşük kalite taramalarda **OCR doğruluğunu artır**manız gerektiğinde oyunu değiştiren bir özelliktir. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Seviyelere Genel Bakış + +| Seviye | Davranış | +|------------|----------------------------------------------| +| **NONE** | Düzeltme yok – yalnızca ham motor çıktısı. | +| **LIGHT** | Açık hataları düzeltir, aşırı düzeltme riski düşük. | +| **AGGRESSIVE** | Sözlük aramalarını agresif şekilde uygular; gürültülü görüntüler için en iyisi. | + +**Uyarı:** Agresif mod, gerçek özel isimleri yeniden yazabilir (ör. “McDonald” → “Mcdonald”). Alanınızda çok sayıda isim varsa, bir son‑işlem filtresi düşünün. + +--- + +## Tanıma Çalıştırma ve Çıktıyı Doğrulama + +Her şey ayarlandığına göre, Aspose'un ağır işi yapmasına zaman. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Beklenen çıktı (örnek) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Eğer bunun yerine anlamsız karakterler görürseniz, iki kez kontrol edin: + +1. Görüntü kalitesi (bulanık veya düşük dpi görüntüler doğruluğu azaltır). +2. Dil bayrakları – Fransızca eksikse aksanlar kaybolur. +3. Yazım‑düzeltme seviyesi – aşırı düzeltme fark ederseniz `LIGHT` deneyin. + +--- + +## Tam Çalışan Örnek (Tüm Adımlar Tek Dosyada) + +Aşağıda doğrudan derleyip çalıştırabileceğiniz tam program bulunmaktadır. `SpellCorrectionTutorial.java` olarak kaydedin, görüntü yolunu ayarlayın ve `javac && java` ile çalıştırın. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Derle & çalıştır: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Konsolda düzeltilmiş çok dilli metnin yazdırıldığını görmelisiniz. + +--- + +## Yaygın Tuzaklar ve Nasıl Kaçınılır + +| Semptom | Muhtemel Neden | Çözüm | +|---------|----------------|-------| +| **Blank output** | Görüntü yolu yanlış veya dosya okunamıyor | `ImageStream.fromFile` yolunu doğrulayın; dosya varlığı kontrolü ekleyin. | +| **Missing accents** | Fransızca dili etkinleştirilmemiş | `ocrEngine.getLanguage().setFrench(true)` çağırın. | +| **Garbage characters** | Düşük çözünürlüklü görüntü (< 150 dpi) | Yüksek DPI ile yeniden ölçeklendirin veya tarayın; görüntü‑iyileştirme kütüphaneleriyle ön işleme düşünün. | +| **Over‑corrected names** | Proper nouns üzerinde agresif yazım düzeltmesi | Bilinen isimlerin beyaz listesiyle son‑işlem yapın veya `LIGHT` seviyesine geçin. | + +--- + +## Sonraki Adımlar: OCR Hattınızı Ölçeklendirme + +- **Batch processing:** Görüntülerin bulunduğu bir dizini döngüye alarak, performans için tek bir `OcrEngine` örneğini yeniden kullanın. +- **PDF extraction:** Her sayfayı bir görüntüye dönüştürmek için Aspose.PDF kullanın, ardından OCR motoruna besleyin. +- **Custom dictionaries:** Alanınız özel terminoloji (tıbbi, hukuki) kullanıyorsa, `ocrEngine.getSpellCorrector().addUserDictionary(...)` ile özel bir kelime listesi ekleyin. +- **Parallelism:** Java’nın `ForkJoinPool`u birden fazla OCR görevini eşzamanlı çalıştırabilir, ancak her motorun görüntü tamponları tuttuğunu unutmayın; bellek kullanımına dikkat edin. + +--- + +![Improve OCR accuracy example](/images/ocr-example.png){alt="OCR doğruluğunu artırma ekran görüntüsü, düzeltilmiş çok dilli metni gösteriyor"} + +--- + +## Sonuç + +Şimdi **OCR'yi geliştirdik**. + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/turkish/java/ocr-operations/_index.md b/ocr/turkish/java/ocr-operations/_index.md index 802843c9e..dadf1f1e6 100644 --- a/ocr/turkish/java/ocr-operations/_index.md +++ b/ocr/turkish/java/ocr-operations/_index.md @@ -80,6 +80,10 @@ Aspose.OCR ile Java'da OCR gücünü açığa çıkarın. PDF belgelerinde metni Aspose.OCR ile Java'da güçlü metin tanımanın kilidini açın. TIFF görüntülerinde metni sorunsuz bir şekilde tanıyın. Kesintisiz bir OCR deneyimi için şimdi indirin. ### [Aspose OCR ile Görüntü Metni Tanıma – Tam Java OCR Öğreticisi](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Java'da Aspose OCR kullanarak görüntüden metin tanıma sürecini adım adım öğrenin. +### [Aspose OCR Java Örneği: Bölgeden Metin Çıkarma](./aspose-ocr-java-example-extract-text-from-a-region/) +Java'da Aspose OCR ile belirli bir bölgeden metin çıkarma örneği. +### [HEIC'den Metin Çıkarma – Tam Java Kılavuzu](./extract-text-from-heic-complete-java-guide/) +Java'da Aspose.OCR kullanarak HEIC görüntülerinden metin çıkarma sürecini adım adım öğrenin. ## Sıkça Sorulan Sorular diff --git a/ocr/turkish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/turkish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..eeb500e08 --- /dev/null +++ b/ocr/turkish/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,173 @@ +--- +category: general +date: 2026-05-03 +description: Aspose OCR Java örneği, OCR için görüntüyü nasıl yükleyeceğinizi ve sadece + birkaç satır kodla bir bölgeden metin nasıl çıkarılacağını gösterir. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: tr +og_description: Aspose OCR Java örneği, OCR için bir görüntünün yüklenmesini ve belirli + bir bölgeden metin çıkarılmasını gösterir; fatura işleme için mükemmeldir. +og_title: Aspose OCR Java Örneği – Bölge Metni Çıkarma +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Aspose OCR Java Örneği: Bir Bölgeden Metin Çıkarma' +url: /tr/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java Örneği: Bir Bölgeden Metin Çıkarma + +Bir görüntüden sadece ihtiyacınız olan kısmı almanızı sağlayan bir **Aspose OCR Java örneği** mi arıyorsunuz? Bu rehberde **OCR için bir görüntü yüklemeyi** ve **bir bölgeden metin çıkarmayı** adım adım inceleyeceğiz; fatura numaraları, form alanları veya daha büyük bir resmin içinde gizli herhangi bir veri parçası için mükemmeldir. + +Neden OCR'ı tüm sayfayı taramak yerine bir dikdörtgene sınırlayacağınızı merak ediyor olabilirsiniz. Kısa cevap: hız ve doğruluk. Motor yalnızca tanımlı bir dilimi incelediğinde alakasız gürültüyü atlar, daha hızlı çalışır ve genellikle daha temiz sonuçlar üretir. Bu öğreticinin sonunda, tam da bunu yapan, yeni başlayanların sıkça takıldığı yaygın tuzaklardan kaçınmak için birkaç ipucu içeren bağımsız bir Java programına sahip olacaksınız. + +## Gereksinimler + +- **Java Development Kit (JDK) 11** veya daha yeni bir sürüm kurulu olmalı. +- **Aspose.OCR for Java** kütüphanesi (en son JAR dosyasını Maven Central deposundan veya Aspose indirme portalından alabilirsiniz). +- Okumak istediğiniz metni içeren bir görüntü dosyası – demo için `invoice.png` dosyasını kullanacağız; bu dosya fatura numarasını sağ‑üst köşeye yakın bir yerde tutar. +- Sevdiğiniz bir IDE veya basit bir metin editörü ve bir terminal; herhangi bir derleme aracı (Maven, Gradle veya düz `javac`) işinizi görecektir. + +Hepsi bu. Ek OCR motorları, yerel ikili dosyalar yok; sadece saf Java ve Aspose. + +![Aspose OCR Java örnek ekran görüntüsü](/images/aspose-ocr-java-example.png "Aspose OCR Java örneği bölge çıkarımını gösteriyor") + +## Aspose OCR Java Örneği – OCR Motorunu Başlatma + +Her OCR iş akışının ilk ihtiyacı bir motor örneğidir. Aspose, görüntü yüklemeden dil seçimine kadar her şeyi yöneten hafif bir `OcrEngine` sınıfı sunar. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Neden önemli:** Motoru önceden oluşturmak, yapılandırılacak temiz bir nesne sağlar. Bir toplu işlem yapıyorsanız aynı `OcrEngine`i birden fazla görüntüde yeniden kullanabilirsiniz; bu bellek ve başlatma süresinden tasarruf eder. + +## OCR için Görüntü Yükleme + +Şimdi motorun tarayacağı resmi belirtelim. Aspose, düşük seviyeli `FileInputStream` kalıbını soyutlayan `ImageStream.fromFile` yardımcı metodunu sağlar. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**İpucu:** `YOUR_DIRECTORY` ifadesini `invoice.png` dosyanızı sakladığınız mutlak ya da göreli yol ile değiştirin. Dosya bulunamazsa Aspose bir `IOException` fırlatır; üretim kodunda bunu bir try‑catch bloğuna almanız iyi olur. + +## Bir Bölge Tanımlama ve Metin Çıkarma + +Şimdi gösterinin yıldızı geliyor: motorun nerede bakacağını belirten dikdörtgen. `java.awt.Rectangle` yapıcı metodu `(x, y, width, height)` alır – tüm ölçüler piksel cinsindendir. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Nasıl çalışır:** `setRegion` çağrısıyla OCR taramasını, sol kenardan 120 piksel, üstten 250 piksel başlayan ve 300 piksel genişliğinde bir dilime sınırlarsınız. Bu sayıları kendi düzeninize göre ayarlayın; hızlı bir yol, piksel koordinatlarını gösteren herhangi bir grafik editöründe görüntüyü açmaktır. + +## Dili Etkinleştir ve Tanıma Çalıştır + +Aspose OCR onlarca dili destekler, ancak bir fatura numarası için sadece İngilizceye ihtiyacımız var. Doğru dili etkinleştirmek yanlış pozitifleri büyük ölçüde azaltır. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Neden sadece İngilizce etkinleştiriliyor?** OCR motoru, etkinleştirilmiş tüm dil setlerinden karakter eşleştirmeye çalışır; bu, metin sadece alfanümerik olduğunda motoru şaşırtabilir. Dil kapsamını daraltmak hem hızı hem de kesinliği artırır. + +### Beklenen Çıktı + +Her şey doğru ayarlandığında aşağıdakine benzer bir şey görmelisiniz: + +``` +Extracted region text: INV-12345 +``` + +Dikdörtgen birkaç piksel kaymışsa, çıktı bozuk ya da boş olabilir. Bu basit bir doğrulama kontrolüdür: programı çalıştırın, konsola bakın ve metnin görüntüde gördüklerinizle eşleştiğinden emin olun. + +## Kodu Çalıştır ve Çıktıyı Doğrula + +Maven kullandığınızı varsayalım, `pom.xml` dosyanıza Aspose OCR bağımlılığını ekleyin: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Derleyin ve çalıştırın: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Ya da düz `javac` tercih ediyorsanız: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +**Extracted region text** satırının konsola yazdırıldığını görmelisiniz. “OCR recognition failed” hatası alırsanız, dosya yolunu tekrar kontrol edin ve bölgenin gerçekten okunabilir karakterler içerdiğinden emin olun. + +## Kenar Durumları ve Yaygın Varyasyonlar + +| Durum | Değiştirilecek Şey | +|-----------|----------------| +| **Birden fazla dil** (ör. İngilizce + İspanyolca) | `ocrEngine.getLanguage().setSpanish(true);` ifadesini İngilizceyle birlikte çağırın. | +| **Bölge görüntü sınırları dışında** | Aspose dikdörtgeni sessizce kırpar, ancak veri kaybı yaşarsınız. `ImageInfo` (`ocrEngine.getImage().getWidth()`) kullanarak boyutları kontrol edip bölgeyi ayarlamadan önce doğrulayın. | +| **Dinamik faturalar** (farklı düzenler) | “Invoice #” gibi anahtar kelimeleri bulmak için tüm görüntüde hafif bir ön‑tarama yapıp ardından dikdörtgeni programatik olarak hesaplamayı düşünün. | +| **Yüksek DPI görüntüler** | Tarama belgelerinde daha iyi doğruluk için `ocrEngine.getImage().setResolution(300);` değerini artırın. | +| **Performans ayarı** | Gereksiz dilleri devre dışı bırakın, bölgeyi mümkün olduğunca küçük tutun ve birçok dosya arasında tek bir `OcrEngine` örneğini yeniden kullanın. | + +## Saha Deneyiminden Pro İpuçları + +- **Pro ipucu:** Sadece rakamlara (fatura numaraları için yaygın) ihtiyacınız varsa, `ocrEngine.getLanguage().setDigits(true);` ile sayısal modu etkinleştirin. Bu, alfabetik gürültüyü ortadan kaldırır. +- **Dikkat edilmesi gereken:** Şeffaf PNG'ler. Aspose bazen alfa kanalını yanlış yorumlayabilir; görüntüyü önce katı arka planlı bir JPEG'e dönüştürmek tuhaf boş çıktıları çözebilir. +- **Unutmayın:** Dikdörtgen, ekranınızdaki UI ölçeklendirmesinden değil, görüntünün yerel koordinat sistemini kullanır. Üretimde işleyeceğiniz tam dosyayla her zaman test edin. + +## Sıradaki Adımlar? + +Şimdi bölge‑tabanlı çıkarım için sağlam bir **Aspose OCR Java örneği** elde ettiğinize göre, bunu birkaç faydalı yönde genişletebilirsiniz: + +- **Toplu işleme:** Faturalar klasöründe döngü kurarak aynı `OcrEngine`i yeniden kullanın; bu, iş hacmini artırır. +- **Veri doğrulama:** Çıkarılan metni `INV-\\d{5}` gibi bir regex ile işleyerek geçerli bir fatura numarası yakaladığınızdan emin olun. +- **PDF entegrasyonu:** Aspose.PDF kullanarak çıkarılan metni orijinal belgeye geri yerleştirip denetim izleri oluşturun. +- **Bulut dağıtımı:** Kodu hafif bir REST servisine (Spring Boot) sararak diğer sistemlerin talep üzerine çağırmasını sağlayın. + +Bu adımlar aynı temel kavramları—**OCR için görüntü yükleme**, **bir bölgeden metin çıkarma** ve sonuçları işleme—kullanır; bu yüzden geçiş sorunsuz olacaktır. + +--- + +*Kodlamaktan keyif alın! Herhangi bir sorunla karşılaşırsanız, aşağıya yorum bırakın ya da topluluğun zorlayıcı düzenler için gerçek dünya ipuçlarını paylaştığı Aspose forumlarını kontrol edin.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/turkish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/turkish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..6bd40cc72 --- /dev/null +++ b/ocr/turkish/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-05-03 +description: Java'da Aspose OCR kullanarak HEIC görüntülerinden metin çıkarın. Adım + adım bir örnekle HEIC'i hızlıca metne nasıl dönüştüreceğinizi öğrenin. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: tr +og_description: Java'da Aspose OCR ile HEIC görüntülerden metin çıkarın. Bu rehber, + HEIC'yi dakikalar içinde metne nasıl dönüştüreceğinizi gösterir. +og_title: HEIC'ten Metin Çıkarma – Java OCR Öğreticisi +tags: +- OCR +- Java +- Aspose +title: HEIC'den Metin Çıkarma – Tam Java Rehberi +url: /tr/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# HEIC'ten Metin Çıkarma – Tam Java Rehberi + +Hiç **HEIC** dosyalarından metin çıkarmayı, önce JPEG ya da PNG'ye dönüştürmeden nasıl yapabileceğinizi merak ettiniz mi? Yalnız değilsiniz. Birçok geliştirici, bir mobil uygulama onlara bir `.heic` fotoğraf verdiğinde ve bu fotoğraftaki gömülü metni indeksleme ya da analiz için ihtiyaç duyduklarında bir çıkmaza takılıyor. İyi haber? Aspose OCR for Java ile **HEIC'ten metin çıkarabilir**siniz—ek bir dönüşüm adımına gerek yok. + +Bu öğreticide ayrıca **HEIC'i metne dönüştürme** işlemini tek, temiz bir pipeline içinde nasıl yapacağınızı göstereceğiz, böylece kodu herhangi bir Java projesine ekleyebilir ve bu yüksek verimli görüntülerden metin çekmeye hemen başlayabilirsiniz. + +![HEIC'ten metin çıkarma örneği](https://example.com/placeholder.png "HEIC'ten metin çıkarma örneği") + +## Öğrenecekleriniz + +- Maven/Gradle projesine Aspose OCR nasıl eklenir. +- **HEIC'ten metin çıkarma** için gereken tam Java kodu. +- Bu yaklaşımın iki adımlı `dönüştür‑sonra‑OCR` iş akışına göre neden daha hızlı ve daha az hataya açık olduğu. +- Yaygın tuzaklar (ör. eksik dil paketleri) ve bunlardan nasıl kaçınılacağı. +- Çözümün toplu işleme senaryosunda nasıl ölçeklendirileceğine dair ipuçları. + +Kılavuzun sonunda sadece birkaç satır kodla **HEIC'i metne dönüştürebileceksiniz** ve her adımın “neden”ini anlayacaksınız. + +--- + +## Ön Koşullar + +Başlamadan önce şunların olduğundan emin olun: + +1. **Java 8 veya üzeri** – Aspose OCR, modern bir JDK üzerinde çalışır. +2. **Maven veya Gradle** – Aspose OCR kütüphanesini otomatik olarak çekmek için. +3. Test etmek istediğiniz bir **HEIC görüntüsü** (dosyayı `sample.heic` olarak yeniden adlandırın ve erişilebilir bir konuma koyun). +4. İsteğe bağlı ama kullanışlı: IntelliJ IDEA ya da VS Code gibi bir IDE. + +Başka bir dış araç gerekmez; kütüphane HEIC formatını yerel olarak işler. + +--- + +## Adım 1 – Aspose OCR'ı Projeye Ekleyin + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Pro ipucu:** Sürüm numarasını resmi Aspose sürümleriyle senkronize tutun; yeni sürümler ek HEIC varyantlarını destekler ve dil doğruluğunu artırır. + +--- + +## Adım 2 – **HEIC'ten Metin Çıkarma** için OCR Motorunu Başlatın + +Bir `OcrEngine` örneği oluşturmak, HEIC'ten metin çıkarmaya yönelik ilk somut adımdır. Motor, düşük‑seviye kod çözmeyi soyutlar, böylece HEIC konteyner formatı hakkında endişelenmenize gerek kalmaz. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Neden önemli:** +HEIC, HEIF konteynerine dayalı modern bir görüntü formatıdır. Geleneksel OCR kütüphaneleri JPEG/PNG bekler ve kalite kaybına yol açabilecek ayrı bir dönüşüm adımı gerektirir. Aspose OCR’ın yerel desteği, **HEIC'ten metin çıkarma** işlemini tek seferde yapmanızı sağlar, orijinal piksel verisini korur ve CPU döngülerini tasarruf ettirir. + +--- + +## Adım 3 – İstenen Dil(ler)i Etkinleştirin + +Varsayılan olarak motor yalnızca İngilizceyi arar. Başka bir dilde **HEIC'i metne dönüştürmek** istiyorsanız, ilgili bayrağı açmanız yeterlidir. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Dilleri açıkça etkinleştirmenin nedeni:** +> Dil paketleri talep üzerine yüklenir. Sadece ihtiyacınız olanları etkinleştirmek, bellek ayak izini azaltır ve tanıma hızını artırır. + +--- + +## Adım 4 – Tanıma İşlemini Çalıştırın + +Şimdi motoru görüntüyü okuyup bir dize üretmesi için çağırıyoruz. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Beklenen çıktı** (görüntü “Hello World” ifadesini içeriyorsa): + +``` +=== Recognized Text === +Hello World +``` + +Görüntü boşsa ya da metin okunamazsa, motor `false` döner ve yedek mesajı görürsünüz. + +--- + +## Adım 5 – Kenar Durumları ve Yaygın Sorular + +### HEIC dosyası bozuk olsaydı ne olur? + +Aspose OCR, konteyneri çözemediğinde bir `IOException` fırlatır. Çağrıyı bir `try‑catch` bloğuna sarın ve hatayı daha sonra incelemek üzere kaydedin. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Birden fazla HEIC dosyasını toplu iş olarak işleyebilir miyim? + +Kesinlikle. Bir dizin üzerinde döngü kurun ve aynı `OcrEngine` örneğini tekrar tekrar başlatma yükünden kaçınmak için yeniden kullanın. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Bu aynı zamanda **HEIC'i metne dönüştürme** işlemini Latin dışı betikler için de destekliyor mu? + +Evet—Aspose OCR Arapça, Çince, Kiril ve daha birçok dili destekler. İlgili dil bayrağını etkinleştirin (ör. `engine.getLanguage().setChineseSimplified(true);`). Başsız bir sunucuda çalışıyorsanız uygun font dosyalarını eklemeyi unutmayın. + +--- + +## Adım 6 – Sonucu Programatik Olarak Doğrulayın + +Üretim hattında OCR çıktısının belirli kalite eşiklerini karşılayıp karşılamadığını kontrol etmeniz sıkça gerekir. Yeni sürümlerde bulunan bir güven puanı hesaplayabilir ya da dönen dize uzunluğunu basitçe kontrol edebilirsiniz. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Tam Çalışan Örnek + +Aşağıda, yukarıdaki tüm adımları içeren, çalıştırmaya hazır Java sınıfı yer alıyor. `HeifExample.java` adıyla bir dosyaya yapıştırın, HEIC dosyanızın yolunu ayarlayın ve `javac` + `java` komutlarıyla çalıştırın. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Çalıştırın: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Konsolda çıkarılan dizeyi görmelisiniz; bu, **HEIC'i metne başarıyla dönüştürdüğünüzün** kanıtıdır. + +--- + +## Sonuç + +Aspose OCR kullanarak Java’da **HEIC'ten metin çıkarma** işlemi için ihtiyaç duyduğunuz her şeyi adım adım inceledik. Kütüphaneyi eklemekten kenar durumlarıyla başa çıkmaya kadar, ayrı bir dönüşüm aracına gerek duymayan temiz, tek‑adımlı bir çözüm sunduk. + +Artık şunları yapabilirsiniz: + +- Web servisleri, mobil back‑end’ler veya toplu işler içinde **HEIC'i metne dönüştürme**. +- Tek bir yapılandırma satırıyla diğer dillere destek ekleme. +- Aynı `OcrEngine` örneğini birçok dosya arasında yeniden kullanarak süreci ölçeklendirme. + +İleride **OCR sonucunu aranabilir bir indeks** (ör. Elasticsearch) içine yerleştirmeyi ya da **görüntü ön‑işleme** ekleyerek düşük kontrastlı HEIC fotoğraflarında doğruluğu artırmayı keşfedebilirsiniz. Sınır yok—deneyin, ölçün ve yineleyin. + +Sorularınız mı var ya da zor bir HEIC dosyasıyla mı karşılaştınız? Aşağıya yorum bırakın, iyi kodlamalar! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/vietnamese/java/advanced-ocr-techniques/_index.md b/ocr/vietnamese/java/advanced-ocr-techniques/_index.md index 744ed3b3c..2b935905a 100644 --- a/ocr/vietnamese/java/advanced-ocr-techniques/_index.md +++ b/ocr/vietnamese/java/advanced-ocr-techniques/_index.md @@ -42,28 +42,20 @@ Chuẩn bị hiệu quả các hình chữ nhật cho OCR bằng Aspose.OCR cho Trao quyền cho các ứng dụng Java của bạn với Aspose.OCR để nhận dạng văn bản chính xác. Hướng dẫn này hướng dẫn bạn cách tích hợp dễ dàng và độ chính xác cao trong việc nhận dạng đường. Nâng cao dự án của bạn với hiệu quả và độ tin cậy của Aspose.OCR. ## [Chỉ định các ký tự được phép trong Aspose.OCR](./specify-allowed-characters/) - -Dễ dàng trích xuất văn bản từ hình ảnh bằng cách chỉ định các ký tự được phép bằng Aspose.OCR cho Java. Hãy làm theo hướng dẫn từng bước của chúng tôi để tích hợp hiệu quả, đảm bảo trải nghiệm nhận dạng văn bản liền mạch. Nâng cao các ứng dụng Java của bạn với khả năng Aspose.OCR. - -## Phần kết luận - -Với Aspose.OCR cho Java, việc thành thạo các kỹ thuật OCR nâng cao chưa bao giờ dễ dàng hơn thế. Đi sâu vào các hướng dẫn này và khám phá toàn bộ tiềm năng của tính năng nhận dạng văn bản trong các dự án Java của bạn. Nâng cao ứng dụng của bạn với khả năng tích hợp liền mạch, độ chính xác cao và khả năng trích xuất văn bản linh hoạt. Hãy tải xuống ngay bây giờ và thực hiện bước đầu tiên hướng tới sự xuất sắc của OCR với Aspose.OCR cho Java! -## Hướng dẫn kỹ thuật OCR nâng cao -### [Thực hiện OCR trên BufferedImage trong Aspose.OCR cho Java](./perform-ocr-buffered-image/) -Thực hiện OCR trên BufferedImage một cách dễ dàng với Aspose.OCR cho Java. Trích xuất văn bản từ hình ảnh một cách liền mạch. Tải xuống ngay để có trải nghiệm nhận dạng văn bản linh hoạt. -### [Thực hiện OCR trên hình ảnh từ URL trong Aspose.OCR cho Java](./perform-ocr-image-from-url/) -Mở khóa tính năng trích xuất văn bản hình ảnh liền mạch trong Java bằng Aspose.OCR. OCR có độ chính xác cao với khả năng tích hợp dễ dàng. -### [Thực hiện OCR trên trang cụ thể trong Aspose.OCR](./perform-ocr-on-page/) -Khai phá sức mạnh của Aspose.OCR cho Java bằng hướng dẫn từng bước của chúng tôi về cách thực hiện OCR trên các trang cụ thể. Trích xuất văn bản dễ dàng từ hình ảnh và cải thiện các dự án Java của bạn. -### [Chuẩn bị hình chữ nhật cho OCR trong Aspose.OCR](./prepare-rectangles-for-ocr/) -Khai phá sức mạnh của nhận dạng văn bản với Aspose.OCR cho Java. Hãy làm theo hướng dẫn từng bước của chúng tôi để tích hợp liền mạch. Nâng cao các ứng dụng Java của bạn với khả năng OCR hiệu quả. -### [Nhận dạng các dòng trong Aspose.OCR cho Java](./recognize-lines/) -Trao quyền cho các ứng dụng Java của bạn với Aspose.OCR để nhận dạng văn bản chính xác. Tích hợp dễ dàng, độ chính xác cao. -### [Chỉ định các ký tự được phép trong Aspose.OCR](./specify-allowed-characters/) Mở khóa tính năng trích xuất văn bản từ hình ảnh một cách liền mạch với Aspose.OCR cho Java. Hãy làm theo hướng dẫn từng bước của chúng tôi để tích hợp hiệu quả. + +### [Tạo Fixed Thread Pool cho OCR song song trong Java](./create-fixed-thread-pool-for-parallel-ocr-in-java/) +Hướng dẫn tạo Fixed Thread Pool để thực hiện OCR song song, tăng tốc xử lý hình ảnh trong Java với Aspose.OCR. + +### [Cách bật GPU cho OCR Java – Hướng dẫn đầy đủ](./how-to-enable-gpu-for-java-ocr-complete-tutorial/) +Khám phá cách cấu hình GPU để tăng tốc OCR trong Java bằng Aspose.OCR, nâng cao hiệu suất và độ chính xác. + +### [Cải thiện độ chính xác OCR trong Java – Hướng dẫn đầy đủ Aspose OCR](./improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/) +Khám phá các kỹ thuật tối ưu để nâng cao độ chính xác OCR trong Java bằng Aspose OCR, hướng dẫn chi tiết và đầy đủ. + {{< /blocks/products/pf/tutorial-page-section >}} {{< /blocks/products/pf/main-container >}} {{< /blocks/products/pf/main-wrap-class >}} -{{< blocks/products/products-backtop-button >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/vietnamese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md b/ocr/vietnamese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md new file mode 100644 index 000000000..b9c04cd92 --- /dev/null +++ b/ocr/vietnamese/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/_index.md @@ -0,0 +1,219 @@ +--- +category: general +date: 2026-05-03 +description: Tạo pool luồng cố định trong Java để nhanh chóng trích xuất văn bản từ + hình ảnh. Tìm hiểu cách chạy OCR, chuyển đổi hình ảnh thành văn bản và tăng hiệu + suất với xử lý OCR song song. +draft: false +keywords: +- create fixed thread pool +- extract text from images +- how to run OCR +- convert image to text +- parallel OCR processing +language: vi +og_description: Tạo pool luồng cố định trong Java để nhanh chóng trích xuất văn bản + từ hình ảnh. Tìm hiểu cách chạy OCR, chuyển đổi hình ảnh thành văn bản và tăng hiệu + suất với xử lý OCR song song. +og_title: Tạo Fixed Thread Pool cho OCR song song trong Java +tags: +- Java +- OCR +- Multithreading +title: Tạo Pool Luồng Cố Định cho OCR Song Song trong Java +url: /vi/java/advanced-ocr-techniques/create-fixed-thread-pool-for-parallel-ocr-in-java/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo Fixed Thread Pool cho OCR Song Song trong Java + +Bạn đã bao giờ cần **create fixed thread pool** để tăng tốc các công việc OCR, nhưng không biết bắt đầu từ đâu? Bạn không phải là người duy nhất. Trong nhiều dự án có nhiều hình ảnh, nút thắt là lời gọi OCR đơn luồng, và giải pháp lại đơn giản bất ngờ: khởi tạo một pool các luồng làm việc và để chúng xử lý các tệp song song. + +Trong hướng dẫn này, bạn sẽ học cách **extract text from images** bằng Aspose OCR, cách **run OCR** một cách hiệu quả, và cách **convert image to text** mà không làm quá tải CPU của bạn. Khi kết thúc, bạn sẽ có một chương trình Java sẵn sàng chạy, minh họa **parallel OCR processing** trên một vài hình mẫu. + +## Những gì bạn sẽ xây dựng + +Chúng ta sẽ tạo một ứng dụng console nhỏ mà: + +* Đọc danh sách các đường dẫn hình ảnh (PNG, JPG, TIFF, BMP). +* **Creates a fixed thread pool** có kích thước bằng số lõi CPU. +* Gửi một tác vụ OCR cho mỗi hình ảnh. +* Thu thập văn bản đã nhận dạng và in ra console. +* Tắt executor một cách sạch sẽ. + +Không cần công cụ xây dựng bên ngoài, không có framework phức tạp—chỉ cần Java thuần và thư viện Aspose OCR. Nếu bạn có Java 8+ và một IDE tốt, bạn đã sẵn sàng. + +## Yêu cầu trước + +* **Java Development Kit (JDK) 8 or newer** – code sử dụng lambda, vì vậy các phiên bản cũ sẽ không biên dịch được. +* **Aspose OCR for Java** – tải JAR từ trang web Aspose hoặc lấy qua Maven (`com.aspose:aspose-ocr`). +* Một thư mục chứa một vài hình ảnh thử nghiệm (code trỏ tới `YOUR_DIRECTORY`). +* Kiến thức cơ bản về đồng thời trong Java (chúng tôi sẽ giải thích phần còn lại). + +> *Mẹo:* Nếu bạn đang sử dụng Maven, thêm phụ thuộc vào `pom.xml` và để IDE xử lý classpath. + +--- + +## Bước 1: Thêm các Import cần thiết + +Đầu tiên, đưa các lớp cần thiết vào phạm vi. Đây không chỉ là phần mã mẫu; mỗi import cho JVM biết nơi tìm engine OCR, các tiện ích xử lý hình ảnh, và các công cụ đồng thời cho phép chúng ta **create fixed thread pool**. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; +``` + +* `com.aspose.ocr.*` – API OCR cốt lõi. +* `java.util.*` – các collection để lưu trữ đường dẫn hình ảnh và kết quả. +* `java.util.concurrent.*` – gói đồng thời chứa `ExecutorService` và `Future`. + +## Bước 2: Xác định các hình ảnh cần xử lý + +Tiếp theo, chúng ta liệt kê các tệp mà chúng ta muốn **extract text from images**. Sử dụng `Arrays.asList` giúp mã ngắn gọn và cho phép chúng ta thay đổi thư mục của bạn mà không cần chỉnh sửa phần còn lại của logic. + +```java +List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" +); +``` + +Bạn có thể tự do thêm nhiều mục; thread pool sẽ tự động mở rộng dựa trên số lõi CPU bạn có. + +## Bước 3: **Create Fixed Thread Pool** phù hợp với số lõi CPU + +Đây là phần cốt lõi của hướng dẫn. Chúng ta hỏi runtime có bao nhiêu lõi khả dụng và yêu cầu nhà máy `Executors` cung cấp một pool có đúng kích thước đó. Tại sao lại là fixed? Bởi vì số lượng luồng dự đoán được ngăn ngừa hiện tượng “thread explosion” gây thiếu tài nguyên cho hệ điều hành. + +```java +int coreCount = Runtime.getRuntime().availableProcessors(); +ExecutorService executor = Executors.newFixedThreadPool(coreCount); +``` + +* `availableProcessors()` trả về số lõi logic (bao gồm cả hyper‑threads). +* `newFixedThreadPool(coreCount)` đảm bảo chúng ta không bao giờ vượt quá khả năng của CPU, đây là cách an toàn nhất để **run OCR** song song. + +## Bước 4: Gửi một tác vụ OCR cho mỗi hình ảnh + +Bây giờ chúng ta chuyển mỗi đường dẫn tệp thành một callable mà **runs OCR**, nhận dạng văn bản và trả về kết quả. Lưu ý chúng ta tạo một `OcrEngine` mới trong lambda—điều này tránh việc chia sẻ trạng thái engine không an toàn giữa các luồng. + +```java +List> ocrResults = new ArrayList<>(); +for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); +} +``` + +* Mỗi lời gọi `submit` đưa lambda cho pool, pool sẽ lên lịch trên một luồng rảnh. +* Các đối tượng `Future` cho phép chúng ta lấy lại văn bản đã nhận dạng sau này, giữ nguyên thứ tự nếu cần. + +## Bước 5: Lấy và Hiển thị Văn bản Đã Nhận dạng + +Khi tất cả các tác vụ đã được đưa vào hàng đợi, chúng ta chỉ cần duyệt qua danh sách `Future`, gọi `get()` để chặn cho tới khi mỗi công việc OCR hoàn thành. Đây là bước **convert image to text** hiện ra: lời gọi `engine.getText()` trả về chuỗi thô. + +```java +for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); +} +``` + +Kết quả console điển hình trông như sau: + +``` +OCR result: +Hello world! +OCR result: +Invoice #12345 +Date: 2026‑04‑30 +... +``` + +Nếu một tệp thất bại (có thể bị hỏng), bạn sẽ thấy một dòng bắt đầu bằng `Failed:` tiếp theo là đường dẫn—rất hữu ích để gỡ lỗi nhanh. + +## Bước 6: Dọn dẹp Executor Service + +Đừng bao giờ quên tắt pool; nếu không JVM có thể vẫn chạy, nghĩ rằng còn công việc. Một việc tắt một cách nhẹ nhàng cho phép các tác vụ đang chạy hoàn thành trước khi tiến trình kết thúc. + +```java +executor.shutdown(); +``` + +Bạn cũng có thể gọi `awaitTermination` nếu cần áp đặt thời gian chờ, nhưng đối với hầu hết các tiện ích dòng lệnh, `shutdown()` đơn giản là đủ. + +## Ví dụ Hoạt động Đầy đủ + +Dưới đây là chương trình hoàn chỉnh, sẵn sàng chạy. Sao chép‑dán vào một tệp có tên `ParallelOcrTutorial.java`, điều chỉnh các đường dẫn hình ảnh, và chạy `javac` + `java` như bình thường. + +```java +import com.aspose.ocr.*; +import java.util.*; +import java.util.concurrent.*; + +public class ParallelOcrTutorial { + public static void main(String[] args) throws Exception { + // Step 2: Define the images to be processed + List imagePaths = Arrays.asList( + "YOUR_DIRECTORY/image1.png", + "YOUR_DIRECTORY/image2.jpg", + "YOUR_DIRECTORY/image3.tif", + "YOUR_DIRECTORY/image4.bmp" + ); + + // Step 3: Create a fixed‑size thread pool matching the CPU cores + int coreCount = Runtime.getRuntime().availableProcessors(); + ExecutorService executor = Executors.newFixedThreadPool(coreCount); + + // Step 4: Submit an OCR task for each image + List> ocrResults = new ArrayList<>(); + for (String path : imagePaths) { + ocrResults.add(executor.submit(() -> { + OcrEngine engine = new OcrEngine(); // fresh engine per task + engine.setImage(ImageStream.fromFile(path)); + engine.getLanguage().setEnglish(true); + return engine.recognize() ? engine.getText() + : "Failed: " + path; + })); + } + + // Step 5: Retrieve and display the recognized text + for (Future result : ocrResults) { + System.out.println("OCR result:\n" + result.get()); + } + + // Step 6: Clean up the executor service + executor.shutdown(); + } +} +``` + +**Kết quả mong đợi:** nội dung văn bản của mỗi hình ảnh được in ra console, theo cùng thứ tự với danh sách `imagePaths`. Nếu bất kỳ hình ảnh nào không thể xử lý, bạn sẽ thấy thông báo lỗi thay vì dòng trống. + +## Câu hỏi Thường gặp & Trường hợp Cạnh + +### Nếu tôi có nhiều hình ảnh hơn số luồng? + +Fixed thread pool sẽ tự động đưa các tác vụ dư thừa vào hàng đợi. Ngay khi một luồng hoàn thành công việc OCR hiện tại, nó sẽ lấy tác vụ tiếp theo. Hành vi hàng đợi này là bản chất của **parallel OCR processing**—bạn đạt được lưu lượng tối đa mà không làm quá tải CPU. + +### Tôi có thể thay đổi ngôn ngữ không? + +Chắc chắn. Thay thế `engine.getLanguage().setEnglish(true);` bằng cờ ngôn ngữ phù hợp, ví dụ `setFrench(true)` hoặc bật nhiều ngôn ngữ bằng cách gọi nhiều setter trước `recognize()`. + +### Làm sao để xử lý các hình ảnh rất lớn? + +Các tệp lớn có thể tiêu tốn nhiều bộ nhớ cho mỗi luồng. Nếu bạn gặp `OutOfMemoryError`, hãy cân nhắc giảm kích thước hình ảnh trước khi đưa vào engine, hoặc tăng kích thước heap bằng `-Xmx`. Một cách tiếp cận khác là sử dụng **cached thread pool** (` + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/vietnamese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md b/ocr/vietnamese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md new file mode 100644 index 000000000..bdbeeaaed --- /dev/null +++ b/ocr/vietnamese/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-05-03 +description: cách bật GPU cho Java OCR nhanh chóng – học cách trích xuất văn bản từ + hình ảnh bằng Aspose OCR. Bao gồm hướng dẫn đầy đủ về Java OCR. +draft: false +keywords: +- how to enable gpu +- how to extract text +- recognize text image java +- java ocr tutorial +- image to text conversion java +language: vi +og_description: Cách bật GPU cho Java OCR trong vài phút. Hướng dẫn này chỉ cho bạn + cách trích xuất văn bản từ hình ảnh bằng Java OCR với sự tăng tốc GPU. +og_title: Cách bật GPU cho Java OCR – Hướng dẫn từng bước +tags: +- Java +- OCR +- GPU +- Aspose +title: Cách bật GPU cho Java OCR – Hướng dẫn đầy đủ +url: /vi/java/advanced-ocr-techniques/how-to-enable-gpu-for-java-ocr-complete-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cách bật gpu cho Java OCR – Hướng dẫn đầy đủ + +Bạn đã bao giờ tự hỏi **cách bật gpu** khi đang cố gắng trích xuất văn bản từ một bức ảnh chưa? Nếu bạn từng cần chạy OCR trên một bản quét độ phân giải cao và cảm thấy CPU chậm lại, bạn không phải là người duy nhất. Trong hướng dẫn này, chúng tôi sẽ đi qua một **java ocr tutorial** không chỉ cho bạn cách trích xuất văn bản mà còn trình diễn cách nhanh nhất để **recognize text image java**‑style bằng cách bật hỗ trợ GPU thử nghiệm. + +Chúng ta sẽ bắt đầu bằng cách đưa thư viện Aspose OCR vào dự án, sau đó bật GPU, tải một ảnh mẫu, và cuối cùng lấy chuỗi kết quả đã nhận dạng ra khỏi tệp. Khi hoàn thành, bạn sẽ có một đoạn mã sẵn sàng chạy mà có thể chèn vào bất kỳ dự án Maven nào, và bạn sẽ hiểu vì sao GPU quan trọng, khi nào nó có thể không giúp ích, và cách khắc phục các vấn đề thường gặp. Không cần tài liệu bên ngoài—mọi thứ bạn cần đều có ở đây. + +--- + +## Những gì bạn cần + +- **Java Development Kit (JDK) 8+** – mã chạy trên bất kỳ JDK hiện đại nào. +- **Maven** (hoặc Gradle) để tải phụ thuộc Aspose OCR. +- Một **máy tương thích GPU** (card NVIDIA hỗ trợ CUDA hoạt động tốt nhất, nhưng API Aspose sẽ tự động chuyển về CPU nếu không có). +- Một ảnh mẫu, ví dụ `sample-highres.png`, đặt trong thư mục bạn có thể tham chiếu. +- Một chút tò mò về các kỹ thuật **image to text conversion java**. + +Nếu bạn thiếu bất kỳ mục nào ở trên, hãy tải JDK từ Oracle hoặc OpenJDK, cài đặt Maven, và đảm bảo driver đồ họa của bạn được cập nhật. Đó là tất cả công việc chuẩn bị; phần còn lại là Java thuần. + +--- + +## Bước 1: Thêm Aspose OCR vào Dự án của bạn + +Đầu tiên, chúng ta cần chính engine OCR. Aspose cung cấp một artifact Maven sạch sẽ; chỉ cần chèn đoạn này vào `pom.xml` của bạn: + +```xml + + + com.aspose + aspose-ocr + 23.12 + +``` + +Nếu bạn thích Gradle, phiên bản tương đương là: + +```groovy +implementation 'com.aspose:aspose-ocr:23.12' +``` + +Khi phụ thuộc đã được giải quyết, bạn sẽ có quyền truy cập vào `OcrEngine`, `ImageStream`, và các helper ngôn ngữ giúp **java ocr tutorial** trở nên dễ dàng. + +--- + +## Bước 2: Cách bật GPU (Từ khóa chính đang hoạt động) + +Bây giờ chúng ta đến phần cốt lõi: **cách bật gpu** cho engine OCR. API Aspose cung cấp một cờ boolean duy nhất—`setUseGpu(true)`. Nó còn đang trong giai đoạn thử nghiệm, nhưng trên một card đồ họa tốt, bạn sẽ thấy thời gian nhận dạng giảm đáng kể, đặc biệt với các ảnh lớn, độ phân giải cao. + +```java +// Step 2: Enable experimental GPU acceleration +OcrEngine ocrEngine = new OcrEngine(); +ocrEngine.setUseGpu(true); // <-- This is how to enable gpu +``` + +> **Mẹo chuyên nghiệp:** Nếu môi trường của bạn không có GPU tương thích, cờ sẽ bị bỏ qua một cách im lặng, và engine sẽ tự chuyển sang chế độ CPU. Không có lỗi, chỉ hiệu năng chậm hơn. + +--- + +## Bước 3: Tải ảnh bạn muốn xử lý + +Engine OCR làm việc với một `ImageStream`. Chỉ định nó tới tệp bạn muốn chuyển đổi từ ảnh sang văn bản thuần. Đây là cách ngắn gọn để thực hiện: + +```java +// Step 3: Load the image file +String imagePath = "YOUR_DIRECTORY/sample-highres.png"; +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +Đảm bảo đường dẫn là tuyệt đối hoặc tương đối so với thư mục làm việc của dự án. Nếu tệp không tồn tại, bạn sẽ nhận được `IOException`—chúng ta sẽ bắt lỗi này sau. + +--- + +## Bước 4: Chọn ngôn ngữ (Tùy chọn nhưng nên làm) + +Aspose OCR có thể xử lý nhiều bảng chữ cái, nhưng bạn nên cho nó biết ngôn ngữ bạn mong đợi. Đối với tiếng Anh, chỉ cần một dòng: + +```java +// Step 4: Set the recognition language to English +ocrEngine.getLanguage().setEnglish(true); +``` + +Nếu bạn cần tiếng Pháp hoặc tiếng Trung, chỉ cần thay đổi cờ (`setFrench(true)`, `setChineseSimplified(true)`, v.v.). Gợi ý nhỏ này thường tăng độ chính xác vì engine có thể loại bỏ các ký tự không khả dĩ. + +--- + +## Bước 5: Recognize Text Image Java – Chạy Engine + +Đây là thời khắc quyết định: **recognize text image java** style. Chúng ta gọi `recognize()` và, nếu nó trả về `true`, lấy chuỗi kết quả bằng `getText()`. + +```java +// Step 5: Perform recognition +if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); +} else { + System.err.println("Recognition failed."); +} +``` + +Kết quả sẽ là văn bản thô được trích xuất từ `sample-highres.png`. Để có tài liệu sạch sẽ, bạn có thể xử lý hậu kỳ chuỗi (cắt bỏ khoảng trắng, thay thế ngắt dòng, v.v.). Dưới đây là một ví dụ nhanh: + +```java +String cleanText = recognizedText.trim().replaceAll("\\s+", " "); +System.out.println("Cleaned output:\n" + cleanText); +``` + +--- + +## Bước 6: Ví dụ Hoạt động Đầy đủ (Sẵn sàng sao chép‑dán) + +Dưới đây là **java ocr tutorial** hoàn chỉnh mà bạn có thể biên dịch và chạy ngay. Nó bao gồm xử lý lỗi và in ra kết quả mong đợi. + +```java +import com.aspose.ocr.*; + +public class GpuOcrTutorial { + public static void main(String[] args) { + try { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Enable experimental GPU acceleration (how to enable gpu) + ocrEngine.setUseGpu(true); + + // Step 3: Load the image you want to recognize + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/sample-highres.png")); + + // Step 4: (Optional) Specify the language – here we enable English + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and display the result + if (ocrEngine.recognize()) { + String recognizedText = ocrEngine.getText(); + System.out.println("Recognized text:\n" + recognizedText); + } else { + System.err.println("Recognition failed."); + } + } catch (Exception e) { + System.err.println("Error during OCR processing: " + e.getMessage()); + e.printStackTrace(); + } + } +} +``` + +**Kết quả mong đợi (ví dụ):** + +``` +Recognized text: +The quick brown fox jumps over the lazy dog. +``` + +Nếu ảnh chứa nhiều dòng, chúng sẽ được tách bằng ký tự ngắt dòng (`\n`). Engine cố gắng giữ nguyên bố cục gốc càng tốt. + +--- + +## Bước 7: Các Trường hợp Cạnh, Mẹo và Câu hỏi Thường gặp + +### Nếu GPU không được phát hiện thì sao? + +Aspose sẽ tự động tắt hỗ trợ GPU khi không tìm thấy thiết bị tương thích. Bạn có thể kiểm tra chế độ bằng cách in cờ sau khi khởi tạo: + +```java +System.out.println("GPU enabled? " + ocrEngine.isUseGpu()); +``` + +Nếu nó in ra `false`, hãy kiểm tra lại phiên bản driver và đảm bảo runtime `CUDA` đã có trong `PATH`. + +### GPU có giúp với ảnh siêu nhỏ không? + +Không phải lúc nào cũng. Chi phí chuyển một bitmap nhỏ sang GPU có thể lớn hơn lợi nhuận về tốc độ. Đối với ảnh dưới 500 KB, bạn thậm chí có thể thấy chậm hơn. Trong trường hợp đó, chỉ cần đặt `setUseGpu(false)`. + +### Làm sao xử lý tài liệu đa ngôn ngữ? + +Bạn có thể bật nhiều ngôn ngữ cùng lúc: + +```java +ocrEngine.getLanguage().setEnglish(true); +ocrEngine.getLanguage().setSpanish(true); +``` + +Engine sẽ cố gắng khớp ký tự từ bất kỳ bộ nào, rất hữu ích cho các PDF song ngữ. + +### Tôi có thể xử lý trực tiếp PDF không? + +Aspose OCR làm việc với image stream, vì vậy bạn cần raster hoá mỗi trang PDF trước (ví dụ bằng Aspose PDF hoặc PDFBox) rồi truyền `BufferedImage` vào `setImage`. + +--- + +## Tóm tắt trực quan + +![how to enable gpu for Java OCR engine](/images/gpu-ocr.png "Diagram showing GPU‑accelerated OCR pipeline") + +*Biểu đồ minh họa luồng từ việc tải ảnh → OCR bật GPU → trích xuất văn bản.* + +--- + +## Kết luận + +Chúng ta đã bao quát **cách bật gpu** cho quy trình OCR bằng Java, đi qua một **java ocr tutorial** đầy đủ, và trình diễn **image to text conversion java** trong một ví dụ thực tế, có thể sao chép‑dán. Bằng cách bật một cờ duy nhất, bạn có thể giảm vài giây—hoặc thậm chí vài phút—cho việc xử lý các bản quét lớn, giúp ứng dụng của bạn phản hồi nhanh hơn và mượt mà hơn. + +Tiếp theo bạn có thể thử đưa một loạt ảnh vào vòng lặp, thử nghiệm các ngôn ngữ khác nhau, hoặc kết hợp với Apache Tika để tự động lập chỉ mục văn bản đã trích xuất. Khi kết hợp OCR tăng tốc GPU với các thư viện Java khác, khả năng của bạn gần như không giới hạn. + +Có câu hỏi về **cách trích xuất văn bản** từ những ảnh khó, hoặc muốn biết thêm các thủ thuật **recognize text image java**? Hãy để lại bình luận bên dưới, và chúc bạn lập trình vui vẻ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/vietnamese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md b/ocr/vietnamese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md new file mode 100644 index 000000000..26c0e20a0 --- /dev/null +++ b/ocr/vietnamese/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-05-03 +description: Cải thiện độ chính xác OCR nhanh chóng bằng Aspose OCR Java. Tìm hiểu + cách tải hình ảnh cho OCR, bật ngôn ngữ và áp dụng sửa lỗi chính tả mạnh mẽ trong + vài bước. +draft: false +keywords: +- improve OCR accuracy +- load image for OCR +- OCR spell correction +- Aspose OCR Java +- multilingual OCR +language: vi +og_description: Cải thiện độ chính xác OCR ngay lập tức với Aspose OCR Java. Hướng + dẫn này chỉ cách tải ảnh để OCR, bật các ngôn ngữ và sử dụng sửa lỗi chính tả mạnh + mẽ. +og_title: Cải thiện độ chính xác OCR trong Java – Hướng dẫn Aspose OCR từng bước +tags: +- OCR +- Java +- Aspose +- Spell Correction +title: Cải thiện độ chính xác OCR trong Java – Hướng dẫn đầy đủ Aspose OCR +url: /vi/java/advanced-ocr-techniques/improve-ocr-accuracy-in-java-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cải thiện độ chính xác OCR trong Java – Hướng dẫn đầy đủ Aspose OCR + +Bạn có bao giờ tự hỏi tại sao kết quả OCR của bạn trông giống như chữ viết tay của một đứa trẻ không? Nếu bạn đang gặp phải các ký tự bị thiếu, từ sai, hoặc chỉ là mớ hỗn độn, bạn không phải là người duy nhất. **Cải thiện độ chính xác OCR** là điều đầu tiên hầu hết các nhà phát triển tìm đến khi việc trích xuất văn bản của họ không đáng tin cậy. + +Trong hướng dẫn này, chúng ta sẽ đi qua một giải pháp thực tế không chỉ **load image for OCR** mà còn tận dụng engine sửa lỗi chính tả tích hợp sẵn của Aspose để nâng cao chất lượng. Khi kết thúc, bạn sẽ có một chương trình Java sẵn sàng chạy, nhận diện văn bản tiếng Anh + tiếng Pháp với việc sửa lỗi mạnh mẽ — không cần từ điển bên ngoài. + +## Những gì bạn sẽ học + +- Cách **load image for OCR** bằng cách sử dụng `ImageStream` của Aspose. +- Tại sao việc bật các ngôn ngữ phù hợp lại quan trọng đối với độ chính xác. +- Ảnh hưởng của việc sửa lỗi chính tả mạnh mẽ đối với tài liệu đa ngôn ngữ. +- Một mẫu mã hoàn chỉnh, có thể chạy được mà bạn có thể đưa vào bất kỳ dự án Maven/Gradle nào. +- Mẹo, lỗi thường gặp và các ý tưởng bước tiếp theo để mở rộng cách tiếp cận này. + +> **Yêu cầu trước** – Java 8 trở lên, một JAR Aspose.OCR for Java mới (v23.12 hoặc mới hơn), và một tệp ảnh (`multilingual.png`) chứa văn bản tiếng Anh và tiếng Pháp. Đó là tất cả—không cần mô hình hay API bổ sung. + +--- + +## Cải thiện độ chính xác OCR: Cấu hình Engine OCR của Aspose + +Trung tâm của bất kỳ quy trình OCR nào là cấu hình engine. Bằng cách cho Aspose biết chính xác những gì bạn mong đợi, bạn cung cấp cho nó cơ hội tốt hơn để thực hiện đúng. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); + + // Step 2: Load the image to be processed + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/multilingual.png")); + + // Step 3: Enable the languages you expect in the image (English and French) + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); + + // Step 4: Configure aggressive spell correction to improve accuracy + ocrEngine.getSpellCorrector().setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // Step 5: Run recognition and display the corrected text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed."); + } + } +} +``` + +**Tại sao điều này quan trọng:** +- **Engine instance** – `OcrEngine` chứa tất cả các cài đặt; tạo một thể hiện mới tránh việc truyền trạng thái từ các lần chạy trước. +- **Image loading** – Sử dụng `ImageStream.fromFile` là cách đơn giản nhất để **load image for OCR**. Nó hỗ trợ PNG, JPEG, BMP và TIFF ngay từ đầu. +- **Language flags** – Bật tiếng Anh + tiếng Pháp cho trình nhận dạng sử dụng các bộ ký tự và mô hình ngôn ngữ phù hợp, chỉ riêng việc này có thể tăng độ chính xác lên 10‑15 %. +- **Aggressive spell correction** – Đặt `SpellCorrectionLevel.AGGRESSIVE` khiến từ điển nội bộ viết lại các từ nghi ngờ, là yếu tố then chốt khi bạn cần **cải thiện độ chính xác OCR** trên các bản quét nhiễu. + +## Tải ảnh cho OCR – Đặt tệp nguồn + +Trước khi engine có thể làm bất kỳ việc gì, nó cần một bitmap. Nếu bạn cung cấp cho nó một luồng bị hỏng hoặc đường dẫn sai, bạn sẽ gặp ngoại lệ nhanh hơn cả khi bạn nói “null pointer”. + +```java +// Replace with the actual path to your image +String imagePath = "C:/data/ocr/multilingual.png"; + +// Verify the file exists (optional but helpful) +java.io.File imgFile = new java.io.File(imagePath); +if (!imgFile.exists()) { + throw new IllegalArgumentException("Image file not found at: " + imagePath); +} + +// Load the image +ocrEngine.setImage(ImageStream.fromFile(imagePath)); +``` + +**Mẹo:** Nếu bạn đang xử lý ảnh được người dùng tải lên, hãy bao bọc logic tải trong một khối try‑catch và kiểm tra kích thước/định dạng tệp trước. Điều này ngăn engine bị kẹt khi gặp PDF lớn hoặc định dạng không được hỗ trợ. + +## Bật nhiều ngôn ngữ để nhận dạng tốt hơn + +Hầu hết các thư viện OCR mặc định chỉ hỗ trợ tiếng Anh. Khi tài liệu của bạn pha trộn nhiều ngôn ngữ, bạn sẽ thấy sự tăng đột biến của các ký tự nhận dạng sai. Aspose giúp việc bật các ngôn ngữ bổ sung trở nên dễ dàng. + +```java +ocrEngine.getLanguage().setEnglish(true); // English = true +ocrEngine.getLanguage().setFrench(true); // French = true +// Add more if needed: +ocrEngine.getLanguage().setSpanish(true); +ocrEngine.getLanguage().setGerman(true); +``` + +**Tại sao bật hơn một ngôn ngữ?** +- **Character set expansion** – Tiếng Pháp bao gồm các ký tự có dấu như “é” và “ç”. Nếu không bật cờ tiếng Pháp, chúng sẽ trở thành “e” hoặc “c”, sau này gây nhầm lẫn cho bộ sửa lỗi chính tả. +- **Contextual hints** – Engine OCR sử dụng mô hình ngôn ngữ để dự đoán ranh giới từ; mô hình song ngữ giảm thiểu việc tách sai. + +## Áp dụng sửa lỗi chính tả mạnh mẽ + +Sửa lỗi chính tả không chỉ là một tính năng “nice‑to‑have”; nó là yếu tố quyết định khi bạn cần **cải thiện độ chính xác OCR** trên các bản quét chất lượng thấp. + +```java +ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); +``` + +### Các mức độ tóm tắt + +| Level | Behaviour | +|------------|----------------------------------------------| +| **NONE** | Không sửa – chỉ đầu ra thô của engine. | +| **LIGHT** | Sửa các lỗi chính tả rõ ràng, rủi ro sửa quá mức thấp. | +| **AGGRESSIVE** | Thực hiện tra từ điển một cách mạnh mẽ; tốt nhất cho ảnh nhiễu. | + +**Cảnh báo:** Chế độ aggressive có thể viết lại các danh từ riêng hợp lệ (ví dụ, “McDonald” → “Mcdonald”). Nếu lĩnh vực của bạn chứa nhiều tên riêng, hãy cân nhắc một bộ lọc sau xử lý. + +## Chạy nhận dạng và xác minh đầu ra + +Bây giờ mọi thứ đã được thiết lập, đã đến lúc để Aspose thực hiện công việc nặng. + +```java +if (ocrEngine.recognize()) { + String correctedText = ocrEngine.getText(); + System.out.println("Corrected text:\n" + correctedText); +} else { + System.err.println("Recognition failed. Check the image path and format."); +} +``` + +### Đầu ra dự kiến (mẫu) + +``` +Corrected text: +Bonjour, this is a sample multilingual OCR test. +The quick brown fox jumps over the lazy dog. +``` + +Nếu bạn thấy mớ hỗn độn thay vì đó, hãy kiểm tra lại: + +1. Chất lượng ảnh (ảnh mờ hoặc độ phân giải thấp làm giảm độ chính xác). +2. Cờ ngôn ngữ – thiếu tiếng Pháp sẽ mất dấu. +3. Mức độ sửa lỗi chính tả – thử `LIGHT` nếu bạn nhận thấy việc sửa quá mức. + +## Ví dụ hoàn chỉnh hoạt động (Tất cả các bước trong một tệp) + +Dưới đây là chương trình đầy đủ mà bạn có thể biên dịch và chạy trực tiếp. Lưu nó dưới tên `SpellCorrectionTutorial.java`, điều chỉnh đường dẫn ảnh, và thực thi bằng `javac && java`. + +```java +import com.aspose.ocr.*; + +public class SpellCorrectionTutorial { + public static void main(String[] args) throws Exception { + // 1️⃣ Initialize OCR engine + OcrEngine ocrEngine = new OcrEngine(); + + // 2️⃣ Load the image you want to process + String imgPath = "YOUR_DIRECTORY/multilingual.png"; + java.io.File imgFile = new java.io.File(imgPath); + if (!imgFile.exists()) { + throw new IllegalArgumentException("Image not found: " + imgPath); + } + ocrEngine.setImage(ImageStream.fromFile(imgPath)); + + // 3️⃣ Tell Aspose which languages are present + ocrEngine.getLanguage().setEnglish(true); + ocrEngine.getLanguage().setFrench(true); // add more if needed + + // 4️⃣ Turn on aggressive spell correction – this is the secret sauce for improve OCR accuracy + ocrEngine.getSpellCorrector() + .setCorrectionLevel(SpellCorrectionLevel.AGGRESSIVE); + + // 5️⃣ Run the recognizer and print the cleaned‑up text + if (ocrEngine.recognize()) { + System.out.println("Corrected text:\n" + ocrEngine.getText()); + } else { + System.err.println("Recognition failed – verify the image and settings."); + } + } +} +``` + +Biên dịch & chạy: + +```bash +javac -cp "aspose-ocr-23.12.jar" SpellCorrectionTutorial.java +java -cp ".:aspose-ocr-23.12.jar" SpellCorrectionTutorial +``` + +Bạn sẽ thấy văn bản đa ngôn ngữ đã được sửa lỗi được in ra console. + +## Các lỗi thường gặp & Cách tránh + +| Symptom | Likely Cause | Fix | +|---------|--------------|-----| +| **Blank output** | Đường dẫn ảnh sai hoặc tệp không đọc được | Kiểm tra lại đường dẫn `ImageStream.fromFile`; thêm kiểm tra tồn tại tệp. | +| **Missing accents** | Ngôn ngữ Pháp chưa được bật | Gọi `ocrEngine.getLanguage().setFrench(true)`. | +| **Garbage characters** | Ảnh độ phân giải thấp (< 150 dpi) | Phóng to hoặc quét lại với DPI cao hơn; cân nhắc tiền xử lý bằng thư viện tăng cường ảnh. | +| **Over‑corrected names** | Sửa lỗi chính tả mạnh mẽ trên các danh từ riêng | Tiền xử lý với danh sách trắng các tên đã biết hoặc chuyển sang mức `LIGHT`. | + +## Các bước tiếp theo: Mở rộng quy trình OCR của bạn + +- **Xử lý hàng loạt:** Lặp qua một thư mục chứa ảnh, tái sử dụng một thể hiện `OcrEngine` duy nhất để tăng hiệu suất. +- **Trích xuất PDF:** Sử dụng Aspose.PDF để chuyển mỗi trang thành ảnh, sau đó đưa vào engine OCR. +- **Từ điển tùy chỉnh:** Nếu lĩnh vực của bạn sử dụng thuật ngữ chuyên biệt (y tế, pháp lý), cung cấp danh sách từ tùy chỉnh vào `ocrEngine.getSpellCorrector().addUserDictionary(...)`. +- **Song song:** `ForkJoinPool` của Java có thể chạy nhiều tác vụ OCR đồng thời, nhưng cần chú ý tới việc sử dụng bộ nhớ vì mỗi engine giữ bộ đệm ảnh. + +![Ví dụ cải thiện độ chính xác OCR](/images/ocr-example.png){alt="Ảnh chụp màn hình cải thiện độ chính xác OCR hiển thị văn bản đa ngôn ngữ đã được sửa"} + +## Kết luận + +Chúng tôi vừa **cải thiện OCR** + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/vietnamese/java/ocr-operations/_index.md b/ocr/vietnamese/java/ocr-operations/_index.md index 7d9b0fa83..d37f7be92 100644 --- a/ocr/vietnamese/java/ocr-operations/_index.md +++ b/ocr/vietnamese/java/ocr-operations/_index.md @@ -79,6 +79,10 @@ Mở khóa sức mạnh của OCR trong Java với Aspose.OCR. Nhận dạng vă Mở khóa khả năng nhận dạng văn bản mạnh mẽ trong Java với Aspose.OCR. Nhận dạng văn bản trong hình ảnh TIFF một cách dễ dàng. Tải xuống ngay để có trải nghiệm OCR liền mạch. ### [Nhận dạng hình ảnh văn bản với Aspose OCR – Hướng dẫn OCR Java đầy đủ](./recognize-text-image-with-aspose-ocr-full-java-ocr-tutorial/) Khám phá cách nhận dạng toàn diện hình ảnh văn bản bằng Aspose OCR trong Java, từ cấu hình đến xuất kết quả chính xác. +### [Ví dụ Aspose OCR Java: Trích xuất văn bản từ một vùng](./aspose-ocr-java-example-extract-text-from-a-region/) +Hướng dẫn cách sử dụng Aspose OCR cho Java để trích xuất văn bản từ một khu vực cụ thể trong hình ảnh. +### [Trích xuất Văn bản từ HEIC – Hướng dẫn Java đầy đủ](./extract-text-from-heic-complete-java-guide/) +Khám phá cách trích xuất văn bản từ tệp HEIC bằng Aspose.OCR cho Java, từ cấu hình đến xuất kết quả chính xác. ## Câu hỏi Thường gặp diff --git a/ocr/vietnamese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md b/ocr/vietnamese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md new file mode 100644 index 000000000..626b509a5 --- /dev/null +++ b/ocr/vietnamese/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/_index.md @@ -0,0 +1,175 @@ +--- +category: general +date: 2026-05-03 +description: Ví dụ Aspose OCR Java cho thấy cách tải hình ảnh để OCR và trích xuất + văn bản từ một vùng chỉ trong vài dòng mã. +draft: false +keywords: +- aspose ocr java example +- load image for OCR +- extract text from region +language: vi +og_description: Ví dụ Aspose OCR Java minh họa việc tải hình ảnh để OCR và trích xuất + văn bản từ một vùng cụ thể, rất phù hợp cho việc xử lý hoá đơn. +og_title: Ví dụ Aspose OCR Java – Trích xuất văn bản theo vùng +tags: +- Aspose OCR +- Java +- Image Processing +title: 'Ví dụ Aspose OCR Java: Trích xuất văn bản từ một vùng' +url: /vi/java/ocr-operations/aspose-ocr-java-example-extract-text-from-a-region/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR Java Example: Trích xuất Văn bản từ một Vùng + +Bạn đang tìm một **ví dụ Aspose OCR Java** cho phép bạn lấy chỉ phần cần thiết từ một hình ảnh? Trong hướng dẫn này, chúng ta sẽ đi qua **tải hình ảnh để OCR** và **trích xuất văn bản từ một vùng**, hoàn hảo cho số hóa đơn, trường biểu mẫu, hoặc bất kỳ dữ liệu nào ẩn trong một bức ảnh lớn hơn. + +Bạn có thể tự hỏi tại sao lại giới hạn OCR trong một hình chữ nhật thay vì quét toàn bộ trang. Câu trả lời ngắn gọn: tốc độ và độ chính xác. Khi engine chỉ nhìn vào một phần đã định nghĩa, nó bỏ qua tiếng ồn không liên quan, chạy nhanh hơn và thường cho ra kết quả sạch hơn. Khi kết thúc tutorial này, bạn sẽ có một chương trình Java tự chứa thực hiện đúng điều đó, cùng một vài mẹo để tránh những bẫy thường gặp khiến người mới bối rối. + +## Những gì bạn cần + +Trước khi bắt đầu, hãy chắc chắn rằng bạn đã có: + +- **Java Development Kit (JDK) 11** trở lên đã được cài đặt. +- Thư viện **Aspose.OCR for Java** (bạn có thể tải JAR mới nhất từ Maven Central hoặc cổng tải xuống của Aspose). +- Một tệp hình ảnh chứa văn bản bạn muốn đọc – trong demo chúng ta sẽ dùng `invoice.png`, trong đó có số hóa đơn ở góc trên‑phải. +- Một IDE yêu thích hoặc một trình soạn thảo văn bản đơn giản cộng với terminal; bất kỳ công cụ xây dựng nào (Maven, Gradle, hoặc chỉ `javac`) đều được. + +Đó là tất cả. Không cần engine OCR bổ sung, không có binary gốc, chỉ Java thuần và Aspose. + +![Ví dụ Aspose OCR Java](/images/aspose-ocr-java-example.png "Aspose OCR Java ví dụ hiển thị việc trích xuất vùng") + +## Aspose OCR Java Example – Khởi tạo Engine OCR + +Điều đầu tiên bất kỳ quy trình OCR nào cần là một thể hiện engine. Aspose cung cấp lớp nhẹ `OcrEngine` xử lý mọi thứ từ tải hình ảnh đến lựa chọn ngôn ngữ. + +```java +import com.aspose.ocr.*; + +public class RegionOcrExample { + public static void main(String[] args) throws Exception { + // Step 1: Create an OCR engine instance + OcrEngine ocrEngine = new OcrEngine(); +``` + +**Tại sao điều này quan trọng:** Tạo engine ngay từ đầu cho bạn một đối tượng sạch để cấu hình. Bạn có thể tái sử dụng cùng một `OcrEngine` cho nhiều hình ảnh nếu đang xử lý một lô, giúp tiết kiệm bộ nhớ và thời gian khởi tạo. + +## Tải Hình ảnh cho OCR + +Tiếp theo, chúng ta chỉ cho engine biết hình nào sẽ được quét. Aspose cung cấp trợ giúp `ImageStream.fromFile`, giúp trừu tượng hoá việc tạo `FileInputStream` thủ công. + +```java + // Step 2: Load the image that contains the invoice + ocrEngine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/invoice.png")); +``` + +**Mẹo:** Thay `YOUR_DIRECTORY` bằng đường dẫn tuyệt đối hoặc tương đối tới nơi bạn lưu `invoice.png`. Nếu tệp không tìm thấy, Aspose sẽ ném `IOException`, vì vậy bạn có thể muốn bọc đoạn này trong khối try‑catch cho mã production. + +## Định nghĩa và Trích xuất Văn bản từ một Vùng + +Bây giờ là phần trọng tâm: hình chữ nhật chỉ cho engine biết nơi cần nhìn. Hàm khởi tạo `java.awt.Rectangle` nhận `(x, y, width, height)` – tất cả tính bằng pixel. + +```java + // Step 3: Define the region where the invoice number is located (x, y, width, height) + java.awt.Rectangle invoiceRegion = new java.awt.Rectangle(120, 250, 300, 80); + ocrEngine.setRegion(invoiceRegion); // restrict recognition to this area +``` + +**Cách hoạt động:** Bằng cách gọi `setRegion`, bạn giới hạn việc quét OCR trong một dải rộng 300 pixel, bắt đầu 120 pixel từ cạnh trái và 250 pixel từ trên. Điều chỉnh các số này để phù hợp với bố cục của bạn; cách nhanh để tìm chúng là mở hình ảnh trong bất kỳ trình chỉnh sửa đồ họa nào hiển thị tọa độ pixel. + +## Bật Ngôn ngữ và Chạy Nhận dạng + +Aspose OCR hỗ trợ hàng chục ngôn ngữ, nhưng đối với số hóa đơn chúng ta chỉ cần tiếng Anh. Bật ngôn ngữ đúng sẽ giảm đáng kể các kết quả sai. + +```java + // Step 4: Enable English language for recognition + ocrEngine.getLanguage().setEnglish(true); + + // Step 5: Perform recognition and output the extracted text + if (ocrEngine.recognize()) { + System.out.println("Extracted region text: " + ocrEngine.getText()); + } else { + System.err.println("OCR recognition failed."); + } + } +} +``` + +**Tại sao chỉ bật tiếng Anh?** Engine OCR sẽ cố gắng khớp ký tự từ mọi ngôn ngữ đã bật, điều này có thể gây nhầm lẫn khi văn bản chỉ là các ký tự chữ và số đơn giản. Hạn chế phạm vi ngôn ngữ cải thiện cả tốc độ và độ chính xác. + +### Kết quả Dự kiến + +Khi mọi thứ khớp nhau, bạn sẽ thấy đầu ra giống như: + +``` +Extracted region text: INV-12345 +``` + +Nếu hình chữ nhật lệch vài pixel, đầu ra có thể bị rối hoặc trống. Đó là một kiểm tra nhanh: chạy chương trình, xem console và xác nhận văn bản khớp với những gì bạn thấy trong hình ảnh. + +## Chạy Mã và Xác minh Kết quả + +Giả sử bạn dùng Maven, thêm phụ thuộc Aspose OCR vào `pom.xml` của mình: + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +Biên dịch và thực thi: + +```bash +mvn compile exec:java -Dexec.mainClass=RegionOcrExample +``` + +Hoặc, nếu bạn thích dùng `javac` thuần: + +```bash +javac -cp "aspose-ocr-23.10.jar" RegionOcrExample.java +java -cp ".:aspose-ocr-23.10.jar" RegionOcrExample +``` + +Bạn sẽ thấy dòng **Extracted region text** được in ra console. Nếu nhận được “OCR recognition failed”, hãy kiểm tra lại đường dẫn tệp và chắc chắn rằng vùng thực sự chứa các ký tự có thể đọc được. + +## Các Trường hợp Đặc biệt & Biến thể Thông thường + +| Tình huống | Cần Thay Đổi | +|-----------|--------------| +| **Nhiều ngôn ngữ** (ví dụ: Tiếng Anh + Tiếng Tây Ban Nha) | Gọi `ocrEngine.getLanguage().setSpanish(true);` cùng với tiếng Anh. | +| **Vùng nằm ngoài giới hạn hình ảnh** | Aspose sẽ tự động cắt hình chữ nhật, nhưng bạn sẽ mất dữ liệu. Sử dụng `ImageInfo` (`ocrEngine.getImage().getWidth()`) để kiểm tra kích thước trước khi đặt vùng. | +| **Hóa đơn động** (bố cục khác nhau) | Xem xét chạy một quét sơ bộ nhẹ trên toàn hình để tìm từ khóa như “Invoice #” rồi tính toán hình chữ nhật một cách lập trình. | +| **Hình ảnh DPI cao** | Tăng `ocrEngine.getImage().setResolution(300);` để cải thiện độ chính xác trên tài liệu quét. | +| **Tinh chỉnh hiệu năng** | Tắt các ngôn ngữ không cần thiết, giữ vùng càng nhỏ càng tốt, và tái sử dụng một thể hiện `OcrEngine` duy nhất cho nhiều tệp. | + +## Mẹo Chuyên Gia Từ Trải Nghiệm Thực Tế + +- **Mẹo pro:** Nếu bạn chỉ cần các chữ số (thường cho số hóa đơn), bật chế độ số bằng `ocrEngine.getLanguage().setDigits(true);`. Điều này loại bỏ tiếng ồn chữ cái. +- **Cẩn thận với:** PNG trong suốt. Aspose đôi khi hiểu sai kênh alpha; chuyển hình ảnh sang JPEG nền đặc trước có thể giải quyết các đầu ra trống lạ. +- **Nhớ:** Hình chữ nhật sử dụng hệ tọa độ gốc của hình ảnh, không phải bất kỳ tỉ lệ UI nào bạn có thể thấy trên màn hình. Luôn thử nghiệm với tệp chính xác mà bạn sẽ xử lý trong môi trường production. + +## Tiếp Theo? + +Bây giờ bạn đã có một **ví dụ Aspose OCR Java** vững chắc cho việc trích xuất dựa trên vùng, bạn có thể mở rộng nó theo một số hướng hữu ích: + +- **Xử lý batch:** Lặp qua một thư mục các hóa đơn, tái sử dụng cùng một `OcrEngine` để tăng thông lượng. +- **Xác thực dữ liệu:** Đưa văn bản đã trích xuất qua regex như `INV-\\d{5}` để chắc chắn bạn đã nắm bắt được số hóa đơn hợp lệ. +- **Tích hợp với PDF:** Dùng Aspose.PDF để chèn lại văn bản đã trích xuất lên tài liệu gốc, tạo chuỗi kiểm toán. +- **Triển khai trên cloud:** Đóng gói mã trong một dịch vụ REST nhẹ (Spring Boot) để các hệ thống khác có thể gọi khi cần. + +Mỗi bước này đều dựa trên các khái niệm cốt lõi—**tải hình ảnh cho OCR**, **trích xuất văn bản từ một vùng**, và xử lý kết quả—do đó bạn sẽ thấy việc chuyển đổi rất dễ dàng. + +--- + +*Chúc bạn lập trình vui vẻ! Nếu gặp khó khăn, hãy để lại bình luận bên dưới hoặc truy cập diễn đàn Aspose, nơi cộng đồng chia sẻ các tinh chỉnh thực tế cho các bố cục khó khăn.* + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/vietnamese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md b/ocr/vietnamese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md new file mode 100644 index 000000000..bfa30ba84 --- /dev/null +++ b/ocr/vietnamese/java/ocr-operations/extract-text-from-heic-complete-java-guide/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-05-03 +description: Trích xuất văn bản từ hình ảnh HEIC bằng Aspose OCR trong Java. Tìm hiểu + cách chuyển đổi HEIC sang văn bản nhanh chóng với ví dụ từng bước. +draft: false +keywords: +- extract text from heic +- convert heic to text +language: vi +og_description: Trích xuất văn bản từ hình ảnh HEIC bằng Aspose OCR trong Java. Hướng + dẫn này cho bạn biết cách chuyển đổi HEIC sang văn bản trong vài phút. +og_title: Trích xuất văn bản từ HEIC – Hướng dẫn OCR Java +tags: +- OCR +- Java +- Aspose +title: Trích xuất văn bản từ HEIC – Hướng dẫn Java đầy đủ +url: /vi/java/ocr-operations/extract-text-from-heic-complete-java-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Trích xuất Văn bản từ HEIC – Hướng dẫn Java đầy đủ + +Bạn đã bao giờ tự hỏi làm thế nào để **trích xuất văn bản từ HEIC** mà không cần chuyển đổi sang JPEG hoặc PNG không? Bạn không phải là người duy nhất. Nhiều nhà phát triển gặp khó khăn khi một ứng dụng di động cung cấp cho họ một ảnh `.heic` và họ cần văn bản nhúng để lập chỉ mục hoặc phân tích. Tin tốt là gì? Với Aspose OCR cho Java, bạn có thể **trích xuất văn bản từ HEIC** trực tiếp—không cần bước chuyển đổi thêm. + +Trong hướng dẫn này, chúng tôi cũng sẽ chỉ cho bạn cách **chuyển đổi HEIC sang văn bản** trong một pipeline duy nhất, sạch sẽ, để bạn có thể chèn mã vào bất kỳ dự án Java nào và bắt đầu lấy chuỗi từ những hình ảnh hiệu suất cao này ngay hôm nay. + +![extract text from heic example](https://example.com/placeholder.png "extract text from heic example") + +## Những gì bạn sẽ học + +- Cách thiết lập Aspose OCR trong dự án Maven/Gradle. +- Mã Java chính xác cần thiết để **trích xuất văn bản từ HEIC** trên hình ảnh. +- Tại sao cách tiếp cận này nhanh hơn và ít lỗi hơn so với quy trình hai bước `convert‑then‑OCR`. +- Những cạm bẫy thường gặp (ví dụ: thiếu gói ngôn ngữ) và cách tránh chúng. +- Mẹo mở rộng giải pháp trong kịch bản xử lý hàng loạt. + +Khi kết thúc hướng dẫn, bạn sẽ có thể **chuyển đổi HEIC sang văn bản** chỉ với vài dòng mã, và bạn sẽ hiểu “tại sao” đằng sau mỗi bước. + +--- + +## Yêu cầu trước + +Trước khi chúng ta bắt đầu, hãy chắc chắn rằng bạn có: + +1. **Java 8 hoặc cao hơn** – Aspose OCR chạy trên bất kỳ JDK hiện đại nào. +2. **Maven hoặc Gradle** – để tự động tải thư viện Aspose OCR. +3. Một **hình ảnh HEIC** bạn muốn thử (đổi tên thành `sample.heic` và đặt ở vị trí có thể truy cập). +4. Tùy chọn nhưng hữu ích: một IDE như IntelliJ IDEA hoặc VS Code. + +Không cần công cụ bên ngoài nào khác; thư viện xử lý định dạng HEIC một cách nguyên bản. + +--- + +## Bước 1 – Thêm Aspose OCR vào Dự án của bạn + +### Maven + +```xml + + com.aspose + aspose-ocr + 23.10 + +``` + +### Gradle + +```gradle +implementation 'com.aspose:aspose-ocr:23.10' // update version as needed +``` + +> **Mẹo chuyên nghiệp:** Giữ số phiên bản đồng bộ với các bản phát hành chính thức của Aspose; các phiên bản mới hơn bổ sung hỗ trợ cho các biến thể HEIC bổ sung và cải thiện độ chính xác ngôn ngữ. + +--- + +## Bước 2 – Khởi tạo Engine OCR để **trích xuất văn bản từ HEIC** + +Tạo một thể hiện `OcrEngine` là bước thực tế đầu tiên để trích xuất văn bản từ HEIC. Engine này trừu tượng hoá mọi việc giải mã cấp thấp, vì vậy bạn không cần lo lắng về định dạng container HEIC. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Step 2.1: Create the OCR engine + OcrEngine engine = new OcrEngine(); + + // Step 2.2: Load the HEIC image directly – no conversion needed + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); +``` + +**Tại sao điều này quan trọng:** + +HEIC là định dạng hình ảnh hiện đại dựa trên container HEIF. Các thư viện OCR truyền thống mong đợi JPEG/PNG, buộc bạn phải thực hiện một bước chuyển đổi riêng có thể làm giảm chất lượng. Hỗ trợ nguyên bản của Aspose OCR cho phép bạn **trích xuất văn bản từ HEIC** trong một lần, bảo tồn dữ liệu pixel gốc và tiết kiệm vòng CPU. + +--- + +## Bước 3 – Bật Ngôn ngữ Mong muốn + +Mặc định engine chỉ tìm kiếm tiếng Anh. Nếu bạn cần **chuyển đổi HEIC sang văn bản** bằng ngôn ngữ khác, chỉ cần bật cờ tương ứng. + +```java + // Enable English (default). Add more languages as needed. + engine.getLanguage().setEnglish(true); + // Example: engine.getLanguage().setSpanish(true); +``` + +> **Tại sao phải bật ngôn ngữ một cách rõ ràng?** +> Các gói ngôn ngữ được tải khi cần. Chỉ bật những ngôn ngữ bạn cần giảm dung lượng bộ nhớ và tăng tốc độ nhận dạng. + +--- + +## Bước 4 – Chạy Quy trình Nhận dạng + +Bây giờ chúng ta thực sự yêu cầu engine đọc hình ảnh và tạo ra một chuỗi. + +```java + // Run OCR – returns true if text was found + if (engine.recognize()) { + // Step 4.1: Retrieve and print the recognized text + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +**Kết quả mong đợi** (giả sử hình ảnh chứa cụm từ “Hello World”): + +``` +=== Recognized Text === +Hello World +``` + +Nếu hình ảnh trống hoặc văn bản không đọc được, engine sẽ trả về `false`, và bạn sẽ thấy thông báo dự phòng. + +--- + +## Bước 5 – Xử lý Các Trường hợp Cạnh và Câu hỏi Thông thường + +### Nếu tệp HEIC bị hỏng thì sao? + +Aspose OCR sẽ ném một `IOException` khi không thể giải mã container. Hãy bao bọc lời gọi trong khối `try‑catch` và ghi lại lỗi để kiểm tra sau. + +```java +try { + engine.setImage(ImageStream.fromFile("corrupt.heic")); + // proceed with recognition… +} catch (IOException ex) { + System.err.println("Failed to load HEIC image: " + ex.getMessage()); +} +``` + +### Tôi có thể xử lý nhiều tệp HEIC trong một lô không? + +Chắc chắn. Chỉ cần lặp qua một thư mục và tái sử dụng cùng một thể hiện `OcrEngine` để tránh việc khởi tạo lặp lại. + +```java +File folder = new File("YOUR_DIRECTORY"); +for (File file : folder.listFiles((dir, name) -> name.toLowerCase().endsWith(".heic"))) { + engine.setImage(ImageStream.fromFile(file.getAbsolutePath())); + if (engine.recognize()) { + System.out.println("File: " + file.getName()); + System.out.println(engine.getText()); + } +} +``` + +### Điều này cũng **chuyển đổi HEIC sang văn bản** cho các script không phải Latin không? + +Có—Aspose OCR hỗ trợ tiếng Ả Rập, Trung Quốc, Cyrillic và nhiều ngôn ngữ khác. Chỉ cần bật cờ ngôn ngữ tương ứng (ví dụ, `engine.getLanguage().setChineseSimplified(true);`). Hãy nhớ thêm các tệp phông chữ phù hợp nếu bạn đang chạy trên máy chủ không giao diện. + +--- + +## Bước 6 – Xác minh Kết quả một cách Lập trình + +Trong một pipeline sản xuất, bạn thường cần khẳng định rằng đầu ra OCR đáp ứng các ngưỡng chất lượng nhất định. Một cách nhanh là tính điểm tin cậy (có sẵn trong các phiên bản mới) hoặc đơn giản kiểm tra độ dài của chuỗi trả về. + +```java +String result = engine.getText(); +if (result != null && result.trim().length() > 5) { + // Consider this a successful extraction + saveToDatabase(file.getName(), result); +} +``` + +--- + +## Ví dụ Hoạt động Đầy đủ + +Dưới đây là lớp Java đầy đủ, sẵn sàng chạy, tích hợp tất cả các bước ở trên. Dán nó vào một tệp có tên `HeifExample.java`, điều chỉnh đường dẫn tới tệp HEIC của bạn, và chạy `javac` + `java` như thường lệ. + +```java +import com.aspose.ocr.*; + +public class HeifExample { + public static void main(String[] args) throws Exception { + // Initialize OCR engine + OcrEngine engine = new OcrEngine(); + + // Load HEIC image directly – this is where we **extract text from HEIC** + engine.setImage(ImageStream.fromFile("YOUR_DIRECTORY/photo.heic")); + + // Enable English; add other languages if needed + engine.getLanguage().setEnglish(true); + // engine.getLanguage().setSpanish(true); // example for other languages + + // Perform recognition + if (engine.recognize()) { + System.out.println("=== Recognized Text ==="); + System.out.println(engine.getText()); + } else { + System.out.println("No text detected in the HEIC image."); + } + } +} +``` + +Run it: + +```bash +javac -cp "path/to/aspose-ocr.jar" HeifExample.java +java -cp ".:path/to/aspose-ocr.jar" HeifExample +``` + +Bạn sẽ thấy chuỗi đã trích xuất được in ra console, xác nhận rằng bạn đã thành công **chuyển đổi HEIC sang văn bản**. + +--- + +## Kết luận + +Chúng tôi đã trình bày mọi thứ bạn cần để **trích xuất văn bản từ HEIC** bằng Aspose OCR trong Java. Từ việc thêm thư viện đến xử lý các trường hợp đặc biệt, hướng dẫn cung cấp một giải pháp sạch, một‑bước, loại bỏ nhu cầu sử dụng công cụ chuyển đổi riêng. + +Bây giờ bạn có thể: + +- **Chuyển đổi HEIC sang văn bản** ngay trong các dịch vụ web, back‑end di động, hoặc công việc batch. +- Mở rộng hỗ trợ sang các ngôn ngữ khác chỉ với một dòng cấu hình. +- Mở rộng quy trình bằng cách tái sử dụng cùng một `OcrEngine` cho nhiều tệp. + +Tiếp theo, bạn có thể khám phá **nhúng kết quả OCR vào chỉ mục có thể tìm kiếm** (ví dụ, Elasticsearch) hoặc **thêm tiền xử lý hình ảnh** để tăng độ chính xác trên các ảnh HEIC có độ tương phản thấp. Không có giới hạn—hãy thử nghiệm, đo lường và lặp lại. + +Có câu hỏi hoặc gặp tệp HEIC khó xử lý? Hãy để lại bình luận bên dưới, và chúc bạn lập trình vui vẻ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file