From 612f54b36853dc0c6dc914a8e14ab896ec7a43b3 Mon Sep 17 00:00:00 2001 From: Muhammad Adil Date: Sun, 11 Jan 2026 04:43:32 +0000 Subject: [PATCH] Add 8 ocr net tutorials MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Categories: ocr-configuration, skew-angle-calculation, text-recognition Source: AI Search API Tutorials: - How to Run OCR in C# – Complete Guide with Aspose OCR - How to Run OCR in C# – Extract Arabic Text from PNG - How to Deskew Image in C# – Complete OCR Pre‑Processing Guide - Extract Text from Image with Aspose OCR – Complete C# Guide - Create Searchable PDF from PNG in C# – Complete Guide - Extract Text from Image in C# – Complete Aspose OCR Guide - recognize text from image in C# – Complete Guide to OCR and JSON - Read Embedded Resource in .NET – Complete Guide to Set Aspose License Auto-generated by Professionalize.Tutorials Agent --- ocr/arabic/net/ocr-configuration/_index.md | 4 +- .../_index.md | 234 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 265 ++++++++++++++++ ocr/arabic/net/text-recognition/_index.md | 17 +- .../_index.md | 224 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 249 +++++++++++++++ .../_index.md | 225 +++++++++++++ .../_index.md | 294 +++++++++++++++++ ocr/chinese/net/ocr-configuration/_index.md | 5 +- .../_index.md | 235 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 243 ++++++++++++++ ocr/chinese/net/text-recognition/_index.md | 15 +- .../_index.md | 223 +++++++++++++ .../_index.md | 250 +++++++++++++++ .../_index.md | 231 ++++++++++++++ .../_index.md | 249 +++++++++++++++ .../_index.md | 223 +++++++++++++ .../_index.md | 294 +++++++++++++++++ ocr/czech/net/ocr-configuration/_index.md | 4 +- .../_index.md | 238 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 264 ++++++++++++++++ ocr/czech/net/text-recognition/_index.md | 15 +- .../_index.md | 225 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 233 ++++++++++++++ .../_index.md | 250 +++++++++++++++ .../_index.md | 228 ++++++++++++++ .../_index.md | 294 +++++++++++++++++ ocr/dutch/net/ocr-configuration/_index.md | 4 +- .../_index.md | 239 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 265 ++++++++++++++++ ocr/dutch/net/text-recognition/_index.md | 15 +- .../_index.md | 226 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 297 +++++++++++++++++ ocr/english/net/ocr-configuration/_index.md | 4 +- .../_index.md | 238 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 264 ++++++++++++++++ ocr/english/net/text-recognition/_index.md | 15 +- .../_index.md | 224 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 233 ++++++++++++++ .../_index.md | 249 +++++++++++++++ .../_index.md | 228 ++++++++++++++ .../_index.md | 296 +++++++++++++++++ ocr/french/net/ocr-configuration/_index.md | 5 +- .../_index.md | 239 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 247 +++++++++++++++ ocr/french/net/text-recognition/_index.md | 15 +- .../_index.md | 226 +++++++++++++ .../_index.md | 254 +++++++++++++++ .../_index.md | 283 +++++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 298 ++++++++++++++++++ ocr/german/net/ocr-configuration/_index.md | 5 +- .../_index.md | 239 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 265 ++++++++++++++++ ocr/german/net/text-recognition/_index.md | 21 +- .../_index.md | 226 +++++++++++++ .../_index.md | 253 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 294 +++++++++++++++++ ocr/greek/net/ocr-configuration/_index.md | 4 +- .../_index.md | 239 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 9 +- .../_index.md | 267 ++++++++++++++++ ocr/greek/net/text-recognition/_index.md | 15 +- .../_index.md | 226 +++++++++++++ .../_index.md | 246 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 227 +++++++++++++ .../_index.md | 298 ++++++++++++++++++ ocr/hindi/net/ocr-configuration/_index.md | 7 +- .../_index.md | 238 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 245 ++++++++++++++ ocr/hindi/net/text-recognition/_index.md | 21 +- .../_index.md | 226 +++++++++++++ .../_index.md | 253 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 250 +++++++++++++++ .../_index.md | 225 +++++++++++++ .../_index.md | 295 +++++++++++++++++ ocr/hongkong/net/ocr-configuration/_index.md | 5 +- .../_index.md | 235 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 241 ++++++++++++++ ocr/hongkong/net/text-recognition/_index.md | 26 +- .../_index.md | 223 +++++++++++++ .../_index.md | 250 +++++++++++++++ .../_index.md | 231 ++++++++++++++ .../_index.md | 249 +++++++++++++++ .../_index.md | 225 +++++++++++++ .../_index.md | 292 +++++++++++++++++ ocr/hungarian/net/ocr-configuration/_index.md | 6 +- .../_index.md | 236 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 246 +++++++++++++++ ocr/hungarian/net/text-recognition/_index.md | 15 +- .../_index.md | 226 +++++++++++++ .../_index.md | 253 +++++++++++++++ .../_index.md | 233 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 298 ++++++++++++++++++ .../net/ocr-configuration/_index.md | 4 +- .../_index.md | 239 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 266 ++++++++++++++++ ocr/indonesian/net/text-recognition/_index.md | 15 +- .../_index.md | 226 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 227 +++++++++++++ .../_index.md | 298 ++++++++++++++++++ ocr/italian/net/ocr-configuration/_index.md | 4 +- .../_index.md | 239 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 247 +++++++++++++++ ocr/italian/net/text-recognition/_index.md | 15 +- .../_index.md | 225 +++++++++++++ .../_index.md | 253 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 297 +++++++++++++++++ ocr/japanese/net/ocr-configuration/_index.md | 4 +- .../_index.md | 234 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 261 +++++++++++++++ ocr/japanese/net/text-recognition/_index.md | 16 +- .../_index.md | 224 +++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 231 ++++++++++++++ .../_index.md | 248 +++++++++++++++ .../_index.md | 225 +++++++++++++ .../_index.md | 295 +++++++++++++++++ ocr/korean/net/ocr-configuration/_index.md | 4 +- .../_index.md | 236 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 263 ++++++++++++++++ ocr/korean/net/text-recognition/_index.md | 15 +- .../_index.md | 224 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 233 ++++++++++++++ .../_index.md | 249 +++++++++++++++ .../_index.md | 227 +++++++++++++ .../_index.md | 296 +++++++++++++++++ ocr/polish/net/ocr-configuration/_index.md | 5 +- .../_index.md | 239 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 266 ++++++++++++++++ ocr/polish/net/text-recognition/_index.md | 15 +- .../_index.md | 226 +++++++++++++ .../_index.md | 254 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 298 ++++++++++++++++++ .../net/ocr-configuration/_index.md | 4 +- .../_index.md | 238 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 265 ++++++++++++++++ ocr/portuguese/net/text-recognition/_index.md | 15 +- .../_index.md | 225 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 226 +++++++++++++ .../_index.md | 297 +++++++++++++++++ ocr/russian/net/ocr-configuration/_index.md | 4 +- .../_index.md | 239 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 246 +++++++++++++++ ocr/russian/net/text-recognition/_index.md | 19 +- .../_index.md | 226 +++++++++++++ .../_index.md | 254 +++++++++++++++ .../_index.md | 237 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 227 +++++++++++++ .../_index.md | 294 +++++++++++++++++ ocr/spanish/net/ocr-configuration/_index.md | 5 +- .../_index.md | 237 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 266 ++++++++++++++++ ocr/spanish/net/text-recognition/_index.md | 32 +- .../_index.md | 226 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 228 ++++++++++++++ .../_index.md | 297 +++++++++++++++++ ocr/swedish/net/ocr-configuration/_index.md | 4 +- .../_index.md | 238 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 265 ++++++++++++++++ ocr/swedish/net/text-recognition/_index.md | 15 +- .../_index.md | 224 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 233 ++++++++++++++ .../_index.md | 250 +++++++++++++++ .../_index.md | 229 ++++++++++++++ .../_index.md | 296 +++++++++++++++++ ocr/thai/net/ocr-configuration/_index.md | 4 +- .../_index.md | 237 ++++++++++++++ ocr/thai/net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 245 ++++++++++++++ ocr/thai/net/text-recognition/_index.md | 14 +- .../_index.md | 224 +++++++++++++ .../_index.md | 250 +++++++++++++++ .../_index.md | 233 ++++++++++++++ .../_index.md | 249 +++++++++++++++ .../_index.md | 223 +++++++++++++ .../_index.md | 296 +++++++++++++++++ ocr/turkish/net/ocr-configuration/_index.md | 4 +- .../_index.md | 238 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 4 +- .../_index.md | 247 +++++++++++++++ ocr/turkish/net/text-recognition/_index.md | 17 +- .../_index.md | 225 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 227 +++++++++++++ .../_index.md | 297 +++++++++++++++++ .../net/ocr-configuration/_index.md | 4 +- .../_index.md | 238 ++++++++++++++ .../net/skew-angle-calculation/_index.md | 5 +- .../_index.md | 245 ++++++++++++++ ocr/vietnamese/net/text-recognition/_index.md | 15 +- .../_index.md | 225 +++++++++++++ .../_index.md | 252 +++++++++++++++ .../_index.md | 235 ++++++++++++++ .../_index.md | 251 +++++++++++++++ .../_index.md | 227 +++++++++++++ .../_index.md | 293 +++++++++++++++++ 253 files changed, 46051 insertions(+), 87 deletions(-) create mode 100644 ocr/arabic/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/arabic/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/arabic/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/arabic/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/arabic/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/arabic/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/arabic/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/arabic/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/chinese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/chinese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/chinese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/chinese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/chinese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/chinese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/chinese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/chinese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/czech/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/czech/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/czech/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/czech/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/czech/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/czech/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/czech/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/czech/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/dutch/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/dutch/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/dutch/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/dutch/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/dutch/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/dutch/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/dutch/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/dutch/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/english/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/english/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/english/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/english/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/english/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/english/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/english/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/english/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/french/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/french/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/french/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/french/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/french/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/french/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/french/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/french/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/german/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/german/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/german/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/german/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/german/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/german/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/german/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/german/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/greek/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/greek/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/greek/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/greek/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/greek/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/greek/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/greek/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/greek/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/hindi/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/hindi/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/hindi/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/hindi/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/hindi/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/hindi/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/hindi/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/hindi/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/hongkong/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/hongkong/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/hongkong/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/hongkong/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/hongkong/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/hongkong/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/hongkong/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/hongkong/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/hungarian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/hungarian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/hungarian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/hungarian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/hungarian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/hungarian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/hungarian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/hungarian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/indonesian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/indonesian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/indonesian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/indonesian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/indonesian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/indonesian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/indonesian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/indonesian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/italian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/italian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/italian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/italian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/italian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/italian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/italian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/italian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/japanese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/japanese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/japanese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/japanese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/japanese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/japanese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/japanese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/japanese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/korean/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/korean/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/korean/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/korean/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/korean/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/korean/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/korean/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/korean/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/polish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/polish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/polish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/polish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/polish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/polish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/polish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/polish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/portuguese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/portuguese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/portuguese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/portuguese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/portuguese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/portuguese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/portuguese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/portuguese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/russian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/russian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/russian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/russian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/russian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/russian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/russian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/russian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/spanish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/spanish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/spanish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/spanish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/spanish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/spanish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/spanish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/spanish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/swedish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/swedish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/swedish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/swedish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/swedish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/swedish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/swedish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/swedish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/thai/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/thai/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/thai/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/thai/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/thai/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/thai/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/thai/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/thai/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/turkish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/turkish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/turkish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/turkish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/turkish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/turkish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/turkish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/turkish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md create mode 100644 ocr/vietnamese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md create mode 100644 ocr/vietnamese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md create mode 100644 ocr/vietnamese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md create mode 100644 ocr/vietnamese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md create mode 100644 ocr/vietnamese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md create mode 100644 ocr/vietnamese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md create mode 100644 ocr/vietnamese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md create mode 100644 ocr/vietnamese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md diff --git a/ocr/arabic/net/ocr-configuration/_index.md b/ocr/arabic/net/ocr-configuration/_index.md index 3c687ed8..7feba640 100644 --- a/ocr/arabic/net/ocr-configuration/_index.md +++ b/ocr/arabic/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ url: /ar/net/ocr-configuration/ أطلق العنان لقدرات التعرف الضوئي على الحروف (OCR) القوية باستخدام Aspose.OCR لـ .NET. استخراج النص من الصور بسلاسة. ### [عملية OCRO مع القائمة في التعرف على الصور OCR](./ocr-operation-with-list/) أطلق العنان لإمكانات Aspose.OCR لـ .NET. قم بإجراء التعرف على الصور بتقنية التعرف الضوئي على الحروف (OCR) بسهولة باستخدام القوائم. تعزيز الإنتاجية واستخراج البيانات في تطبيقاتك. +### [قراءة المورد المضمن في .NET – دليل كامل لتعيين ترخيص Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +تعلم كيفية قراءة الموارد المضمنة في .NET وتعيين ترخيص Aspose خطوة بخطوة. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/arabic/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..3ecd07a9 --- /dev/null +++ b/ocr/arabic/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-01-10 +description: قراءة المورد المدمج وتعيين ترخيص Aspose في C#. تعلم كيفية استخدام GetManifestResourceStream، + وتضمين ملف الترخيص، والحصول على التجميع التنفيذي في .NET في دليل واحد. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: ar +og_description: قراءة المورد المضمن في .NET وتعيين ترخيص Aspose بسرعة. دليل خطوة بخطوة + يغطي GetManifestResourceStream، وتضمين الترخيص، واستخدام التجميع التنفيذي. +og_title: قراءة المورد المدمج – تعيين ترخيص Aspose في .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: قراءة المورد المدمج في .NET – دليل كامل لتعيين ترخيص Aspose +url: /ar/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# قراءة المورد المدمج – دليل كامل لتعيين ترخيص Aspose + +هل احتجت يومًا إلى **قراءة المورد المدمج** أثناء وقت التشغيل وتساءلت كيف تحصل على ترخيص مكتبة Aspose OCR الخاصة بك دون كتابة المسارات بشكل ثابت؟ لست وحدك. في العديد من التطبيقات المؤسسية ملف الترخيص يعيش داخل التجميع بحيث لا تحتاج إلى شحن ملفات إضافية أو القلق بشأن الأذونات المفقودة. يوضح لك هذا الدرس بالضبط كيفية قراءة مورد مدمج وتعيين ترخيص Aspose باستخدام طريقة .NET `GetManifestResourceStream`. + +سنستعرض كل ما تحتاجه: تضمين ملف `.lic`، استخراجها باستخدام `GetExecutingAssembly`، وأخيرًا تطبيقها على فئة Aspose OCR `License`. في النهاية ستحصل على حل ذاتي الاحتواء يعمل على أي مشروع .NET—بدون ملفات خارجية. + +## ما ستتعلمه + +- **كيفية تضمين ملف ترخيص** في مشروع .NET بحيث يصبح جزءًا من DLL المجمعة. +- الطريقة الصحيحة **لاستخدام GetManifestResourceStream** لقراءة ذلك المورد المدمج. +- كيفية **تعيين ترخيص Aspose** برمجيًا دون لمس نظام الملفات. +- نصائح للتعامل مع المشكلات الشائعة مثل أسماء الموارد المكتوبة بشكل خاطئ أو إجراءات البناء المفقودة. +- عينة كود كاملة وقابلة للتنفيذ يمكنك إدراجها في حلّك الخاص. + +### المتطلبات المسبقة + +- .NET 6.0 أو أحدث (الكود يعمل على .NET Framework 4.x أيضًا، فقط عدّل ملف المشروع وفقًا لذلك). +- حزمة NuGet الخاصة بـ Aspose.OCR مثبتة (`dotnet add package Aspose.OCR`). +- إلمام أساسي بـ C# و Visual Studio (أو بيئتك المفضلة). + +إذا كان لديك هذه العناصر جاهزة، رائع—لنبدأ. + +## الخطوة 1: تضمين ملف ترخيص Aspose في التجميع الخاص بك + +أول شيء تحتاجه هو ملف الترخيص الفعلي (`Aspose.OCR.lic`). بدلاً من نسخه بجوار الملف التنفيذي، ستقوم بتضمينه كـ **مورد**. + +1. أضف ملف `.lic` إلى مشروعك (مثلاً، أنشئ مجلدًا `Resources` وضع الملف هناك). +2. في خصائص الملف، اضبط **Build Action** إلى `Embedded Resource`. + *نصيحة احترافية:* حافظ على بنية المجلد بسيطة؛ سيكون اسم المورد المؤهل بالكامل `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +لماذا التضمين؟ لأن التجميع الآن يحمل الترخيص داخله، مما يلغي خطر فقدان الملف على خادم الإنتاج. + +## الخطوة 2: استرجاع المورد المدمج باستخدام GetExecutingAssembly + +الآن بعد أن يعيش الترخيص داخل الـ DLL، تحتاج إلى طريقة **لقراءة المورد المدمج** أثناء وقت التشغيل. فئة .NET `Assembly` توفر لك ذلك بالضبط. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +طريقة `GetExecutingAssembly` تُعيد التجميع الذي يعمل حاليًا—مثالية لتحديد موقع الموارد التي تعيش بجانب الكود الخاص بك. + +## الخطوة 3: فتح تدفق الترخيص باستخدام GetManifestResourceStream + +مع وجود مرجع التجميع في يدك، يمكنك استدعاء `GetManifestResourceStream`. تُعيد هذه الطريقة `Stream` يمكنك تمريره مباشرة إلى Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +لاحظ أننا نستخدم بيان `using` **شرطي‑null** (`using Stream?`) لضمان إغلاق التدفق تلقائيًا. إذا كان الاسم خاطئًا، نرمي استثناءً واضحًا—هذا يحفظك من الفشل الصامت لاحقًا. + +## الخطوة 4: تطبيق الترخيص على Aspose OCR + +فئة `License` الخاصة بـ Aspose تتوقع `Stream`. لدينا واحدة بالفعل، لذا الخطوة الأخيرة بسيطة. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +هذا كل شيء! الآن محرك Aspose OCR مرخص بالكامل وجاهز لمعالجة الصور دون علامة مائية تجريبية. + +## مثال كامل يعمل + +فيما يلي برنامج كامل جاهز للنسخ واللصق يوضح العملية بالكامل. يتضمن توجيهات `using` اللازمة، معالجة الأخطاء، واستدعاء OCR بسيط لإثبات أن الترخيص فعال. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### النتيجة المتوقعة + +عند تشغيل البرنامج على جهاز يحتوي على ترخيص مدمج صالح، يجب أن ترى: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +إذا تعذر العثور على تدفق الترخيص، سيُظهر الطرفية اسم المورد المفقود، مما يوجهك للتحقق مرة أخرى من **Build Action** والمساحة الاسمية. + +## المشكلات الشائعة وكيفية تجنبها + +| المشكلة | لماذا يحدث | الحل | +|-------|----------------|-----| +| **عدم تطابق اسم المورد** | .NET يبني اسم المورد من الفضاء الاسمي الافتراضي + مسار المجلد. | استخدم `Assembly.GetManifestResourceNames()` لسرد الأسماء المتاحة والتحقق من السلسلة الدقيقة. | +| **ملف الترخيص غير مضبوط كـ Embedded Resource** | الإجراء الافتراضي للبناء هو `Content`. | غيّره إلى `Embedded Resource` في خصائص الملف. | +| **التشغيل من تجميع مختلف** | إذا استدعيت الكود من مكتبة فئات، قد تُعيد `GetExecutingAssembly()` المكتبة بدلاً من الملف التنفيذي الرئيسي. | استخدم `Assembly.GetEntryAssembly()` أو مرّر التجميع الصحيح صراحةً. | +| **إغلاق التدفق قبل الاستخدام** | استخدام كتلة `using` تغلق التدفق مبكرًا عن قصد. | احتفظ بـ `using` حول استدعاء `SetLicense`، كما هو موضح أعلاه. | +| **عدم توافق نسخة Aspose.OCR** | الإصدارات الأحدث قد تتطلب تنسيق ترخيص مختلف. | دائمًا قم بتحميل أحدث ترخيص من حساب Aspose وأعد تضمينه. | + +## استخدام التقنية نفسها لملفات مدمجة أخرى + +النمط—**قراءة المورد المدمج**، ثم **استخدام GetManifestResourceStream**—يعمل لأي نوع ملف: إعدادات JSON، صور، وحتى ملفات DLL أصلية. فقط عدّل `resourceName` والطريقة التي تستهلك بها التدفق. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## نظرة بصرية + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt text:* قراءة المورد المدمج – مخطط يوضح التضمين، الاسترجاع باستخدام GetManifestResourceStream، وتطبيق ترخيص Aspose. + +## ملخص + +لقد غطينا كيفية **قراءة المورد المدمج** في تجميع .NET، الخطوات الدقيقة **لاستخدام GetManifestResourceStream**، والطريقة السليمة **لتعيين ترخيص Aspose** دون كشف الملفات على القرص. من خلال تضمين الترخيص، تلغي مشكلات النشر وتحافظ على قابلية نقل تطبيقك. + +## ما التالي؟ + +- **أتمتة تحديثات الترخيص:** اكتب برنامجًا نصيًا صغيرًا أثناء عملية البناء يستبدل ملف `.lic` المدمج عندما تجدد اشتراك Aspose. +- **تأمين المورد:** فكر في تشفير الترخيص قبل التضمين وفك تشفيره أثناء وقت التشغيل لمزيد من الحماية. +- **استكشاف منتجات Aspose الأخرى:** نفس النهج يعمل مع Aspose.Words، Aspose.PDF، إلخ، كل منها يمتلك فئة `License` الخاصة به. + +لا تتردد في التجربة—ربما ستضمّن تراخيص متعددة لوحدات مختلفة، أو تتحول إلى اسم مورد يُحدد عبر التكوين. لا حدود للإبداع. + +*برمجة سعيدة! إذا واجهت أي مشاكل، اترك تعليقًا أدناه أو تفقد منتديات 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/net/skew-angle-calculation/_index.md b/ocr/arabic/net/skew-angle-calculation/_index.md index 566ce602..b996ddc1 100644 --- a/ocr/arabic/net/skew-angle-calculation/_index.md +++ b/ocr/arabic/net/skew-angle-calculation/_index.md @@ -40,9 +40,12 @@ url: /ar/net/skew-angle-calculation/ أطلق العنان لقوة Aspose.OCR لـ .NET، وهو حل قوي للتعرف على الصور. تعلم كيفية حساب زوايا الانحراف دون عناء. ### [حساب زاوية الانحراف من URI في التعرف على الصور OCR](./calculate-skew-angle-from-uri/) استكشف Aspose.OCR لـ .NET لحساب زوايا الانحراف بسهولة في التعرف على الصور باستخدام OCR. عزز مشاريعك بالدقة والكفاءة. +### [كيفية تصحيح انحراف الصورة في C# – دليل كامل لمعالجة ما قبل OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +تعلم خطوة بخطوة كيفية تصحيح انحراف الصور قبل تطبيق OCR باستخدام Aspose.OCR لـ .NET في بيئة C#. + {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/arabic/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..bf2adcfc --- /dev/null +++ b/ocr/arabic/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-01-10 +description: كيفية تصحيح انحراف الصورة وتحسين نتائج OCR باستخدام Aspose.OCR. تعلم + كيفية تمهيد الصورة للـ OCR، إزالة الضوضاء من المسح، والتعرف على النص من المسح. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: ar +og_description: كيفية تصحيح انحراف الصورة وزيادة دقة OCR. يوضح هذا الدليل كيفية إعداد + الصورة مسبقًا للتعرف الضوئي على الأحرف، وإزالة الضوضاء من المسح، والتعرف على النص + من المسح باستخدام Aspose.OCR. +og_title: كيفية تصحيح إمالة الصورة في C# – دليل شامل لمعالجة ما قبل التعرف الضوئي + على الأحرف +tags: +- OCR +- C# +- Image Processing +title: كيفية تصحيح إمالة الصورة في C# – دليل شامل لمعالجة ما قبل OCR +url: /ar/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تصحيح ميل الصورة في C# – دليل شامل لمعالجة ما قبل OCR + +هل تساءلت يومًا **كيف تصحح ميل الصورة** قبل تمريرها إلى محرك OCR؟ لست وحدك. غالبًا ما تكون المستندات الممسوحة ضوئيًا مائلة، أو مشوشة، أو ذات تباين منخفض، وهذا يعيق أي محاولة للتعرف على النص. + +في هذا الدرس سنستعرض مثالًا كاملاً وقابلًا للتنفيذ **يعالج الصورة من أجل OCR**، يزيل الضوضاء من المسح، وأخيرًا **يتعرف على النص من المسح** باستخدام مكتبة Aspose.OCR. في النهاية ستحصل على فكرة واضحة عن **كيفية استخدام OCR** في C# مع الحفاظ على شفرة مختصرة وبسيطة. + +> **نصيحة محترف:** حتى دوران بسيط (5‑10°) يمكن أن يقلل من دقة OCR بنسبة 30 % أو أكثر. تصحيح الميل هو الخطوة الأولى التي لا يجب أن تتخطاها أبدًا. + +--- + +## ما ستحتاجه + +- **.NET 6+** (الكود يعمل أيضًا على .NET Framework، لكن .NET 6 هو الإصدار الحالي طويل الدعم) +- **Aspose.OCR for .NET** – يمكنك الحصول عليه من NuGet (`Install-Package Aspose.OCR`) +- عينة من ملفات TIFF/PNG/JPEG مائلة أو مشوشة (سنستخدم `noisy_rotated.tif` في المثال) +- أي بيئة تطوير تفضلها – Visual Studio، Rider، أو VS Code ستكفي + +هذا كل شيء. لا مكتبات إضافية، ولا خدمات خارجية. + +--- + +## الخطوة 1 – تحميل الصورة المصدر (لماذا هذا مهم) + +قبل أن نتمكن من **تصحيح ميل الصورة**، نحتاج إلى قراءتها إلى كائن Aspose `ImageStream`. هذا الكائن يج abstracts عمليات I/O للملف ويعطي محرك OCR واجهة موحدة. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*لماذا التحميل أولًا؟* لأن جميع الفلاتر اللاحقة تعمل على صورة في الذاكرة. إذا تعذر قراءة الملف، سيفشل كامل خط الأنابيب. + +--- + +## الخطوة 2 – بناء خط أنابيب المعالجة المسبقة (تصحيح الميل + إزالة الضوضاء + تحسين التباين) + +عادةً ما يربط سير عمل OCR قوي عدة فلاتر معًا. هنا نُ **نعالج الصورة من أجل OCR**، والأهم من ذلك، **نوضح كيف نصحح ميل الصورة** تلقائيًا. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**لماذا هذه الثلاثة؟** +- **DeskewFilter** يحل مشكلة “كيف تصحح ميل الصورة” تلقائيًا؛ لا تحتاج لتخمين الزاوية. +- **DenoiseFilter** يتعامل مع طلب “إزالة الضوضاء من المسح”، والذي قد يخلق حروفًا وهمية. +- **ContrastBoostFilter** يساعد محرك OCR على تمييز النص الداكن عن الخلفية الفاتحة، وهو مشكلة شائعة عندما *تعالج الصورة من أجل OCR*. + +--- + +## الخطوة 3 – تطبيق خط الأنابيب (رؤية التحول) + +الآن نقوم فعليًا بتشغيل الفلاتر. الـ `processedImage` المرتجع هو ما سنمرره إلى محرك OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +إذا فتحت `cleaned_output.tif`، ستلاحظ أن النص أصبح مستقيمًا، أقل حبيبية، وبتباين أعلى. هذا الفحص البصري مفيد عندما *تزيل الضوضاء من المسح* وتريد التأكد من أن تصحيح الميل نجح. + +--- + +## الخطوة 4 – إنشاء وتكوين محرك OCR (كيفية استخدام OCR) + +مع صورة نظيفة في اليد، نقوم بإنشاء كائن `OcrEngine`. هذا هو جوهر **كيفية استخدام OCR** مع Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*لماذا نضبط `AutoPageSegmentation`؟* لأن العديد من المسحات تحتوي على جداول أو أعمدة متعددة. تفعيل هذه الخاصية يسمح للمحرك بتقسيم الصفحة بذكاء، مما يحسن النتيجة النهائية لـ **التعرف على النص من المسح**. + +--- + +## الخطوة 5 – تشغيل عملية التعرف (أخيرًا التعرف على النص) + +الآن لحظة الحقيقة: نطلب من المحرك قراءة النص. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +إذا سارت الأمور بسلاسة، سترى كتلة نصية نظيفة تتطابق مع المستند الأصلي. هذا هو ثمرة **تصحيح ميل الصورة**، **إزالة الضوضاء**، و**معالجة الصورة من أجل OCR** بشكل صحيح. + +--- + +## الخطوة 6 – مثال كامل جاهز للتنفيذ (انسخه‑الصقه) + +فيما يلي البرنامج الكامل، جاهز للترجمة. فقط غيّر مسار الملف وستكون جاهزًا. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**الناتج المتوقع** (مقتطع للختصر): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +إذا بدا الناتج مشوشًا، تحقق مرة أخرى أن الصورة المصدر ليست مائلة بأكثر من 30°، أو زد قيمة `DeskewFilter.MaxAngle`. + +--- + +## الأسئلة المتكررة (حالات حافة وتنوعات) + +| السؤال | الجواب | +|----------|--------| +| **ماذا لو كان مسحي مائلًا بزاوية 45°؟** | `DeskewFilter` يحد الزاوية بـ `MaxAngle`. قم بزيادة القيمة (مثلاً `MaxAngle = 60`) أو قم بــ pre‑rotate الصورة باستخدام مكتبة رسومية قبل تمريرها إلى خط الأنابيب. | +| **هل يمكنني معالجة ملفات PDF صفحة‑بصفحة؟** | نعم. حوّل كل صفحة PDF إلى صورة (مثلاً باستخدام `Aspose.Pdf`) وشغّل نفس خط الأنابيب على كل bitmap. | +| **مستندي بالفرنسية – هل يجب أن أغير شيئًا؟** | اضبط `ocrEngine.Language = Language.French;` أو حمّل حزمة لغة مخصصة. بقية خط الأنابيب يبقى كما هو. | +| **هل هناك طريقة للحفاظ على الدقة الأصلية؟** | `PreprocessPipeline` يعمل على الـ bitmap الأصلي، محافظًا على DPI. تجنّب استدعاء `ImageStream.Resize` إلا إذا كنت بحاجة لتقليل الحجم لأداء أفضل. | +| **كيف يؤثر تحسين التباين على المسحات الملونة؟** | `ContrastBoostFilter` يعمل على كل قناة؛ وهو آمن للصور الرمادية أو الملونة، لكن يمكنك أيضًا تحويلها إلى رمادية أولًا باستخدام `new GrayscaleFilter()`. | + +--- + +## مثال صورة (مساعدة بصرية) + +![مثال على كيفية تصحيح ميل الصورة](/images/deskew-example.png) + +*الصورة تُظهر قبل/بعد مسح مائل 12° ومشوش تم تصحيح ميله وتنظيفه.* + +--- + +## الخلاصة + +لقد غطينا **كيفية تصحيح ميل الصورة** باستخدام Aspose.OCR، وعرضنا خط أنابيب كامل **معالجة الصورة من أجل OCR**، وأظهرنا كيفية **إزالة الضوضاء من المسح**، وأخيرًا **التعرف على النص من المسح** ببضع أسطر من C#. من خلال ربط `DeskewFilter` و`DenoiseFilter` و`ContrastBoostFilter` ستحصل على bitmap نظيف يسمح لمحرك OCR بأداء مهمته دون التعرض للعيوب. + +ما الخطوات التالية؟ جرّب تعديل قوة الفلاتر، أضف `BinarizationFilter` للحصول على مخرجات بالأبيض والأسود النقي، أو مرّر الصورة المنقاة إلى خط أنابيب NLP لاحق. النمط نفسه يعمل على الإيصالات، وجوازات السفر، والوثائق التاريخية على حد سواء. + +هل لديك المزيد من الأسئلة حول **كيفية استخدام 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/net/text-recognition/_index.md b/ocr/arabic/net/text-recognition/_index.md index 58e5dde9..bd5fe7ca 100644 --- a/ocr/arabic/net/text-recognition/_index.md +++ b/ocr/arabic/net/text-recognition/_index.md @@ -52,12 +52,25 @@ url: /ar/net/text-recognition/ ### [وضع اكتشاف المناطق بتقنية التعرف الضوئي على الحروف (OCR) في التعرف على الصور بتقنية التعرف الضوئي على الحروف (OCR).](./ocr-detect-areas-mode/) قم بتحسين تطبيقات .NET الخاصة بك باستخدام Aspose.OCR للتعرف الفعال على نص الصورة. استكشف وضع مناطق اكتشاف التعرف الضوئي على الحروف (OCR) للحصول على نتائج دقيقة. ### [التعرف على PDF في التعرف على الصور OCR](./recognize-pdf/) -أطلق العنان لإمكانات التعرف الضوئي على الحروف في .NET باستخدام Aspose.OCR. استخراج النص من ملفات PDF دون عناء. قم بالتنزيل الآن للحصول على تجربة تكامل سلسة. +أطلق العنان لإمكانات التعرف الضوئي على الحروف في .NET باستخدام Aspose.OCR. استخراج النص من ملفات PDF دون عناء. قم بتنزيل الآن للحصول على تجربة تكامل سلسة. ### [التعرف على الجدول في التعرف على الصور OCR](./recognize-table/) أطلق العنان لإمكانات Aspose.OCR لـ .NET من خلال دليلنا الشامل حول التعرف على الجداول في التعرف على الصور باستخدام OCR. +### [كيفية تشغيل OCR في C# – دليل كامل مع Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +تعلم خطوة بخطوة كيفية تشغيل تقنية التعرف الضوئي على الحروف في C# باستخدام مكتبة Aspose OCR لتحقيق أفضل النتائج. +### [كيفية تشغيل OCR في C# – استخراج النص العربي من PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +تعلم خطوة بخطوة تشغيل OCR في C# لاستخراج النص العربي من ملفات PNG بسهولة. +### [استخراج النص من الصورة باستخدام Aspose OCR – دليل كامل بلغة C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +تعلم خطوة بخطوة استخراج النص من الصور باستخدام Aspose OCR في بيئة C# للحصول على أفضل النتائج. +### [إنشاء PDF قابل للبحث من PNG في C# – دليل كامل](./create-searchable-pdf-from-png-in-c-complete-guide/) +تعلم خطوة بخطوة كيفية تحويل صور PNG إلى ملفات PDF قابلة للبحث باستخدام Aspose.OCR في بيئة C#. +### [استخراج النص من الصورة في C# – دليل كامل لـ Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +دليل شامل لاستخراج النص من الصور باستخدام Aspose OCR في C# خطوة بخطوة لتحقيق أفضل النتائج. +### [التعرف على النص من صورة في C# – دليل كامل لتقنية OCR و JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +تعلم خطوة بخطوة كيفية استخراج النص من الصور باستخدام C# وتنسيق النتائج كـ JSON باستخدام 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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/arabic/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..4618bbeb --- /dev/null +++ b/ocr/arabic/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-01-10 +description: إنشاء ملف PDF قابل للبحث من PNG باستخدام C#. تعلم كيفية تحويل الصورة + إلى PDF، استخراج النص من PNG، واستخدام OCR للصورة في C# في دليل سهل واحد. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: ar +og_description: إنشاء ملف PDF قابل للبحث من PNG باستخدام C#. يوضح هذا الدليل كيفية + تحويل الصورة إلى PDF، واستخراج النص من PNG، واستخدام OCR للصورة في C# مع Aspose. +og_title: إنشاء ملف PDF قابل للبحث من PNG في C# – خطوة بخطوة +tags: +- Aspose OCR +- C# +- PDF/A +title: إنشاء ملف PDF قابل للبحث من PNG باستخدام C# – دليل كامل +url: /ar/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# إنشاء ملف PDF قابل للبحث من PNG في C# – دليل كامل + +هل تحتاج إلى **إنشاء ملف PDF قابل للبحث** من ملف PNG في C#؟ لست وحدك—العديد من المطورين يواجهون هذه المشكلة عندما يرغبون في أن تكون صورهم الممسوحة ضوئياً قابلة للعرض **و** قابلة للبحث بالنص. في هذا البرنامج التعليمي سنستعرض كامل العملية: **تحويل الصورة إلى PDF**، تشغيل OCR **لاستخراج النص من png**، وأخيراً حفظ كل شيء كوثيقة **PDF/A‑2b** متوافقة وقابلة للبحث. + +بنهاية الشرح ستحصل على مقتطف شفرة واحد قابل لإعادة الاستخدام يمكنك إدراجه في أي مشروع .NET، بالإضافة إلى مجموعة من النصائح العملية التي ستوفر عليك عناءً لاحقاً. لا خدمات خارجية، فقط مكتبة Aspose OCR وعدة أسطر من C#. + +> **المتطلبات المسبقة** +> * .NET 6+ (أو .NET Framework 4.7.2+). +> * Visual Studio 2022 أو أي بيئة تطوير متوافقة مع C#. +> * رخصة Aspose OCR صالحة (أو تجربة مجانية). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Create searchable PDF from PNG using C#"} + +## الخطوة 1 – تثبيت وإضافة مرجع Aspose OCR لـ C# + +أولاً وقبل كل شيء: تحتاج إلى حزمة Aspose OCR عبر NuGet. افتح الطرفية (أو وحدة تحكم مدير الحزم) وشغّل الأمر التالي: + +```bash +dotnet add package Aspose.OCR +``` + +إذا كنت تفضّل الواجهة الرسومية، انقر بزر الماوس الأيمن على مشروعك → **Manage NuGet Packages…** → ابحث عن *Aspose.OCR* وقم بتثبيت أحدث نسخة مستقرة. + +لماذا هذه المكتبة؟ تدعم **تحويل png إلى pdf**، تتعامل مع الصور متعددة الصفحات، ويمكنها إنتاج PDF/A‑2b مباشرةً—مثالية لإنشاء **ملف PDF قابل للبحث** يتوافق مع معايير الأرشفة. + +> **نصيحة احترافية:** سجّل رخصتك مبكراً في `Program.cs` لتجنب علامة التقييم المائية. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## الخطوة 2 – تحميل PNG وتشغيل OCR (استخراج النص من png) + +الآن سنحمّل صورة المصدر. تساعد الدالة `ImageStream.FromFile` في إخفاء تفاصيل نظام الملفات وتعمل مع أي تنسيق نقطي مدعوم. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +في هذه المرحلة يكون المحرك قد **استخراج النص من png** وخزّنها داخلياً. يمكنك حتى فحص النص الخام عبر `ocrEngine.Text`، وهو مفيد للتصحيح أو التسجيل. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **ماذا لو كانت الصورة متعددة الصفحات؟** +> يتعامل Aspose OCR مع كل صفحة كطبقة منفصلة. فقط استدعِ `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` وسيقوم المحرك بالتكرار تلقائياً. + +## الخطوة 3 – تكوين خيارات PDF/A‑2b (إنشاء ملف PDF قابل للبحث) + +لتحويل نتيجة OCR إلى **ملف PDF قابل للبحث**، نحتاج إلى إخبار Aspose بكيفية حزم المخرجات. PDF/A‑2b هو الخيار المثالي للحفظ على المدى الطويل ويضمن أن طبقة النص قابلة للبحث. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +لماذا تضمين الصورة الأصلية؟ بعض فحوصات الامتثال تتطلب أن تكون التمثيل البصري مطابقاً للمسح الأصلي. هذه العلامة تجعل الملف عملية **تحويل الصورة إلى pdf** حقيقية مع الحفاظ على النص القابل للبحث. + +## الخطوة 4 – حفظ النتيجة والتحقق (تحويل png إلى pdf) + +أخيراً، نكتب ملف الإخراج. طريقة `Save` نفسها تعمل مع أي مسار تقدمه. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +افتح ملف `output.pdf` الناتج في Adobe Reader أو أي عارض PDF وحاول البحث عن كلمة تظهر في PNG الأصلي. إذا تم تمييز الكلمة، تهانينا—لقد نجحت في **إنشاء ملف PDF قابل للبحث** من PNG! + +### سكريبت التحقق السريع (اختياري) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## لماذا نستخدم PDF/A‑2b للملفات PDF القابلة للبحث؟ + +* **أمان الأرشفة:** يضمن PDF/A‑2b أن الملف يمكن عرضه بنفس الطريقة بعد عقود من الآن. +* **الامتثال التنظيمي:** تتطلب العديد من الصناعات (القانونية، الطبية، المالية) PDF/A لحفظ السجلات. +* **قابلية البحث:** طبقة النص المدمجة من OCR تجعل المستند قابلًا للفهرسة بواسطة أدوات البحث على الحاسوب. + +إذا لم تكن بحاجة إلى عبء الامتثال الإضافي، يمكنك حذف سطر `PdfAStandard` واستخدام `new PdfSaveOptions()` ببساطة—ستظل النتيجة قابلة للبحث، لكنها ليست PDF/A‑2b. + +## الأخطاء الشائعة وكيفية تجنبها + +| العَرَض | السبب المحتمل | الحل | +|---------|--------------|-----| +| لا يظهر نص قابل للبحث | لم يتم استدعاء `ocrEngine.Recognize()` أو فشل بصمت | تأكد من صحة مسار الصورة وأن الرخصة مسجلة. | +| حجم PDF كبير (10 + ميغابايت) | PNG الأصلي عالي الدقة و`EmbedOriginalImage` مفعّل | قلل أبعاد الصورة قبل OCR أو اضبط `EmbedOriginalImage = false`. | +| النص مشوش | اللغة لم تُكتشف تلقائيًا | اضبط `ocrEngine.Language = "eng";` (أو لغتك المستهدفة) قبل `Recognize()`. | + +## مثال كامل يعمل (جاهز للنسخ واللصق) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +شغّل البرنامج، افتح `output.pdf`، وحاول البحث عن كلمات تعرف أنها موجودة في `input.png`. إذا كان كل شيء متطابقًا، فقد أتقنت الآن سير عمل **تحويل الصورة إلى pdf** وتعلمت كيفية **ocr image c#**. + +## الخطوات التالية والمواضيع ذات الصلة + +* **المعالجة الدفعية:** تكرار عبر مجلد من PNGs ودمج النتائج في ملف PDF واحد. +* **تنسيقات إخراج بديلة:** يمكن لـ Aspose OCR أيضًا إنتاج DOCX أو TXT أو PDF/A‑1b قابل للبحث. +* **تحسين الأداء:** استخدم `ocrEngine.RecognitionMode = RecognitionMode.Fast` للأحجام الكبيرة حيث لا تكون الدقة المطلقة ضرورية. +* **مكتبات أخرى:** إذا كنت بميزانية محدودة، استكشف Tesseract .NET—مع ذلك ستفقد دعم PDF/A المدمج. + +--- + +### ملخص سريع + +أظهرنا لك كيفية **إنشاء ملف PDF قابل للبحث** من PNG باستخدام Aspose OCR في C#. الخطوات هي: + +1. تثبيت Aspose OCR (`dotnet add package Aspose.OCR`). +2. تحميل PNG وتشغيل `ocrEngine.Recognize()` (**استخراج النص من png**). +3. تكوين `PdfSaveOptions` لـ PDF/A‑2b (**تحويل الصورة إلى pdf** و **تحويل png إلى pdf**). +4. حفظ الملف والتحقق من طبقة البحث. + +جرّبه، عدّل الخيارات، وستحصل قريبًا على خط أنابيب قوي لتحويل أي صورة ممسوحة ضوئياً إلى PDF جاهز للأرشفة وقابل للبحث. ترميز سعيد! + +{{< /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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/arabic/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..c3f2d381 --- /dev/null +++ b/ocr/arabic/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: استخراج النص من الصورة باستخدام Aspose OCR في C#. تعلم كيفية تحويل نص + المستند الممسوح ضوئياً باستخدام المعالجة الدفعية وحفظ النتائج. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: ar +og_description: استخراج النص من الصورة باستخدام Aspose OCR في C#. يوضح هذا الدرس كيفية + تحويل نص المستند الممسوح ضوئياً باستخدام المعالجة الدفعية. +og_title: استخراج النص من الصورة في C# – دليل Aspose OCR الكامل +tags: +- OCR +- C# +- Aspose +- Image Processing +title: استخراج النص من الصورة في C# – دليل Aspose OCR الكامل +url: /ar/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# استخراج النص من الصورة – دليل Aspose OCR الكامل + +هل احتجت يومًا إلى **استخراج النص من الصورة** لكنك لم تكن متأكدًا من أين تبدأ؟ لست وحدك؛ العديد من المطورين يواجهون هذه المشكلة عند التعامل مع ملفات PDF الممسوحة ضوئيًا، أو ملفات TIFF متعددة الصفحات، أو الإيصالات المستندة إلى الصور. الخبر السار هو أنه باستخدام Aspose OCR يمكنك **تحويل نص المستند الممسوح ضوئيًا** في بضع أسطر فقط من C#. + +في هذا الدرس سنستعرض سيناريو واقعي: أخذ ملف TIFF متعدد الصفحات، تشغيل OCR دفعي على كل صفحة، وكتابة ملف نصي واحد يحتوي على محتوى كل صفحة. بنهاية الدرس ستحصل على تطبيق كونسول جاهز للتنفيذ، وتفهم لماذا كل خطوة مهمة، وتعرف كيف تعدل التدفق لحالات الحافة مثل الصور المحمية بكلمة مرور أو حزم اللغات المخصصة. + +## المتطلبات المسبقة + +- .NET 6.0 SDK أو أحدث (الكود يعمل مع .NET Core و .NET Framework أيضًا) +- Visual Studio 2022 (أو أي محرر تفضله) +- ملف ترخيص Aspose OCR (أو يمكنك استخدام وضع التقييم المجاني) +- ملف صورة متعدد الصفحات (مثال: `multipage.tif`) موجود في مجلد يمكنك الإشارة إليه + +لا توجد حزم NuGet إضافية مطلوبة بخلاف `Aspose.OCR`؛ سنقوم بتثبيتها في الخطوة الأولى. + +## الخطوة 1 – تثبيت Aspose  OCR وإعداد المشروع + +للبدء، أنشئ مشروع كونسول جديد وأضف مكتبة Aspose OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **نصيحة احترافية:** إذا كان لديك ملف ترخيص (`Aspose.OCR.lic`)، انسخه إلى جذر المشروع. ستقوم المكتبة تلقائيًا بتحميله أثناء التشغيل. + +لماذا هذه الخطوة؟ تثبيت الحزمة يمنحك الوصول إلى `BatchProcessor` و `OcrEngine` وفئات مفيدة أخرى تُجردك من التعامل مع الصور على مستوى منخفض. كما يضمن أنك تستخدم أحدث خوارزميات OCR التي تقدمها Aspose. + +## الخطوة 2 – تحميل صورة متعددة الصفحات باستخدام BatchProcessor + +`BatchProcessor` صُمم لهذا السيناريو بالضبط: التكرار على كل صفحة من صورة متعددة الصفحات دون الحاجة إلى تقسيم الملفات يدويًا. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +يقوم `BatchProcessor` بقراءة جميع الصفحات إلى الذاكرة، ويُتيح الوصول إليها عبر `batchProcessor.Pages`. كل كائن صفحة يعرف رقمه (`ocrPage.Number`) والذي سنستخدمه لاحقًا لعناوين واضحة. + +## الخطوة 3 – إعداد StringBuilder لتجميع النتائج + +نريد ملف نصي واحد يحتوي على مخرجات OCR لكل صفحة، مفصولة بعناوين. `StringBuilder` هو أكثر طريقة كفاءة لدمج السلاسل داخل حلقة. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +لماذا `StringBuilder`؟ دمج السلاسل باستخدام `+` داخل حلقة سيؤدي إلى إنشاء سلسلة جديدة في كل تكرار، مما يضر بالأداء—خاصةً مع المستندات الكبيرة. + +## الخطوة 4 – التكرار على كل صفحة، تشغيل OCR، وإضافة النتائج + +الآن نصل إلى جوهر الدرس: التكرار على كل صفحة، التعرف على النص، وتخزينه مع علامة صفحة. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**لماذا إنشاء `OcrEngine` جديد لكل صفحة؟** بعض المطورين يعيدون استخدام محرك واحد ويغيرون خاصية `Image`، لكن ذلك قد يحتفظ بإعدادات اللغة أو النتائج السابقة، مما يسبب أخطاء دقيقة. إنشاء محرك جديد يضمن بداية نظيفة. + +### التعامل مع الحالات الشائعة + +- **صفحات فارغة:** إذا كانت الصفحة لا تحتوي على نص يمكن التعرف عليه، سيكون `ocrEngine.Text` سلسلة فارغة. قد ترغب في إدراج عنصر نائب مثل “(No text detected)”. +- **اختيار اللغة:** بشكل افتراضي يستخدم Aspose OCR اللغة الإنجليزية. لمعالجة الألمانية أو الفرنسية، اضبط `ocrEngine.Language = Language.German;` قبل استدعاء `Recognize()`. +- **نصيحة أداء:** بالنسبة لملفات TIFF الضخمة، يمكنك تمكين `ocrEngine.UseParallelProcessing = true;` لاستغلال الأنوية المتعددة. + +## الخطوة 5 – كتابة المخرجات المجمعة إلى ملف نصي + +أخيرًا، احفظ السلسلة المتجمعة على القرص. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +سيظهر ملف `multipage_result.txt` الناتج بالشكل التالي: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +الآن لديك **استخراج النص من الصورة** و**تحويل نص المستند الممسوح ضوئيًا** إلى صيغة قابلة للبحث والتحرير. + +## إضافي – نظرة بصرية (نص بديل للصورة) + +فيما يلي مخطط تدفق بسيط يوضح العملية. +*النص البديل:* “مخطط يوضح كيفية استخراج النص من الصورة باستخدام معالجة دفعة Aspose OCR في C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(إذا كنت تنشر هذا الدرس على موقع ثابت، استبدل العنصر النائب بملف SVG أو PNG فعلي.)* + +## الأسئلة المتكررة + +**هل يعمل هذا مع ملفات PDF؟** +نعم، يمكن لـ Aspose OCR قراءة صفحات PDF كصور. عليك فقط تحويل PDF إلى صور أولًا، أو استخدام `PdfDocument` من `Aspose.PDF` وتغذية كل صورة صفحة إلى `OcrEngine`. + +**ماذا لو كان ملف TIFF محميًا بكلمة مرور؟** +`BatchProcessor` لا يتعامل مع التشفير مباشرة. فك تشفير الملف باستخدام مكتبة مثل `Aspose.Imaging` قبل تمريره إلى خط أنابيب OCR. + +**هل يمكنني إخراج JSON بدلاً من النص العادي؟** +بالطبع. استبدل منطق `StringBuilder` بمسلسل JSON (مثل `System.Text.Json`) وخزن نص كل صفحة تحت مفتاح `pageNumber`. + +## مثال كامل يعمل + +إليك البرنامج الكامل الذي يمكنك نسخه ولصقه في `Program.cs`. يتضمن جميع توجيهات using، معالجة الأخطاء، وتعليقات. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +شغّل البرنامج باستخدام: + +```bash +dotnet run +``` + +سترى رسالة في الكونسول تؤكد النجاح، وسيحتوي ملف الإخراج على نتائج OCR المدمجة. + +## الخلاصة + +لقد عرضنا طريقة عملية **لاستخراج النص من الصورة** باستخدام Aspose OCR، وتحويل أي ملف ممسوح ضوئيًا متعدد الصفحات إلى نص عادي قابل للبحث. من خلال الاستفادة من `BatchProcessor` وإعداد `OcrEngine` نظيف لكل صفحة، يمكنك **تحويل نص المستند الممسوح ضوئيًا** بشكل موثوق مع الحفاظ على بساطة وصيانة الكود. + +لا تتردد في التجربة: جرّب لغات مختلفة، غيّر الإخراج إلى JSON، أو دمج هذه المنطق في واجهة ويب API تعالج التحميلات فورًا. النمط الأساسي يبقى نفسه—تحميل، التعرف، التجميع، والحفظ. + +هل لديك المزيد من الأسئلة حول OCR، تراخيص Aspose، أو معالجة دفعات المستندات الضخمة؟ اترك تعليقًا أدناه أو راجع الوثائق الرسمية لـ 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/arabic/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..013fe1c1 --- /dev/null +++ b/ocr/arabic/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: استخراج النص من الصورة باستخدام Aspose OCR في C#. تعلم كيفية تحميل الصورة + للتعرف الضوئي على الأحرف، التعرف على النص الهندي، وتشغيل عملية التعرف الضوئي على + الأحرف في بضع خطوات بسيطة. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: ar +og_description: استخراج النص من الصورة باستخدام Aspose OCR في C#. اتبع هذا الدليل + خطوة بخطوة لتحميل الصورة للتعرف الضوئي على الحروف، والتعرف على النص الهندي، وتشغيل + التعرف الضوئي على الحروف. +og_title: استخراج النص من الصورة باستخدام Aspose OCR – دليل كامل بلغة C# +tags: +- Aspose OCR +- C# +- Image Processing +title: استخراج النص من الصورة باستخدام Aspose OCR – دليل C# الكامل +url: /ar/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# استخراج النص من الصورة باستخدام Aspose OCR – دليل C# الكامل + +هل احتجت يومًا إلى **استخراج النص من صورة** لكنك لم تكن متأكدًا أي مكتبة تختار؟ لست وحدك—فالكثير من المطورين يواجهون هذه المشكلة عندما يتعاملون لأول مرة مع OCR في .NET. الخبر السار هو أن Aspose OCR يجعل العملية بأكملها سهلة بشكل مدهش، حتى عندما تتعامل مع نصوص معقدة مثل الهندية. + +في هذا الدرس سنستعرض كل ما تحتاجه **لتحميل صورة للـ OCR**، **لتعرف على النص الهندي**، و**لتشغيل التعرف الضوئي على الأحرف** في C#. في النهاية ستحصل على تطبيق كونسول جاهز للتنفيذ يطبع النص المستخرج مباشرةً على الشاشة. + +## ما ستقوم ببنائه + +سننشئ تطبيق كونسول صغير يقوم بـ: + +1. توجيه محرك OCR إلى مجلد يحتوي على نماذج اللغات. +2. إيقاف التحميل التلقائي للموارد—مفيد للبيئات المقفلة. +3. اختيار الهندية كلغة مستهدفة. +4. تحميل صورة JPEG (أو PNG) تحتوي على نص هندي. +5. تنفيذ خط أنابيب التعرف. +6. كتابة السلسلة الناتجة إلى الكونسول. + +بدون خدمات خارجية، بدون مفاتيح سحابية، فقط OCR محلي بالكامل. + +## المتطلبات المسبقة + +- **.NET 6.0** أو أحدث (الكود يعمل أيضًا على .NET Framework 4.7+). +- حزمة **Aspose.OCR for .NET** من NuGet مثبتة. + ```bash + dotnet add package Aspose.OCR + ``` +- مجلد اسمه `OcrResources` يحتوي على نموذج اللغة الهندية (`hin.traineddata`). + يمكنك تنزيله من صفحة تحميل Aspose OCR ووضعه داخل `YOUR_DIRECTORY/OcrResources`. +- ملف صورة (`input.jpg`) يحتوي على نص هندي واضح. + للتوضيح، تخيل صورة لعلامة متجر مكتوب عليها “स्वागत है”. + +> **نصيحة احترافية:** حافظ على دقة الصورة فوق 300 dpi؛ الدقة الأقل قد تؤدي إلى فقدان الأحرف. + +--- + +## الخطوة 1: توجيه محرك OCR إلى مواردك – *extract text from image* + +أول شيء يحتاجه Aspose OCR هو موقع نماذج اللغات. إذا تخطيت هذه الخطوة، سيحاول المحرك تنزيل الملفات تلقائيًا—وهو ما قد لا ترغب به في شبكة مؤمنة. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*لماذا هذا مهم:* بتعيين `ResourcesPath` تضمن أن المحرك يحمل بيانات التدريب الصحيحة محليًا، مما يسرّع التشغيل الأول ويزيل أي حركة مرور غير متوقعة على الشبكة. + +--- + +## الخطوة 2: إيقاف التحميل التلقائي للموارد – *load image for OCR* + +في العديد من بيئات الشركات، يتم حظر الوصول إلى الإنترنت الخارجي. يدعم Aspose OCR علمًا يوقفه من محاولة جلب الملفات المفقودة تلقائيًا. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +إذا نسيت إضافة هذا السطر ولم يكن نموذج الهندية موجودًا، سيظهر استثناء يشبه “Unable to download required resource”. ضبط العلم على `false` يمنحك فشلًا واضحًا ومحددًا يمكنك معالجته بنفسك. + +--- + +## الخطوة 3: اختيار اللغة – *recognize hindi text* + +يدعم Aspose OCR عشرات اللغات، لكن عليك إخبار المحرك أي لغة تريد استخدامها. تُحدد اللغة الهندية بـ `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*ماذا لو احتجت إلى عدة لغات؟* يمكنك تعيين `Language = OcrLanguage.AutoDetect` للسماح للمحرك بالتخمين، لكن الكشف التلقائي أبطأ وقد يخطئ أحيانًا مع النصوص المختلطة. بالنسبة للهندية النقية، الاختيار الصريح هو الأكثر أمانًا. + +--- + +## الخطوة 4: تحميل صورتك – *load image for OCR* + +الآن نمرر للمحرك الصورة التي نريد قراءتها. يوفر Aspose المساعد `ImageStream.FromFile` الذي يُبسط الاعتماد على `System.Drawing`. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +إذا كان مسار الملف غير صحيح، سيُطلق Aspose استثناء `FileNotFoundException`. فحص سريع بـ `File.Exists` قبل هذا السطر يمكن أن يوفر عليك جلسة تصحيح الأخطاء. + +--- + +## الخطوة 5: تشغيل محرك OCR – *run OCR recognition* + +بعد ضبط كل شيء، نبدأ عملية التعرف. هذه الدالة متزامنة وتُحجب التنفيذ حتى يُستخرج النص. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +خلف الكواليس، يقوم Aspose بعدة مراحل: ما قبل المعالجة (إزالة الميل، إزالة الضوضاء)، التجزئة، تصنيف الأحرف، وأخيرًا المعالجة اللاحقة الخاصة باللغة. كل هذا يحدث داخل استدعاء الطريقة الواحدة. + +--- + +## الخطوة 6: إخراج النص المستخرج – *extract text from image* + +النتيجة تُخزن في خاصية `Text` للمحرك. نكتبها ببساطة إلى الكونسول، لكن يمكنك أيضًا حفظها في قاعدة بيانات، إرسالها عبر API، أو تمريرها إلى خط أنابيب NLP آخر. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**الناتج المتوقع** (بافتراض أن الصورة تحتوي على “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +إذا رأيت رموزًا مشوشة، تحقق من أن نموذج الهندية موجود في المكان الصحيح وأن الصورة غير مضغوطة بشكل مفرط. + +--- + +## مثال كامل يعمل + +فيما يلي البرنامج الكامل الذي يمكنك نسخه ولصقه في مشروع كونسول جديد (`dotnet new console`). استبدل `YOUR_DIRECTORY` بالمسار الفعلي على جهازك. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **نصيحة:** إذا كنت تخطط لمعالجة العديد من الصور داخل حلقة، أنشئ كائن `OcrEngine` واحد وأعد استخدامه—هذا يقلل من زمن التهيئة. + +--- + +## التعامل مع المشكلات الشائعة + +| المشكلة | السبب | الحل السريع | +|-------|----------------|-----------| +| **إخراج فارغ** | نموذج لغة غير صحيح أو صورة منخفضة الجودة. | تحقق من `ResourcesPath`، زد DPI الصورة، أو جرّب `ocrEngine.Image = ImageStream.FromFile(..., true)` لتفعيل التحسين التلقائي. | +| **استثناء: المورد غير موجود** | نقص ملف `.traineddata` للهندية. | نزّل نموذج الهندية من Aspose، وضعه في `OcrResources`، وتأكد من أن اسم الملف هو `hin.traineddata`. | +| **رموز غير مفهومة** | عدم توافق الترميز عند الطباعة إلى الكونسول. | عيّن ترميز الإخراج: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **بطء الأداء** | معالجة صور كبيرة دون تصغير. | قلّص حجم الصورة إلى عرض/ارتفاع أقصى 2000 px قبل تمريرها إلى OCR. | + +--- + +## الخطوات التالية والمواضيع ذات الصلة + +- **المعالجة الدفعية:** غلف الكود داخل حلقة `foreach` لمعالجة مجلد من الصور. +- **لغات مختلفة:** استبدل `OcrLanguage.Hindi` بـ `OcrLanguage.English` أو `OcrLanguage.Arabic` وغيرها. +- **تنسيقات الإخراج:** بدلاً من `Console.WriteLine`، احفظ إلى ملف نصي (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **التكامل مع ASP.NET Core:** أنشئ نقطة API تستقبل تحميل صورة وتعيد النص المستخرج كـ JSON. + +جميع هذه الامتدادات تتبع نفس النمط—تهيئة المحرك، تحميل صورة، التعرف، واستخدام النتيجة. + +--- + +## الخلاصة + +لقد أظهرنا لك كيفية **استخراج النص من الصورة** باستخدام Aspose OCR في C#. يغطي الدليل كل خطوة تحتاجها **لتحميل صورة للـ OCR**، **لتعرف على النص الهندي**، و**لتشغيل التعرف الضوئي**—كل ذلك في تطبيق كونسول مستقل. + +جرّبه مع صورك الخاصة، جرب لغات مختلفة، ولا تتردد في تعديل الشيفرة لتناسب الخدمات السحابية أو الوظائف الخلفية. الفكرة الأساسية تبقى واحدة: ضبط الموارد، اختيار اللغة، إمداد صورة، وقراءة خاصية `Text`. + +إذا واجهت أي صعوبات، راجع جدول استكشاف الأخطاء أعلاه أو اترك تعليقًا. برمجة سعيدة، ولتكن نتائج 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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/arabic/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..0d9bd804 --- /dev/null +++ b/ocr/arabic/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-01-10 +description: كيفية تشغيل OCR على صورة باستخدام Aspose OCR في C#. تعلم استخراج النص + من الصورة، تشغيل OCR على الصورة، وتحميل الصورة لـ OCR مع تسريع GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: ar +og_description: كيفية تشغيل OCR على صورة باستخدام Aspose OCR. يوضح هذا الدرس كيفية + استخراج النص من الصورة، تشغيل OCR على الصورة، وتحميل الصورة لـ OCR بكفاءة. +og_title: كيفية تشغيل OCR في C# – دليل كامل خطوة بخطوة +tags: +- OCR +- C# +- Aspose +title: كيفية تشغيل OCR في C# – دليل كامل مع Aspose OCR +url: /ar/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تشغيل OCR في C# – دليل كامل مع Aspose OCR + +هل تساءلت يومًا **كيف تشغّل OCR** على صورة وتستخرج النص دون أن تفقد أعصابك؟ لست وحدك. سواءً كنت تقوم برقمنة الفواتير، أو مسح الإيصالات، أو مجرد محاولة لإنشاء ملف PDF قابل للبحث، فإن القدرة على استخراج النص من الصورة هي حاجة يومية للعديد من المطورين. + +في هذا الدرس سنستعرض مثالًا عمليًا من البداية إلى النهاية يُظهر **كيف تشغّل OCR على ملفات الصور** باستخدام مكتبة Aspose OCR، مع تسريع باستخدام GPU للسرعة. بنهاية الدرس ستعرف بالضبط كيف تُحمّل الصورة لـ OCR، وتضبط استخدام الذاكرة، وتحصل على نصوص نظيفة—كل ذلك في بضع دقائق من الشيفرة. + +## ما ستتعلمه + +- كيفية تهيئة محرك Aspose OCR في C# +- كيفية **load image for OCR** من القرص أو من تدفق +- كيفية تمكين تسريع GPU وتحديد حد ذاكرة GPU +- كيفية **extract text from image** والتحقق من النتيجة +- المشكلات الشائعة (غياب وحدة GPU، حدود الذاكرة) وحلول سريعة + +لا تحتاج إلى أي خبرة سابقة مع Aspose OCR؛ فقط بيئة .NET جاهزة وصورة نموذجية. + +--- + +## How to Run OCR on an Image with Aspose OCR + +الخطوة الأولى التي تحتاجها هي مقطع شفرة واضح وقابل للتنفيذ يقوم بكل المهمة. إليك البرنامج الكامل الذي يمكنك نسخه، لصقه، وتشغيله فورًا. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**الناتج المتوقع** (بافتراض أن الصورة النموذجية تحتوي على العبارة “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Pro tip:** إذا لم ترى أي نص، تحقق مرة أخرى من أن وحدة GPU مثبتة وأن مسار الصورة صحيح. طريقة `ImageStream.FromFile` تُطلق استثناء واضح إذا تعذر العثور على الملف. + +--- + +## Extract Text from Image Using GPU Acceleration + +لماذا نحتاج إلى GPU أصلاً؟ OCR على المعالج فقط يعمل، لكنه قد يكون بطيئًا جدًا على الصور الكبيرة أو عالية الدقة. تمكين تسريع GPU (الخطوة 2 أعلاه) ينقل العبء الثقيل إلى بطاقة الرسوميات، التي يمكنها معالجة آلاف البكسلات في الثانية. + +### متى تستخدم GPU + +- **معالجة دفعات** – مسح عشرات الفواتير مرة واحدة. +- **مسحات عالية الدقة** – أي شيء فوق 300 dpi. +- **تطبيقات الوقت الحقيقي** – مثل ماسح هاتف محمول يحتاج إلى رد فعل فوري. + +إذا لم يكن لديك GPU متوافق، ما عليك سوى ضبط `EnableGpuAcceleration = false;` وسيتحول المحرك تلقائيًا إلى وضع المعالج. + +--- + +## Run OCR on Image – Loading the Image Correctly + +تحميل الصورة هو خطوة **load image for OCR** التي تُربك الكثيرين. Aspose OCR يتوقع `ImageStream`، يمكن إنشاؤه من ملف، أو تدفق ذاكرة، أو حتى URL. إليك بعض الأنماط: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Edge case:** بعض الصور تحتوي على قناة ألفا (شفافية) تُربك محرك OCR. إزالة الشفافية سهل: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +الآن غطيت أكثر الطرق شيوعًا لـ **load image for OCR**، مما يضمن أن المحرك يتلقى تنسيقًا نظيفًا ومدعومًا في كل مرة. + +--- + +## Tips for Loading Image for OCR Efficiently + +1. **Resize large images** – OCR لا يحتاج إلى صورة بدقة 4 K؛ تقليل العرض إلى ~1500 px يسرّع العملية دون الإضرار بالدقة. +2. **Convert to grayscale** – يقلل الضوضاء ويمكن أن يحسّن التعرف على المسحات منخفضة التباين. +3. **Pre‑process with deskew** – إذا كانت الصورة مائلة، يمكن تمكين تصحيح الميل المدمج في Aspose OCR عبر `ocrEngine.Config.EnableDeskew = true;`. + +هذه التعديلات مفيدة خاصةً عندما تقوم بـ **extract text from image** على نطاق واسع. + +--- + +## Common Pitfalls & How to Fix Them + +| العَرَض | السبب المحتمل | الحل | +|---------|--------------|-----| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | وحدة GPU غير مثبتة | قم بتثبيت حزمة Aspose OCR GPU أو عطل GPU (`EnableGpuAcceleration = false`). | +| ناتج فارغ | مسار الصورة غير صحيح أو تنسيق غير مدعوم | تحقق من مسار `ImageStream.FromFile`؛ جرّب التحميل من بايتات للتأكد من قراءة الملف بشكل صحيح. | +| خطأ نفاد الذاكرة | حد ذاكرة GPU منخفض جدًا للدفعة الكبيرة | زيادة `GpuMemoryLimit` (مثلاً 2048) أو معالجة الصور على دفعات أصغر. | +| حروف مشوشة | الصورة تحتوي على ضوضاء شديدة أو تباين منخفض | معالجة مسبقة: تحويل إلى ثنائي، إزالة البقع، أو زيادة DPI قبل OCR. | + +--- + +## Full Working Example – Put It All Together + +فيما يلي تطبيق Console مختصر يجمع أفضل الممارسات التي ناقشناها: تسريع GPU، تحديد حد الذاكرة، معالجة مسبقة للصور، ومعالجة الأخطاء. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +تشغيل هذا البرنامج يطبع النص النظيف المستخرج من صورتك، موضح طريقة قوية لـ **extract text from image** حتى عندما لا تكون الصورة مثالية. + +--- + +## Conclusion + +لقد غطينا **how to run OCR** على صورة باستخدام Aspose OCR، من تهيئة المحرك إلى تحميل الصورة، تمكين تسريع GPU، ومعالجة الحالات الخاصة. الآن لديك مرجع موثوق يمكنك نسخه‑لصقه في أي مشروع .NET والبدء فورًا في **extracting text from image**. + +ما الخطوة التالية؟ جرّب معالجة صفحات PDF، جرب لغات مختلفة (اضبط `ocrEngine.Config.Language = "spa"` للإسبانية)، أو دمج هذا التدفق في واجهة ويب API تعالج التحميلات مباشرة. السماء هي الحد، ومع الأدوات التي ناقشناها، أنت مجهز تمامًا لمواجهة أي تحدي 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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/arabic/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..e43096fa --- /dev/null +++ b/ocr/arabic/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-01-10 +description: كيفية تشغيل OCR بسرعة واستخراج النص العربي من صورة. تعلم تحويل الصورة + إلى نص، قراءة النص من PNG، واكتشف كيفية استخراج النص باستخدام Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: ar +og_description: كيفية تشغيل OCR في C# واستخراج النص العربي من صورة PNG. يوضح لك هذا + الدليل كيفية تحويل الصورة إلى نص وقراءة النص من PNG خطوة بخطوة. +og_title: كيفية تشغيل OCR في C# – استخراج النص العربي من PNG +tags: +- OCR +- C# +- Aspose +title: كيفية تشغيل OCR في C# – استخراج النص العربي من PNG +url: /ar/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تشغيل OCR في C# – استخراج النص العربي من PNG + +هل تساءلت يومًا **كيفية تشغيل OCR** على صورة تحتوي على أحرف عربية؟ لست وحدك. يواجه العديد من المطورين صعوبة عندما يحتاجون إلى **استخراج النص العربي** من ملف PNG لكنهم لا يعرفون أي مكتبة ستتعامل مع النصوص من اليمين إلى اليسار دون عناء. + +في هذا الدرس سنستعرض كل ما تحتاج إلى معرفته لـ **تحويل الصورة إلى نص**، **قراءة النص من PNG**، وأخيرًا **كيفية استخراج النص** باستخدام Aspose.OCR في تطبيق C# console بسيط. في النهاية ستحصل على برنامج جاهز للتنفيذ يطبع السلسلة العربية مباشرةً في الطرفية الخاصة بك. + +## ما ستتعلمه + +- تثبيت وإضافة مرجع لحزمة Aspose.OCR عبر NuGet. +- تكوين محرك OCR لدعم اللغة العربية. +- تحميل صورة PNG وتشغيل عملية التعرف. +- استرجاع وعرض النص المستخرج. +- تعديل الإعدادات لتحسين الدقة ومعالجة المشكلات الشائعة. + +لا يلزم وجود خبرة سابقة في OCR، فقط فهم أساسي للغة C# وبيئة تطوير .NET (Visual Studio، Rider، أو سطر أوامر `dotnet` يكفي). + +--- + +## كيفية تشغيل OCR – إعداد Aspose OCR + +### الخطوة 1: إضافة حزمة Aspose.OCR عبر NuGet + +أول شيء نحتاجه هو مكتبة OCR نفسها. Aspose.OCR هو منتج تجاري، لكنه يقدم نسخة تجريبية مجانية تعمل بشكل مثالي لأغراض التعلم. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +بدلاً من ذلك، افتح **NuGet Package Manager** في Visual Studio، ابحث عن **Aspose.OCR**، وانقر على **Install**. + +> **نصيحة احترافية:** إذا كنت تخطط لاستخدام المكتبة في خط أنابيب CI، أضف العلامة `-v` لتثبيت الإصدار، مثال: `dotnet add package Aspose.OCR -v 23.10`. + +### الخطوة 2: إنشاء مشروع Console جديد (إذا لم يكن لديك واحد) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +الآن لديك ملف `Program.cs` جديد جاهز لكودنا. + +--- + +## استخراج النص العربي – كتابة كود OCR + +فيما يلي البرنامج الكامل الجاهز للتنفيذ. احفظه كملف `Program.cs` (أو استبدل الملف الذي تم إنشاؤه تلقائيًا). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### لماذا كل سطر مهم + +- **`OcrEngine`**: الفئة المركزية التي تنسق تحميل الصورة، اختيار اللغة، والتمييز. +- **`Language = OcrLanguage.Arabic`**: العربية تستخدم نصًا من اليمين إلى اليسار ورموزًا فريدة؛ ضبط اللغة يخبر المحرك باستخدام نماذج الأحرف الصحيحة. +- **`ImageStream.FromFile`**: يدعم PNG، JPEG، BMP، والعديد من الصيغ الأخرى. إذا احتجت يومًا لقراءة من `MemoryStream` (مثلاً ملف تم رفعه)، استبدل هذا الاستدعاء وفقًا لذلك. +- **`Recognize()`**: يقوم بالعمل الشاق—تحليل البكسل، التقسيم، وتصنيف الأحرف. +- **`ocrEngine.Text`**: السلسلة النهائية Unicode، جاهزة لمزيد من المعالجة أو التخزين أو العرض. + +### النتيجة المتوقعة + +إذا كان الملف `arabic_sample.png` يحتوي على العبارة “مرحبا بالعالم” (Hello World)، فستطبع الطرفية: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +إذا كان الناتج مشوهًا، تحقق مرة أخرى من وضوح الصورة، وضبط اللغة إلى العربية، وتطابق نسخة محرك OCR مع الوثائق. + +--- + +## تحويل الصورة إلى نص – تحسين الدقة + +بينما تعمل الإعدادات الافتراضية لمعظم المسحات النظيفة، غالبًا ما تحتاج الصور الواقعية إلى بعض التحسينات الإضافية. + +| الإعداد | ما يفعله | متى يستخدم | +|---------|--------------|-------------| +| `ocrEngine.Config.Preprocess = true` | يفعل التحويل إلى ثنائي وإزالة الضوضاء تلقائيًا. | المستندات الممسوحة ضوئيًا ذات الظلال. | +| `ocrEngine.Config.Deskew = true` | يدور الصورة لتصحيح الميل الطفيف. | الصور الملتقطة بزاوية. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | يتعامل مع الصورة بأكملها ككتلة نص واحدة. | تسميات بسيطة أو عناوين سطر واحد. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | يقصر التعرف على الأحرف العربية فقط. | يقلل الإيجابيات الزائفة في الصفحات متعددة اللغات. | + +يمكنك إضافة هذه الأسطر مباشرةً بعد إنشاء المحرك: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## قراءة النص من PNG – التعامل مع مصادر الصور المختلفة + +أحيانًا يكون ملف PNG مخزنًا في قاعدة بيانات أو يأتي من طلب ويب. إليك نسخة سريعة تقرأ من `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +بقية العملية تبقى متطابقة، مما يعني أن **كيفية استخراج النص** تظل ثابتة بغض النظر عن المصدر. + +--- + +## كيفية استخراج النص – الخيارات المتقدمة وحالات الحافة + +### 1. ملفات PDF أو TIFF متعددة الصفحات + +إذا كنت بحاجة إلى تنفيذ OCR على مستند متعدد الصفحات، قم بالتكرار عبر كل صفحة: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **ملاحظة:** ستحتاج إلى حزمة `Aspose.PDF` لهذا المقتطف. + +### 2. اكتشاف اللغة تلقائيًا + +يوفر Aspose.OCR أيضًا اكتشافًا تلقائيًا للغة، لكنه أبطأ. إذا لم تكن متأكدًا ما إذا كانت الصورة تحتوي على العربية أو نص آخر، فعّل ذلك: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +### 3. نصائح الأداء + +- **إعادة استخدام كائن `OcrEngine`** لعدة صور؛ إنشاء نسخة جديدة في كل مرة يضيف عبئًا. +- **التنفيذ المتوازي** فقط إذا كان لديك محركات منفصلة لكل خيط—مشاركة نسخة واحدة يسبب حالات سباق. + +--- + +## الخلاصة + +لقد غطينا **كيفية تشغيل OCR** في C# من البداية إلى النهاية، موضحين لك كيفية **استخراج النص العربي**، **تحويل الصورة إلى نص**، **قراءة النص من PNG**، والإجابة على **كيفية استخراج النص** في مجموعة متنوعة من السيناريوهات. الكود النموذجي كامل، مستقل، وجاهز لتلصقه في أي مشروع .NET console. + +ما الخطوة التالية؟ جرّب استبدال `OcrLanguage.Arabic` بالكورية أو السيريلية الصربية لتستكشف قدرة المكتبة المتعددة اللغات. جرب علامات المعالجة المسبقة لتحسين الدقة في المسحات الضوضائية، أو دمج روتين 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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/arabic/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..a63de387 --- /dev/null +++ b/ocr/arabic/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,294 @@ +--- +category: general +date: 2026-01-10 +description: تعلم كيفية التعرف على النص من الصورة، استخراج إحداثيات النص، وتحويل الإيصال + إلى JSON باستخدام Aspose OCR في C#. دليل خطوة بخطوة. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: ar +og_description: التعرف على النص من الصورة في C# باستخدام Aspose OCR. يوضح هذا الدليل + كيفية استخراج النص، الحصول على الإحداثيات، وتحويل الإيصال إلى JSON. +og_title: التعرف على النص من الصورة – دليل OCR كامل بلغة C# +tags: +- OCR +- C# +- Aspose +title: التعرف على النص من صورة في C# – دليل كامل لتقنية OCR و JSON +url: /ar/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# التعرف على النص من الصورة – دليل OCR كامل بلغة C# + +هل احتجت يومًا إلى التعرف على النص من صورة لكن لم تكن متأكدًا أي مكتبة تختار؟ لست وحدك. في العديد من التطبيقات الواقعية—متتبعات النفقات، ماسحات الفواتير، أو أرشفة المستندات—استخراج النص بشكل موثوق هو العائق الأول. + +في هذا الدليل سنستعرض **كيفية استخراج النص**، استخراج الصناديق المحيطة به، وأخيرًا **تحويل الفاتورة إلى JSON** باستخدام Aspose.OCR لـ .NET. في النهاية ستحصل على مشروع C# مستقل يأخذ صورة لفاتورة ويولد ملف JSON منظم يحتوي على درجات الثقة والإحداثيات. + +## ما ستحتاجه + +- **.NET 6.0 SDK** (أو أي نسخة أحدث). الإطارات الأقدم تعمل أيضًا، لكن .NET 6 هو الخيار المثالي للمكتبات الحديثة. +- **Visual Studio 2022** أو VS Code مع امتداد C#. +- حزمة NuGet **Aspose.OCR for .NET** (`Aspose.OCR` و `Aspose.OCR.Output`). يمكنك تثبيتها عبر وحدة تحكم مدير الحزم: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- صورة عينة لفاتورة (مثلاً `receipt.jpg`) موجودة في مجلد ستشير إليه لاحقًا. + +هذا كل شيء—لا حاجة ل SDK إضافية، ولا ثنائيات أصلية، فقط شفرة مُدارة صافية. + +## الخطوة 1: إنشاء مشروع وحدة تحكم جديد + +أولًا، أنشئ تطبيق وحدة تحكم. إنها أسرع طريقة لاختبار OCR دون الحاجة إلى واجهة مستخدم. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **نصيحة احترافية:** حافظ على تنظيم مجلد المشروع؛ أنشئ مجلدًا فرعيًا باسم `Resources` وضع فيه `receipt.jpg`. هذا يجعل التعامل مع المسارات سهلًا. + +## الخطوة 2: تحميل صورة الفاتورة + +الآن سنقوم فعليًا **بالتعرف على النص من الصورة**. الخطوة الأولى هي توجيه محرك OCR إلى الملف. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +لماذا نغلف عملية التحميل بفحص بسيط للوجود؟ لأنك في بيئة الإنتاج غالبًا ما تتعامل مع ملفات يرفعها المستخدم قد تكون مفقودة أو تالفة. اكتشاف المشكلة مبكرًا يحفظك من استثناءات غامضة لاحقًا. + +## الخطوة 3: تنفيذ OCR – **التعرف على النص من الصورة** + +مع وجود الصورة في الذاكرة، نطلب من Aspose **التعرف على النص من الصورة**. هذه العملية متزامنة وتعيد مجموعة نتائج غنية. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +خلف الكواليس، يستخدم Aspose شبكة عصبية تم تدريبها على ملايين الأحرف. يقوم المحرك بملء `ocrEngine.Text`، `ocrEngine.RecognitionResult`، ومجموعة من كائنات `OcrRegion` التي تحتوي على الإحداثيات. هذا بالضبط ما نحتاجه للخطوة التالية. + +## الخطوة 4: **كيفية استخراج النص** – الحصول على السلسلة الخام + +إذا كنت تهتم فقط بالنص العادي (ربما للبحث السريع)، يمكنك سحبه مباشرةً من المحرك: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +ستلاحظ فواصل أسطر حيث اكتشف OCR حدود الفقرات. في العديد من سيناريوهات مسح الفواتير، تكون السلسلة الخام كافية لاستخراج الإجماليات، التواريخ، أو أسماء البائعين باستخدام تعبيرات regex بسيطة. + +## الخطوة 5: **استخراج إحداثيات النص** – الصناديق المحيطة لكل كلمة + +غالبًا ما تحتاج إلى معرفة *أين* على الصورة يقع جزء معين من النص—مثلاً لتسليط الضوء على المبلغ الإجمالي في واجهة المستخدم. يوفر لنا Aspose ذلك عبر كائنات `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +لاحظ أننا نكرر **استخراج إحداثيات النص** لكل مقطع تم التعرف عليه. الإحداثيات نسبية للصورة الأصلية، لذا يمكنك وضعها فوقها في لوحة رسومات أو عنصر HTML ``. + +## الخطوة 6: **تحويل الفاتورة إلى JSON** – حفظ النتائج التفصيلية + +الآن يأتي الجزء الذي يجمع كل شيء معًا: نريد هيكلًا قابلاً للقراءة آليًا يتضمن النص، درجات الثقة، والصناديق المحيطة. يأتي Aspose مع `JsonSaveOptions` التي تجعل هذا سهلًا. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +الملف الناتج يبدو كالتالي (مقتطع للاختصار): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +الآن لديك قطعة **تحويل الفاتورة إلى JSON** يمكن تمريرها إلى الخدمات اللاحقة—مثل واجهات برمجة تطبيقات تقارير النفقات، خطوط التحليل، أو حتى واجهة بسيطة ترسم مستطيلات حول كل كلمة. + +## مثال عملي كامل + +بجمع كل الأجزاء معًا، إليك ملف `Program.cs` الكامل الذي يمكنك نسخه ولصقه في مشروعك: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +شغّل البرنامج (`dotnet run`) وتابع مخرجات وحدة التحكم. افتح `Resources/receipt.json` للتحقق من البنية. + +## أسئلة شائعة وحالات خاصة + +- **ماذا لو كانت الصورة غير واضحة؟** + يعمل Aspose OCR بأفضل شكل مع 300 dpi أو أعلى. إذا حصلت على درجات ثقة منخفضة، فكر في تطبيق مرشح تحسين الحدة قبل تمرير الصورة إلى المحرك. + +- **هل يمكنني التعرف على لغات متعددة؟** + نعم. اضبط `ocrEngine.Language = Language.English | Language.Spanish;` قبل استدعاء `Recognize()`. + +- **كيف أقصر الإخراج على الأرقام فقط (مثل الإجماليات)؟** + بعد الحصول على النص العادي، نفّذ تعبير regex مثل `\d+\.\d{2}` على `ocrEngine.Text`. بما أننا نملك الإحداثيات، يمكنك ربط السلسلة المطابقة بمنطقتها لتسليط الضوء بصريًا. + +- **هل يمكن تخصيص صيغة JSON؟** + تُظهر فئة `JsonSaveOptions` مجموعة من العلامات القابلة للتعديل. إذا كنت بحاجة إلى مخطط مخصص تمامًا، يمكنك التجول عبر `ocrEngine.RecognitionResult.Regions` وتسلسل الكائنات بنفسك باستخدام `System.Text.Json`. + +## الخلاصة + +لقد أوضحنا للتو كيفية **التعرف على النص من الصورة** في C# باستخدام Aspose.OCR، **كيفية استخراج النص**، استخراج **إحداثيات النص**، وأخيرًا **تحويل الفاتورة إلى JSON**. جميع الخطوات موجودة في تطبيق وحدة تحكم واحد سهل التشغيل، مما يجعله مثاليًا للنماذج الأولية أو ككتلة بناء في أنظمة أكبر. + +ما الخطوات التالية؟ جرّب تمرير JSON إلى واجهة أمامية ترسم الصناديق المحيطة، أو ربط الناتج بخدمة تقارير النفقات. يمكنك أيضًا تجربة صيغ صور مختلفة (PNG، TIFF) أو معالجة مجموعة من الفواتير دفعة واحدة. + +هل لديك أسئلة إضافية حول OCR أو Aspose أو معالجة JSON؟ اترك تعليقًا أدناه، وتمنياتنا لك بالبرمجة السعيدة! + +![مثال صورة فاتورة للتعرف على النص من الصورة](receipt.jpg "مثال صورة الفاتورة") + +{{< /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/net/ocr-configuration/_index.md b/ocr/chinese/net/ocr-configuration/_index.md index 8d3e1997..e6c17f20 100644 --- a/ocr/chinese/net/ocr-configuration/_index.md +++ b/ocr/chinese/net/ocr-configuration/_index.md @@ -39,9 +39,12 @@ url: /zh/net/ocr-configuration/ 使用 Aspose.OCR for .NET 解锁强大的 OCR 功能。无缝地从图像中提取文本。 ### [OCR 图像识别中的 OCROperation 与列表](./ocr-operation-with-list/) 释放 Aspose.OCR for .NET 的潜力。使用列表轻松执行 OCR 图像识别。提高应用程序的生产力和数据提取。 +### [在 .NET 中读取嵌入资源 – 设置 Aspose 许可证的完整指南](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +学习如何在 .NET 项目中读取嵌入资源并正确设置 Aspose 许可证,以确保功能正常运行。 + {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/chinese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..da840448 --- /dev/null +++ b/ocr/chinese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: 在 C# 中读取嵌入资源并设置 Aspose 许可证。学习如何使用 GetManifestResourceStream、嵌入许可证文件以及获取执行程序集 + .NET 的完整教程。 +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: zh +og_description: 在 .NET 中读取嵌入资源并快速设置 Aspose 许可证。一步步指南,涵盖 GetManifestResourceStream、嵌入许可证以及使用执行程序集。 +og_title: 读取嵌入资源 – 在 .NET 中设置 Aspose 许可证 +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: .NET 中读取嵌入资源 – 设置 Aspose 许可证的完整指南 +url: /zh/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 读取嵌入资源 – 设置 Aspose 许可证的完整指南 + +是否曾经在运行时需要 **读取嵌入资源**,并且想知道如何在不硬编码路径的情况下为 Aspose OCR 库授权?你并不是唯一遇到这种情况的人。在许多企业应用中,许可证文件位于程序集内部,这样就不必额外分发文件或担心权限缺失。本教程将准确演示如何读取嵌入资源并使用 .NET 的 `GetManifestResourceStream` 方法设置 Aspose 许可证。 + +我们将逐步讲解所有必需的内容:将 `.lic` 文件嵌入项目、使用 `GetExecutingAssembly` 提取它,最后将其应用到 Aspose OCR 的 `License` 类。完成后,你将拥有一个自包含的解决方案,适用于任何 .NET 项目——无需外部文件。 + +## 您将学习 + +- **如何将许可证文件嵌入**到 .NET 项目中,使其成为编译后 DLL 的一部分。 +- 正确使用 **GetManifestResourceStream** 读取该嵌入资源的方法。 +- 如何以编程方式 **设置 Aspose 许可证**,而无需触碰文件系统。 +- 处理常见陷阱的技巧,例如资源名称拼写错误或缺少构建操作。 +- 一个完整、可运行的代码示例,可直接放入你的解决方案中。 + +### 前置条件 + +- .NET 6.0 或更高版本(代码同样适用于 .NET Framework 4.x,只需相应调整项目文件)。 +- 已安装 Aspose.OCR NuGet 包(`dotnet add package Aspose.OCR`)。 +- 对 C# 和 Visual Studio(或你喜欢的 IDE)有基本了解。 + +如果这些条件已经具备,太好了——让我们开始吧。 + +## Step 1: 将 Aspose 许可证文件嵌入到程序集 + +首先需要准备实际的许可证文件(`Aspose.OCR.lic`)。与其将其复制到可执行文件旁边,不如将其 **嵌入为资源**。 + +1. 将 `.lic` 文件添加到项目中(例如,创建一个 `Resources` 文件夹并将文件放入其中)。 +2. 在文件属性中,将 **Build Action** 设置为 `Embedded Resource`。 + *小贴士:* 保持文件夹结构简洁;完整限定的资源名称将是 `YourNamespace.Resources.Aspose.OCR.lic`。 + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +为什么要嵌入?因为程序集现在内部携带了许可证,消除了生产服务器上文件缺失的风险。 + +## Step 2: 使用 GetExecutingAssembly 检索嵌入资源 + +许可证已经位于 DLL 中,你需要一种方式在运行时 **读取嵌入资源**。.NET 的 `Assembly` 类正好提供了这个功能。 + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +`GetExecutingAssembly` 方法返回当前运行的程序集——非常适合定位与你的代码同在的资源。 + +## Step 3: 使用 GetManifestResourceStream 打开许可证流 + +有了程序集引用后,你可以调用 `GetManifestResourceStream`。该方法返回一个 `Stream`,可以直接喂给 Aspose 使用。 + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +请注意我们使用了 **null 条件** `using` 语句(`using Stream?`),以确保流在使用后自动释放。如果名称错误,我们会抛出明确的异常——这可以避免后期的静默失败。 + +## Step 4: 将许可证应用到 Aspose OCR + +Aspose 的 `License` 类需要一个 `Stream`。我们已经拥有它,最后一步非常直接。 + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +就这样!Aspose OCR 引擎现在已完全授权,能够在不显示试用水印的情况下处理图像。 + +## Full Working Example + +下面提供一个完整的、可复制粘贴的程序,演示整个过程。它包含必要的 `using` 指令、错误处理以及一个简单的 OCR 调用,以验证许可证已生效。 + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Expected Output + +当在嵌入了有效许可证的机器上运行程序时,你应该看到: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +如果找不到许可证流,控制台会报告缺失的资源名称,提示你检查 **Build Action** 和命名空间是否正确。 + +## Common Pitfalls & How to Avoid Them + +| 问题 | 产生原因 | 解决方案 | +|-------|----------------|-----| +| **资源名称不匹配** | .NET 根据默认命名空间 + 文件夹路径生成资源名称。 | 使用 `Assembly.GetManifestResourceNames()` 列出可用名称并确认完整字符串。 | +| **许可证文件未设为 Embedded Resource** | 默认的 Build Action 是 `Content`。 | 在文件属性中将其改为 `Embedded Resource`。 | +| **从不同程序集运行** | 若从类库调用代码,`GetExecutingAssembly()` 可能返回库而非主 exe。 | 使用 `Assembly.GetEntryAssembly()` 或显式传入正确的程序集。 | +| **流在使用前被释放** | 不小心使用了提前关闭流的 `using` 块。 | 如上示例,将 `using` 包裹在 `SetLicense` 调用期间。 | +| **Aspose.OCR 版本不匹配** | 新版本可能需要不同的许可证格式。 | 始终从 Aspose 账户下载最新许可证并重新嵌入。 | + +## Using the Same Technique for Other Embedded Files + +该模式——**读取嵌入资源**,然后 **使用 GetManifestResourceStream**——适用于任何文件类型:JSON 配置、图片,甚至本机 DLL。只需调整 `resourceName` 并相应地消费流即可。 + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Visual Overview + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt text:* 读取嵌入资源 – 示意图展示嵌入、使用 GetManifestResourceStream 检索以及应用 Aspose 许可证的过程。 + +## Recap + +我们已经介绍了如何在 .NET 程序集中 **读取嵌入资源**,以及使用 **GetManifestResourceStream** 的具体步骤,并演示了在不暴露磁盘文件的情况下 **设置 Aspose 许可证** 的简洁方法。通过嵌入许可证,你可以消除部署麻烦,使应用更加便携。 + +## What’s Next? + +- **自动化许可证更新:** 编写一个构建时脚本,在续订 Aspose 订阅时替换嵌入的 `.lic` 文件。 +- **保护资源安全:** 考虑在嵌入前对许可证进行加密,并在运行时解密,以提升安全性。 +- **探索其他 Aspose 产品:** 同样的做法适用于 Aspose.Words、Aspose.PDF 等,每个产品都有自己的 `License` 类。 + +尽情实验吧——也许你会为不同模块嵌入多个许可证,或改为使用配置驱动的资源名称。可能性无限。 + +--- + +*祝编码愉快!如果遇到任何问题,欢迎在下方留言或访问 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/chinese/net/skew-angle-calculation/_index.md b/ocr/chinese/net/skew-angle-calculation/_index.md index b1dbc548..b8875722 100644 --- a/ocr/chinese/net/skew-angle-calculation/_index.md +++ b/ocr/chinese/net/skew-angle-calculation/_index.md @@ -40,9 +40,12 @@ url: /zh/net/skew-angle-calculation/ 释放 Aspose.OCR for .NET 的强大功能,这是一种强大的图像识别解决方案。了解如何轻松计算倾斜角度。 ### [OCR 图像识别中根据 URI 计算倾斜角度](./calculate-skew-angle-from-uri/) 探索 Aspose.OCR for .NET,轻松计算 OCR 图像识别中的倾斜角度。精准高效地增强您的项目。 +### [如何在 C# 中去倾斜图像 – 完整的 OCR 预处理指南](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +学习在 C# 中使用 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/chinese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/chinese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..562426d8 --- /dev/null +++ b/ocr/chinese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-01-10 +description: 如何使用 Aspose.OCR 对图像进行去倾斜并提升 OCR 结果。学习为 OCR 预处理图像、去除扫描噪声以及识别扫描文本。 +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: zh +og_description: 如何校正图像倾斜并提升 OCR 准确率。本指南展示了如何对图像进行 OCR 预处理、去除扫描噪声,以及使用 Aspose.OCR 从扫描中识别文本。 +og_title: 如何在 C# 中纠正图像倾斜 – 完整的 OCR 预处理指南 +tags: +- OCR +- C# +- Image Processing +title: 如何在 C# 中去除图像倾斜 – 完整的 OCR 预处理指南 +url: /zh/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中校正图像倾斜 – 完整的 OCR 预处理指南 + +有没有想过在将图像文件输入 OCR 引擎之前 **如何校正图像倾斜**?你并不是唯一有此困惑的人。扫描的文档常常倾斜、噪声大或对比度低,这会影响任何文字识别的尝试。 + +在本教程中,我们将演示一个完整且可运行的示例,**对图像进行 OCR 预处理**,去除扫描噪声,最终使用 Aspose.OCR 库 **从扫描中识别文本**。完成后,你将清晰了解在 C# 中 **如何使用 OCR**,并且代码保持简洁易懂。 + +> **专业提示:** 即使是小幅旋转(5‑10°)也会导致 OCR 准确率下降 30 % 以上。校正倾斜是绝对不能跳过的第一步。 + +--- + +## 你需要的环境 + +- **.NET 6+**(代码同样适用于 .NET Framework,但 .NET 6 是当前的长期支持版本) +- **Aspose.OCR for .NET** – 可从 NuGet 获取(`Install-Package Aspose.OCR`) +- 一个已旋转或带噪声的示例 TIFF/PNG/JPEG(示例中使用 `noisy_rotated.tif`) +- 任意你喜欢的 IDE – Visual Studio、Rider 或 VS Code 都可以 + +就这些。无需额外库,也不需要外部服务。 + +## 第一步 – 加载源图像(为何重要) + +在我们能够 **校正图像倾斜** 之前,需要将其读取到 Aspose 的 `ImageStream` 中。该对象抽象了文件 I/O,并为 OCR 引擎提供一致的接口。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*为何先加载?* 因为所有后续过滤器都在内存图像上操作。如果文件无法读取,整个流水线将会崩溃。 + +## 第二步 – 构建预处理流水线(校正倾斜 + 去噪 + 对比度) + +一个健壮的 OCR 工作流通常会串联多个过滤器。在这里我们 **对图像进行 OCR 预处理**,更重要的是 **自动校正图像倾斜**。 + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**为何选择这三种?** +- **DeskewFilter** 自动解决 “如何校正图像倾斜” 的问题;无需手动猜测角度。 +- **DenoiseFilter** 处理 “去除扫描噪声” 的需求,否则会产生虚假字符。 +- **ContrastBoostFilter** 帮助 OCR 引擎区分暗文字和浅背景,这是在 *对图像进行 OCR 预处理* 时的常见问题。 + +## 第三步 – 应用流水线(观察转换) + +现在我们实际运行这些过滤器。返回的 `processedImage` 将作为输入喂给 OCR 引擎。 + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +如果打开 `cleaned_output.tif`,你会发现文字变得水平、噪点更少且对比度更高。当你 *去除扫描噪声* 并想确认倾斜校正是否成功时,这种视觉检查非常有用。 + +## 第四步 – 创建并配置 OCR 引擎(如何使用 OCR) + +手握整洁的图像后,我们实例化 `OcrEngine`。这就是使用 Aspose **如何使用 OCR** 的核心。 + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*为何设置 `AutoPageSegmentation`?* 因为许多扫描件包含表格或多列。开启后引擎能够智能地拆分页面,提升最终 **从扫描中识别文本** 的结果。 + +## 第五步 – 运行识别过程(最终识别文本) + +现在是关键时刻:我们让引擎读取文本。 + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +如果一切顺利,你会看到一段干净的文本,与你的原始文档相匹配。这就是正确 **校正图像倾斜**、**去除噪声**、以及 **对图像进行 OCR 预处理** 的回报。 + +## 第六步 – 完整可运行示例(复制粘贴即可) + +下面是完整的程序,已准备好编译。只需替换文件路径,即可运行。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**预期输出**(为简洁起见已截断): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +如果输出乱码,请再次确认源图像的旋转角度未超过 30°,或增大 `DeskewFilter.MaxAngle`。 + +## 常见问题(边缘情况与变体) + +| Question | Answer | +|----------|--------| +| **如果我的扫描件旋转了 45°怎么办?** | `DeskewFilter` 的 `MaxAngle` 有上限。可以提升它(例如 `MaxAngle = 60`),或在将图像送入流水线前使用图形库预先旋转图像。 | +| **我可以逐页处理 PDF 吗?** | 可以。将每页 PDF 转换为图像(例如使用 `Aspose.Pdf`),然后在每个位图上运行相同的流水线。 | +| **我的文档是法语的,需要做什么修改吗?** | 设置 `ocrEngine.Language = Language.French;` 或加载自定义语言包。其余流水线保持不变。 | +| **有没有办法保持原始分辨率?** | `PreprocessPipeline` 在原始位图上工作,保留 DPI。除非出于性能需要下采样,否则避免调用 `ImageStream.Resize`。 | +| **对彩色扫描图像进行对比度提升会有什么影响?** | `ContrastBoostFilter` 对每个通道都起作用;对灰度或彩色图像都安全,但你也可以先使用 `new GrayscaleFilter()` 转为灰度。 | + +## 图像示例(视觉辅助) + +![如何校正图像倾斜示例](/images/deskew-example.png) + +*该图片展示了一个旋转 12°、带噪声的扫描件在校正倾斜并清理后的前后对比。* + +## 结论 + +我们已经介绍了使用 Aspose.OCR **校正图像倾斜** 的方法,演示了完整的 **对图像进行 OCR 预处理** 流水线,展示了如何 **去除扫描噪声**,并最终通过几行 C# **从扫描中识别文本**。通过串联 `DeskewFilter`、`DenoiseFilter` 和 `ContrastBoostFilter`,你可以得到一张整洁的位图,使 OCR 引擎能够顺利工作而不受伪影干扰。 + +下一步?尝试不同的过滤强度,添加 `BinarizationFilter` 以获得纯黑白输出,或将清理后的图像输入后续的 NLP 流水线。同样的模式同样适用于收据、护照和历史文档等。 + +对其他语言或框架下的 **如何使用 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/net/text-recognition/_index.md b/ocr/chinese/net/text-recognition/_index.md index 9a3154c2..3b7fe33d 100644 --- a/ocr/chinese/net/text-recognition/_index.md +++ b/ocr/chinese/net/text-recognition/_index.md @@ -49,15 +49,28 @@ url: /zh/net/text-recognition/ 探索 Aspose.OCR for .NET,这是一款功能强大的 OCR 解决方案,可实现图像中的无缝文本识别。 ### [在 OCR 图像识别中获取 JSON 格式的结果](./get-result-as-json/) 释放 Aspose.OCR for .NET 的强大功能。学习轻松获取 JSON 格式的 OCR 结果。通过本分步指南增强您的图像识别能力。 +### [使用 Aspose OCR 从图像提取文本 – 完整 C# 指南](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +使用 Aspose.OCR 在 C# 中完整演示如何从图像中提取文本,提供分步指南,实现高效准确的文字识别。 +### [在 C# 中从图像提取文本 – 完整 Aspose OCR 指南](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +使用 Aspose.OCR 在 C# 中完整演示如何从图像中提取文本,提供详细步骤,提升文字识别效率。 ### [OCR图像识别中的OCR检测区域模式](./ocr-detect-areas-mode/) 使用 Aspose.OCR 增强您的 .NET 应用程序,以实现高效的图像文本识别。探索 OCR 检测区域模式以获得精确结果。 ### [OCR图像识别中识别PDF](./recognize-pdf/) 使用 Aspose.OCR 释放 .NET 中 OCR 的潜力。轻松从 PDF 中提取文本。立即下载以获得无缝集成体验。 ### [OCR图像识别中的识别表](./recognize-table/) 通过我们关于 OCR 图像识别中表格识别的综合指南,释放 Aspose.OCR for .NET 的潜力。 +### [如何在 C# 中运行 OCR – Aspose OCR 完整指南](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +通过本完整指南,学习如何在 C# 项目中使用 Aspose OCR 进行光学字符识别,实现高效准确的文本提取。 +### [如何在 C# 中运行 OCR – 从 PNG 提取阿拉伯文本](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +通过本完整指南,学习如何在 C# 项目中使用 Aspose OCR 从 PNG 图像中提取阿拉伯文本,实现高效准确的文字识别。 +### [在 C# 中从 PNG 创建可搜索 PDF – 完整指南](./create-searchable-pdf-from-png-in-c-complete-guide/) +使用 Aspose.OCR 在 C# 中将 PNG 转换为可搜索的 PDF,提供完整的分步指南,实现高效文本提取。 +### [在 C# 中从图像识别文本 – OCR 与 JSON 完整指南](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +使用 Aspose.OCR 在 C# 中实现从图像提取文本并获取 JSON 格式结果的完整分步指南。 + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/chinese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..7a322c0b --- /dev/null +++ b/ocr/chinese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,223 @@ +--- +category: general +date: 2026-01-10 +description: 使用 C# 将 PNG 创建可搜索的 PDF。学习如何将图像转换为 PDF、从 PNG 提取文本以及在一个简易教程中进行图像 OCR(C#)。 +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: zh +og_description: 使用 C# 将 PNG 创建可搜索的 PDF。本指南展示如何将图像转换为 PDF、从 PNG 提取文本,以及使用 Aspose 进行图像 + OCR(C#)。 +og_title: 在 C# 中将 PNG 转换为可搜索的 PDF – 步骤指南 +tags: +- Aspose OCR +- C# +- PDF/A +title: 在 C# 中将 PNG 转换为可搜索的 PDF – 完整指南 +url: /zh/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 C# 将 PNG 转换为可搜索 PDF – 完整指南 + +需要 **从 PNG 文件创建可搜索的 PDF** 吗?你并不孤单——许多开发者在希望扫描图像既可查看 **又** 可文本搜索时都会遇到这个难题。在本教程中,我们将完整演示整个流程:**将图像转换为 PDF**、运行 OCR **从 png 中提取文本**,最后保存为符合 **PDF/A‑2b** 标准的可搜索文档。 + +完成后,你将拥有一段可直接放入任何 .NET 项目的可复用代码片段,以及一些实用技巧,帮助你以后避免头疼。无需外部服务,仅使用 Aspose OCR 库和几行 C# 代码。 + +> **先决条件** +> * .NET 6+(或 .NET Framework 4.7.2+)。 +> * Visual Studio 2022 或任意支持 C# 的 IDE。 +> * 有效的 Aspose OCR 许可证(或免费试用版)。 + +--- + +![Create searchable PDF example](image-placeholder.png){alt="使用 C# 将 PNG 转换为可搜索 PDF 示例"} + +## 步骤 1 – 安装并引用 Aspose OCR for C# + +首先,你需要 Aspose OCR NuGet 包。打开终端(或包管理器控制台)并运行: + +```bash +dotnet add package Aspose.OCR +``` + +如果更喜欢图形界面,右键点击项目 → **Manage NuGet Packages…** → 搜索 *Aspose.OCR* 并安装最新稳定版本。 + +为什么选这个库?它支持 **convert png to pdf**,能够处理多页图像,并且开箱即支持输出 PDF/A‑2b——完美用于创建符合归档标准的 **searchable pdf**。 + +> **专业提示:** 在 `Program.cs` 中尽早注册许可证,以避免评估水印。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## 步骤 2 – 加载 PNG 并运行 OCR(extract text from png) + +现在我们加载源图像。`ImageStream.FromFile` 帮助类抽象了文件系统细节,支持任何受支持的光栅格式。 + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +此时引擎已经 **extracted text from png** 并在内部保存。你甚至可以通过 `ocrEngine.Text` 检查原始文本,这对调试或日志记录非常有用。 + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **如果图像是多页怎么办?** +> Aspose OCR 将每页视为独立层。只需调用 `ocrEngine.Image = ImageStream.FromFile("multipage.tif");`,引擎会自动遍历。 + +## 步骤 3 – 配置 PDF/A‑2b 选项(create searchable pdf) + +要将 OCR 结果转化为 **searchable pdf**,需要告诉 Aspose 如何打包输出。PDF/A‑2b 是长期保存的理想选择,并保证文本层可搜索。 + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +为什么要嵌入原始图像?某些合规检查要求视觉表现必须与原始扫描一致。此标志使文件成为真正的 **convert image to pdf** 操作,同时保留可搜索文本。 + +## 步骤 4 – 保存结果并验证(convert png to pdf) + +最后,写入输出文件。相同的 `Save` 方法适用于你提供的任何路径。 + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +在 Adobe Reader 或任意 PDF 查看器中打开生成的 `output.pdf`,尝试搜索原始 PNG 中出现的单词。如果单词被高亮,恭喜你——已经成功 **create searchable pdf** 从 PNG! + +### 快速验证脚本(可选) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## 为什么使用 PDF/A‑2b 生成可搜索 PDF? + +* **归档安全性:** PDF/A‑2b 保证文件在数十年后仍能以相同方式渲染。 +* **法规合规:** 许多行业(法律、医疗、金融)要求使用 PDF/A 进行记录保存。 +* **可搜索性:** 嵌入的 OCR 文本层使文档可被桌面搜索工具索引。 + +如果不需要额外的合规负担,可以去掉 `PdfAStandard` 那一行,直接使用 `new PdfSaveOptions()`——输出仍然可搜索,只是不符合 PDF/A‑2b。 + +## 常见陷阱及解决方案 + +| 症状 | 可能原因 | 解决办法 | +|------|----------|----------| +| 没有出现可搜索文本 | 未调用或静默失败 `ocrEngine.Recognize()` | 确认图像路径正确且已注册许可证。 | +| PDF 文件体积过大(10 + MB) | 原始 PNG 分辨率过高且 `EmbedOriginalImage` 为 true | 在 OCR 前降尺度图像或将 `EmbedOriginalImage = false`。 | +| 文本乱码 | 未自动检测语言 | 在 `Recognize()` 前设置 `ocrEngine.Language = "eng";`(或目标语言)。 | + +## 完整工作示例(可直接复制) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +运行程序,打开 `output.pdf`,尝试搜索 `input.png` 中已知存在的单词。如果一切正常,你已经掌握了 **convert image to pdf** 工作流,并学会了 **ocr image c#** 的使用方式。 + +## 后续步骤与相关主题 + +* **批量处理:** 循环遍历文件夹中的 PNG 并将结果合并为单个 PDF。 +* **其他输出格式:** Aspose OCR 还可以输出 DOCX、TXT 或可搜索的 PDF/A‑1b。 +* **性能调优:** 对于对准确性要求不高的大批量,可使用 `ocrEngine.RecognitionMode = RecognitionMode.Fast`。 +* **其他库:** 若预算紧张,可尝试 Tesseract .NET——但会失去内置的 PDF/A 支持。 + +--- + +### TL;DR + +我们展示了如何使用 Aspose OCR 在 C# 中 **create searchable pdf** 从 PNG。步骤如下: + +1. 安装 Aspose OCR(`dotnet add package Aspose.OCR`)。 +2. 加载 PNG 并调用 `ocrEngine.Recognize()`(**extract text from png**)。 +3. 配置 `PdfSaveOptions` 为 PDF/A‑2b(**convert image to pdf** 与 **convert png to pdf**)。 +4. 保存文件并验证可搜索层。 + +动手试一试,调整选项,你很快就能拥有一个稳健的管道,将任何扫描图像转换为归档就绪、可搜索的 PDF。祝编码愉快! + +{{< /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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/chinese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..b1283afd --- /dev/null +++ b/ocr/chinese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-01-10 +description: 使用 Aspose OCR 在 C# 中提取图像文本。了解如何通过批处理将扫描文档的文本转换并保存结果。 +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: zh +og_description: 使用 Aspose OCR 在 C# 中从图像提取文本。本教程展示了如何使用批处理将扫描文档的文本转换。 +og_title: 在 C# 中从图像提取文本 – 完整的 Aspose OCR 指南 +tags: +- OCR +- C# +- Aspose +- Image Processing +title: 在 C# 中从图像提取文本 – 完整的 Aspose OCR 指南 +url: /zh/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 从图像提取文本 – 完整的 Aspose OCR 指南 + +是否曾需要 **从图像提取文本**,却不知从何入手?你并不孤单;许多开发者在处理扫描的 PDF、多页 TIFF 或基于照片的收据时都会遇到这个难题。好消息是,使用 Aspose OCR,你只需几行 C# 代码就能 **将扫描文档的文本转换**。 + +在本教程中,我们将通过一个真实场景:读取多页 TIFF,对每一页执行批量 OCR,并将所有页面的内容写入单个文本文件。完成后,你将拥有一个可直接运行的控制台应用,了解每一步的意义,并掌握如何针对密码保护的图像或自定义语言包等边缘情况进行调整。 + +## 前置条件 + +- .NET 6.0 SDK 或更高版本(代码同样适用于 .NET Core 和 .NET Framework) +- Visual Studio 2022(或任意你喜欢的编辑器) +- Aspose OCR 许可证文件(或使用免费评估模式) +- 一个多页图像文件(例如 `multipage.tif`),放置在可引用的文件夹中 + +除 `Aspose.OCR` 之外无需其他 NuGet 包,我们将在第一步中进行安装。 + +## 第一步 – 安装 Aspose OCR 并创建项目 + +首先,创建一个新的控制台项目并引入 Aspose OCR 库。 + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **专业提示:** 如果你有许可证文件(`Aspose.OCR.lic`),请将其复制到项目根目录。库会在运行时自动加载该文件。 + +为什么要这一步?安装包后,你即可使用 `BatchProcessor`、`OcrEngine` 等便利类,免去低层图像处理的繁琐。同时也确保使用 Aspose 提供的最新 OCR 算法。 + +## 第二步 – 使用 BatchProcessor 加载多页图像 + +`BatchProcessor` 正是为此场景设计的:在不手动拆分文件的情况下遍历多页图像的每一页。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` 会将所有页面读取到内存中,通过 `batchProcessor.Pages` 暴露。每个页面对象都有其页码(`ocrPage.Number`),我们稍后会用它来生成清晰的标题。 + +## 第三步 – 准备 StringBuilder 累积结果 + +我们希望得到一个包含所有页面 OCR 输出的单一文本文件,并以标题分隔。`StringBuilder` 是在循环中拼接字符串的最高效方式。 + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +为什么使用 `StringBuilder`?在循环中使用 `+` 进行字符串拼接会在每次迭代时分配新字符串,导致性能下降——尤其是处理大型文档时。 + +## 第四步 – 遍历每页,执行 OCR 并追加结果 + +现在进入教程的核心:遍历每页,识别文本,并使用页面标记保存。 + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**为什么每页都创建新的 `OcrEngine`?** 有些开发者会复用同一个引擎并更改其 `Image` 属性,但这可能会保留语言设置或前一次的结果,导致细微错误。实例化全新的引擎可确保每次都是干净的状态。 + +### 处理常见边缘情况 + +- **空白页:** 如果页面没有可识别的文本,`ocrEngine.Text` 将为空字符串。你可以插入占位符,例如 “(未检测到文本)”。 +- **语言选择:** 默认情况下 Aspose OCR 使用英语。若要处理德语或法语,可在调用 `Recognize()` 前设置 `ocrEngine.Language = Language.German;`。 +- **性能技巧:** 对于巨大的 TIFF,可以启用 `ocrEngine.UseParallelProcessing = true;` 以利用多核 CPU。 + +## 第五步 – 将合并后的输出写入文本文件 + +最后,将累积的字符串持久化到磁盘。 + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +生成的 `multipage_result.txt` 大致如下所示: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +至此,你已经 **从图像提取文本**,并成功 **将扫描文档的文本转换** 为可搜索、可编辑的格式。 + +## 额外内容 – 可视化概览(图片替代文字) + +下面是一张简易流程图,展示了整个过程。 +*替代文字:* “使用 Aspose OCR 批处理在 C# 中从图像提取文本的流程图”。 + +![OCR Flow Diagram](placeholder-image-url.png) + +*(如果你在静态站点上发布本教程,请将占位图替换为实际的 SVG 或 PNG。)* + +## 常见问题 + +**这能用于 PDF 文件吗?** +可以,Aspose OCR 能将 PDF 页面读取为图像。你只需先将 PDF 转为图像,或使用 `Aspose.PDF` 中的 `PdfDocument`,将每页栅格化后传给 `OcrEngine`。 + +**如果我的 TIFF 受密码保护怎么办?** +`BatchProcessor` 本身不处理加密。请先使用诸如 `Aspose.Imaging` 等库解密文件,再将其传入 OCR 流程。 + +**可以输出 JSON 而不是纯文本吗?** +完全可以。将 `StringBuilder` 逻辑替换为 JSON 序列化(例如 `System.Text.Json`),并将每页的文本存入 `pageNumber` 键下。 + +## 完整示例代码 + +以下是可直接复制到 `Program.cs` 的完整程序,包含所有 using 指令、错误处理和注释。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +运行程序: + +```bash +dotnet run +``` + +你应该会在控制台看到成功提示,输出文件中则包含合并后的 OCR 结果。 + +## 结论 + +我们已经演示了使用 Aspose OCR **从图像提取文本** 的实用方法,将任意多页扫描文件转换为纯文本、可搜索的内容。通过 `BatchProcessor` 与每页独立的 `OcrEngine` 设置,你可以可靠地 **将扫描文档的文本转换**,同时保持代码简洁易维护。 + +欢迎尝试:更换语言、改为 JSON 输出,或将此逻辑集成到实时处理上传的 Web API 中。核心模式保持不变——加载、识别、累积、持久化。 + +对 OCR、Aspose 授权或大批量文档处理还有疑问?欢迎在下方留言,或查阅 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/chinese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/chinese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..8a24fdc1 --- /dev/null +++ b/ocr/chinese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-01-10 +description: 使用 Aspose OCR 在 C# 中提取图像文本。了解如何加载图像进行 OCR、识别印地语文本,并通过几个简单步骤运行 OCR 识别。 +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: zh +og_description: 使用 Aspose OCR 在 C# 中提取图像文字。请按照本分步指南加载图像进行 OCR,识别印地语文本,并运行 OCR 识别。 +og_title: 使用 Aspose OCR 从图像提取文本 – 完整 C# 指南 +tags: +- Aspose OCR +- C# +- Image Processing +title: 使用 Aspose OCR 从图像提取文本 – 完整 C# 指南 +url: /zh/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 从图像中提取文本使用 Aspose OCR – 完整 C# 指南 + +是否曾经需要**从图像中提取文本**但不确定该选择哪个库?你并不孤单——许多开发者在第一次处理 .NET 中的 OCR 时都会遇到这个难题。好消息是,Aspose OCR 让整个过程出奇地轻松,即使你要处理像印地语这样复杂的脚本。 + +在本教程中,我们将逐步演示如何**加载图像进行 OCR**、**识别印地语文本**以及**运行 OCR 识别**的全部步骤。完成后,你将拥有一个可直接运行的控制台应用程序,能够将提取的文本直接打印到屏幕上。 + +## 您将构建的内容 + +我们将创建一个小型控制台应用程序,实现以下功能: + +1. 将 OCR 引擎指向包含语言模型的文件夹。 +2. 关闭自动下载——适用于受限环境。 +3. 将印地语设为目标语言。 +4. 加载包含印地语文本的 JPEG(或 PNG)图像。 +5. 执行识别流水线。 +6. 将结果字符串写入控制台。 + +无需外部服务、无需云密钥,纯本地 OCR。 + +## 前置条件 + +- **.NET 6.0** 或更高版本(代码同样适用于 .NET Framework 4.7+)。 +- 已安装 **Aspose.OCR for .NET** NuGet 包。 + ```bash + dotnet add package Aspose.OCR + ``` +- 一个名为 `OcrResources` 的文件夹,内含印地语语言模型 (`hin.traineddata`)。 + 你可以从 Aspose OCR 下载页面获取该模型,并放入 `YOUR_DIRECTORY/OcrResources`。 +- 一个清晰的印地语文本图像文件 (`input.jpg`)。 + 为便于说明,想象一张店面招牌的照片,上面写着 “स्वागत है”。 + +> **专业提示:** 保持图像分辨率在 300 dpi 以上;分辨率过低会导致字符缺失。 + +--- + +## 第一步:将 OCR 引擎指向您的资源 – *extract text from image* + +Aspose OCR 首先需要知道语言模型所在的位置。如果跳过此步骤,引擎会尝试自动下载文件——在受限网络中这可能不是你想要的行为。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*为什么这很重要:* 通过设置 `ResourcesPath`,可以确保引擎本地加载正确的训练数据,从而加快首次运行速度,并消除意外的网络流量。 + +--- + +## 第二步:禁用自动资源下载 – *load image for OCR* + +在许多企业环境中,出站互联网访问被阻止。Aspose OCR 支持一个标志,可阻止它在运行时尝试获取缺失的文件。 + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +如果忘记添加此行且印地语模型不存在,引擎会抛出类似 “Unable to download required resource” 的异常。将标志设为 `false` 能提供明确且可预测的失败方式,便于自行处理。 + +--- + +## 第三步:选择语言 – *recognize hindi text* + +Aspose OCR 支持数十种语言,但必须明确告诉它使用哪一种。印地语的标识为 `OcrLanguage.Hindi`。 + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*如果需要多语言怎么办?* 可以将 `Language = OcrLanguage.AutoDetect`,让引擎自行猜测,但自动检测速度较慢,且在混合脚本场景下偶尔会出错。对于纯印地语,显式选择是最安全的做法。 + +--- + +## 第四步:加载图像 – *load image for OCR* + +现在我们把要读取的图片交给引擎。Aspose 提供了便利的 `ImageStream.FromFile` 辅助方法,屏蔽了底层 `System.Drawing` 的依赖。 + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +如果文件路径错误,Aspose 会抛出 `FileNotFoundException`。在此行之前使用 `File.Exists` 进行快速检查,可避免调试时间的浪费。 + +--- + +## 第五步:运行 OCR 引擎 – *run OCR recognition* + +所有配置就绪后,我们正式启动识别过程。此调用是同步的,会阻塞直至文本提取完成。 + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +在内部,Aspose 会执行多个阶段:预处理(去倾斜、去噪声)、分割、字符分类,最后进行语言特定的后处理。所有繁重的工作都封装在这一次方法调用中。 + +--- + +## 第六步:输出提取的文本 – *extract text from image* + +结果存放在引擎的 `Text` 属性中。我们仅将其写入控制台,当然也可以存入数据库、通过 API 发送,或喂入其他 NLP 流程。 + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**预期输出**(假设图像中包含 “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +如果看到乱码,请再次确认印地语模型已正确放置,并且图像没有被过度压缩。 + +--- + +## 完整工作示例 + +下面是可以直接复制粘贴到新控制台项目(`dotnet new console`)中的完整程序。请将 `YOUR_DIRECTORY` 替换为你机器上的实际路径。 + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **提示:** 如果计划在循环中处理大量图像,建议实例化一个 `OcrEngine` 并重复使用——这样可以显著降低初始化开销。 + +--- + +## 常见问题处理 + +| 问题 | 原因 | 快速解决方案 | +|------|------|--------------| +| **输出为空** | 语言模型错误或图像质量低。 | 检查 `ResourcesPath`,提升图像 DPI,或尝试 `ocrEngine.Image = ImageStream.FromFile(..., true)` 启用自动增强。 | +| **异常:未找到资源** | 缺少印地语 `.traineddata`。 | 从 Aspose 下载印地语模型,放入 `OcrResources`,并确保文件名为 `hin.traineddata`。 | +| **乱码字符** | 控制台输出编码不匹配。 | 设置控制台输出编码:`Console.OutputEncoding = System.Text.Encoding.UTF8;`。 | +| **性能下降** | 大图像未进行缩放就直接处理。 | 在送入 OCR 前将图像预缩放至最大宽/高 2000 px。 | + +--- + +## 后续步骤与相关主题 + +- **批量处理:** 将代码包装在 `foreach` 循环中,以处理整个文件夹的图像。 +- **不同语言:** 将 `OcrLanguage.Hindi` 替换为 `OcrLanguage.English`、`OcrLanguage.Arabic` 等。 +- **输出格式:** 可将 `Console.WriteLine` 换成写入文本文件的方式,例如 `File.WriteAllText("result.txt", ocrEngine.Text);`。 +- **与 ASP.NET Core 集成:** 暴露一个 API 端点,接受图像上传并返回 JSON 格式的提取文本。 + +所有这些扩展遵循相同的模式——配置引擎、加载图像、识别并使用结果。 + +--- + +## 结论 + +我们已经展示了如何使用 Aspose OCR 在 C# 中**从图像中提取文本**。本指南覆盖了**加载图像进行 OCR**、**识别印地语文本**以及**运行 OCR 识别**的每一步,全部封装在一个自包含的控制台应用中。 + +请使用自己的图片进行尝试,实验不同语言,并随意将代码片段改造为 Web 服务或后台任务。核心思路始终不变:设置资源、选择语言、喂入图像、读取 `Text` 属性。 + +如果遇到任何问题,请参考上面的故障排查表或留下评论。祝编码愉快,愿你的 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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/chinese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..4398d0f6 --- /dev/null +++ b/ocr/chinese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-01-10 +description: 如何在 C# 中使用 Aspose OCR 对图像进行 OCR。学习从图像中提取文本、对图像运行 OCR,以及使用 GPU 加速加载图像进行 + OCR。 +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: zh +og_description: 如何使用 Aspose OCR 对图像进行 OCR。本教程展示了如何从图像中提取文本、对图像进行 OCR,以及如何高效加载图像进行 + OCR。 +og_title: 如何在 C# 中运行 OCR – 完整分步指南 +tags: +- OCR +- C# +- Aspose +title: 如何在 C# 中运行 OCR – Aspose OCR 完整指南 +url: /zh/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中运行 OCR – 使用 Aspose OCR 的完整指南 + +是否曾经想过 **如何运行 OCR** 在照片上并提取文字而不抓狂?你并不是唯一的。无论是数字化发票、扫描收据,还是仅仅想生成可搜索的 PDF,能够从图像中提取文本是许多开发者的日常需求。 + +在本教程中,我们将演示一个实用的端到端示例,展示 **在图像文件上运行 OCR** 使用 Aspose OCR 库,并配合 GPU 加速以提升速度。完成后,你将准确了解如何为 OCR 加载图像、调整内存使用,并获取干净的纯文本结果——只需几分钟的代码。 + +## 你将学到的内容 + +- 如何在 C# 中初始化 Aspose OCR 引擎 +- 如何 **load image for OCR**(为 OCR 加载图像)从磁盘或流中 +- 如何启用 GPU 加速并限制 GPU 内存 +- 如何 **extract text from image**(从图像中提取文本)并验证输出 +- 常见陷阱(GPU 模块缺失、内存限制)及快速解决方案 + +不需要任何 Aspose OCR 的先前经验;只需一个可用的 .NET 环境和一张示例图像。 + +--- + +## 使用 Aspose OCR 在图像上运行 OCR + +你首先需要的是一个清晰、可运行的代码片段,完成全部工作。下面是完整的程序,你可以直接复制、粘贴并运行。 + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**预期输出**(假设示例图像包含短语 “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **专业提示:** 如果未看到任何文本,请再次确认已安装 GPU 模块且图像路径正确。`ImageStream.FromFile` 方法在找不到文件时会抛出明确的异常。 + +--- + +## 使用 GPU 加速提取图像文本 + +为什么要使用 GPU?仅 CPU 的 OCR 能工作,但在大尺寸或高分辨率图片上会非常慢。启用 GPU 加速(上面的第 2 步)将繁重的计算交给显卡,它可以每秒处理数千像素。 + +### 何时使用 GPU + +- **批量处理** – 一次扫描数十张发票。 +- **高分辨率扫描** – 超过 300 dpi 的任何扫描。 +- **实时应用** – 如需要即时反馈的移动扫描器。 + +如果你的环境没有兼容的 GPU,只需将 `EnableGpuAcceleration = false;`,引擎会自动回退到 CPU 模式。 + +--- + +## 在图像上运行 OCR – 正确加载图像 + +加载图像是常常让人卡住的 **load image for OCR** 步骤。Aspose OCR 需要一个 `ImageStream`,它可以从文件、内存流,甚至 URL 创建。以下是几种变体: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**边缘情况:** 某些图像包含 alpha 通道(透明度),会干扰 OCR 引擎。去除 alpha 很简单: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +现在你已经了解了最常见的 **load image for OCR** 方法,确保引擎每次都收到干净、受支持的格式。 + +--- + +## 高效加载图像进行 OCR 的技巧 + +1. **调整大图像尺寸** – OCR 不需要 4 K 照片;将宽度缩放至约 1500 px 可加快速度且不影响准确性。 +2. **转换为灰度** – 减少噪声,可提升低对比度扫描的识别率。 +3. **使用去倾斜预处理** – 如果图像倾斜,可通过 `ocrEngine.Config.EnableDeskew = true;` 启用 Aspose OCR 内置的去倾斜功能。 + +当你批量 **extract text from image** 时,这些调整尤其有用。 + +--- + +## 常见陷阱及解决方法 + +| 症状 | 可能原因 | 解决方案 | +|---------|--------------|-----| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU 模块未安装 | 安装 Aspose OCR GPU 包或禁用 GPU(`EnableGpuAcceleration = false`)。 | +| 空白输出 | 图像路径错误或不受支持的格式 | 验证 `ImageStream.FromFile` 路径;尝试从字节加载以确保文件正确读取。 | +| 内存不足错误 | GPU 内存限制对大批量来说太低 | 增加 `GpuMemoryLimit`(例如 2048)或将图像分成更小批次处理。 | +| 字符乱码 | 图像噪声严重或对比度低 | 预处理:二值化、去斑点,或在 OCR 前提升 DPI。 | + +--- + +## 完整工作示例 – 综合所有内容 + +下面是一个简洁的控制台应用程序,结合了我们讨论的最佳实践:GPU 加速、内存限制、图像预处理和错误处理。 + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +运行此程序会打印从图像中提取的干净文本,展示了一种即使源图像不完美也能稳健 **extract text from image** 的方法。 + +--- + +## 结论 + +我们已经介绍了使用 Aspose OCR 在图像上 **how to run OCR** 的完整流程,从初始化引擎、加载图像、启用 GPU 加速到处理边缘情况。你现在拥有一个可靠、值得引用的参考,可直接复制粘贴到任何 .NET 项目中,立即开始 **extract text from image**。 + +下一步?尝试处理 PDF 页面,实验不同语言(例如将 `ocrEngine.Config.Language = "spa"` 设置为西班牙语),或将此流程集成到实时处理上传的 Web API 中。没有限制,凭借我们讨论的工具,你已做好应对任何 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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/chinese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..7d3c1cb8 --- /dev/null +++ b/ocr/chinese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,223 @@ +--- +category: general +date: 2026-01-10 +description: 如何快速运行 OCR 并从图像中提取阿拉伯语文本。学习将图像转换为文本,读取 PNG 中的文本,并了解如何使用 Aspose OCR 提取文本。 +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: zh +og_description: 如何在 C# 中运行 OCR 并从 PNG 图像中提取阿拉伯文文本。本指南将一步步演示如何将图像转换为文本并读取 PNG 中的文字。 +og_title: 如何在 C# 中运行 OCR – 从 PNG 提取阿拉伯文文本 +tags: +- OCR +- C# +- Aspose +title: 如何在 C# 中运行 OCR – 从 PNG 中提取阿拉伯文文本 +url: /zh/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中运行 OCR – 从 PNG 中提取阿拉伯语文本 + +有没有想过 **如何运行 OCR** 来处理包含阿拉伯字符的图片?你并不孤单。许多开发者在需要 **从 PNG 中提取阿拉伯语文本** 时会卡住,因为不知道哪个库能够轻松处理从右到左的脚本。 + +在本教程中,我们将逐步讲解使用 Aspose.OCR 在简洁的 C# 控制台应用中 **将图像转换为文本**、**从 PNG 读取文本**,以及最终 **如何提取文本** 所需的全部内容。完成后,你将拥有一个可直接运行的程序,能够在终端中打印出阿拉伯语字符串。 + +## 你将学到 + +- 安装并引用 Aspose.OCR NuGet 包。 +- 为阿拉伯语支持配置 OCR 引擎。 +- 加载 PNG 图像并运行识别过程。 +- 获取并显示提取的文本。 +- 调整设置以获得更高的准确性并处理常见问题。 + +不需要任何 OCR 经验,只需对 C# 有基本了解,并具备 .NET 开发环境(Visual Studio、Rider 或 `dotnet` CLI 均可)。 + +--- + +## 如何运行 OCR – 设置 Aspose OCR + +### 步骤 1:添加 Aspose.OCR NuGet 包 + +我们首先需要的是 OCR 库本身。Aspose.OCR 是商业产品,但它提供了免费试用版,完全适合学习使用。 + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +或者,在 Visual Studio 中打开 **NuGet 包管理器**,搜索 **Aspose.OCR**,然后点击 **Install**。 + +> **技巧提示:** 如果计划在 CI 流水线中使用该库,请添加 `-v` 标志以锁定版本,例如 `dotnet add package Aspose.OCR -v 23.10`。 + +### 步骤 2:创建一个新的控制台项目(如果还没有的话) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +现在你已经拥有一个全新的 `Program.cs` 文件,可用于编写我们的代码。 + +--- + +## 提取阿拉伯语文本 – 编写 OCR 代码 + +下面是完整的、可直接运行的程序。将其保存为 `Program.cs`(或替换自动生成的文件)。 + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### 每行代码的重要性 + +- **`OcrEngine`**:协调图像加载、语言选择和识别的核心类。 +- **`Language = OcrLanguage.Arabic`**:阿拉伯语使用从右到左的脚本和独特的字形;设置语言可让引擎使用正确的字符模型。 +- **`ImageStream.FromFile`**:支持 PNG、JPEG、BMP 等多种格式。如果需要从 `MemoryStream`(例如上传的文件)读取,请相应替换此调用。 +- **`Recognize()`**:执行繁重的工作——像素分析、分割和字符分类。 +- **`ocrEngine.Text`**:最终的 Unicode 字符串,可用于后续处理、存储或显示。 + +### 预期输出 + +如果 `arabic_sample.png` 包含短语 “مرحبا بالعالم”(Hello World),控制台将打印: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +如果输出出现乱码,请再次确认图像清晰、语言已设置为 Arabic,并且 OCR 引擎版本与文档匹配。 + +--- + +## 将图像转换为文本 – 调整准确性 + +虽然默认设置适用于大多数干净的扫描件,但实际图像常常需要额外的调优。 + +| 设置 | 作用 | 使用场景 | +|------|------|----------| +| `ocrEngine.Config.Preprocess = true` | 启用自动二值化和噪声去除。 | 有阴影的扫描文档。 | +| `ocrEngine.Config.Deskew = true` | 旋转图像以纠正轻微倾斜。 | 倾斜拍摄的照片。 | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | 将整幅图像视为一个文本块。 | 简单的标题或单行标签。 | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | 仅限识别阿拉伯字符。 | 在混合语言页面上减少误报。 | + +可以在创建引擎后立即添加这些行: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## 从 PNG 读取文本 – 处理不同的图像来源 + +有时 PNG 存在于数据库中或来自网络请求。下面是一个读取 `byte[]` 的快速示例: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +其余流程保持一致,这意味着 **如何提取文本** 在任何来源下都保持一致。 + +--- + +## 如何提取文本 – 高级选项与边缘情况 + +### 1. 多页 PDF 或 TIFF + +如果需要对多页文档进行 OCR,可遍历每一页: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **注意:** 该代码片段需要 `Aspose.PDF` 包。 + +### 2. 自动检测语言 + +Aspose.OCR 也提供自动检测功能,但速度较慢。如果不确定图像是阿拉伯语还是其他脚本,请启用此功能: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +### 3. 性能技巧 + +- **复用 `OcrEngine`** 对象以处理多张图像;每次创建新实例会增加开销。 +- **并行运行** 仅在每个线程拥有独立的引擎实例时可行——共享同一实例会导致竞争条件。 + +--- + +## 结论 + +我们已经从头到尾介绍了在 C# 中 **如何运行 OCR**,演示了如何 **提取阿拉伯语文本**、**将图像转换为文本**、**从 PNG 读取文本**,以及在各种场景下解答 **如何提取文本**。示例代码完整、独立,可直接粘贴到任何 .NET 控制台项目中使用。 + +下一步?尝试将 `OcrLanguage.Arabic` 替换为韩语或塞尔维亚西里尔文,以体验库的多语言能力。尝试使用预处理标志提升噪声扫描的准确性,或将 OCR 过程集成到 Web API 中,让用户上传图像并即时获取文本结果。 + +祝编码愉快,愿你的 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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/chinese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..15cc85af --- /dev/null +++ b/ocr/chinese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,294 @@ +--- +category: general +date: 2026-01-10 +description: 学习如何使用 Aspose OCR 在 C# 中识别图像中的文本、提取文本坐标,并将收据转换为 JSON。一步一步的教程。 +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: zh +og_description: 使用 Aspose OCR 在 C# 中识别图像中的文本。本指南展示了如何提取文本、获取坐标以及将收据转换为 JSON。 +og_title: 从图像识别文本 – 完整的 C# OCR 教程 +tags: +- OCR +- C# +- Aspose +title: 在 C# 中从图像识别文本 – OCR 与 JSON 完全指南 +url: /zh/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 识别图像文字 – 完整 C# OCR 教程 + +是否曾需要从图像中识别文字,却不确定该选哪个库?你并不孤单。在许多实际应用中——费用追踪器、收据扫描仪或文档归档系统——可靠地提取文字是第一道难关。 + +在本教程中,我们将演示 **如何提取文字**、获取其边界框,并最终使用 Aspose.OCR for .NET **将收据转换为 JSON**。完成后,你将拥有一个独立的 C# 项目,能够读取收据照片并输出包含置信度分数和坐标的整洁 JSON 文件。 + +## 你需要准备的环境 + +在开始之前,请确保你的机器上已具备以下条件: + +- **.NET 6.0 SDK**(或更高版本)。旧版框架也可使用,但 .NET 6 是现代库的最佳选择。 +- **Visual Studio 2022** 或带有 C# 扩展的 VS Code。 +- **Aspose.OCR for .NET** NuGet 包(`Aspose.OCR` 和 `Aspose.OCR.Output`)。可通过包管理控制台安装: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- 一张示例收据图片(例如 `receipt.jpg`),放在稍后会引用的文件夹中。 + +就这些——无需额外 SDK、无需本地二进制文件,纯托管代码即可。 + +## 第一步:创建新控制台项目 + +首先,创建一个控制台应用程序。这是测试 OCR 而不涉及 UI 的最快方式。 + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **小贴士:** 保持项目文件夹整洁;创建一个名为 `Resources` 的子文件夹并将 `receipt.jpg` 放进去。这样处理路径会更轻松。 + +## 第二步:加载收据图片 + +现在我们真正 **识别图像文字**。第一步是让 OCR 引擎指向该文件。 + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +为什么要在加载时做一次存在性检查?因为在生产环境中,你经常会处理可能缺失或损坏的用户上传文件。提前捕获问题可以避免后期出现难以理解的异常。 + +## 第三步:执行 OCR – **识别图像文字** + +图片已加载到内存后,我们让 Aspose **识别图像文字**。此操作是同步的,并返回丰富的结果集。 + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +在幕后,Aspose 运行一个在数百万字符上训练的神经网络。引擎会填充 `ocrEngine.Text`、`ocrEngine.RecognitionResult`,以及包含坐标的 `OcrRegion` 集合。这正是我们后续步骤所需的。 + +## 第四步:**如何提取文字** – 获取原始字符串 + +如果你只关心纯文本(例如快速搜索),可以直接从引擎中获取: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +你会看到 OCR 检测到段落边界的换行符。在许多收据扫描场景中,原始字符串足以通过简单的正则表达式提取总额、日期或商家名称。 + +## 第五步:**提取文字坐标** – 每个单词的边界框 + +通常你需要知道文本在图像中的 **位置**——例如在 UI 中高亮显示总金额。Aspose 通过 `OcrRegion` 对象提供这些信息。 + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +请注意,我们在遍历 **提取文字坐标** 时,对每个识别的片段进行循环。坐标是相对于原始图像的,你可以在图形画布或 HTML `` 元素上进行叠加显示。 + +## 第六步:**将收据转换为 JSON** – 保存详细结果 + +现在进入关键环节:我们希望得到一个机器可读的结构,包含文字、置信度分数以及边界框。Aspose 提供的 `JsonSaveOptions` 让这一步变得轻而易举。 + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +生成的文件大致如下(为简洁起见已截取): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +现在你拥有了一个 **将收据转换为 JSON** 的产物,可供下游服务使用——比如费用报销 API、分析管道,甚至是一个简单的 UI,用于在每个单词周围绘制矩形。 + +## 完整工作示例 + +将所有代码片段组合起来,下面是可以直接复制粘贴到项目中的完整 `Program.cs`: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +运行程序(`dotnet run`)并观察控制台输出。打开 `Resources/receipt.json` 验证结构是否正确。 + +## 常见问题与边缘情况 + +- **如果图片模糊怎么办?** + Aspose OCR 在 300 dpi 或更高分辨率下表现最佳。如果置信度分数偏低,考虑在送入引擎前先应用锐化滤镜。 + +- **能识别多种语言吗?** + 可以。在调用 `Recognize()` 之前设置 `ocrEngine.Language = Language.English | Language.Spanish;`。 + +- **如何只输出数字(例如总额)?** + 获取纯文本后,可使用正则表达式 `\d+\.\d{2}` 在 `ocrEngine.Text` 上匹配。因为我们已经拥有坐标,可以将匹配的字符串映射回对应的区域,以实现可视化高亮。 + +- **JSON 格式可以自定义吗?** + `JsonSaveOptions` 类提供若干标志位。如果需要完全自定义的结构,可以遍历 `ocrEngine.RecognitionResult.Regions`,并使用 `System.Text.Json` 手动序列化对象。 + +## 结论 + +我们已经演示了如何在 C# 中使用 Aspose.OCR **识别图像文字**、**提取文字**、获取 **提取文字坐标**,并最终 **将收据转换为 JSON**。整个流程封装在一个易于运行的控制台应用中,非常适合作为原型或更大系统的构建块。 + +接下来可以尝试将 JSON 输入前端,以绘制边界框,或将输出接入费用报销服务。也可以尝试不同的图像格式(PNG、TIFF)或批量处理整个收据文件夹。 + +对 OCR、Aspose 或 JSON 处理还有其他疑问?欢迎在下方留言,祝编码愉快! + +![识别图像文字的收据示例](receipt.jpg "收据图像示例") + +{{< /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/net/ocr-configuration/_index.md b/ocr/czech/net/ocr-configuration/_index.md index 7aacf222..f27ef43b 100644 --- a/ocr/czech/net/ocr-configuration/_index.md +++ b/ocr/czech/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Odemkněte sílu rozpoznávání obrázků OCR v .NET s Aspose.OCR. Extrahujte t Odemkněte výkonné možnosti OCR s Aspose.OCR pro .NET. Bezproblémově extrahujte text z obrázků. ### [OCROoperace se seznamem v OCR rozpoznávání obrazu](./ocr-operation-with-list/) Odemkněte potenciál Aspose.OCR pro .NET. Bez námahy provádějte rozpoznávání obrázků OCR pomocí seznamů. Zvyšte produktivitu a extrakci dat ve svých aplikacích. +### [Čtení vloženého zdroje v .NET – Kompletní průvodce nastavením licence Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Naučte se, jak načíst vložený zdroj a nastavit licenci Aspose v .NET aplikacích. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/czech/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..322d1914 --- /dev/null +++ b/ocr/czech/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-01-10 +description: Načtěte vložený zdroj a nastavte licenci Aspose v C#. Naučte se, jak + používat GetManifestResourceStream, vložit licenční soubor a získat spouštějící + sestavu .NET v jednom tutoriálu. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: cs +og_description: Přečtěte vložený zdroj v .NET a rychle nastavte licenci Aspose. Podrobný + návod krok za krokem, který zahrnuje GetManifestResourceStream, vložení licence + a použití spouštějícího sestavení. +og_title: Čtení vloženého zdroje – Nastavení licence Aspose v .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Čtení vloženého zdroje v .NET – Kompletní průvodce nastavením licence Aspose +url: /cs/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Čtení vloženého zdroje – Kompletní průvodce nastavením licence Aspose + +Už jste někdy potřebovali **číst vložený zdroj** za běhu a přemýšleli, jak získat licenci pro knihovnu Aspose OCR bez pevně zakódovaných cest? Nejste v tom sami. V mnoha podnikových aplikacích je soubor licence umístěn uvnitř sestavení, takže nemusíte distribuovat další soubory ani se obávat chybějících oprávnění. Tento tutoriál vám přesně ukáže, jak načíst vložený zdroj a nastavit licenci Aspose pomocí metody .NET `GetManifestResourceStream`. + +Projdeme vše, co potřebujete: vložení souboru `.lic`, jeho načtení pomocí `GetExecutingAssembly` a nakonec aplikaci na třídu Aspose OCR `License`. Na konci budete mít samostatné řešení, které funguje v jakémkoli projektu .NET — bez externích souborů. + +## Co se naučíte + +- **Jak vložit licenční soubor** do .NET projektu, aby se stal součástí zkompilovaného DLL. +- Správný způsob, jak **použít GetManifestResourceStream** k načtení toho vloženého zdroje. +- Jak **nastavit licenci Aspose** programově bez zásahu do souborového systému. +- Tipy pro řešení běžných úskalí, jako jsou špatně napsané názvy zdrojů nebo chybějící akce sestavení. +- Kompletní, spustitelný ukázkový kód, který můžete vložit do svého řešení. + +### Předpoklady + +- .NET 6.0 nebo novější (kód funguje také na .NET Framework 4.x, stačí upravit soubor projektu). +- Nainstalovaný NuGet balíček Aspose.OCR (`dotnet add package Aspose.OCR`). +- Základní znalost C# a Visual Studio (nebo vašeho oblíbeného IDE). + +Pokud už máte tyto komponenty připravené, skvělé — pojďme se ponořit. + +## Krok 1: Vložte licenční soubor Aspose do svého sestavení + +Prvním krokem je skutečný licenční soubor (`Aspose.OCR.lic`). Místo jeho kopírování vedle spustitelného souboru jej vložíte jako **zdroj**. + +1. Přidejte soubor `.lic` do svého projektu (např. vytvořte složku `Resources` a soubor tam umístěte). +2. V jeho vlastnostech nastavte **Build Action** na `Embedded Resource`. + *Pro tip:* udržujte strukturu složek jednoduchou; plně kvalifikovaný název zdroje bude `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Proč vložit? Protože sestavení nyní nese licenci uvnitř sebe, čímž se eliminuje riziko chybějícího souboru na produkčním serveru. + +## Krok 2: Získejte vložený zdroj pomocí GetExecutingAssembly + +Nyní, když licence žije uvnitř DLL, potřebujete způsob, jak **číst vložený zdroj** za běhu. Třída .NET `Assembly` vám přesně to poskytne. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +Metoda `GetExecutingAssembly` vrací sestavení, které právě běží — ideální pro vyhledání zdrojů, které jsou umístěny vedle vašeho kódu. + +## Krok 3: Otevřete stream licence pomocí GetManifestResourceStream + +S odkazem na sestavení v ruce můžete zavolat `GetManifestResourceStream`. Tato metoda vrací `Stream`, který můžete předat přímo Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Všimněte si, že používáme **null‑conditional** `using` deklaraci (`using Stream?`), aby byl stream automaticky uvolněn. Pokud je název špatný, vyhodíme jasnou výjimku — tím se vyhnete tichým selháním později. + +## Krok 4: Aplikujte licenci na Aspose OCR + +Třída `License` od Aspose očekává `Stream`. Ten už máme, takže poslední krok je přímočarý. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +A to je vše! Engine Aspose OCR je nyní plně licencován a připraven zpracovávat obrázky bez vodotisku z trial verze. + +## Kompletní funkční příklad + +Níže je kompletní program připravený ke zkopírování a vložení, který demonstruje celý proces. Obsahuje potřebné `using` direktivy, ošetření chyb a jednoduché volání OCR pro ověření, že je licence aktivní. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Očekávaný výstup + +Po spuštění programu na stroji s platnou vloženou licencí byste měli vidět: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Pokud se stream licence nepodaří najít, konzole vypíše chybějící název zdroje a nasměruje vás k dvojité kontrole **Build Action** a jmenného prostoru. + +## Časté úskalí a jak se jim vyhnout + +| Problém | Proč k tomu dochází | Řešení | +|-------|----------------|-----| +| **Resource name mismatch** | .NET sestaví název zdroje z výchozího jmenného prostoru + cesty složky. | Použijte `Assembly.GetManifestResourceNames()` k vypsání dostupných názvů a ověřte přesný řetězec. | +| **License file not set as Embedded Resource** | Výchozí Build Action je `Content`. | Změňte ji na `Embedded Resource` ve vlastnostech souboru. | +| **Running from a different assembly** | Pokud voláte kód z knihovny tříd, `GetExecutingAssembly()` může vrátit knihovnu místo hlavního exe. | Použijte `Assembly.GetEntryAssembly()` nebo předávejte správné sestavení explicitně. | +| **Stream disposed before use** | Náhodně použijete `using` blok, který uzavře stream příliš brzy. | Nechte `using` blok obklopovat volání `SetLicense`, jak je ukázáno výše. | +| **Aspose.OCR version mismatch** | Novější verze mohou vyžadovat jiný formát licence. | Vždy stáhněte nejnovější licenci ze svého Aspose účtu a znovu ji vložte. | + +## Použití stejné techniky pro jiné vložené soubory + +Vzor — **číst vložený zdroj**, pak **použít GetManifestResourceStream** — funguje pro jakýkoli typ souboru: JSON konfigurace, obrázky, dokonce nativní DLL. Stačí upravit `resourceName` a způsob, jakým stream spotřebujete. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Vizualní přehled + +![Diagram ukazující, jak číst vložený zdroj a nastavit licenci Aspose](read-embedded-resource-diagram.png) + +*Alt text:* čtení vloženého zdroje – diagram ukazující vložení, načtení pomocí GetManifestResourceStream a aplikaci licence Aspose. + +## Shrnutí + +Probrali jsme, jak **číst vložený zdroj** v .NET sestavení, přesné kroky k **použití GetManifestResourceStream** a čistý způsob, jak **nastavit licenci Aspose** bez odhalování souborů na disku. Vložením licence odstraníte problémy s nasazením a udržíte aplikaci přenosnou. + +## Co dál? + +- **Automatizujte aktualizace licence:** Napište malý skript během sestavení, který nahradí vložený `.lic` soubor při obnovení předplatného Aspose. +- **Zabezpečte zdroj:** Zvažte šifrování licence před vložením a její dešifrování za běhu pro zvýšenou ochranu. +- **Prozkoumejte další produkty Aspose:** Stejný přístup funguje pro Aspose.Words, Aspose.PDF atd., každý s vlastní třídou `License`. + +Klidně experimentujte — možná vložíte více licencí pro různé moduly, nebo přejdete na název zdroje řízený konfigurací. Možnosti jsou neomezené. + +--- + +*Šťastné programování! Pokud narazíte na potíže, zanechte komentář níže nebo navštivte fóra Aspose pro další příklady.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/czech/net/skew-angle-calculation/_index.md index 1a88f2f3..86ff88b2 100644 --- a/ocr/czech/net/skew-angle-calculation/_index.md +++ b/ocr/czech/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ Prozkoumejte Aspose.OCR for .NET, výkonné řešení OCR pro přesné rozpozná Uvolněte sílu Aspose.OCR pro .NET, robustního řešení pro rozpoznávání obrázků. Naučte se bez námahy vypočítat úhly zkosení. ### [Vypočítat úhel zkosení z URI v rozpoznávání obrazu OCR](./calculate-skew-angle-from-uri/) Prozkoumejte Aspose.OCR for .NET, abyste mohli snadno vypočítat úhly zkosení při rozpoznávání obrazu OCR. Vylepšete své projekty s přesností a efektivitou. +### [Jak vyrovnat obrázek v C# – Kompletní průvodce předzpracováním OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Kompletní návod, jak v C# odstranit zkosení obrázku před OCR, včetně kroků předzpracování pro vyšší přesnost rozpoznávání. {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/czech/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..89c0083e --- /dev/null +++ b/ocr/czech/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,264 @@ +--- +category: general +date: 2026-01-10 +description: Jak vyrovnat obrázek a zlepšit výsledky OCR pomocí Aspose.OCR. Naučte + se předzpracovat obrázek pro OCR, odstranit šum ze skenu a rozpoznat text ze skenu. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: cs +og_description: Jak vyrovnat sklon obrazu a zvýšit přesnost OCR. Tento průvodce ukazuje, + jak předzpracovat obrázek pro OCR, odstranit šum ze skenu a rozpoznat text ze skenu + pomocí Aspose.OCR. +og_title: Jak narovnat obrázek v C# – Kompletní průvodce předzpracováním OCR +tags: +- OCR +- C# +- Image Processing +title: Jak vyrovnat sklon obrázku v C# – Kompletní průvodce předzpracováním OCR +url: /cs/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak vyrovnat obrázek v C# – Kompletní průvodce předzpracováním OCR + +Už jste se někdy zamýšleli **jak vyrovnat obrázek** před tím, než jej předáte OCR enginu? Nejste v tom jediní. Naskenované dokumenty jsou často nakřivo, šumivé nebo s nízkým kontrastem, což ztěžuje jakýkoli pokus o rozpoznání textu. + +V tomto tutoriálu projdeme kompletním, spustitelným příkladem, který **předzpracovává obrázek pro OCR**, odstraňuje šum ze skenu a nakonec **rozpozná text ze skenu** pomocí knihovny Aspose.OCR. Na konci budete mít jasnou představu o **tom, jak používat OCR** v C#, a to s krátkým a přehledným kódem. + +> **Tip:** I když je rotace malá (5‑10°), může snížit přesnost OCR o 30 % nebo více. Vyrovnání (deskew) je první krok, který byste nikdy neměli přeskočit. + +--- + +## Co budete potřebovat + +- **.NET 6+** (kód funguje i na .NET Framework, ale .NET 6 je aktuální LTS) +- **Aspose.OCR for .NET** – můžete jej získat z NuGet (`Install-Package Aspose.OCR`) +- Vzorek souboru TIFF/PNG/JPEG, který je natočený nebo šumivý (v příkladu použijeme `noisy_rotated.tif`) +- Jakékoliv IDE, které máte rádi – Visual Studio, Rider nebo VS Code bude stačit + +To je vše. Žádné další knihovny, žádné externí služby. + +--- + +## Krok 1 – Načtení zdrojového obrázku (Proč je to důležité) + +Než budeme moci **vyrovnat obrázek**, musíme jej načíst do Aspose `ImageStream`. Tento objekt abstrahuje souborové I/O a poskytuje OCR enginu jednotné rozhraní. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Proč načíst nejprve?* Protože všechny následující filtry pracují s obrázkem v paměti. Pokud soubor nelze načíst, celý pipeline selže. + +--- + +## Krok 2 – Vytvoření pipeline předzpracování (Deskew + Denoise + Contrast) + +Robustní OCR workflow obvykle řetězí několik filtrů. Zde **předzpracováváme obrázek pro OCR** a, co je důležitější, **automaticky vyrovnáváme obrázek**. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Proč právě tyto tři?** +- **DeskewFilter** automaticky řeší problém „jak vyrovnat obrázek“; nemusíte hádat úhel. +- **DenoiseFilter** řeší požadavek „odstranit šum ze skenu“, který jinak vytváří fantomové znaky. +- **ContrastBoostFilter** pomáhá OCR enginu rozlišovat tmavý text od světlého pozadí, což je klasický problém při *předzpracování obrázku pro OCR*. + +--- + +## Krok 3 – Aplikace pipeline (Vidět transformaci) + +Nyní skutečně spustíme filtry. Vrácený `processedImage` je to, co předáme OCR enginu. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Pokud otevřete `cleaned_output.tif`, měli byste si všimnout, že text je rovný, méně zrnitý a s vyšším kontrastem. Tato vizuální kontrola je užitečná, když *odstraňujete šum ze skenu* a chcete potvrdit, že vyrovnání (deskew) fungovalo. + +--- + +## Krok 4 – Vytvoření a konfigurace OCR enginu (Jak používat OCR) + +S čistým obrázkem v ruce vytvoříme instanci `OcrEngine`. To je jádro **jak používat OCR** s Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Proč nastavit `AutoPageSegmentation`?* Protože mnoho skenů obsahuje tabulky nebo více sloupců. Zapnutím umožníte enginu inteligentně rozdělit stránku, což zlepšuje konečný výsledek **rozpoznání textu ze skenu**. + +--- + +## Krok 5 – Spuštění procesu rozpoznávání (Konečně rozpoznat text) + +Nyní nastává okamžik pravdy: požádáme engine, aby přečetl text. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Pokud vše proběhne hladce, uvidíte čistý blok textu, který odpovídá původnímu dokumentu. To je odměna za správné **vyrovnání obrázku**, **odstranění šumu** a **předzpracování obrázku pro OCR**. + +--- + +## Krok 6 – Kompletní funkční příklad (připravený ke kopírování a vložení) + +Níže je kompletní program, připravený ke kompilaci. Stačí nahradit cestu k souboru a můžete spustit. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Očekávaný výstup** (zkrácený pro stručnost): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Pokud výstup vypadá poškozeně, dvakrát zkontrolujte, že zdrojový obrázek není natočený více než 30°, nebo zvyšte `DeskewFilter.MaxAngle`. + +--- + +## Často kladené otázky (okrajové případy a varianty) + +| Question | Answer | +|----------|--------| +| **Co když je můj sken natočený o 45°?** | `DeskewFilter` omezuje na `MaxAngle`. Zvyšte ho (např. `MaxAngle = 60`) nebo předem otočte obrázek pomocí grafické knihovny, než jej předáte pipeline. | +| **Mohu zpracovávat PDF stránku po stránce?** | Ano. Převěďte každou stránku PDF na obrázek (např. pomocí `Aspose.Pdf`) a spusťte stejnou pipeline na každém bitmapu. | +| **Můj dokument je ve francouzštině – musím něco změnit?** | Nastavte `ocrEngine.Language = Language.French;` nebo načtěte vlastní jazykový balíček. Zbytek pipeline zůstává stejný. | +| **Je možné zachovat původní rozlišení?** | `PreprocessPipeline` pracuje s originálním bitmapem, zachovává DPI. Jen se vyhněte volání `ImageStream.Resize`, pokud nepotřebujete snížit rozlišení pro výkon. | +| **Jak ovlivňuje zesílení kontrastu barevné skeny?** | `ContrastBoostFilter` pracuje na každém kanálu; je bezpečný pro odstíny šedi i barevné obrázky, ale můžete také nejprve převést na odstíny šedi pomocí `new GrayscaleFilter()`. | + +--- + +## Příklad obrázku (vizuální pomůcka) + +![příklad, jak vyrovnat obrázek](/images/deskew-example.png) + +*Obrázek ukazuje před/po 12° natočeném, šumivém skenu, který byl vyrovnán a vyčištěn.* + +--- + +## Závěr + +Probrali jsme **jak vyrovnat obrázek** pomocí Aspose.OCR, předvedli kompletní pipeline **předzpracování obrázku pro OCR**, ukázali **odstranění šumu ze skenu** a nakonec **rozpoznání textu ze skenu** pomocí několika řádků C#. Řetězením `DeskewFilter`, `DenoiseFilter` a `ContrastBoostFilter` získáte čistý bitmap, který umožní OCR enginu vykonat svou práci bez zakopnutí o artefakty. + +Další kroky? Vyzkoušejte experimentovat s různými silami filtrů, přidejte `BinarizationFilter` pro čistý černobílý výstup, nebo předávejte vyčištěný obrázek do následného NLP pipeline. Stejný vzor funguje stejně pro účtenky, pasy i historické dokumenty. + +Máte další otázky ohledně **jak používat OCR** v jiných jazycích nebo frameworkech? Zanechte komentář 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/czech/net/text-recognition/_index.md b/ocr/czech/net/text-recognition/_index.md index b178a0c0..6842c204 100644 --- a/ocr/czech/net/text-recognition/_index.md +++ b/ocr/czech/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Vylepšete své aplikace .NET pomocí Aspose.OCR pro efektivní rozpoznávání Odemkněte potenciál OCR v .NET s Aspose.OCR. Extrahujte text z PDF bez námahy. Stáhněte si nyní pro bezproblémovou integraci. ### [Rozpoznat tabulku v OCR rozpoznávání obrazu](./recognize-table/) Odemkněte potenciál Aspose.OCR pro .NET pomocí našeho komplexního průvodce rozpoznáváním tabulek při rozpoznávání obrázků OCR. +### [Jak spustit OCR v C# – Kompletní průvodce s Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Naučte se krok za krokem, jak v C# spustit OCR pomocí Aspose OCR a získat přesné výsledky. +### [Jak spustit OCR v C# – Extrahovat arabský text z PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Naučte se pomocí Aspose.OCR v C# extrahovat arabský text z PNG souborů a integrovat jej do vašich .NET aplikací. +### [Extrahovat text z obrázku pomocí Aspose OCR – Kompletní průvodce v C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Naučte se krok za krokem, jak extrahovat text z obrázků v C# pomocí Aspose OCR a získat přesné výsledky. +### [Vytvořit prohledávatelný PDF z PNG v C# – Kompletní průvodce](./create-searchable-pdf-from-png-in-c-complete-guide/) +Naučte se pomocí Aspose.OCR v C# převést PNG soubory do prohledávatelných PDF dokumentů s podrobným návodem. +### [Extrahovat text z obrázku v C# – Kompletní průvodce Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Naučte se, jak v C# pomocí Aspose OCR kompletně extrahovat text z obrázku a dosáhnout přesných výsledků. +### [Rozpoznat text z obrázku v C# – Kompletní průvodce OCR a JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Naučte se v C# rozpoznávat text z obrázků a získávat výsledky ve formátu JSON pomocí 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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/czech/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..cce9d599 --- /dev/null +++ b/ocr/czech/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-01-10 +description: Vytvořte prohledávatelný PDF z PNG pomocí C#. Naučte se, jak převést + obrázek na PDF, extrahovat text z PNG a provést OCR obrázku v C# v jednom snadném + tutoriálu. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: cs +og_description: Vytvořte prohledávatelný PDF z PNG pomocí C#. Tento průvodce ukazuje, + jak převést obrázek na PDF, extrahovat text z PNG a provést OCR obrázku v C# s Aspose. +og_title: Vytvořte prohledávatelný PDF z PNG v C# – krok za krokem +tags: +- Aspose OCR +- C# +- PDF/A +title: Vytvořte prohledávatelný PDF z PNG v C# – kompletní průvodce +url: /cs/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Vytvoření prohledávatelného PDF z PNG v C# – Kompletní průvodce + +Potřebujete **vytvořit prohledávatelný pdf** ze souboru PNG v C#? Nejste sami — mnoho vývojářů narazí na tento problém, když chtějí, aby jejich naskenované obrázky byly jak zobrazitelné, **tak** i text‑prohledávatelné. V tomto tutoriálu projdeme celým procesem: **převod obrázku na pdf**, spuštění OCR pro **extrakci textu z png**, a nakonec uložení všeho jako **PDF/A‑2b** kompatibilního prohledávatelného dokumentu. + +Na konci budete mít jediný, znovupoužitelný úryvek kódu, který můžete vložit do libovolného .NET projektu, plus několik praktických tipů, které vám později ušetří spoustu starostí. Žádné externí služby, jen knihovna Aspose OCR a pár řádků C#. + +> **Předpoklady** +> * .NET 6+ (nebo .NET Framework 4.7.2+). +> * Visual Studio 2022 nebo jakékoli IDE kompatibilní s C#. +> * Platná licence Aspose OCR (nebo bezplatná zkušební verze). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Vytvořit prohledávatelný PDF z PNG pomocí C#"} + +## Krok 1 – Instalace a reference Aspose OCR pro C# + +Nejprve potřebujete NuGet balíček Aspose OCR. Otevřete terminál (nebo Package Manager Console) a spusťte: + +```bash +dotnet add package Aspose.OCR +``` + +Pokud dáváte přednost GUI, klikněte pravým tlačítkem na projekt → **Manage NuGet Packages…** → vyhledejte *Aspose.OCR* a nainstalujte nejnovější stabilní verzi. + +Proč tato knihovna? Podporuje **convert png to pdf**, zvládá vícestránkové obrázky a dokáže přímo generovat PDF/A‑2b — ideální pro vytvoření **searchable pdf**, který splňuje archivní standardy. + +> **Tip:** Zaregistrujte licenci co nejdříve v `Program.cs`, abyste se vyhnuli vodoznaku z evaluační verze. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Krok 2 – Načtení PNG a spuštění OCR (extrakce textu z png) + +Nyní načteme zdrojový obrázek. Pomocník `ImageStream.FromFile` abstrahuje detaily souborového systému a funguje s jakýmkoli podporovaným rastrovým formátem. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +V tomto okamžiku engine **extracted text from png** a uložil ho interně. Můžete si dokonce prohlédnout surový text pomocí `ocrEngine.Text`, což je užitečné pro ladění nebo logování. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **Co když je obrázek vícestránkový?** +> Aspose OCR zachází s každou stránkou jako s oddělenou vrstvou. Stačí zavolat `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` a engine automaticky projde všechny stránky. + +## Krok 3 – Nastavení možností PDF/A‑2b (vytvoření searchable pdf) + +Abychom výsledek OCR převedli na **searchable pdf**, musíme Aspose říct, jak má výstup zabalit. PDF/A‑2b je ideální pro dlouhodobou archivaci a zaručuje, že textová vrstva je prohledávatelná. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Proč vkládat původní obrázek? Některé kontroly shody vyžadují, aby vizuální reprezentace odpovídala originálnímu skenu. Toto nastavení dělá soubor skutečnou **convert image to pdf** operací při zachování prohledávatelného textu. + +## Krok 4 – Uložení výsledku a ověření (convert png to pdf) + +Nakonec zapíšeme výstupní soubor. Metoda `Save` funguje pro libovolnou cestu, kterou zadáte. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Otevřete vzniklý `output.pdf` v Adobe Readeru nebo jiném PDF prohlížeči a zkuste vyhledat slovo, které se vyskytuje v původním PNG. Pokud je slovo zvýrazněno, gratulujeme — úspěšně jste **create searchable pdf** z PNG! + +### Rychlý ověřovací skript (volitelný) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Proč používat PDF/A‑2b pro prohledávatelné PDF? + +* **Archivní bezpečnost:** PDF/A‑2b zaručuje, že soubor bude vykreslen stejným způsobem i o desetiletí později. +* **Regulační shoda:** Mnoho odvětví (právo, medicína, finance) vyžaduje PDF/A pro archivaci záznamů. +* **Prohledávatelnost:** Vložená OCR textová vrstva umožňuje indexaci dokumentu nástroji pro desktopové vyhledávání. + +Pokud nepotřebujete extra shodu, můžete vynechat řádek s `PdfAStandard` a použít prostě `new PdfSaveOptions()` — výstup bude stále prohledávatelný, jen ne PDF/A‑2b. + +## Časté problémy a jak je řešit + +| Symptom | Pravděpodobná příčina | Řešení | +|---------|-----------------------|--------| +| Žádný prohledávatelný text se nezobrazí | `ocrEngine.Recognize()` nebylo nikdy zavoláno nebo selhalo tiše | Ověřte, že cesta k obrázku je správná a že je licence zaregistrována. | +| PDF je obrovské (10 + MB) | Originální PNG má vysoké rozlišení a `EmbedOriginalImage` je nastaveno na true | Před OCR zmenšete rozlišení obrázku nebo nastavte `EmbedOriginalImage = false`. | +| Text je zkreslený | Jazyk nebyl detekován automaticky | Nastavte `ocrEngine.Language = "eng";` (nebo požadovaný jazyk) před voláním `Recognize()`. | + +## Kompletní funkční příklad (připravený ke kopírování) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Spusťte program, otevřete `output.pdf` a zkuste vyhledat slova, o kterých víte, že jsou v `input.png`. Pokud vše souhlasí, právě jste zvládli workflow **convert image to pdf** a naučili se, jak **ocr image c#** styl. + +## Další kroky a související témata + +* **Dávkové zpracování:** Procházejte složku s PNG a sloučte výsledky do jednoho PDF. +* **Alternativní výstupní formáty:** Aspose OCR může také generovat DOCX, TXT nebo prohledávatelný PDF/A‑1b. +* **Ladění výkonu:** Použijte `ocrEngine.RecognitionMode = RecognitionMode.Fast` pro velké objemy, kde není kritická maximální přesnost. +* **Další knihovny:** Pokud máte omezený rozpočet, podívejte se na Tesseract .NET — i když přijdete o vestavěnou podporu PDF/A. + +--- + +### TL;DR + +Ukázali jsme vám, jak **create searchable pdf** z PNG pomocí Aspose OCR v C#. Kroky jsou: + +1. Nainstalujte Aspose OCR (`dotnet add package Aspose.OCR`). +2. Načtěte PNG a spusťte `ocrEngine.Recognize()` (**extract text from png**). +3. Nakonfigurujte `PdfSaveOptions` pro PDF/A‑2b (**convert image to pdf** & **convert png to pdf**). +4. Uložte soubor a ověřte prohledávatelnou vrstvu. + +Vyzkoušejte to, upravte možnosti a brzy budete mít robustní pipeline pro převod jakéhokoli naskenovaného obrázku na archivně připravený, prohledávatelný PDF. Šť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/czech/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/czech/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..28bc9da7 --- /dev/null +++ b/ocr/czech/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: Extrahujte text z obrázku pomocí Aspose OCR v C#. Naučte se, jak převést + text naskenovaného dokumentu pomocí dávkového zpracování a uložit výsledky. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: cs +og_description: Extrahujte text z obrázku pomocí Aspose OCR v C#. Tento tutoriál ukazuje, + jak převést text naskenovaného dokumentu pomocí dávkového zpracování. +og_title: Extrahovat text z obrázku v C# – kompletní průvodce Aspose OCR +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Extrahování textu z obrázku v C# – Kompletní průvodce Aspose OCR +url: /cs/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrahování textu z obrázku – Kompletní průvodce Aspose OCR + +Už jste někdy potřebovali **extrahovat text z obrázku**, ale nebyli jste si jisti, kde začít? Nejste v tom sami; mnoho vývojářů narazí na tento problém při práci se skenovanými PDF, více‑stránkovými TIFFy nebo fotografiemi účtenek. Dobrou zprávou je, že s Aspose OCR můžete **převést text ze skenovaného dokumentu** během několika řádků C#. + +V tomto tutoriálu si projdeme reálný scénář: vezmeme více‑stránkový TIFF, spustíme dávkové OCR na každé stránce a zapíšeme jeden textový soubor, který bude obsahovat obsah všech stránek. Na konci budete mít připravenou konzolovou aplikaci, pochopíte, proč je každý krok důležitý, a budete vědět, jak upravit tok pro okrajové případy, jako jsou obrázky chráněné heslem nebo vlastní jazykové balíčky. + +## Prerequisites + +- .NET 6.0 SDK nebo novější (kód funguje také s .NET Core a .NET Framework) +- Visual Studio 2022 (nebo jakýkoli editor, který preferujete) +- Licenční soubor Aspose OCR (nebo můžete použít režim bezplatného hodnocení) +- Více‑stránkový soubor obrázku (např. `multipage.tif`) umístěný ve složce, na kterou můžete odkazovat + +Kromě `Aspose.OCR` nejsou vyžadovány žádné další balíčky NuGet; nainstalujeme jej v prvním kroku. + +## Step 1 – Install Aspose  OCR and Set Up the Project + +Abychom mohli začít, vytvořte nový konzolový projekt a přidejte knihovnu Aspose OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Tip:** Pokud máte licenční soubor (`Aspose.OCR.lic`), zkopírujte jej do kořenového adresáře projektu. Knihovna jej automaticky načte za běhu. + +Proč tento krok? Instalace balíčku vám poskytne přístup k `BatchProcessor`, `OcrEngine` a dalším užitečným třídám, které abstrahují nízkoúrovňové zpracování obrázků. Zároveň zajistí, že používáte nejnovější OCR algoritmy, které Aspose nabízí. + +## Step 2 – Load the Multi‑Page Image with BatchProcessor + +`BatchProcessor` je navržen právě pro tento scénář: iteraci přes každou stránku více‑stránkového obrázku, aniž byste museli soubory ručně rozdělovat. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` načte všechny stránky do paměti a zpřístupní je přes `batchProcessor.Pages`. Každý objekt stránky zná své číslo (`ocrPage.Number`), které později použijeme pro přehledné nadpisy. + +## Step 3 – Prepare a StringBuilder to Accumulate Results + +Chceme jeden textový soubor, který bude obsahovat výstup OCR ze všech stránek, oddělený nadpisy. `StringBuilder` je nejefektivnější způsob, jak v cyklu spojovat řetězce. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Proč `StringBuilder`? Spojování řetězců pomocí `+` uvnitř smyčky by při každé iteraci alokovalo nový řetězec, což snižuje výkon – zejména u velkých dokumentů. + +## Step 4 – Iterate Over Each Page, Run OCR, and Append Results + +Nyní jádro tutoriálu: procházet každou stránku, rozpoznat text a uložit jej s označením stránky. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Proč nový `OcrEngine` pro každou stránku?** Někteří vývojáři znovu používají jediný engine a mění jeho vlastnost `Image`, ale to může zachovat nastavení jazyka nebo předchozí výsledky, což vede k subtilním chybám. Vytvoření čerstvého engine zaručuje čistý stav. + +### Handling Common Edge Cases + +- **Prázdné stránky:** Pokud stránka neobsahuje žádný rozpoznatelný text, `ocrEngine.Text` bude prázdný řetězec. Můžete vložit zástupný text, např. “(Žádný text nebyl detekován)”. +- **Výběr jazyka:** Ve výchozím nastavení Aspose OCR používá angličtinu. Pro zpracování němčiny nebo francouzštiny nastavte `ocrEngine.Language = Language.German;` před voláním `Recognize()`. +- **Tip pro výkon:** U obrovských TIFFů můžete povolit `ocrEngine.UseParallelProcessing = true;` a využít více jader. + +## Step 5 – Write the Combined Output to a Text File + +Nakonec uložíme nashromážděný řetězec na disk. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Výsledný soubor `multipage_result.txt` bude vypadat zhruba takto: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Nyní máte **extrahovaný text z obrázku** a efektivně **převést text ze skenovaného dokumentu** do vyhledávatelného, editovatelného formátu. + +## Bonus – Visual Overview (Image Alt Text) + +Níže je jednoduchý diagram toku procesu. +*Alt text:* “Diagram ukazující, jak extrahovat text z obrázku pomocí dávkového zpracování Aspose OCR v C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Pokud tento tutoriál publikujete na statické stránce, nahraďte zástupný obrázek skutečným SVG nebo PNG.)* + +## Frequently Asked Questions + +**Funguje to i s PDF soubory?** +Ano, Aspose OCR může číst PDF stránky jako obrázky. Stačí nejprve převést PDF na obrázky, nebo použít `PdfDocument` z `Aspose.PDF` a předat rasterizovaný obrázek každé stránky do `OcrEngine`. + +**Co když je můj TIFF chráněn heslem?** +`BatchProcessor` přímo neřeší šifrování. Dešifrujte soubor pomocí knihovny jako `Aspose.Imaging` před předáním do OCR pipeline. + +**Mohu místo prostého textu získat JSON?** +Určitě. Nahraďte logiku `StringBuilder` serializátorem JSON (např. `System.Text.Json`) a uložte text každé stránky pod klíč `pageNumber`. + +## Full Working Example + +Zde je kompletní program, který můžete zkopírovat do `Program.cs`. Obsahuje všechny `using` direktivy, ošetření chyb a komentáře. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Program spusťte pomocí: + +```bash +dotnet run +``` + +Měli byste vidět zprávu v konzoli potvrzující úspěch a výstupní soubor bude obsahovat sloučené OCR výsledky. + +## Conclusion + +Právě jsme ukázali praktický způsob, jak **extrahovat text z obrázku** pomocí Aspose OCR, a převést libovolný více‑stránkový skenovaný soubor na prostý, vyhledávatelný text. Využitím `BatchProcessor` a čistého nastavení `OcrEngine` pro každou stránku můžete spolehlivě **převést text ze skenovaného dokumentu**, přičemž kód zůstane jednoduchý a udržovatelný. + +Nebojte se experimentovat: vyzkoušejte různé jazyky, přepněte na výstup JSON nebo integrujte tuto logiku do webového API, které zpracovává nahrané soubory za běhu. Základní vzor zůstává stejný – načíst, rozpoznat, akumulovat a uložit. + +Máte další otázky ohledně OCR, licencování Aspose nebo zpracování masivních dávkách dokumentů? Zanechte komentář níže nebo si prostudujte oficiální dokumentaci Aspose pro podrobnější informace. Šť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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/czech/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..fe657ede --- /dev/null +++ b/ocr/czech/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-01-10 +description: Extrahujte text z obrázku pomocí Aspose OCR v C#. Naučte se, jak načíst + obrázek pro OCR, rozpoznat hindský text a provést rozpoznávání OCR v několika jednoduchých + krocích. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: cs +og_description: Extrahujte text z obrázku pomocí Aspose OCR v C#. Postupujte podle + tohoto krok‑za‑krokem průvodce, jak načíst obrázek pro OCR, rozpoznat hindský text + a spustit OCR rozpoznávání. +og_title: Extrahovat text z obrázku pomocí Aspose OCR – kompletní průvodce v C# +tags: +- Aspose OCR +- C# +- Image Processing +title: Extrahování textu z obrázku pomocí Aspose OCR – Kompletní průvodce C# +url: /cs/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrahování textu z obrázku pomocí Aspose OCR – Kompletní průvodce v C# + +Už jste někdy potřebovali **extrahovat text z obrázku**, ale nebyli jste si jisti, kterou knihovnu zvolit? Nejste v tom sami — mnoho vývojářů narazí na tuto překážku, když poprvé řeší OCR v .NET. Dobrou zprávou je, že Aspose OCR dělá celý proces překvapivě snadným, i když pracujete s komplikovanými skripty, jako je hindština. + +V tomto tutoriálu vás provedeme vším, co potřebujete k **načtení obrázku pro OCR**, **rozpoznání hindského textu** a **spuštění OCR rozpoznání** v C#. Na konci budete mít připravenou konzolovou aplikaci, která vytiskne extrahovaný text přímo na obrazovku. + +## Co vytvoříte + +Vytvoříme malou konzolovou aplikaci, která: + +1. Ukáže OCR engine na složku obsahující jazykové modely. +2. Vypne automatické stahování — užitečné pro uzavřená prostředí. +3. Vybere hindštinu jako cílový jazyk. +4. Načte JPEG (nebo PNG), který obsahuje hindský text. +5. Spustí rozpoznávací pipeline. +6. Zapíše výsledný řetězec do konzole. + +Žádné externí služby, žádné cloudové klíče, jen čisté on‑premise OCR. + +## Požadavky + +- **.NET 6.0** nebo novější (kód také funguje na .NET Framework 4.7+). +- **Aspose.OCR for .NET** NuGet balíček nainstalován. + ```bash + dotnet add package Aspose.OCR + ``` +- Složka pojmenovaná `OcrResources`, která obsahuje hindský jazykový model (`hin.traineddata`). + Můžete si jej stáhnout ze stránky ke stažení Aspose OCR a umístit do `YOUR_DIRECTORY/OcrResources`. +- Soubor obrázku (`input.jpg`) s jasným hindským textem. + Pro ilustraci si představte fotografii cedule obchodu, na které je napsáno “स्वागत है”. + +> **Tip:** Udržujte rozlišení obrázku nad 300 dpi; nižší rozlišení může způsobit vynechání znaků. + +--- + +## Krok 1: Nastavte OCR engine na své zdroje – *extrahování textu z obrázku* + +První věc, kterou Aspose OCR potřebuje, je umístění svých jazykových modelů. Pokud to přeskočíte, engine se pokusí soubory automaticky stáhnout — což možná v zabezpečené síti nebudete chtít. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Proč je to důležité:* Nastavením `ResourcesPath` zajistíte, že engine načte správná trénovaná data lokálně, což urychlí první spuštění a eliminuje neočekávaný síťový provoz. + +--- + +## Krok 2: Zakázat automatické stahování zdrojů – *načtení obrázku pro OCR* + +V mnoha firemních prostředích je odchozí přístup k internetu blokován. Aspose OCR respektuje příznak, který zastaví pokusy o načítání chybějících souborů za chodu. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Pokud zapomenete tento řádek a hindský model není přítomen, engine vyhodí výjimku, která vypadá jako “Unable to download required resource”. Nastavením příznaku na `false` získáte jasné, deterministické selhání, které můžete ošetřit sami. + +--- + +## Krok 3: Vyberte jazyk – *rozpoznání hindského textu* + +Aspose OCR podporuje desítky jazyků, ale musíte mu říct, který použít. Hindština je identifikována jako `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Co když potřebujete více jazyků?* Můžete nastavit `Language = OcrLanguage.AutoDetect`, aby engine hádal, ale automatické rozpoznání je pomalejší a občas selže u smíšených skriptů. Pro čistou hindštinu je explicitní výběr nejbezpečnější. + +--- + +## Krok 4: Načtěte svůj obrázek – *načtení obrázku pro OCR* + +Nyní předáme engine obrázek, který chceme přečíst. Aspose nabízí pohodlný pomocník `ImageStream.FromFile`, který abstrahuje podkladové závislosti `System.Drawing`. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Pokud je cesta k souboru špatná, Aspose vyvolá `FileNotFoundException`. Rychlá kontrola `File.Exists` před tímto řádkem vám může ušetřit ladící sezení. + +--- + +## Krok 5: Spusťte OCR engine – *spuštění OCR rozpoznání* + +Po nastavení všeho konečně spustíme proces rozpoznání. Toto volání je synchronní a blokuje, dokud není text extrahován. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Za scénou Aspose provádí několik fází: předzpracování (odstranění šikmosti, odstranění šumu), segmentaci, klasifikaci znaků a nakonec jazykově specifické post‑zpracování. Náročná část se odehrává uvnitř tohoto jediného volání metody. + +--- + +## Krok 6: Výstup extrahovaného textu – *extrahování textu z obrázku* + +Výsledek je uložen v vlastnosti `Text` engine. Jednoduše jej vypíšeme do konzole, ale můžete jej také uložit do databáze, poslat přes API nebo předat do dalšího NLP pipeline. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Očekávaný výstup** (předpokládáme, že obrázek obsahuje “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +Pokud vidíte poškozené znaky, zkontrolujte, že hindský model je správně umístěn a že obrázek není příliš komprimován. + +--- + +## Kompletní funkční příklad + +Níže je kompletní program, který můžete zkopírovat a vložit do nového konzolového projektu (`dotnet new console`). Nahraďte `YOUR_DIRECTORY` skutečnou cestou na vašem počítači. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** Pokud plánujete zpracovávat mnoho obrázků ve smyčce, vytvořte jediný `OcrEngine` a znovu jej použijte — tím snížíte režii inicializace. + +--- + +## Řešení běžných problémů + +| Problém | Proč se to děje | Rychlé řešení | +|---------|-----------------|----------------| +| **Prázdný výstup** | Špatný jazykový model nebo nízká kvalita obrázku. | Ověřte `ResourcesPath`, zvyšte DPI obrázku, nebo zkuste `ocrEngine.Image = ImageStream.FromFile(..., true)` pro povolení automatického vylepšení. | +| **Výjimka: Zdroj nenalezen** | Chybějící hindský `.traineddata`. | Stáhněte hindský model z Aspose, umístěte jej do `OcrResources` a ujistěte se, že název souboru odpovídá `hin.traineddata`. | +| **Špatné znaky** | Neshoda kódování při výpisu do konzole. | Nastavte kódování výstupu konzole: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Zpomalení výkonu** | Velké obrázky zpracovány bez škálování. | Předzpracujte obrázek na maximální šířku/výšku 2000 px před předáním do OCR. | + +--- + +## Další kroky a související témata + +- **Dávkové zpracování:** Zabalte kód do smyčky `foreach`, aby zpracovával složku s obrázky. +- **Různé jazyky:** Vyměňte `OcrLanguage.Hindi` za `OcrLanguage.English`, `OcrLanguage.Arabic` atd. +- **Formáty výstupu:** Místo `Console.WriteLine` zapisujte do textového souboru (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integrace s ASP.NET Core:** Zveřejněte API endpoint, který přijímá nahrání obrázku a vrací extrahovaný text jako JSON. + +Všechny tyto rozšíření následují stejný vzor — nakonfigurujte engine, načtěte obrázek, rozpoznejte a využijte výsledek. + +## Závěr + +Právě jsme ukázali, jak **extrahovat text z obrázku** pomocí Aspose OCR v C#. Průvodce pokryl každý krok, který potřebujete k **načtení obrázku pro OCR**, **rozpoznání hindského textu** a **spuštění OCR rozpoznání** — vše v samostatné konzolové aplikaci. + +Vyzkoušejte to s vlastními obrázky, experimentujte s různými jazyky a klidně přizpůsobte úryvek pro webové služby nebo úlohy na pozadí. Základní myšlenka zůstává stejná: nastavte zdroje, vyberte jazyk, předáte obrázek a přečtěte vlastnost `Text`. + +Pokud narazíte na potíže, podívejte se na výše uvedenou tabulku řešení problémů nebo zanechte komentář. Šťastné programování a ať jsou vaše OCR výsledky vždy jasné jako sklo! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/czech/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..2e192319 --- /dev/null +++ b/ocr/czech/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-01-10 +description: Jak spustit OCR na obrázku pomocí Aspose OCR v C#. Naučte se extrahovat + text z obrázku, spustit OCR na obrázku a načíst obrázek pro OCR s akcelerací GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: cs +og_description: Jak spustit OCR na obrázku pomocí Aspose OCR. Tento tutoriál ukazuje, + jak extrahovat text z obrázku, spustit OCR na obrázku a efektivně načíst obrázek + pro OCR. +og_title: Jak spustit OCR v C# – Kompletní krok‑za‑krokem průvodce +tags: +- OCR +- C# +- Aspose +title: Jak spustit OCR v C# – Kompletní průvodce s Aspose OCR +url: /cs/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak spustit OCR v C# – Kompletní průvodce s Aspose OCR + +Už jste se někdy ptali, **jak spustit OCR** na fotografii a získat z ní text, aniž byste si trhali vlasy? Nejste v tom sami. Ať už digitalizujete faktury, skenujete účtenky nebo jen chcete vytvořit prohledávatelný PDF, extrakce textu z obrázku je každodenní potřebou mnoha vývojářů. + +V tomto tutoriálu projdeme praktickým, end‑to‑end příkladem, který ukazuje **jak spustit OCR na obrázku** pomocí knihovny Aspose OCR, včetně akcelerace GPU pro vyšší rychlost. Na konci budete přesně vědět, jak načíst obrázek pro OCR, nastavit využití paměti a získat čistý prostý text – vše během několika minut kódu. + +## Co se naučíte + +- Jak inicializovat Aspose OCR engine v C# +- Jak **načíst obrázek pro OCR** z disku nebo proudu +- Jak povolit akceleraci GPU a omezit paměť GPU +- Jak **extrahovat text z obrázku** a ověřit výstup +- Časté úskalí (chybějící GPU modul, limity paměti) a rychlé opravy + +Předchozí zkušenost s Aspose OCR není nutná; stačí funkční .NET prostředí a ukázkový obrázek. + +--- + +## Jak spustit OCR na obrázku s Aspose OCR + +Prvním krokem je jasný, spustitelný úryvek kódu, který udělá vše. Níže je kompletní program, který můžete zkopírovat, vložit a okamžitě spustit. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Očekávaný výstup** (předpokládáme, že ukázkový obrázek obsahuje frázi „Hello World“): + +``` +=== OCR Result === +Hello World +``` + +> **Tip:** Pokud nevidíte žádný text, zkontrolujte, že je nainstalován GPU modul a že je cesta k obrázku správná. Metoda `ImageStream.FromFile` vyhodí jasnou výjimku, pokud soubor nelze najít. + +--- + +## Extrahovat text z obrázku pomocí akcelerace GPU + +Proč vůbec používat GPU? OCR pouze na CPU funguje, ale může být bolestivě pomalé u velkých nebo vysoce rozlišených obrázků. Povolení akcelerace GPU (krok 2 výše) přenese těžkou práci na grafickou kartu, která dokáže zpracovat tisíce pixelů za sekundu. + +### Kdy použít GPU + +- **Dávkové zpracování** – skenování desítek faktur najednou. +- **Vysoce rozlišené skeny** – vše nad 300 dpi. +- **Aplikace v reálném čase** – např. mobilní skener, který potřebuje okamžitou odezvu. + +Pokud vaše prostředí nemá kompatibilní GPU, jednoduše nastavte `EnableGpuAcceleration = false;` a engine se automaticky vrátí do režimu CPU. + +--- + +## Spustit OCR na obrázku – správné načtení obrázku + +Načtení obrázku je krok **načíst obrázek pro OCR**, který často lidi zaskočí. Aspose OCR očekává `ImageStream`, který lze vytvořit ze souboru, paměťového proudu nebo dokonce z URL. Zde jsou některé varianty: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Hraniční případ:** Některé obrázky obsahují alfa kanál (průhlednost), který OCR engine zmátne. Odstranění alfa kanálu je jednoduché: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Nyní máte pokryté nejčastější způsoby **načíst obrázek pro OCR**, takže engine vždy dostane čistý, podporovaný formát. + +--- + +## Tipy pro efektivní načítání obrázku pro OCR + +1. **Zmenšit velké obrázky** – OCR nepotřebuje 4 K fotografii; zmenšením na ~1500 px šířky se zrychlí zpracování bez ztráty přesnosti. +2. **Převést na odstíny šedi** – snižuje šum a může zlepšit rozpoznání u nízkokontrastních skenů. +3. **Předzpracovat deskew** – pokud je obrázek nakloněný, lze zapnout vestavěný deskew Aspose OCR pomocí `ocrEngine.Config.EnableDeskew = true;`. + +Tyto úpravy jsou zvláště užitečné, když **extrahujete text z obrázku** hromadně. + +--- + +## Časté úskalí a jak je opravit + +| Příznak | Pravděpodobná příčina | Oprava | +|---------|-----------------------|--------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU modul není nainstalován | Nainstalujte balíček Aspose OCR GPU nebo vypněte GPU (`EnableGpuAcceleration = false`). | +| Prázdný výstup | Špatná cesta k obrázku nebo nepodporovaný formát | Ověřte cestu v `ImageStream.FromFile`; zkuste načíst z bajtů, aby byl soubor načten správně. | +| Chyba nedostatku paměti | Limit paměti GPU je příliš nízký pro velkou dávku | Zvyšte `GpuMemoryLimit` (např. 2048) nebo zpracovávejte obrázky v menších blocích. | +| Rozmazané znaky | Obrázek má hodně šumu nebo nízký kontrast | Předzpracování: binarizace, despeckle nebo zvýšení DPI před OCR. | + +--- + +## Kompletní funkční příklad – spojení všeho dohromady + +Níže je kompaktní konzolová aplikace, která zahrnuje osvědčené postupy, o kterých jsme mluvili: akcelerace GPU, omezení paměti, předzpracování obrázku a ošetření chyb. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Spuštěním tohoto programu se vypíše čistý text extrahovaný z vašeho obrázku, což demonstruje robustní způsob **extrahovat text z obrázku** i když zdroj není dokonalý. + +--- + +## Závěr + +Probrali jsme **jak spustit OCR** na obrázku pomocí Aspose OCR, od inicializace engine přes načtení obrázku, povolení akcelerace GPU až po řešení hraničních případů. Nyní máte solidní, citovatelný odkaz, který můžete zkopírovat do libovolného .NET projektu a okamžitě **extrahovat text z obrázku**. + +Další kroky? Zkuste zpracovávat PDF stránky, experimentujte s různými jazyky (nastavte `ocrEngine.Config.Language = "spa"` pro španělštinu) nebo integrujte tento tok do webového API, které zpracovává nahrané soubory za běhu. Možnosti jsou neomezené a s nástroji, které jsme probírali, jste dobře vybaveni pro jakýkoli OCR úkol. + +Šťastné kódování a ať je váš text vždy čistý a OCR rychlé! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/czech/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..4814923d --- /dev/null +++ b/ocr/czech/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-01-10 +description: Jak rychle spustit OCR a extrahovat arabský text z obrázku. Naučte se + převést obrázek na text, číst text z PNG a zjistit, jak extrahovat text pomocí Aspose + OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: cs +og_description: Jak spustit OCR v C# a extrahovat arabský text z PNG obrázku. Tento + průvodce vám ukáže, jak převést obrázek na text a číst text z PNG krok za krokem. +og_title: Jak spustit OCR v C# – Extrahovat arabský text z PNG +tags: +- OCR +- C# +- Aspose +title: Jak spustit OCR v C# – Extrahovat arabský text z PNG +url: /cs/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak spustit OCR v C# – Extrahovat arabský text z PNG + +Už jste se někdy zamýšleli **jak spustit OCR** na obrázku, který obsahuje arabské znaky? Nejste v tom sami. Mnoho vývojářů narazí na problém, když potřebují **extrahovat arabský text** z PNG a neví, která knihovna zvládne skripty psané zprava doleva bez zbytečných komplikací. + +V tomto tutoriálu projdeme vše, co potřebujete vědět k **převodu obrázku na text**, **čtení textu z PNG** a nakonec **jak extrahovat text** pomocí Aspose.OCR v čisté C# konzolové aplikaci. Na konci budete mít připravený program, který vypíše arabský řetězec přímo do terminálu. + +## Co se naučíte + +- Instalovat a odkazovat na NuGet balíček Aspose.OCR. +- Nakonfigurovat OCR engine pro podporu arabského jazyka. +- Načíst PNG obrázek a spustit proces rozpoznávání. +- Získat a zobrazit extrahovaný text. +- Doladit nastavení pro vyšší přesnost a vyřešit běžné úskalí. + +Žádná předchozí zkušenost s OCR není vyžadována, stačí základní znalost C# a .NET vývojového prostředí (Visual Studio, Rider nebo `dotnet` CLI). + +--- + +## Jak spustit OCR – Nastavení Aspose OCR + +### Krok 1: Přidat NuGet balíček Aspose.OCR + +První věc, kterou potřebujeme, je samotná OCR knihovna. Aspose.OCR je komerční produkt, ale nabízí bezplatnou zkušební verzi, která pro výukové účely funguje perfektně. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Alternativně otevřete **NuGet Package Manager** ve Visual Studio, vyhledejte **Aspose.OCR** a klikněte na **Install**. + +> **Tip:** Pokud plánujete knihovnu používat v CI pipeline, přidejte přepínač `-v` pro uzamčení verze, např. `dotnet add package Aspose.OCR -v 23.10`. + +### Krok 2: Vytvořit nový konzolový projekt (pokud ještě žádný nemáte) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Nyní máte čerstvý soubor `Program.cs` připravený pro náš kód. + +--- + +## Extrahovat arabský text – Psání OCR kódu + +Níže je kompletní, připravený program. Uložte jej jako `Program.cs` (nebo přepište automaticky vygenerovaný soubor). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Proč je každý řádek důležitý + +- **`OcrEngine`**: Hlavní třída, která koordinuje načítání obrázku, výběr jazyka a rozpoznávání. +- **`Language = OcrLanguage.Arabic`**: Arabština používá skript zprava doleva a unikátní glyfy; nastavení jazyka říká enginu, aby použil správné modely znaků. +- **`ImageStream.FromFile`**: Podporuje PNG, JPEG, BMP a mnoho dalších formátů. Pokud budete potřebovat číst z `MemoryStream` (např. nahraný soubor), nahraďte toto volání odpovídajícím způsobem. +- **`Recognize()`**: Provádí těžkou práci – analýzu pixelů, segmentaci a klasifikaci znaků. +- **`ocrEngine.Text`**: Výsledný Unicode řetězec, připravený k dalšímu zpracování, uložení nebo zobrazení. + +### Očekávaný výstup + +Pokud `arabic_sample.png` obsahuje frázi “مرحبا بالعالم” (Hello World), konzole vypíše: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Pokud výstup vypadá poškozeně, zkontrolujte, že je obrázek čistý, jazyk je nastaven na arabštinu a verze OCR enginu odpovídá dokumentaci. + +--- + +## Převod obrázku na text – Ladění přesnosti + +Zatímco výchozí nastavení funguje pro většinu čistých skenů, reálné obrázky často vyžadují trochu více péče. + +| Nastavení | Co dělá | Kdy použít | +|-----------|---------|------------| +| `ocrEngine.Config.Preprocess = true` | Aktivuje automatickou binarizaci a odstraňování šumu. | Skenované dokumenty se stíny. | +| `ocrEngine.Config.Deskew = true` | Otočí obrázek pro opravu mírného naklonění. | Fotografie pořízené pod úhlem. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Považuje celý obrázek za jeden blok textu. | Jednoduché popisky nebo jednorázové řádky. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Omezuje rozpoznávání pouze na arabské znaky. | Snižuje falešně pozitivní výsledky na stránkách s více jazyky. | + +Tyto řádky můžete přidat hned po vytvoření enginu: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Číst text z PNG – Práce s různými zdroji obrázků + +Někdy PNG žije v databázi nebo přichází z webového požadavku. Zde je rychlá varianta, která čte z `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Zbytek toku zůstává stejný, což znamená, že **jak extrahovat text** zůstává konzistentní bez ohledu na zdroj. + +--- + +## Jak extrahovat text – Pokročilé možnosti a okrajové případy + +### 1. Vícestránkové PDF nebo TIFF + +Pokud potřebujete OCR pro vícestránkový dokument, projděte každou stránku ve smyčce: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Poznámka:** Pro tento úryvek budete potřebovat balíček `Aspose.PDF`. + +### 2. Automatické rozpoznání jazyka + +Aspose.OCR také nabízí automatické rozpoznání, ale je pomalejší. Pokud si nejste jisti, zda obrázek obsahuje arabštinu nebo jiný skript, povolte jej: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +Engine vyzkouší každý jazykový model a vybere nejlepší shodu. + +### 3. Tipy pro výkon + +- **Znovu použijte objekt `OcrEngine`** pro více obrázků; vytváření nové instance pokaždé přidává režii. +- **Spouštějte paralelně** pouze pokud máte samostatné instance enginu pro každý vlákno – sdílení jedné instance způsobuje závodní podmínky. + +--- + +## Závěr + +Probrali jsme **jak spustit OCR** v C# od začátku až do konce, ukázali vám, jak **extrahovat arabský text**, **převést obrázek na text**, **číst text z PNG** a odpověděli na **jak extrahovat text** v různých scénářích. Ukázkový kód je kompletní, samostatný a připravený k vložení do libovolného .NET konzolového projektu. + +Další kroky? Vyzkoušejte zaměnit `OcrLanguage.Arabic` za korejštinu nebo srbskou cyrilici a uvidíte vícejazyčnou sílu knihovny. Experimentujte s předzpracovatelskými příznaky pro zvýšení přesnosti u špinavých skenů, nebo integrujte OCR rutinu do webového API, aby uživatelé mohli nahrávat obrázky a okamžitě získávat textové výsledky. + +Šťastné kódování a ať jsou vaše OCR výsledky vždy krystalicky čisté! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/czech/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..68c9c4fa --- /dev/null +++ b/ocr/czech/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,294 @@ +--- +category: general +date: 2026-01-10 +description: Naučte se rozpoznávat text z obrázku, extrahovat souřadnice textu a převádět + účtenku do JSON pomocí Aspose OCR v C#. Krok za krokem tutoriál. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: cs +og_description: Rozpoznávejte text z obrázku v C# pomocí Aspose OCR. Tento průvodce + ukazuje, jak extrahovat text, získat souřadnice a převést účtenku do JSON. +og_title: Rozpoznat text z obrázku – Kompletní C# OCR tutoriál +tags: +- OCR +- C# +- Aspose +title: Rozpoznání textu z obrázku v C# – Kompletní průvodce OCR a JSON +url: /cs/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# rozpoznání textu z obrázku – Kompletní C# OCR tutoriál + +Už jste někdy potřebovali rozpoznat text z obrázku, ale nebyli jste si jisti, kterou knihovnu zvolit? Nejste v tom sami. V mnoha reálných aplikacích—sledovačích výdajů, skenerů účtenek nebo archivátorech dokumentů—je spolehlivé získání textu první překážkou. + +V tomto tutoriálu vás provedeme **jak extrahovat text**, získáme jeho ohraničující rámečky a nakonec **převod účtenky do JSON** pomocí Aspose.OCR pro .NET. Na konci budete mít samostatný C# projekt, který vezme fotografii účtenky a vytvoří úhledný JSON soubor s hodnotami důvěry a souřadnicemi. + +## Co budete potřebovat + +- **.NET 6.0 SDK** (nebo jakákoli novější verze). Starší frameworky také fungují, ale .NET 6 je ideální pro moderní knihovny. +- **Visual Studio 2022** nebo VS Code s rozšířením C#. +- **Aspose.OCR for .NET** NuGet balíček (`Aspose.OCR` a `Aspose.OCR.Output`). Můžete jej nainstalovat pomocí Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Ukázkový obrázek účtenky (např. `receipt.jpg`) umístěný ve složce, na kterou budete později odkazovat. + +To je vše—žádné další SDK, žádné nativní binární soubory, jen čistý spravovaný kód. + +## Krok 1: Vytvořte nový konzolový projekt + +Nejprve vytvořte konzolovou aplikaci. Je to nejrychlejší způsob, jak otestovat OCR bez UI režie. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Tip:** Udržujte složku projektu přehlednou; vytvořte podsložku `Resources` a vložte tam `receipt.jpg`. Zjednoduší to práci s cestami. + +## Krok 2: Načtěte obrázek účtenky + +Nyní skutečně **rozpoznáváme text z obrázku**. Prvním krokem je nasměrovat OCR engine na soubor. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Proč obalujeme načítání jednoduchou kontrolou existence? Protože ve výrobě často pracujete s nahrávkami od uživatelů, které mohou chybět nebo být poškozené. Zachycení problému brzy vás ochrání před kryptickými výjimkami později. + +## Krok 3: Proveďte OCR – **rozpoznání textu z obrázku** + +S obrázkem v paměti požádáme Aspose, aby **rozpoznal text z obrázku**. Tato operace je synchronní a vrací bohatý výsledek. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Za scénou Aspose spouští neuronovou síť trénovanou na milionech znaků. Engine naplní `ocrEngine.Text`, `ocrEngine.RecognitionResult` a kolekci objektů `OcrRegion`, které obsahují souřadnice. To je přesně to, co potřebujeme pro další krok. + +## Krok 4: **Jak extrahovat text** – Získání surového řetězce + +Pokud vás zajímá jen čistý text (např. pro rychlé vyhledávání), můžete jej získat přímo z engine: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Všimnete si zalomení řádků tam, kde OCR detekovalo hranice odstavců. V mnoha scénářích skenování účtenek je surový řetězec dostačující k získání částek, dat nebo názvů prodejců pomocí jednoduchých regexů. + +## Krok 5: **extrahovat souřadnice textu** – Ohraničující rámečky pro každé slovo + +Často potřebujete vědět, *kde* na obrázku se konkrétní text nachází—např. pro zvýraznění celkové částky v UI. Aspose nám to poskytuje pomocí objektů `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Všimněte si, že procházíme **extrahování souřadnic textu** pro každý rozpoznaný segment. Souřadnice jsou relativní k původnímu obrázku, takže je můžete překrýt v grafickém plátně nebo v HTML elementu ``. + +## Krok 6: **převod účtenky do JSON** – Ukládání podrobných výsledků + +Nyní přichází část, která spojuje vše dohromady: chceme strojově čitelnou strukturu, která zahrnuje text, skóre důvěry a ohraničující rámečky. Aspose poskytuje `JsonSaveOptions`, které to usnadňují. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Výsledný soubor vypadá zhruba takto (zkráceně): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Nyní máte artefakt **převodu účtenky do JSON**, který můžete předat downstream službám—např. API pro výdajové zprávy, analytické pipeline nebo i jednoduché UI, které kreslí obdélníky kolem každého slova. + +## Kompletní funkční příklad + +Spojením všech částí dohromady získáte kompletní `Program.cs`, který můžete zkopírovat do svého projektu: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Spusťte program (`dotnet run`) a sledujte výstup v konzoli. Otevřete `Resources/receipt.json` a ověřte strukturu. + +## Časté otázky a okrajové případy + +- **Co když je obrázek rozmazaný?** + Aspose OCR funguje nejlépe při 300 dpi nebo vyšším. Pokud získáte nízké skóre důvěry, zvažte aplikaci ostření před předáním obrázku engine. + +- **Mohu rozpoznávat více jazyků?** + Ano. Nastavte `ocrEngine.Language = Language.English | Language.Spanish;` před voláním `Recognize()`. + +- **Jak omezím výstup jen na čísla (např. částky)?** + Po získání čistého textu spusťte regex jako `\d+\.\d{2}` na `ocrEngine.Text`. Protože již máme souřadnice, můžete mapovat nalezený řetězec zpět na jeho oblast pro vizuální zvýraznění. + +- **Je formát JSON přizpůsobitelný?** + Třída `JsonSaveOptions` poskytuje několik příznaků. Pokud potřebujete zcela vlastní schéma, můžete iterovat přes `ocrEngine.RecognitionResult.Regions` a serializovat objekty sami pomocí `System.Text.Json`. + +## Závěr + +Právě jsme ukázali, jak **rozpoznat text z obrázku** v C# pomocí Aspose.OCR, **jak extrahovat text**, získat **souřadnice extrahovaného textu** a nakonec **převést účtenku do JSON**. Celý proces běží v jediné, snadno spustitelné konzolové aplikaci, což je ideální pro prototypy nebo jako stavební blok ve větších systémech. + +Další kroky? Zkuste předat JSON do front‑endu, který kreslí ohraničující rámečky, nebo zapojte výstup do služby pro výdajové zprávy. Můžete také experimentovat s různými formáty obrázků (PNG, TIFF) nebo hromadně zpracovat složku s účtenkami. + +Máte další otázky ohledně OCR, Aspose nebo práce s JSON? Zanechte komentář níže a šťastné kódování! + +![Příklad obrázku účtenky pro rozpoznání textu z obrázku](receipt.jpg "Příklad obrázku účtenky") + +{{< /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/net/ocr-configuration/_index.md b/ocr/dutch/net/ocr-configuration/_index.md index f3691e00..8860be9b 100644 --- a/ocr/dutch/net/ocr-configuration/_index.md +++ b/ocr/dutch/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Ontgrendel de kracht van OCR-beeldherkenning in .NET met Aspose.OCR. Extraheer t Ontgrendel krachtige OCR-mogelijkheden met Aspose.OCR voor .NET. Extraheer tekst naadloos uit afbeeldingen. ### [OCR-bewerking met lijst in OCR-beeldherkenning](./ocr-operation-with-list/) Ontgrendel het potentieel van Aspose.OCR voor .NET. Voer moeiteloos OCR-beeldherkenning uit met lijsten. Verhoog de productiviteit en gegevensextractie in uw applicaties. +### [Embedded resource lezen in .NET – Complete gids voor het instellen van een Aspose-licentie](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Leer hoe u een embedded resource leest en een Aspose-licentie instelt in .NET-toepassingen. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/dutch/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..b0dc3479 --- /dev/null +++ b/ocr/dutch/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-01-10 +description: Lees een ingebedde resource en stel de Aspose‑licentie in C#. Leer hoe + je GetManifestResourceStream gebruikt, een licentiebestand inbedt en de uitvoerende + assembly in .NET verkrijgt in één tutorial. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: nl +og_description: Lees een ingebedde resource in .NET en stel de Aspose‑licentie snel + in. Stapsgewijze handleiding over GetManifestResourceStream, het insluiten van de + licentie en het gebruiken van de uitvoerende assembly. +og_title: Ingesloten resource lezen – Aspose-licentie instellen in .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Ingebedde resource lezen in .NET – Complete gids voor het instellen van de + Aspose‑licentie +url: /nl/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Embedded Resource lezen – Complete gids voor het instellen van de Aspose‑licentie + +Heb je ooit **embedded resource lezen** nodig gehad tijdens runtime en je afgevraagd hoe je je Aspose OCR‑bibliotheek kunt licentiëren zonder paden hard‑coded? Je bent niet de enige. In veel bedrijfsapplicaties bevindt het licentiebestand zich binnen de assembly, zodat je geen extra bestanden hoeft mee te leveren of je geen zorgen hoeft te maken over ontbrekende rechten. Deze tutorial laat je precies zien hoe je een embedded resource leest en de Aspose‑licentie instelt met de .NET‑methode `GetManifestResourceStream`. + +We lopen stap voor stap door alles wat je nodig hebt: het insluiten van het `.lic`‑bestand, het ophalen met `GetExecutingAssembly`, en uiteindelijk toepassen op de Aspose OCR `License`‑klasse. Aan het einde heb je een zelfstandige oplossing die werkt in elk .NET‑project—geen externe bestanden nodig. + +## Wat je zult leren + +- **Hoe een licentiebestand in te sluiten** in een .NET‑project zodat het onderdeel wordt van de gecompileerde DLL. +- De juiste manier om **GetManifestResourceStream te gebruiken** om die embedded resource te lezen. +- Hoe je **Aspose‑licentie** programmatically kunt instellen zonder het bestandssysteem aan te raken. +- Tips voor het omgaan met veelvoorkomende valkuilen zoals verkeerd gespelde resource‑namen of ontbrekende build‑actions. +- Een compleet, uitvoerbaar code‑voorbeeld dat je in je eigen oplossing kunt plaatsen. + +### Voorvereisten + +- .NET 6.0 of later (de code werkt ook op .NET Framework 4.x, pas dan gewoon het project‑bestand aan). +- Aspose.OCR NuGet‑package geïnstalleerd (`dotnet add package Aspose.OCR`). +- Basiskennis van C# en Visual Studio (of je favoriete IDE). + +Als je deze onderdelen al klaar hebt, prima—laten we erin duiken. + +## Stap 1: Sluit het Aspose‑licentiebestand in bij je assembly + +Het eerste wat je nodig hebt is het daadwerkelijke licentiebestand (`Aspose.OCR.lic`). In plaats van het naast je executable te kopiëren, sluit je het in als een **resource**. + +1. Voeg het `.lic`‑bestand toe aan je project (bijvoorbeeld door een map `Resources` aan te maken en het bestand daar te plaatsen). +2. Stel in de eigenschappen van het bestand **Build Action** in op `Embedded Resource`. + *Pro tip:* houd de mapstructuur eenvoudig; de volledig gekwalificeerde resource‑naam wordt `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Waarom insluiten? Omdat de assembly nu de licentie in zichzelf draagt, waardoor het risico op een ontbrekend bestand op een productieserver verdwijnt. + +## Stap 2: Haal de embedded resource op met GetExecutingAssembly + +Nu de licentie zich binnen de DLL bevindt, heb je een manier nodig om **embedded resource lezen** tijdens runtime. De .NET‑klasse `Assembly` biedt precies dat. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +De methode `GetExecutingAssembly` retourneert de assembly die momenteel wordt uitgevoerd—perfect om resources te vinden die naast je code leven. + +## Stap 3: Open de licentiestroom met GetManifestResourceStream + +Met de assembly‑referentie in de hand kun je `GetManifestResourceStream` aanroepen. Deze methode geeft een `Stream` terug die je direct aan Aspose kunt doorgeven. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Let op: we gebruiken een **null‑conditional** `using`‑statement (`using Stream?`) om ervoor te zorgen dat de stream automatisch wordt vrijgegeven. Als de naam onjuist is, gooien we een duidelijke uitzondering—dit bespaart je later van stille fouten. + +## Stap 4: Pas de licentie toe op Aspose OCR + +De `License`‑klasse van Aspose verwacht een `Stream`. Die hebben we al, dus de laatste stap is eenvoudig. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Dat is alles! De Aspose OCR‑engine is nu volledig gelicentieerd en klaar om afbeeldingen te verwerken zonder het proef‑watermerk. + +## Volledig werkend voorbeeld + +Hieronder vind je een compleet, kant‑en‑klaar programma dat het hele proces demonstreert. Het bevat de benodigde `using`‑directives, foutafhandeling en een eenvoudige OCR‑aanroep om te bewijzen dat de licentie actief is. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Verwachte output + +Wanneer je het programma uitvoert op een machine met een geldige ingesloten licentie, zie je: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Als de licentiestroom niet gevonden kan worden, meldt de console de ontbrekende resource‑naam en wijst je erop de **Build Action** en namespace te controleren. + +## Veelvoorkomende valkuilen & hoe ze te vermijden + +| Issue | Why It Happens | Fix | +|-------|----------------|-----| +| **Resource name mismatch** | .NET bouwt de resource‑naam op basis van de default namespace + mappad. | Gebruik `Assembly.GetManifestResourceNames()` om beschikbare namen te tonen en verifieer de exacte string. | +| **License file not set as Embedded Resource** | De standaard Build Action is `Content`. | Verander deze naar `Embedded Resource` in de bestandseigenschappen. | +| **Running from a different assembly** | Als je de code vanuit een class library aanroept, kan `GetExecutingAssembly()` de bibliotheek teruggeven in plaats van de hoofd‑exe. | Gebruik `Assembly.GetEntryAssembly()` of geef de juiste assembly expliciet door. | +| **Stream disposed before use** | Per ongeluk een `using`‑blok gebruiken dat de stream te vroeg sluit. | Houd de `using` rond de `SetLicense`‑aanroep, zoals hierboven getoond. | +| **Aspose.OCR version mismatch** | Nieuwere versies kunnen een ander licentieformaat vereisen. | Download altijd de nieuwste licentie vanuit je Aspose‑account en embed deze opnieuw. | + +## Dezelfde techniek gebruiken voor andere ingesloten bestanden + +Het patroon—**embedded resource lezen**, dan **GetManifestResourceStream gebruiken**—werkt voor elk bestandstype: JSON‑configuraties, afbeeldingen, zelfs native DLL’s. Pas gewoon de `resourceName` en de manier waarop je de stream consumeert aan. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Visueel overzicht + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt‑tekst:* embedded resource – diagram dat het insluiten, ophalen met GetManifestResourceStream en toepassen van de Aspose‑licentie toont. + +## Samenvatting + +We hebben behandeld hoe je **embedded resource lezen** in een .NET‑assembly, de exacte stappen om **GetManifestResourceStream te gebruiken**, en de nette manier om **Aspose‑licentie** in te stellen zonder bestanden op schijf bloot te stellen. Door de licentie in te sluiten, elimineer je implementatie‑problemen en houd je je applicatie draagbaar. + +## Wat volgt? + +- **Automate license updates:** Schrijf een klein build‑time script dat het ingesloten `.lic`‑bestand vervangt wanneer je je Aspose‑abonnement verlengt. +- **Secure the resource:** Overweeg de licentie te versleutelen vóór het insluiten en deze bij runtime te ontsleutelen voor extra bescherming. +- **Explore other Aspose products:** dezelfde aanpak werkt voor Aspose.Words, Aspose.PDF, enz., elk met zijn eigen `License`‑klasse. + +Voel je vrij om te experimenteren—misschien embed je meerdere licenties voor verschillende modules, of schakel je over naar een configuratie‑gedreven resource‑naam. De mogelijkheden zijn onbeperkt. + +--- + +*Happy coding! If you hit any snags, drop a comment below or check the Aspose forums for more examples.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/dutch/net/skew-angle-calculation/_index.md index 2f3f915a..c20ce839 100644 --- a/ocr/dutch/net/skew-angle-calculation/_index.md +++ b/ocr/dutch/net/skew-angle-calculation/_index.md @@ -32,6 +32,9 @@ Ontdek de mogelijkheden van Aspose.OCR voor .NET terwijl we u begeleiden bij het ## [Bereken de scheefhoek op basis van de URI in OCR-beeldherkenning](./calculate-skew-angle-from-uri/) Integreer Aspose.OCR voor .NET moeiteloos in uw projecten en verbeter de OCR-beeldherkenning. Met onze tutorial over het berekenen van schuine hoeken op basis van URI's kunt u precisie en efficiëntie op de voorgrond plaatsen. Blijf voorop in uw ontwikkelingstraject! +## [Hoe een afbeelding rechtzetten in C# – Complete OCR-preprocessinggids](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Leer hoe u afbeeldingen kunt deskew'en in C# als onderdeel van een volledige OCR-preprocessing workflow met Aspose.OCR. + Kortom, onze tutorials over scheefhoekberekening dienen als uw kompas op het gebied van OCR-beeldherkenning. Of u nu een C#-liefhebber of een Java-liefhebber bent, Aspose.OCR voorziet u van de tools om scheve hoeken te overwinnen en uw projecten naar nieuwe hoogten te tillen. Ontdek, leer en revolutioneer uw ontwikkelingstraject met ons! ## Zelfstudies voor het berekenen van schuine hoeken ### [Bereken de scheefhoek in OCR-beeldherkenning](./calculate-skew-angle/) @@ -45,4 +48,4 @@ Ontdek Aspose.OCR voor .NET om moeiteloos schuine hoeken te berekenen bij OCR-be {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/dutch/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..98647cc1 --- /dev/null +++ b/ocr/dutch/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-01-10 +description: Hoe een afbeelding rechtzetten en OCR-resultaten verbeteren met Aspose.OCR. + Leer hoe je een afbeelding voor OCR kunt voorbewerken, ruis uit een scan kunt verwijderen + en tekst uit een scan kunt herkennen. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: nl +og_description: Hoe een afbeelding rechtzetten en de OCR-nauwkeurigheid verbeteren. + Deze gids laat zien hoe je een afbeelding voor OCR kunt voorbewerken, ruis uit een + scan kunt verwijderen en tekst uit een scan kunt herkennen met Aspose.OCR. +og_title: Hoe een afbeelding rechtzetten in C# – Complete OCR-preprocessinggids +tags: +- OCR +- C# +- Image Processing +title: Hoe een afbeelding rechtzetten in C# – Complete gids voor OCR‑voorverwerking +url: /nl/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe een afbeelding rechtzetten in C# – Complete OCR‑preprocessinggids + +Heb je je ooit afgevraagd **hoe je een afbeelding rechtzet** voordat je ze aan een OCR‑engine voert? Je bent niet de enige. Gescande documenten zijn vaak scheef, ruisachtig of hebben een laag contrast, en dat verstoort elke poging tot teksterkenning. + +In deze tutorial lopen we een volledig, uitvoerbaar voorbeeld door dat **afbeeldingen voor OCR preproceste**, ruis van de scan verwijdert, en uiteindelijk **tekst van de scan herkent** met behulp van de Aspose.OCR‑bibliotheek. Aan het einde heb je een duidelijk beeld van **hoe je OCR gebruikt** in C# terwijl de code kort en bondig blijft. + +> **Pro tip:** Zelfs een kleine rotatie (5‑10°) kan de OCR‑nauwkeurigheid met 30 % of meer doen dalen. Het rechtzetten van de afbeelding is de eerste stap die je nooit moet overslaan. + +--- + +## Wat je nodig hebt + +- **.NET 6+** (de code werkt ook op .NET Framework, maar .NET 6 is de huidige LTS) +- **Aspose.OCR for .NET** – je kunt het ophalen via NuGet (`Install-Package Aspose.OCR`) +- Een voorbeeld‑TIFF/PNG/JPEG die gedraaid of ruisachtig is (we gebruiken `noisy_rotated.tif` in het voorbeeld) +- Elke IDE die je wilt – Visual Studio, Rider, of VS Code volstaat + +Dat is alles. Geen extra bibliotheken, geen externe services. + +--- + +## Stap 1 – Laad de bronafbeelding (Waarom het belangrijk is) + +Voordat we **een afbeelding kunnen rechtzetten**, moeten we deze inlezen in een Aspose `ImageStream`. Dit object abstraheert bestands‑I/O en biedt de OCR‑engine een consistente interface. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Waarom eerst laden?* Omdat alle volgende filters werken op een afbeelding in het geheugen. Als het bestand niet gelezen kan worden, stort de hele pijplijn in. + +--- + +## Stap 2 – Bouw een pre‑processing‑pijplijn (rechtzetten + ruisverwijdering + contrast) + +Een robuuste OCR‑workflow schakelt meestal meerdere filters aaneen. Hier **preprocessen we de afbeelding voor OCR** en, nog belangrijker, **hoe we de afbeelding automatisch rechtzetten**. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Waarom deze drie?** +- **DeskewFilter** lost het “hoe je een afbeelding rechtzet” probleem automatisch op; je hoeft de hoek niet te raden. +- **DenoiseFilter** pakt de eis “verwijder ruis van scan” aan, die anders fantoomtekens creëert. +- **ContrastBoostFilter** helpt de OCR‑engine donkere tekst te onderscheiden van een lichte achtergrond, een klassiek probleem wanneer je *afbeeldingen voor OCR preprocesses*. + +--- + +## Stap 3 – Pas de pijplijn toe (de transformatie zien) + +Nu voeren we de filters daadwerkelijk uit. De geretourneerde `processedImage` is wat we aan de OCR‑engine gaan voeren. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Als je `cleaned_output.tif` opent, zul je merken dat de tekst recht is, minder korrelig en met hoger contrast. Deze visuele controle is handig wanneer je *ruis van scan verwijdert* en wilt bevestigen dat het rechtzetten heeft gewerkt. + +--- + +## Stap 4 – Maak en configureer de OCR‑engine (hoe je OCR gebruikt) + +Met een nette afbeelding in de hand, instantieren we `OcrEngine`. Dit is de kern van **hoe je OCR gebruikt** met Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Waarom `AutoPageSegmentation` instellen?* Omdat veel scans tabellen of meerdere kolommen bevatten. Het inschakelen laat de engine de pagina intelligent splitsen, waardoor het uiteindelijke **tekst van de scan herkennen** resultaat verbetert. + +--- + +## Stap 5 – Voer het herkenningsproces uit (eindelijk tekst herkennen) + +Nu het moment van de waarheid: we vragen de engine de tekst te lezen. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Als alles soepel verliep, zie je een schoon tekstblok dat overeenkomt met het originele document. Dat is de beloning voor het correct **rechtzetten van de afbeelding**, **verwijderen van ruis**, en **preprocessen van de afbeelding voor OCR**. + +--- + +## Stap 6 – Volledig werkend voorbeeld (klaar om te kopiëren‑en‑plakken) + +Hieronder staat het volledige programma, klaar om te compileren. Vervang alleen het bestandspad en je bent klaar om te gaan. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Verwachte output** (afgekapt voor beknoptheid): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Als de output er onduidelijk uitziet, controleer dan of de bronafbeelding niet meer dan 30° gedraaid is, of vergroot `DeskewFilter.MaxAngle`. + +--- + +## Veelgestelde vragen (randgevallen & variaties) + +| Vraag | Antwoord | +|----------|--------| +| **Wat als mijn scan 45° gedraaid is?** | `DeskewFilter` beperkt zich tot `MaxAngle`. Verhoog deze (bijv. `MaxAngle = 60`) of pre‑draai de afbeelding met een grafische bibliotheek voordat je deze aan de pijplijn voert. | +| **Kan ik PDF's pagina‑voor‑pagina verwerken?** | Ja. Converteer elke PDF‑pagina naar een afbeelding (bijv. met `Aspose.Pdf`) en voer dezelfde pijplijn uit op elke bitmap. | +| **Mijn document is in het Frans – moet ik iets aanpassen?** | Stel `ocrEngine.Language = Language.French;` in of laad een aangepast taalpakket. De rest van de pijplijn blijft gelijk. | +| **Is er een manier om de originele resolutie te behouden?** | `PreprocessPipeline` werkt op de originele bitmap en behoudt de DPI. Vermijd alleen het aanroepen van `ImageStream.Resize` tenzij je moet downscalen voor prestaties. | +| **Hoe beïnvloedt contrastversterking gekleurde scans?** | `ContrastBoostFilter` werkt op elk kanaal; het is veilig voor grijswaarden- of kleurafbeeldingen, maar je kunt ook eerst naar grijswaarden converteren met `new GrayscaleFilter()`. | + +--- + +## Afbeeldingsvoorbeeld (visuele hulp) + +![voorbeeld hoe afbeelding rechtzetten](/images/deskew-example.png) + +*De afbeelding toont een voor/na van een 12° gedraaide, ruisige scan die is rechtgezet en opgeschoond.* + +--- + +## Conclusie + +We hebben **hoe je een afbeelding rechtzet** met Aspose.OCR behandeld, een volledige **preprocess pipeline voor OCR** gedemonstreerd, laten zien hoe je **ruis van scan verwijdert**, en uiteindelijk **tekst van de scan herkent** met een paar regels C#. Door `DeskewFilter`, `DenoiseFilter` en `ContrastBoostFilter` te combineren krijg je een nette bitmap die de OCR‑engine haar werk laat doen zonder te haperen door artefacten. + +Volgende stappen? Probeer verschillende filtersterktes uit, voeg een `BinarizationFilter` toe voor pure zwart‑wit output, of voer de opgeschoonde afbeelding in een downstream NLP‑pipeline. Hetzelfde patroon werkt voor bonnen, paspoorten en historische documenten. + +Heb je meer vragen over **hoe je OCR gebruikt** in andere talen of frameworks? Laat een reactie achter, 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/net/text-recognition/_index.md b/ocr/dutch/net/text-recognition/_index.md index e39716b5..2a142798 100644 --- a/ocr/dutch/net/text-recognition/_index.md +++ b/ocr/dutch/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Verbeter uw .NET-toepassingen met Aspose.OCR voor efficiënte beeldtekstherkenni Ontgrendel het potentieel van OCR in .NET met Aspose.OCR. Extraheer moeiteloos tekst uit PDF's. Download nu voor een naadloze integratie-ervaring. ### [Herken tabel in OCR-beeldherkenning](./recognize-table/) Ontgrendel het potentieel van Aspose.OCR voor .NET met onze uitgebreide gids over het herkennen van tabellen bij OCR-beeldherkenning. +### [Hoe OCR in C# uit te voeren – Complete gids met Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Leer stap voor stap hoe u OCR in C# kunt uitvoeren met Aspose OCR voor nauwkeurige tekstherkenning. +### [Hoe OCR in C# uit te voeren – Arabische tekst uit PNG extraheren](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Leer hoe u met Aspose.OCR in C# Arabische tekst uit PNG-afbeeldingen kunt extraheren. +### [Tekst extraheren uit afbeelding met Aspose OCR – Complete C#-gids](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Leer stap voor stap hoe u tekst uit afbeeldingen haalt met Aspose OCR in C#. +### [Maak doorzoekbare PDF van PNG in C# – Complete gids](./create-searchable-pdf-from-png-in-c-complete-guide/) +Leer stap voor stap hoe u met Aspose.OCR een doorzoekbare PDF maakt van PNG-afbeeldingen in C#. +### [Tekst extraheren uit afbeelding in C# – Complete Aspose OCR-gids](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Leer stap voor stap hoe u met Aspose OCR tekst uit afbeeldingen haalt in C#. +### [Tekst herkennen uit afbeelding in C# – Complete gids voor OCR en JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Leer stap voor stap hoe u tekst uit afbeeldingen haalt en OCR‑resultaten als JSON verkrijgt met Aspose OCR in C#. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/dutch/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..77a39a47 --- /dev/null +++ b/ocr/dutch/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Maak doorzoekbare PDF van PNG met C#. Leer hoe je een afbeelding naar + PDF converteert, tekst uit PNG extraheert en OCR op een afbeelding in C# toepast + in één eenvoudige tutorial. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: nl +og_description: Maak een doorzoekbare PDF van PNG met C#. Deze gids laat zien hoe + je een afbeelding naar PDF converteert, tekst uit PNG extraheert en een afbeelding + OCR't met C# en Aspose. +og_title: Maak doorzoekbare PDF van PNG in C# – Stap‑voor‑stap +tags: +- Aspose OCR +- C# +- PDF/A +title: Maak een doorzoekbare PDF van PNG in C# – Complete gids +url: /nl/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Maak doorzoekbare PDF van PNG in C# – Complete gids + +Moet je **doorzoekbare pdf** maken van een PNG‑bestand in C#? Je bent niet de enige—veel ontwikkelaars lopen tegen dit obstakel aan wanneer ze hun gescande afbeeldingen zowel bekijkbaar **als** doorzoekbaar in tekst willen hebben. In deze tutorial lopen we de volledige pijplijn door: **afbeelding naar pdf converteren**, OCR uitvoeren om **tekst uit png te extraheren**, en uiteindelijk alles opslaan als een **PDF/A‑2b**‑conforme doorzoekbare document. + +Aan het einde heb je een enkele, herbruikbare code‑snippet die je in elk .NET‑project kunt plaatsen, plus een reeks praktische tips die je later veel hoofdpijn besparen. Geen externe services, alleen de Aspose OCR‑bibliotheek en een paar regels C#. + +> **Prerequisites** +> * .NET 6+ (or .NET Framework 4.7.2+). +> * Visual Studio 2022 of een C#‑compatibele IDE. +> * Een geldige Aspose OCR‑licentie (of een gratis proefversie). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Doorzoekbare PDF maken van PNG met C#"} + +## Stap 1 – Installeer en verwijs naar Aspose OCR voor C# + +Allereerst: je hebt het Aspose OCR NuGet‑pakket nodig. Open je terminal (of Package Manager Console) en voer uit: + +```bash +dotnet add package Aspose.OCR +``` + +Als je de GUI verkiest, klik met de rechtermuisknop op je project → **Manage NuGet Packages…** → zoek naar *Aspose.OCR* en installeer de nieuwste stabiele versie. + +Waarom deze bibliotheek? Hij ondersteunt **convert png to pdf**, verwerkt multi‑page afbeeldingen, en kan direct PDF/A‑2b outputten—perfect om een **searchable pdf** te maken die voldoet aan archiveringsnormen. + +> **Pro tip:** Registreer je licentie vroeg in `Program.cs` om het evaluatiewatermerk te voorkomen. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Stap 2 – Laad de PNG en voer OCR uit (tekst uit png extraheren) + +Nu laden we de bronafbeelding. De `ImageStream.FromFile`‑helper abstraheert de details van het bestandssysteem en werkt met elk ondersteund rasterformaat. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +Op dit moment heeft de engine **tekst uit png geëxtraheerd** en intern opgeslagen. Je kunt zelfs de ruwe tekst bekijken via `ocrEngine.Text`, wat handig is voor debugging of logging. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **What if the image is multi‑page?** +> Aspose OCR behandelt elke pagina als een aparte laag. Roep gewoon `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` aan en de engine iterereert automatisch. + +## Stap 3 – Configureer PDF/A‑2b opties (doorzoekbare pdf maken) + +Om het OCR‑resultaat om te zetten in een **searchable pdf**, moeten we Aspose vertellen hoe de output verpakt moet worden. PDF/A‑2b is de ideale keuze voor langdurige bewaring en garandeert dat de tekstlaag doorzoekbaar is. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Waarom de originele afbeelding insluiten? Sommige compliance‑controles vereisen dat de visuele weergave overeenkomt met de originele scan. Deze vlag maakt van het bestand een echte **convert image to pdf**‑operatie terwijl de doorzoekbare tekst behouden blijft. + +## Stap 4 – Sla het resultaat op en verifieer (png naar pdf converteren) + +Tot slot schrijven we het uitvoerbestand weg. Dezelfde `Save`‑methode werkt voor elk pad dat je opgeeft. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Open de resulterende `output.pdf` in Adobe Reader of een andere PDF‑viewer en probeer te zoeken naar een woord dat in de originele PNG voorkomt. Als het woord wordt gemarkeerd, gefeliciteerd—je hebt met succes **create searchable pdf** van een PNG gemaakt! + +### Snelle verificatiescript (optioneel) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Waarom PDF/A‑2b gebruiken voor doorzoekbare PDF's? + +* **Archiveringsveiligheid:** PDF/A‑2b garandeert dat het bestand over tientallen jaren op dezelfde manier kan worden weergegeven. +* **Regelgevende naleving:** Veel sectoren (juridisch, medisch, financieel) vereisen PDF/A voor archivering. +* **Doorzoekbaarheid:** De ingebedde OCR‑tekstlaag maakt het document indexeerbaar door desktop‑zoektools. + +Als je de extra compliance‑last niet nodig hebt, kun je de `PdfAStandard`‑regel weglaten en simpelweg `new PdfSaveOptions()` gebruiken—de output blijft doorzoekbaar, maar is dan geen PDF/A‑2b. + +## Veelvoorkomende valkuilen & hoe ze te vermijden + +| Symptoom | Waarschijnlijke oorzaak | Oplossing | +|---------|--------------|-----| +| Geen doorzoekbare tekst zichtbaar | `ocrEngine.Recognize()` never called or failed silently | Zorg ervoor dat het pad naar de afbeelding correct is en dat de licentie geregistreerd is. | +| PDF is enorm (10 + MB) | Original PNG is high‑resolution and `EmbedOriginalImage` is true | Verklein de afbeelding vóór OCR of zet `EmbedOriginalImage = false`. | +| Tekst is onleesbaar | Language not detected automatically | Stel `ocrEngine.Language = "eng";` (of je doeltaal) in vóór `Recognize()`. | + +## Volledig werkend voorbeeld (klaar om te kopiëren en plakken) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Voer het programma uit, open `output.pdf` en probeer te zoeken naar woorden waarvan je weet dat ze in `input.png` staan. Als alles klopt, heb je zojuist de **convert image to pdf**‑workflow onder de knie gekregen en geleerd hoe je **ocr image c#**‑stijl toepast. + +## Volgende stappen & gerelateerde onderwerpen + +* **Batchverwerking:** Loop door een map met PNG's en voeg de resultaten samen tot één PDF. +* **Alternatieve uitvoerformaten:** Aspose OCR kan ook DOCX, TXT of doorzoekbare PDF/A‑1b genereren. +* **Prestatie‑afstemming:** Gebruik `ocrEngine.RecognitionMode = RecognitionMode.Fast` voor grote volumes waarbij absolute nauwkeurigheid niet cruciaal is. +* **Andere bibliotheken:** Als je een krap budget hebt, kijk dan naar Tesseract .NET—hoewel je de ingebouwde PDF/A‑ondersteuning verliest. + +--- + +### TL;DR + +We hebben je laten zien hoe je **doorzoekbare pdf** maakt van een PNG met Aspose OCR in C#. De stappen zijn: + +1. Installeer Aspose OCR (`dotnet add package Aspose.OCR`). +2. Laad de PNG en voer `ocrEngine.Recognize()` uit (**extract text from png**). +3. Configureer `PdfSaveOptions` voor PDF/A‑2b (**convert image to pdf** & **convert png to pdf**). +4. Sla het bestand op en verifieer de doorzoekbare laag. + +Probeer het uit, pas de opties aan, en je hebt binnenkort een robuuste pijplijn om elke gescande afbeelding om te zetten in een archiveringsklare, doorzoekbare PDF. Veel plezier met coderen! + +{{< /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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/dutch/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..ff316fb1 --- /dev/null +++ b/ocr/dutch/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: Tekst extraheren uit afbeelding met Aspose OCR in C#. Leer hoe je gescande + documenttekst kunt converteren met batchverwerking en de resultaten kunt opslaan. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: nl +og_description: Tekst extraheren uit afbeelding met Aspose OCR in C#. Deze tutorial + laat zien hoe je gescande documenttekst kunt converteren met batchverwerking. +og_title: Tekst extraheren uit afbeelding in C# – Complete Aspose OCR-gids +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Tekst extraheren uit afbeelding in C# – Complete Aspose OCR-gids +url: /nl/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tekst uit afbeelding extraheren – Complete Aspose OCR-gids + +Heb je ooit **tekst uit een afbeelding moeten extraheren** maar wist je niet waar te beginnen? Je bent niet de enige; veel ontwikkelaars lopen tegen die muur aan bij het werken met gescande PDF's, multi‑page TIFF's of foto‑gebaseerde bonnen. Het goede nieuws is dat je met Aspose OCR **gescande documenttekst kunt converteren** in slechts een handvol regels C#. + +In deze tutorial lopen we een real‑world scenario door: een multi‑page TIFF nemen, batch‑OCR uitvoeren op elke pagina, en één tekstbestand schrijven dat de inhoud van alle pagina's bevat. Aan het einde heb je een kant‑klaar console‑applicatie, begrijp je waarom elke stap belangrijk is, en weet je hoe je de flow kunt aanpassen voor randgevallen zoals met wachtwoord beveiligde afbeeldingen of aangepaste taalpakketten. + +## Vereisten + +- .NET 6.0 SDK of later (de code werkt ook met .NET Core en .NET Framework) +- Visual Studio 2022 (of elke editor die je verkiest) +- Een Aspose OCR‑licentiebestand (of je kunt de gratis evaluatiemodus gebruiken) +- Een multi‑page afbeeldingsbestand (bijv. `multipage.tif`) geplaatst in een map die je kunt refereren + +Er zijn geen extra NuGet‑pakketten nodig naast `Aspose.OCR`; we installeren dat in de eerste stap. + +## Stap 1 – Installeer Aspose OCR en zet het project op + +Om te beginnen, maak een nieuw console‑project aan en haal de Aspose OCR‑bibliotheek binnen. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro tip:** Als je een licentiebestand hebt (`Aspose.OCR.lic`), kopieer dit dan naar de project‑root. De bibliotheek detecteert het automatisch tijdens runtime. + +Waarom deze stap? Het installeren van het pakket geeft je toegang tot `BatchProcessor`, `OcrEngine` en andere handige klassen die low‑level afbeeldingsverwerking abstraheren. Het zorgt er ook voor dat je de nieuwste OCR‑algoritmen gebruikt die Aspose levert. + +## Stap 2 – Laad de multi‑page afbeelding met BatchProcessor + +`BatchProcessor` is precies voor dit scenario ontworpen: itereren over elke pagina van een multi‑page afbeelding zonder dat je de bestanden handmatig hoeft te splitsen. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +De `BatchProcessor` leest alle pagina's in het geheugen in en stelt ze beschikbaar via `batchProcessor.Pages`. Elk paginapunt kent zijn nummer (`ocrPage.Number`) dat we later gebruiken voor duidelijke koppen. + +## Stap 3 – Bereid een StringBuilder voor om resultaten te accumuleren + +We willen één tekstbestand dat de OCR‑output van elke pagina bevat, gescheiden door koppen. `StringBuilder` is de meest efficiënte manier om strings in een lus samen te voegen. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Waarom een `StringBuilder`? Strings met `+` binnen een lus concateneren zou bij elke iteratie een nieuw object alloceren, wat de prestaties schaadt—vooral bij grote documenten. + +## Stap 4 – Loop over elke pagina, voer OCR uit en voeg resultaten toe + +Nu het kernstuk van de tutorial: door elke pagina itereren, tekst herkennen en opslaan met een paginamerker. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Waarom een nieuwe `OcrEngine` per pagina?** Sommige ontwikkelaars hergebruiken één engine en wijzigen de `Image`‑eigenschap, maar dat kan taalinstellingen of eerdere resultaten behouden, wat subtiele bugs veroorzaakt. Een verse engine garandeert een schone lei. + +### Veelvoorkomende randgevallen afhandelen + +- **Lege pagina's:** Als een pagina geen herkenbare tekst bevat, is `ocrEngine.Text` een lege string. Je kunt een placeholder invoegen, zoals “(Geen tekst gedetecteerd)”. +- **Taalkeuze:** Standaard gebruikt Aspose OCR Engels. Om Duits of Frans te verwerken, stel je `ocrEngine.Language = Language.German;` in vóór het aanroepen van `Recognize()`. +- **Prestatie‑tip:** Voor enorme TIFF's kun je `ocrEngine.UseParallelProcessing = true;` inschakelen om meerdere cores te benutten. + +## Stap 5 – Schrijf de gecombineerde output naar een tekstbestand + +Tot slot slaan we de geaccumuleerde string op schijf op. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Het resulterende `multipage_result.txt` ziet er ongeveer zo uit: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Je hebt nu **tekst uit afbeelding geëxtraheerd** en effectief **gescande documenttekst geconverteerd** naar een doorzoekbaar, bewerkbaar formaat. + +## Bonus – Visueel overzicht (Afbeeldings‑alt‑tekst) + +Hieronder staat een eenvoudige stroomdiagram die het proces illustreert. +*Alt‑tekst:* “Diagram dat laat zien hoe tekst uit afbeelding te extraheren met Aspose OCR batch processing in C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Als je deze tutorial op een statische site publiceert, vervang dan de placeholder door een echte SVG of PNG.)* + +## Veelgestelde vragen + +**Werkt dit met PDF‑bestanden?** +Ja, Aspose OCR kan PDF‑pagina's als afbeeldingen lezen. Je moet de PDF eerst naar afbeeldingen converteren, of `PdfDocument` uit `Aspose.PDF` gebruiken en elke gerasterde paginabeeld aan `OcrEngine` voeren. + +**Wat als mijn TIFF met een wachtwoord beveiligd is?** +`BatchProcessor` behandelt encryptie niet direct. Ontsleutel het bestand eerst met een bibliotheek zoals `Aspose.Imaging` voordat je het aan de OCR‑pipeline doorgeeft. + +**Kan ik JSON outputten in plaats van platte tekst?** +Absoluut. Vervang de `StringBuilder`‑logica door een JSON‑serializer (bijv. `System.Text.Json`) en sla de tekst van elke pagina op onder een `pageNumber`‑sleutel. + +## Volledig werkend voorbeeld + +Hier is het complete programma dat je kunt kopiëren‑plakken in `Program.cs`. Het bevat alle using‑directives, foutafhandeling en commentaar. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Voer het programma uit met: + +```bash +dotnet run +``` + +Je zou een console‑bericht moeten zien dat succes bevestigt, en het output‑bestand zal de samengevoegde OCR‑resultaten bevatten. + +## Conclusie + +We hebben zojuist een praktische manier gedemonstreerd om **tekst uit afbeelding te extraheren** met Aspose OCR, waardoor elk multi‑page gescand bestand wordt omgezet in platte, doorzoekbare tekst. Door `BatchProcessor` en een schone per‑pagina `OcrEngine`‑opzet te gebruiken, kun je betrouwbaar **gescande documenttekst converteren** terwijl de codebase eenvoudig en onderhoudbaar blijft. + +Voel je vrij om te experimenteren: probeer verschillende talen, schakel over naar JSON‑output, of integreer deze logica in een web‑API die uploads on‑the‑fly verwerkt. Het kernpatroon blijft hetzelfde—laden, herkennen, accumuleren en opslaan. + +Heb je meer vragen over OCR, Aspose‑licenties, of het verwerken van enorme documentbatches? Laat een reactie achter of bekijk de officiële documentatie van Aspose voor diepere duiken. Veel programmeerplezier! + +{{< /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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/dutch/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..aefd805b --- /dev/null +++ b/ocr/dutch/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Tekst extraheren uit een afbeelding met Aspose OCR in C#. Leer hoe je + een afbeelding laadt voor OCR, Hindi-tekst herkent en OCR-herkenning uitvoert in + een paar eenvoudige stappen. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: nl +og_description: Tekst extraheren uit afbeelding met Aspose OCR in C#. Volg deze stapsgewijze + handleiding om een afbeelding te laden voor OCR, Hindi‑tekst te herkennen en OCR‑herkenning + uit te voeren. +og_title: Tekst extraheren uit afbeelding met Aspose OCR – Complete C#-gids +tags: +- Aspose OCR +- C# +- Image Processing +title: Tekst extraheren uit afbeelding met Aspose OCR – Complete C#‑gids +url: /nl/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tekst extraheren uit afbeelding met Aspose OCR – Complete C# Gids + +Heb je ooit **tekst uit een afbeelding moeten extraheren** maar wist je niet welke bibliotheek je moest kiezen? Je bent niet de enige—veel ontwikkelaars lopen tegen die muur aan wanneer ze voor het eerst OCR in .NET aanpakken. Het goede nieuws is dat Aspose OCR het hele proces verrassend moeiteloos maakt, zelfs wanneer je werkt met complexe scripts zoals Hindi. + +In deze tutorial lopen we stap voor stap door alles wat je nodig hebt om **afbeelding laden voor OCR**, **Hindi‑tekst te herkennen**, en **OCR‑herkenning uit te voeren** in C#. Aan het einde heb je een kant‑klaar console‑applicatie die de geëxtraheerde tekst direct op het scherm weergeeft. + +## Wat je gaat bouwen + +We maken een kleine console‑applicatie die: + +1. Wijst de OCR‑engine naar een map met taalmodellen. +2. Schakelt automatische downloads uit—handig voor streng beveiligde omgevingen. +3. Selecteert Hindi als doeltaal. +4. Laadt een JPEG (of PNG) die Hindi‑tekst bevat. +5. Voert de herkenningspipeline uit. +6. Schrijft de resulterende string naar de console. + +Geen externe services, geen cloud‑sleutels, alleen pure on‑premise OCR. + +## Vereisten + +- **.NET 6.0** of later (de code werkt ook op .NET Framework 4.7+). +- **Aspose.OCR for .NET** NuGet‑pakket geïnstalleerd. + ```bash + dotnet add package Aspose.OCR + ``` +- Een map genaamd `OcrResources` die het Hindi‑taalmodel (`hin.traineddata`) bevat. + Je kunt het downloaden van de Aspose OCR‑downloadpagina en plaatsen in `YOUR_DIRECTORY/OcrResources`. +- Een afbeeldingsbestand (`input.jpg`) met duidelijke Hindi‑tekst. + Ter illustratie, stel je een foto voor van een winkelbord met de tekst “स्वागत है”. + +> **Pro tip:** Houd de beeldresolutie boven de 300 dpi; lagere resoluties kunnen leiden tot gemiste tekens. + +--- + +## Stap 1: Wijzig de OCR-engine naar uw bronnen – *tekst extraheren uit afbeelding* + +Het eerste wat Aspose OCR nodig heeft, is de locatie van zijn taalmodellen. Als je dit overslaat, probeert de engine de bestanden automatisch te downloaden—iets wat je misschien niet wilt in een beveiligd netwerk. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Waarom dit belangrijk is:* Door `ResourcesPath` in te stellen zorg je ervoor dat de engine de juiste getrainde data lokaal laadt, wat de eerste uitvoering versnelt en onverwacht netwerkverkeer voorkomt. + +--- + +## Stap 2: Schakel automatische resource‑download uit – *afbeelding laden voor OCR* + +In veel bedrijfsomgevingen is uitgaand internetverkeer geblokkeerd. Aspose OCR respecteert een vlag die voorkomt dat het ontbrekende bestanden on‑the‑fly probeert op te halen. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Als je deze regel vergeet en het Hindi‑model niet aanwezig is, zal de engine een uitzondering gooien die eruitziet als “Unable to download required resource”. Het instellen van de vlag op `false` geeft je een duidelijke, deterministische fout die je zelf kunt afhandelen. + +--- + +## Stap 3: Kies de taal – *Hindi‑tekst herkennen* + +Aspose OCR ondersteunt tientallen talen, maar je moet aangeven welke je wilt gebruiken. Hindi wordt geïdentificeerd met `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Wat als je meerdere talen nodig hebt?* Je kunt `Language = OcrLanguage.AutoDetect` instellen zodat de engine raadt, maar auto‑detectie is trager en faalt soms bij gemengde scripts. Voor puur Hindi is expliciete selectie de veiligste optie. + +--- + +## Stap 4: Laad uw afbeelding – *afbeelding laden voor OCR* + +Nu geven we de engine de foto die we willen lezen. Aspose biedt een handige `ImageStream.FromFile`‑helper die de onderliggende `System.Drawing`‑afhankelijkheden abstraheert. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Als het bestandspad onjuist is, zal Aspose een `FileNotFoundException` werpen. Een snelle `File.Exists`‑check vóór deze regel kan je een debug‑sessie besparen. + +--- + +## Stap 5: Voer de OCR‑engine uit – *OCR‑herkenning uitvoeren* + +Met alles geconfigureerd starten we eindelijk het herkenningsproces. Deze aanroep is synchroon en blokkeert tot de tekst is geëxtraheerd. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Achter de schermen voert Aspose verschillende fasen uit: preprocessing (deskew, ruisverwijdering), segmentatie, karakterclassificatie en uiteindelijk taalspecifieke post‑processing. Het zware werk gebeurt binnen deze enkele methode‑aanroep. + +--- + +## Stap 6: Geef de geëxtraheerde tekst weer – *tekst extraheren uit afbeelding* + +Het resultaat zit in de `Text`‑eigenschap van de engine. We schrijven het simpelweg naar de console, maar je kunt het ook opslaan in een database, via een API sturen, of gebruiken in een andere NLP‑pipeline. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Verwachte output** (ervan uitgaande dat de afbeelding “स्वागत है” bevat): + +``` +=== OCR RESULT === +स्वागत है +``` + +Als je onjuiste tekens ziet, controleer dan of het Hindi‑model correct geplaatst is en of de afbeelding niet te sterk gecomprimeerd is. + +--- + +## Volledig werkend voorbeeld + +Hieronder staat het complete programma dat je kunt copy‑pasten in een nieuw console‑project (`dotnet new console`). Vervang `YOUR_DIRECTORY` door het daadwerkelijke pad op jouw machine. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** Als je van plan bent om veel afbeeldingen in een lus te verwerken, instantiateer dan één enkele `OcrEngine` en hergebruik deze—dit vermindert de initialisatie‑overhead. + +--- + +## Veelvoorkomende valkuilen behandelen + +| Probleem | Waarom het gebeurt | Snelle oplossing | +|----------|--------------------|------------------| +| **Lege output** | Verkeerd taalmodel of afbeelding van lage kwaliteit. | Controleer `ResourcesPath`, verhoog de DPI van de afbeelding, of probeer `ocrEngine.Image = ImageStream.FromFile(..., true)` om automatische verbetering in te schakelen. | +| **Uitzondering: Resource niet gevonden** | Ontbrekende Hindi `.traineddata`. | Download het Hindi‑model van Aspose, plaats het in `OcrResources`, en zorg ervoor dat de bestandsnaam overeenkomt met `hin.traineddata`. | +| **Onjuiste tekens** | Encodering komt niet overeen bij het afdrukken naar de console. | Stel de console‑uitvoerencodering in: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Prestatievertraging** | Grote afbeeldingen verwerkt zonder schalen. | Schaal de afbeelding vooraf naar een maximale breedte/hoogte van 2000 px voordat je deze aan OCR doorgeeft. | + +--- + +## Volgende stappen & verwante onderwerpen + +- **Batchverwerking:** Plaats de code in een `foreach`‑lus om een map met afbeeldingen te verwerken. +- **Verschillende talen:** Vervang `OcrLanguage.Hindi` door `OcrLanguage.English`, `OcrLanguage.Arabic`, enz. +- **Uitvoerformaten:** In plaats van `Console.WriteLine` kun je naar een tekstbestand schrijven (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integratie met ASP.NET Core:** Maak een API‑endpoint beschikbaar dat een afbeelding upload accepteert en de geëxtraheerde tekst als JSON retourneert. + +Al deze uitbreidingen volgen hetzelfde patroon—configureer de engine, laad een afbeelding, herken, en verwerk het resultaat. + +--- + +## Conclusie + +We hebben zojuist laten zien hoe je **tekst uit een afbeelding** kunt extraheren met Aspose OCR in C#. De gids behandelde elke stap die je nodig hebt om **afbeelding laden voor OCR**, **Hindi‑tekst te herkennen**, en **OCR‑herkenning uit te voeren**—alles in een zelfstandige console‑applicatie. + +Probeer het met je eigen foto’s, experimenteer met verschillende talen, en voel je vrij om de snippet aan te passen voor webservices of achtergrondtaken. Het kernidee blijft hetzelfde: stel resources in, kies een taal, voer een afbeelding in, en lees de `Text`‑eigenschap. + +Als je ergens vastloopt, raadpleeg dan de bovenstaande tabel met probleemoplossingen of laat een reactie achter. Veel plezier met coderen, en moge je OCR‑resultaten altijd kristalhelder zijn! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/dutch/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..ef26cd8a --- /dev/null +++ b/ocr/dutch/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Hoe OCR op een afbeelding uit te voeren met Aspose OCR in C#. Leer tekst + uit een afbeelding te extraheren, OCR op een afbeelding uit te voeren en een afbeelding + te laden voor OCR met GPU‑versnelling. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: nl +og_description: Hoe OCR op een afbeelding uit te voeren met Aspose OCR. Deze tutorial + laat zien hoe je tekst uit een afbeelding kunt extraheren, OCR op een afbeelding + kunt uitvoeren en een afbeelding efficiënt kunt laden voor OCR. +og_title: Hoe OCR in C# uit te voeren – Volledige stapsgewijze handleiding +tags: +- OCR +- C# +- Aspose +title: Hoe OCR in C# uit te voeren – Complete gids met Aspose OCR +url: /nl/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe OCR uit te voeren in C# – Complete gids met Aspose OCR + +Heb je je ooit afgevraagd **hoe je OCR** op een foto kunt uitvoeren en de tekst eruit kunt halen zonder je haar uit te trekken? Je bent niet de enige. Of je nu facturen digitaliseert, bonnen scant, of gewoon een doorzoekbare PDF wilt maken, het kunnen extraheren van tekst uit een afbeelding is een dagelijkse behoefte voor veel ontwikkelaars. + +In deze tutorial lopen we een praktisch, end‑to‑end voorbeeld door dat laat zien **hoe je OCR op afbeelding**‑bestanden kunt uitvoeren met de Aspose OCR‑bibliotheek, compleet met GPU‑versnelling voor snelheid. Aan het einde weet je precies hoe je een afbeelding voor OCR laadt, het geheugenverbruik aanpast, en schone platte‑tekstresultaten krijgt — allemaal in een paar minuten code. + +## Wat je zult leren + +- Hoe je de Aspose OCR‑engine initialiseert in C# +- Hoe je **load image for OCR** van schijf of een stream laadt +- Hoe je GPU‑versnelling inschakelt en GPU‑geheugen beperkt +- Hoe je **extract text from image** extraheert en de output verifieert +- Veelvoorkomende valkuilen (GPU‑module ontbreekt, geheugenlimieten) en snelle oplossingen + +Ervaring met Aspose OCR is niet vereist; alleen een werkende .NET‑omgeving en een voorbeeldafbeelding. + +--- + +## Hoe OCR uit te voeren op een afbeelding met Aspose OCR + +Het eerste wat je nodig hebt is een duidelijke, uitvoerbare code‑snippet die het volledige werk doet. Hieronder staat het volledige programma dat je direct kunt kopiëren, plakken en uitvoeren. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Verwachte output** (ervan uitgaande dat de voorbeeldafbeelding de zin “Hello World” bevat): + +``` +=== OCR Result === +Hello World +``` + +> **Pro tip:** Als je geen tekst ziet, controleer dan of de GPU‑module geïnstalleerd is en of het pad naar de afbeelding correct is. De `ImageStream.FromFile`‑methode geeft een duidelijke uitzondering als het bestand niet gevonden kan worden. + +--- + +## Tekst extraheren uit afbeelding met GPU‑versnelling + +Waarom zou je überhaupt de GPU gebruiken? OCR alleen op CPU werkt, maar kan pijnlijk traag zijn bij grote of hoge‑resolutie‑afbeeldingen. GPU‑versnelling inschakelen (stap 2 hierboven) legt het zware werk uit handen van je grafische kaart, die duizenden pixels per seconde kan verwerken. + +### Wanneer GPU te gebruiken + +- **Batchverwerking** – tientallen facturen in één keer scannen. +- **Hoge‑resolutie scans** – alles boven 300 dpi. +- **Realtime‑apps** – zoals een mobiele scanner die directe feedback nodig heeft. + +Als je omgeving geen compatibele GPU heeft, stel dan eenvoudig `EnableGpuAcceleration = false;` in en de engine schakelt automatisch terug naar CPU‑modus. + +--- + +## OCR uitvoeren op afbeelding – De afbeelding correct laden + +Het laden van de afbeelding is de **load image for OCR**‑stap die vaak mensen in de war brengt. Aspose OCR verwacht een `ImageStream`, die kan worden gemaakt van een bestand, een geheugen‑stream of zelfs een URL. Hier zijn een paar variaties: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Randgeval:** Sommige afbeeldingen bevatten een alfakanaal (transparantie) dat de OCR‑engine in de war brengt. Het verwijderen van alfa is eenvoudig: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Nu heb je de meest voorkomende manieren om **load image for OCR** te dekken, zodat de engine elke keer een schoon, ondersteund formaat ontvangt. + +--- + +## Tips voor het efficiënt laden van afbeelding voor OCR + +1. **Resize grote afbeeldingen** – OCR heeft geen 4 K foto nodig; verkleinen tot ~1500 px breedte versnelt het proces zonder de nauwkeurigheid te schaden. +2. **Converteer naar grijstinten** – vermindert ruis en kan de herkenning verbeteren bij scans met weinig contrast. +3. **Voorbewerken met deskew** – als je afbeelding scheef staat, kan de ingebouwde deskew van Aspose OCR worden ingeschakeld via `ocrEngine.Config.EnableDeskew = true;`. + +Deze aanpassingen zijn vooral handig wanneer je **extract text from image** in bulk uitvoert. + +--- + +## Veelvoorkomende valkuilen & hoe ze op te lossen + +| Symptom | Likely Cause | Fix | +|---------|--------------|-----| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU‑module niet geïnstalleerd | Installeer het Aspose OCR GPU‑pakket of schakel GPU uit (`EnableGpuAcceleration = false`). | +| Lege output | Afbeeldingspad onjuist of niet‑ondersteund formaat | Controleer het pad van `ImageStream.FromFile`; probeer te laden vanuit bytes om te verzekeren dat het bestand correct wordt gelezen. | +| Out‑of‑memory‑fout | GPU‑geheugenlimiet te laag voor grote batch | Verhoog `GpuMemoryLimit` (bijv. 2048) of verwerk afbeeldingen in kleinere batches. | +| Vervormde tekens | Afbeelding heeft veel ruis of laag contrast | Voorbewerken: binariseren, despeckelen, of DPI verhogen vóór OCR. | + +--- + +## Volledig werkend voorbeeld – Alles samenvoegen + +Hieronder staat een compacte console‑app die de beste praktijken die we hebben besproken combineert: GPU‑versnelling, geheugenlimiet, afbeelding‑voorbewerking en foutafhandeling. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Het uitvoeren van dit programma drukt de schone tekst af die uit je afbeelding is geëxtraheerd, en toont een robuuste manier om **extract text from image** te doen, zelfs wanneer de bron niet perfect is. + +--- + +## Conclusie + +We hebben **how to run OCR** op een afbeelding behandeld met Aspose OCR, van het initialiseren van de engine tot het laden van de afbeelding, het inschakelen van GPU‑versnelling, en het afhandelen van randgevallen. Je hebt nu een solide, citeerbare referentie die je kunt copy‑paste in elk .NET‑project en direct kunt beginnen met **extracting text from image**. + +Volgende stappen? Probeer PDF‑pagina's te verwerken, experimenteer met verschillende talen (stel `ocrEngine.Config.Language = "spa"` in voor Spaans), of integreer deze workflow in een web‑API die uploads on‑the‑fly verwerkt. De mogelijkheden zijn eindeloos, en met de besproken tools ben je goed uitgerust om elke OCR‑uitdaging aan te gaan. + +Veel plezier met coderen, en moge je tekst altijd schoon zijn en je OCR snel! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/dutch/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..b73b25a2 --- /dev/null +++ b/ocr/dutch/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-01-10 +description: Hoe OCR snel uit te voeren en Arabische tekst uit een afbeelding te extraheren. + Leer hoe je een afbeelding naar tekst converteert, tekst uit een PNG leest, en zie + hoe je tekst kunt extraheren met Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: nl +og_description: Hoe OCR uit te voeren in C# en Arabische tekst uit een PNG‑afbeelding + te extraheren. Deze gids laat je stap voor stap zien hoe je een afbeelding naar + tekst converteert en tekst uit een PNG leest. +og_title: Hoe OCR in C# uit te voeren – Arabische tekst uit PNG extraheren +tags: +- OCR +- C# +- Aspose +title: Hoe OCR in C# uit te voeren – Arabische tekst uit PNG extraheren +url: /nl/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe OCR uit te voeren in C# – Arabische tekst uit PNG halen + +Heb je je ooit afgevraagd **hoe je OCR** kunt uitvoeren op een afbeelding met Arabische tekens? Je bent niet de enige. Veel ontwikkelaars komen vast te zitten wanneer ze **Arabische tekst** uit een PNG moeten **extraheren**, maar niet weten welke bibliotheek rechts‑naar‑links scripts zonder gedoe ondersteunt. + +In deze tutorial lopen we stap voor stap door alles wat je moet weten om **afbeelding naar tekst** te **converteren**, **tekst uit PNG** te **lezen**, en uiteindelijk **tekst te extraheren** met Aspose.OCR in een nette C# console‑applicatie. Aan het einde heb je een kant‑klaar programma dat de Arabische string direct naar je terminal print. + +## Wat je zult leren + +- Het Aspose.OCR NuGet‑pakket installeren en refereren. +- De OCR‑engine configureren voor Arabische taalondersteuning. +- Een PNG‑afbeelding laden en het herkenningsproces uitvoeren. +- De geëxtraheerde tekst ophalen en weergeven. +- Instellingen afstemmen voor betere nauwkeurigheid en veelvoorkomende valkuilen aanpakken. + +Ervaring met OCR is niet vereist, alleen een basisbegrip van C# en een .NET‑ontwikkelomgeving (Visual Studio, Rider of de `dotnet` CLI volstaat). + +--- + +## Hoe OCR uit te voeren – Aspose OCR instellen + +### Stap 1: Voeg het Aspose.OCR NuGet‑pakket toe + +Het eerste wat we nodig hebben is de OCR‑bibliotheek zelf. Aspose.OCR is een commercieel product, maar biedt een gratis proefversie die perfect werkt voor leerdoeleinden. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Of open de **NuGet Package Manager** in Visual Studio, zoek naar **Aspose.OCR**, en klik op **Install**. + +> **Pro tip:** Als je de bibliotheek in een CI‑pipeline wilt gebruiken, voeg dan de `-v`‑vlag toe om de versie vast te zetten, bv. `dotnet add package Aspose.OCR -v 23.10`. + +### Stap 2: Maak een nieuw console‑project (als je er nog geen hebt) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Nu heb je een frisse `Program.cs`‑file klaar voor onze code. + +--- + +## Arabische tekst extraheren – De OCR‑code schrijven + +Hieronder staat het volledige, kant‑klaar programma. Sla het op als `Program.cs` (of vervang het automatisch gegenereerde bestand). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Waarom elke regel belangrijk is + +- **`OcrEngine`**: De centrale klasse die het laden van afbeeldingen, de taalkeuze en de herkenning coördineert. +- **`Language = OcrLanguage.Arabic`**: Arabisch gebruikt een rechts‑naar‑links script en unieke glyphs; door de taal in te stellen, vertelt je de engine om de juiste tekenmodellen te gebruiken. +- **`ImageStream.FromFile`**: Ondersteunt PNG, JPEG, BMP en vele andere formaten. Als je ooit moet lezen vanuit een `MemoryStream` (bijv. een geüpload bestand), vervang dan deze aanroep overeenkomstig. +- **`Recognize()`**: Voert het zware werk uit – pixelanalyse, segmentatie en karakterclassificatie. +- **`ocrEngine.Text`**: De uiteindelijke Unicode‑string, klaar voor verdere verwerking, opslag of weergave. + +### Verwachte output + +Als `arabic_sample.png` de zin “مرحبا بالعالم” (Hello World) bevat, zal de console het volgende printen: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Als de output er onduidelijk uitziet, controleer dan of de afbeelding scherp is, de taal op Arabisch staat ingesteld, en de OCR‑engine‑versie overeenkomt met de documentatie. + +--- + +## Afbeelding naar tekst – Nauwkeurigheid verbeteren + +Hoewel de standaardinstellingen voor de meeste schone scans volstaan, hebben real‑world afbeeldingen vaak extra aandacht nodig. + +| Instelling | Wat het doet | Wanneer te gebruiken | +|------------|--------------|----------------------| +| `ocrEngine.Config.Preprocess = true` | Schakelt automatische binarisatie en ruisverwijdering in. | Gescande documenten met schaduwen. | +| `ocrEngine.Config.Deskew = true` | Roteert de afbeelding om een lichte kanteling te corrigeren. | Foto’s genomen onder een hoek. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Behandelt de hele afbeelding als één tekstblok. | Eenvoudige bijschriften of één‑regelige labels. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Beperkt herkenning tot alleen Arabische tekens. | Vermindert valse positieven op pagina’s met gemengde talen. | + +Je kunt deze regels direct na het aanmaken van de engine toevoegen: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Tekst uit PNG lezen – Verschillende afbeeldingsbronnen afhandelen + +Soms bevindt de PNG zich in een database of komt hij van een web‑request. Hier is een snelle variant die leest vanuit een `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +De rest van de workflow blijft identiek, wat betekent dat **hoe je tekst extrahert** consistent blijft, ongeacht de bron. + +--- + +## Hoe tekst extraheren – Geavanceerde opties & randgevallen + +### 1. Multi‑page PDF’s of TIFF’s + +Als je een meer‑pagina document moet OCR‑en, loop dan over elke pagina: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Opmerking:** Voor dit fragment heb je het `Aspose.PDF`‑pakket nodig. + +### 2. Taal automatisch detecteren + +Aspose.OCR biedt ook auto‑detectie, maar dat is trager. Als je niet zeker weet of de afbeelding Arabisch of een ander script bevat, schakel het in: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +De engine probeert elk taalmodel en kiest de beste overeenkomst. + +### 3. Prestatietips + +- **Hergebruik het `OcrEngine`‑object** voor meerdere afbeeldingen; elke keer een nieuwe instantie maken voegt overhead toe. +- **Voer parallel uit** alleen als je aparte engine‑instanties per thread hebt – het delen van één instantie veroorzaakt race‑conditions. + +--- + +## Conclusie + +We hebben **hoe je OCR** in C# van begin tot eind uitvoert behandeld, je laten zien hoe je **Arabische tekst** kunt **extraheren**, **afbeelding naar tekst** kunt **converteren**, **tekst uit PNG** kunt **lezen**, en antwoord gegeven op **hoe je tekst extrahert** in diverse scenario’s. De voorbeeldcode is volledig, zelfstandig en klaar om in elk .NET console‑project geplakt te worden. + +Volgende stappen? Vervang `OcrLanguage.Arabic` door Korean of Serbian Cyrillic om de meertalige kracht van de bibliotheek te ervaren. Experimenteer met de preprocessing‑vlaggen om de nauwkeurigheid op ruisende scans te verhogen, of integreer de OCR‑routine in een web‑API zodat gebruikers afbeeldingen kunnen uploaden en direct tekstresultaten krijgen. + +Veel programmeerplezier, en moge je OCR‑resultaten altijd kristalhelder zijn! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/dutch/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..b87ec6bf --- /dev/null +++ b/ocr/dutch/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-01-10 +description: Leer hoe je tekst uit een afbeelding herkent, tekstcoördinaten extraheert + en een bon converteert naar JSON met Aspose OCR in C#. Stapsgewijze tutorial. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: nl +og_description: herken tekst van afbeelding in C# met Aspose OCR. Deze gids laat zien + hoe je tekst kunt extraheren, coördinaten kunt verkrijgen en een bon kunt omzetten + naar JSON. +og_title: herken tekst uit afbeelding – Volledige C# OCR‑handleiding +tags: +- OCR +- C# +- Aspose +title: tekst herkennen uit afbeelding in C# – Complete gids voor OCR en JSON +url: /nl/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# tekst uit afbeelding herkennen – volledige C# OCR‑tutorial + +Heb je ooit tekst uit een afbeelding moeten herkennen maar wist je niet welke bibliotheek je moest kiezen? Je bent niet de enige. In veel real‑world apps—uitgaven trackers, bon scanners, of documentarchieven—het betrouwbaar extraheren van tekst is de eerste hindernis. + +In deze tutorial lopen we stap voor stap door **hoe tekst te extraheren**, halen we de begrenzings‑boxen eruit, en uiteindelijk **bon omzetten naar JSON** met Aspose.OCR voor .NET. Aan het einde heb je een zelf‑containend C#‑project dat een foto van een bon neemt en een nette JSON‑file met confidence scores en coördinaten genereert. + +## Wat je nodig hebt + +Voordat we beginnen, zorg ervoor dat je het volgende op je machine hebt: + +- **.NET 6.0 SDK** (of een latere versie). Oudere frameworks werken ook, maar .NET 6 is de ideale keuze voor moderne bibliotheken. +- **Visual Studio 2022** of VS Code met de C#‑extensie. +- **Aspose.OCR for .NET** NuGet‑package (`Aspose.OCR` en `Aspose.OCR.Output`). Je kunt het installeren via de Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Een voorbeeldbon‑afbeelding (bijv. `receipt.jpg`) geplaatst in een map die je later zult refereren. + +Dat is alles—geen extra SDK’s, geen native binaries, alleen pure managed code. + +## Stap 1: Maak een nieuw console‑project + +Allereerst, maak een console‑app. Het is de snelste manier om OCR te testen zonder UI‑overhead. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Pro tip:** Houd de projectmap netjes; maak een sub‑map genaamd `Resources` en plaats `receipt.jpg` daar. Het maakt pad‑afhandeling moeiteloos. + +## Stap 2: Laad de bon‑afbeelding + +Nu gaan we daadwerkelijk **tekst uit afbeelding herkennen**. De eerste stap is om de OCR‑engine naar het bestand te wijzen. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Waarom wikkelen we het laden in een eenvoudige bestaan‑check? Omdat je in productie vaak te maken hebt met gebruikers‑uploads die mogelijk ontbreken of corrupt zijn. Het vroegtijdig vangen van het probleem bespaart je later cryptische uitzonderingen. + +## Stap 3: Voer OCR uit – **tekst uit afbeelding herkennen** + +Met de afbeelding in het geheugen vragen we Aspose om **tekst uit afbeelding te herkennen**. Deze bewerking is synchroon en retourneert een rijk resultaat. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Achter de schermen draait Aspose een neuraal netwerk getraind op miljoenen tekens. De engine vult `ocrEngine.Text`, `ocrEngine.RecognitionResult` en een collectie van `OcrRegion`‑objecten die coördinaten bevatten. Dat is precies wat we nodig hebben voor de volgende stap. + +## Stap 4: **Hoe tekst te extraheren** – De ruwe string ophalen + +Als je alleen geïnteresseerd bent in de platte tekst (misschien voor een snelle zoekopdracht), kun je deze rechtstreeks uit de engine halen: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Je zult regelbreuken opmerken waar de OCR alinea‑grenzen heeft gedetecteerd. In veel bon‑scan‑scenario's is de ruwe string voldoende om totalen, datums of verkopersnamen te extraheren met eenvoudige regexes. + +## Stap 5: **tekstcoördinaten extraheren** – Begrenzings‑boxen voor elk woord + +Vaak moet je weten *waar* op de afbeelding een bepaald stuk tekst zich bevindt—bijvoorbeeld om het totaalbedrag in een UI te markeren. Aspose levert dat via `OcrRegion`‑objecten. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Merk op dat we over **tekstcoördinaten extraheren** itereren voor elk herkend segment. De coördinaten zijn relatief ten opzichte van de originele afbeelding, zodat je ze kunt overlayen in een grafisch canvas of HTML ``‑element. + +## Stap 6: **bon omzetten naar JSON** – Gedetailleerde resultaten opslaan + +Nu komt het deel dat alles samenbrengt: we willen een machine‑leesbare structuur die de tekst, confidence scores en de begrenzings‑boxen bevat. Aspose levert `JsonSaveOptions` mee die dit een fluitje‑van‑een‑deurtje maken. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Het resulterende bestand ziet er ongeveer zo uit (ingekort voor beknoptheid): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Je hebt nu een **bon omzetten naar JSON** artefact dat kan worden gevoed aan downstream‑services—denk aan expense‑report API’s, analytics‑pijplijnen, of zelfs een eenvoudige UI die rechthoeken rond elk woord tekent. + +## Volledig werkend voorbeeld + +Door alle onderdelen samen te voegen, hier is de volledige `Program.cs` die je kunt copy‑pasten in je project: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Voer het programma uit (`dotnet run`) en bekijk de console‑output. Open `Resources/receipt.json` om de structuur te verifiëren. + +## Veelgestelde vragen & randgevallen + +- **Wat als de afbeelding onscherp is?** + Aspose OCR werkt het beste met 300 dpi of hoger. Als je lage confidence scores krijgt, overweeg dan een verscherpingsfilter toe te passen voordat je de afbeelding aan de engine geeft. + +- **Kan ik meerdere talen herkennen?** + Ja. Stel `ocrEngine.Language = Language.English | Language.Spanish;` in voordat je `Recognize()` aanroept. + +- **Hoe beperk ik de output tot alleen cijfers (bijv. totalen)?** + Nadat je de platte tekst hebt, voer je een regex uit zoals `\d+\.\d{2}` op `ocrEngine.Text`. Omdat we al coördinaten hebben, kun je de gevonden string terugkoppelen naar zijn regio voor visuele markering. + +- **Is het JSON‑formaat aanpasbaar?** + De `JsonSaveOptions`‑klasse biedt een aantal vlaggen. Als je een volledig aangepast schema nodig hebt, kun je itereren over `ocrEngine.RecognitionResult.Regions` en de objecten zelf serialiseren met `System.Text.Json`. + +## Conclusie + +We hebben zojuist laten zien hoe je **tekst uit afbeelding kunt herkennen** in C# met Aspose.OCR, **hoe je tekst kunt extraheren**, **tekstcoördinaten kunt extraheren**, en uiteindelijk **bon kunt omzetten naar JSON**. De volledige flow zit in één eenvoudig‑te‑runnen console‑app, waardoor het perfect is voor prototypes of als bouwsteen in grotere systemen. + +Volgende stappen? Probeer de JSON te voeden aan een front‑end dat de begrenzings‑boxen tekent, of koppel de output aan een expense‑report service. Je kunt ook experimenteren met verschillende afbeeldingsformaten (PNG, TIFF) of een map met bonnen batch‑verwerken. + +Heb je meer vragen over OCR, Aspose of JSON‑verwerking? Laat een reactie achter hieronder, en happy coding! + +![Voorbeeld van bonafbeelding voor tekst uit afbeelding herkennen](receipt.jpg "Voorbeeld van bonafbeelding") + +{{< /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/net/ocr-configuration/_index.md b/ocr/english/net/ocr-configuration/_index.md index 317e0d4e..ad93c486 100644 --- a/ocr/english/net/ocr-configuration/_index.md +++ b/ocr/english/net/ocr-configuration/_index.md @@ -39,10 +39,12 @@ Unlock the power of OCR image recognition in .NET with Aspose.OCR. Extract text Unlock powerful OCR capabilities with Aspose.OCR for .NET. Extract text from images seamlessly. ### [OCROperation with List in OCR Image Recognition](./ocr-operation-with-list/) Unlock the potential of Aspose.OCR for .NET. Effortlessly perform OCR image recognition with lists. Boost productivity and data extraction in your applications. +### [Read Embedded Resource in .NET – Complete Guide to Set Aspose License](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Learn how to read embedded resources in .NET and set your Aspose license correctly in a single guide. {{< /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/english/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/english/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..6c3b8493 --- /dev/null +++ b/ocr/english/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-01-10 +description: Read embedded resource and set Aspose license in C#. Learn how to use + GetManifestResourceStream, embed a license file, and get executing assembly .NET + in a single tutorial. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: en +og_description: Read embedded resource in .NET and set Aspose license quickly. Step‑by‑step + guide covering GetManifestResourceStream, embedding the license, and using the executing + assembly. +og_title: Read Embedded Resource – Set Aspose License in .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Read Embedded Resource in .NET – Complete Guide to Set Aspose License +url: /net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Read Embedded Resource – Complete Guide to Set Aspose License + +Ever needed to **read embedded resource** at runtime and wondered how to get your Aspose OCR library licensed without hard‑coding paths? You're not the only one. In many corporate apps the license file lives inside the assembly so you don’t have to ship extra files or worry about missing permissions. This tutorial shows you exactly how to read an embedded resource and set Aspose license using the .NET `GetManifestResourceStream` method. + +We'll walk through everything you need: embedding the `.lic` file, pulling it out with `GetExecutingAssembly`, and finally applying it to the Aspose OCR `License` class. By the end you’ll have a self‑contained solution that works on any .NET project—no external files required. + +## What You'll Learn + +- **How to embed a license file** into a .NET project so it becomes part of the compiled DLL. +- The correct way to **use GetManifestResourceStream** to read that embedded resource. +- How to **set Aspose license** programmatically without touching the file system. +- Tips for handling common pitfalls like misspelled resource names or missing build actions. +- A complete, runnable code sample you can drop into your own solution. + +### Prerequisites + +- .NET 6.0 or later (the code works on .NET Framework 4.x as well, just adjust the project file accordingly). +- Aspose.OCR NuGet package installed (`dotnet add package Aspose.OCR`). +- Basic familiarity with C# and Visual Studio (or your favorite IDE). + +If you already have those pieces in place, great—let’s dive in. + +## Step 1: Embed the Aspose License File into Your Assembly + +The first thing you need is the actual license file (`Aspose.OCR.lic`). Instead of copying it next to your executable, you’ll embed it as a **resource**. + +1. Add the `.lic` file to your project (e.g., create a folder `Resources` and drop the file there). +2. In the file’s properties, set **Build Action** to `Embedded Resource`. + *Pro tip:* keep the folder structure simple; the fully‑qualified resource name will be `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Why embed? Because the assembly now carries the license inside itself, eliminating the risk of a missing file on a production server. + +## Step 2: Retrieve the Embedded Resource Using GetExecutingAssembly + +Now that the license lives inside the DLL, you need a way to **read embedded resource** at runtime. The .NET `Assembly` class gives you exactly that. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +The `GetExecutingAssembly` method returns the assembly that’s currently running—perfect for locating resources that live alongside your code. + +## Step 3: Open the License Stream with GetManifestResourceStream + +With the assembly reference in hand, you can call `GetManifestResourceStream`. This method returns a `Stream` you can feed directly to Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Notice we use a **null‑conditional** `using` statement (`using Stream?`) to ensure the stream is disposed automatically. If the name is wrong, we throw a clear exception—this saves you from silent failures later on. + +## Step 4: Apply the License to Aspose OCR + +Aspose’s `License` class expects a `Stream`. We already have one, so the final step is straightforward. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +That’s it! The Aspose OCR engine is now fully licensed and ready to process images without the trial watermark. + +## Full Working Example + +Below is a complete, copy‑and‑paste‑ready program that demonstrates the whole process. It includes the necessary `using` directives, error handling, and a simple OCR call to prove the license is active. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Expected Output + +When you run the program on a machine with a valid license embedded, you should see: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +If the license stream cannot be found, the console will report the missing resource name, guiding you to double‑check the **Build Action** and namespace. + +## Common Pitfalls & How to Avoid Them + +| Issue | Why It Happens | Fix | +|-------|----------------|-----| +| **Resource name mismatch** | .NET builds the resource name from the default namespace + folder path. | Use `Assembly.GetManifestResourceNames()` to list available names and verify the exact string. | +| **License file not set as Embedded Resource** | The default Build Action is `Content`. | Change it to `Embedded Resource` in the file properties. | +| **Running from a different assembly** | If you call the code from a class library, `GetExecutingAssembly()` might return the library instead of the main exe. | Use `Assembly.GetEntryAssembly()` or pass the correct assembly explicitly. | +| **Stream disposed before use** | Accidentally using a `using` block that closes the stream too early. | Keep the `using` around the `SetLicense` call, as shown above. | +| **Aspose.OCR version mismatch** | Newer versions may require a different license format. | Always download the latest license from your Aspose account and re‑embed it. | + +## Using the Same Technique for Other Embedded Files + +The pattern—**read embedded resource**, then **use GetManifestResourceStream**—works for any file type: JSON configs, images, even native DLLs. Just adjust the `resourceName` and the way you consume the stream. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Visual Overview + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt text:* read embedded resource – diagram showing embedding, retrieving with GetManifestResourceStream, and applying Aspose license. + +## Recap + +We’ve covered how to **read embedded resource** in a .NET assembly, the exact steps to **use GetManifestResourceStream**, and the clean way to **set Aspose license** without exposing files on disk. By embedding the license, you eliminate deployment headaches and keep your application portable. + +## What’s Next? + +- **Automate license updates:** Write a small build‑time script that replaces the embedded `.lic` file when you renew your Aspose subscription. +- **Secure the resource:** Consider encrypting the license before embedding and decrypting it at runtime for added protection. +- **Explore other Aspose products:** The same approach works for Aspose.Words, Aspose.PDF, etc., each with its own `License` class. + +Feel free to experiment—maybe you’ll embed multiple licenses for different modules, or switch to a configuration‑driven resource name. The sky’s the limit. + +--- + +*Happy coding! If you hit any snags, drop a comment below or check the Aspose forums for more examples.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/english/net/skew-angle-calculation/_index.md index 50232bfe..70b59dd3 100644 --- a/ocr/english/net/skew-angle-calculation/_index.md +++ b/ocr/english/net/skew-angle-calculation/_index.md @@ -40,9 +40,12 @@ Explore Aspose.OCR for .NET, a powerful OCR solution for accurate text recogniti Unleash the power of Aspose.OCR for .NET, a robust solution for image recognition. Learn how to calculate skew angles effortlessly. ### [Calculate Skew Angle from URI in OCR Image Recognition](./calculate-skew-angle-from-uri/) Explore Aspose.OCR for .NET to effortlessly calculate skew angles in OCR image recognition. Enhance your projects with precision and efficiency. +### [How to Deskew Image in C# – Complete OCR Pre‑Processing Guide](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Master deskewing images in C# with Aspose.OCR, a comprehensive guide to OCR pre‑processing for optimal text recognition. + {{< /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/english/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/english/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..7656caaa --- /dev/null +++ b/ocr/english/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,264 @@ +--- +category: general +date: 2026-01-10 +description: How to deskew image and improve OCR results with Aspose.OCR. Learn to + preprocess image for OCR, remove noise from scan, and recognize text from scan. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: en +og_description: How to deskew image and boost OCR accuracy. This guide shows how to + preprocess image for OCR, remove noise from scan, and recognize text from scan using + Aspose.OCR. +og_title: How to Deskew Image in C# – Complete OCR Pre‑Processing Guide +tags: +- OCR +- C# +- Image Processing +title: How to Deskew Image in C# – Complete OCR Pre‑Processing Guide +url: /net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Deskew Image in C# – Complete OCR Pre‑Processing Guide + +Ever wondered **how to deskew image** files before feeding them to an OCR engine? You’re not the only one. Scanned documents are often askew, noisy, or low‑contrast, and that messes with any text‑recognition attempt. + +In this tutorial we’ll walk through a full, runnable example that **preprocesses image for OCR**, removes noise from scan, and finally **recognize text from scan** using the Aspose.OCR library. By the end you’ll have a clear picture of **how to use OCR** in C# while keeping the code short and sweet. + +> **Pro tip:** Even a small rotation (5‑10°) can drop OCR accuracy by 30 % or more. Deskewing is the first step you should never skip. + +--- + +## What You’ll Need + +- **.NET 6+** (the code works on .NET Framework too, but .NET 6 is the current LTS) +- **Aspose.OCR for .NET** – you can grab it from NuGet (`Install-Package Aspose.OCR`) +- A sample TIFF/PNG/JPEG that is rotated or noisy (we’ll use `noisy_rotated.tif` in the example) +- Any IDE you like – Visual Studio, Rider, or VS Code will do + +That’s it. No extra libraries, no external services. + +--- + +## Step 1 – Load the Source Image (Why It Matters) + +Before we can **deskew image**, we need to read it into an Aspose `ImageStream`. This object abstracts file I/O and gives the OCR engine a consistent interface. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Why load first?* Because all subsequent filters operate on an in‑memory image. If the file can’t be read, the whole pipeline collapses. + +--- + +## Step 2 – Build a Pre‑Processing Pipeline (Deskew + Denoise + Contrast) + +A robust OCR workflow usually chains several filters. Here’s where we **preprocess image for OCR** and, more importantly, **how to deskew image** automatically. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Why these three?** +- **DeskewFilter** solves the “how to deskew image” problem automatically; you don’t need to guess the angle. +- **DenoiseFilter** tackles the “remove noise from scan” requirement, which otherwise creates phantom characters. +- **ContrastBoostFilter** helps the OCR engine distinguish dark text from a light background, a classic issue when you *preprocess image for OCR*. + +--- + +## Step 3 – Apply the Pipeline (Seeing the Transformation) + +Now we actually run the filters. The returned `processedImage` is what we’ll feed to the OCR engine. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +If you open `cleaned_output.tif`, you should notice the text is straight, less grainy, and with higher contrast. This visual check is handy when you *remove noise from scan* and want to confirm the deskew worked. + +--- + +## Step 4 – Create and Configure the OCR Engine (How to Use OCR) + +With a tidy image in hand, we instantiate `OcrEngine`. This is the core of **how to use OCR** with Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Why set `AutoPageSegmentation`?* Because many scans contain tables or multiple columns. Turning it on lets the engine split the page intelligently, improving the final **recognize text from scan** result. + +--- + +## Step 5 – Run the Recognition Process (Finally Recognize Text) + +Now the moment of truth: we ask the engine to read the text. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +If everything went smoothly, you’ll see a clean block of text that matches the original document. That’s the payoff for properly **deskewing image**, **removing noise**, and **preprocessing image for OCR**. + +--- + +## Step 6 – Full Working Example (Copy‑Paste Ready) + +Below is the complete program, ready to compile. Just replace the file path and you’re good to go. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Expected output** (truncated for brevity): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +If the output looks garbled, double‑check that the source image isn’t rotated beyond 30°, or increase `DeskewFilter.MaxAngle`. + +--- + +## Frequently Asked Questions (Edge Cases & Variations) + +| Question | Answer | +|----------|--------| +| **What if my scan is rotated 45°?** | `DeskewFilter` caps at `MaxAngle`. Raise it (e.g., `MaxAngle = 60`) or pre‑rotate the image with a graphics library before feeding it to the pipeline. | +| **Can I process PDFs page‑by‑page?** | Yes. Convert each PDF page to an image (e.g., using `Aspose.Pdf`) and run the same pipeline on every bitmap. | +| **My document is in French – do I need to change anything?** | Set `ocrEngine.Language = Language.French;` or load a custom language pack. The rest of the pipeline stays the same. | +| **Is there a way to keep the original resolution?** | `PreprocessPipeline` works on the original bitmap, preserving DPI. Just avoid calling `ImageStream.Resize` unless you need to downscale for performance. | +| **How does contrast boosting affect colored scans?** | `ContrastBoostFilter` works on each channel; it’s safe for grayscale or color images, but you can also convert to grayscale first with `new GrayscaleFilter()`. | + +--- + +## Image Example (Visual Aid) + +![how to deskew image example](/images/deskew-example.png) + +*The picture shows a before/after of a 12° rotated, noisy scan that has been deskewed and cleaned.* + +--- + +## Conclusion + +We’ve covered **how to deskew image** using Aspose.OCR, demonstrated a full **preprocess image for OCR** pipeline, showed how to **remove noise from scan**, and finally **recognize text from scan** with a few lines of C#. By chaining `DeskewFilter`, `DenoiseFilter`, and `ContrastBoostFilter` you get a tidy bitmap that lets the OCR engine do its job without choking on artifacts. + +Next steps? Try experimenting with different filter strengths, add a `BinarizationFilter` for pure black‑and‑white output, or feed the cleaned image into a downstream NLP pipeline. The same pattern works for receipts, passports, and historic documents alike. + +Got more questions about **how to use OCR** in other languages or frameworks? Drop a comment, 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/net/text-recognition/_index.md b/ocr/english/net/text-recognition/_index.md index b3bb5f05..169b9c20 100644 --- a/ocr/english/net/text-recognition/_index.md +++ b/ocr/english/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Enhance your .NET applications with Aspose.OCR for efficient image text recognit Unlock the potential of OCR in .NET with Aspose.OCR. Extract text from PDFs effortlessly. Download now for a seamless integration experience. ### [Recognize Table in OCR Image Recognition](./recognize-table/) Unlock the potential of Aspose.OCR for .NET with our comprehensive guide on recognizing tables in OCR image recognition. +### [How to Run OCR in C# – Complete Guide with Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Learn how to run OCR in C# using Aspose OCR with a step-by-step complete guide. +### [How to Run OCR in C# – Extract Arabic Text from PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Learn how to extract Arabic text from PNG images using Aspose OCR in C# with a clear step-by-step guide. +### [Extract Text from Image with Aspose OCR – Complete C# Guide](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Learn how to extract text from images using Aspose OCR in C# with a comprehensive step-by-step guide. +### [Extract Text from Image in C# – Complete Aspose OCR Guide](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Learn how to extract text from images using Aspose OCR in C# with a comprehensive step-by-step guide. +### [Create Searchable PDF from PNG in C# – Complete Guide](./create-searchable-pdf-from-png-in-c-complete-guide/) +Learn how to create a searchable PDF from PNG images using Aspose OCR in C# with a complete step-by-step guide. +### [recognize text from image in C# – Complete Guide to OCR and JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Learn how to recognize text from images using Aspose OCR in C# and get results in JSON format with this comprehensive guide. + {{< /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/english/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/english/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..d965e8db --- /dev/null +++ b/ocr/english/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-01-10 +description: Create searchable PDF from PNG using C#. Learn how to convert image to + PDF, extract text from png, and OCR image c# in one easy tutorial. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: en +og_description: Create searchable PDF from PNG using C#. This guide shows how to convert + image to PDF, extract text from png, and OCR image c# with Aspose. +og_title: Create Searchable PDF from PNG in C# – Step‑by‑Step +tags: +- Aspose OCR +- C# +- PDF/A +title: Create Searchable PDF from PNG in C# – Complete Guide +url: /net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create Searchable PDF from PNG in C# – Complete Guide + +Need to **create searchable pdf** from a PNG file in C#? You're not alone—many developers hit this roadblock when they want their scanned images to be both viewable **and** text‑searchable. In this tutorial we’ll walk through the whole pipeline: **convert image to pdf**, run OCR to **extract text from png**, and finally save everything as a **PDF/A‑2b** compliant searchable document. + +By the end you’ll have a single, reusable code snippet that you can drop into any .NET project, plus a handful of practical tips that will save you headaches later. No external services, just the Aspose OCR library and a few lines of C#. + +> **Prerequisites** +> * .NET 6+ (or .NET Framework 4.7.2+). +> * Visual Studio 2022 or any C#‑compatible IDE. +> * A valid Aspose OCR license (or a free trial). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Create searchable PDF from PNG using C#"} + +## Step 1 – Install and Reference Aspose OCR for C# + +First things first: you need the Aspose OCR NuGet package. Open your terminal (or Package Manager Console) and run: + +```bash +dotnet add package Aspose.OCR +``` + +If you prefer the GUI, right‑click your project → **Manage NuGet Packages…** → search for *Aspose.OCR* and install the latest stable version. + +Why this library? It supports **convert png to pdf**, handles multi‑page images, and can output PDF/A‑2b out of the box—perfect for creating a **searchable pdf** that complies with archival standards. + +> **Pro tip:** Register your license early in `Program.cs` to avoid the evaluation watermark. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Step 2 – Load the PNG and Run OCR (extract text from png) + +Now we’ll load the source image. The `ImageStream.FromFile` helper abstracts away the file‑system details and works with any supported raster format. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +At this point the engine has **extracted text from png** and stored it internally. You can even inspect the raw text via `ocrEngine.Text`, which is handy for debugging or logging. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **What if the image is multi‑page?** +> Aspose OCR treats each page as a separate layer. Just call `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` and the engine will iterate automatically. + +## Step 3 – Configure PDF/A‑2b Options (create searchable pdf) + +To turn the OCR result into a **searchable pdf**, we need to tell Aspose how to package the output. PDF/A‑2b is the sweet spot for long‑term preservation and guarantees that the text layer is searchable. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Why embed the original image? Some compliance checks require the visual representation to match the original scan. This flag makes the file a true **convert image to pdf** operation while preserving searchable text. + +## Step 4 – Save the Result and Verify (convert png to pdf) + +Finally, we write the output file. The same `Save` method works for any path you provide. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Open the resulting `output.pdf` in Adobe Reader or any PDF viewer and try searching for a word that appears in the original PNG. If the word is highlighted, congratulations—you’ve successfully **create searchable pdf** from a PNG! + +### Quick verification script (optional) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Why Use PDF/A‑2b for Searchable PDFs? + +* **Archival safety:** PDF/A‑2b guarantees that the file can be rendered the same way decades from now. +* **Regulatory compliance:** Many industries (legal, medical, finance) require PDF/A for record‑keeping. +* **Searchability:** The embedded OCR text layer makes the document indexable by desktop search tools. + +If you don’t need the extra compliance baggage, you can drop the `PdfAStandard` line and simply use `new PdfSaveOptions()`—the output will still be searchable, just not PDF/A‑2b. + +## Common Pitfalls & How to Avoid Them + +| Symptom | Likely Cause | Fix | +|---------|--------------|-----| +| No searchable text appears | `ocrEngine.Recognize()` never called or failed silently | Ensure the image path is correct and that the license is registered. | +| PDF is huge (10 + MB) | Original PNG is high‑resolution and `EmbedOriginalImage` is true | Downscale the image before OCR or set `EmbedOriginalImage = false`. | +| Text is garbled | Language not detected automatically | Set `ocrEngine.Language = "eng";` (or your target language) before `Recognize()`. | + +## Full Working Example (Copy‑Paste Ready) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Run the program, open `output.pdf`, and try searching for words you know exist in `input.png`. If everything lines up, you’ve just mastered the **convert image to pdf** workflow and learned how to **ocr image c#** style. + +## Next Steps & Related Topics + +* **Batch processing:** Loop over a folder of PNGs and merge the results into a single PDF. +* **Alternative output formats:** Aspose OCR can also emit DOCX, TXT, or searchable PDF/A‑1b. +* **Performance tuning:** Use `ocrEngine.RecognitionMode = RecognitionMode.Fast` for large volumes where absolute accuracy isn’t critical. +* **Other libraries:** If you’re on a tight budget, explore Tesseract .NET—though you’ll lose the built‑in PDF/A support. + +--- + +### TL;DR + +We showed you how to **create searchable pdf** from a PNG using Aspose OCR in C#. The steps are: + +1. Install Aspose OCR (`dotnet add package Aspose.OCR`). +2. Load the PNG and run `ocrEngine.Recognize()` (**extract text from png**). +3. Configure `PdfSaveOptions` for PDF/A‑2b (**convert image to pdf** & **convert png to pdf**). +4. Save the file and verify the searchable layer. + +Give it a spin, tweak the options, and you’ll soon have a robust pipeline for turning any scanned image into an archival‑ready, searchable PDF. 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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/english/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..fdb27dda --- /dev/null +++ b/ocr/english/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: Extract text from image using Aspose OCR in C#. Learn how to convert + scanned document text with batch processing and save results. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: en +og_description: Extract text from image with Aspose OCR in C#. This tutorial shows + how to convert scanned document text using batch processing. +og_title: Extract Text from Image in C# – Complete Aspose OCR Guide +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Extract Text from Image in C# – Complete Aspose OCR Guide +url: /net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extract Text from Image – Complete Aspose OCR Guide + +Ever needed to **extract text from image** but weren’t sure where to start? You’re not alone; many developers hit that wall when dealing with scanned PDFs, multi‑page TIFFs, or photo‑based receipts. The good news is that with Aspose OCR you can **convert scanned document text** in just a handful of lines of C#. + +In this tutorial we’ll walk through a real‑world scenario: taking a multi‑page TIFF, running batch OCR on each page, and writing a single text file that contains every page’s content. By the end you’ll have a ready‑to‑run console app, understand why each step matters, and know how to tweak the flow for edge cases like password‑protected images or custom language packs. + +## Prerequisites + +- .NET 6.0 SDK or later (the code works with .NET Core and .NET Framework as well) +- Visual Studio 2022 (or any editor you prefer) +- An Aspose OCR license file (or you can use the free evaluation mode) +- A multi‑page image file (e.g., `multipage.tif`) placed in a folder you can reference + +No additional NuGet packages are required beyond `Aspose.OCR`; we’ll install that in the first step. + +## Step 1 – Install Aspose OCR and Set Up the Project + +To begin, create a new console project and pull in the Aspose OCR library. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro tip:** If you have a license file (`Aspose.OCR.lic`), copy it into the project root. The library will automatically pick it up at runtime. + +Why this step? Installing the package gives you access to `BatchProcessor`, `OcrEngine`, and other handy classes that abstract away low‑level image handling. It also ensures you’re using the latest OCR algorithms that Aspose ships with. + +## Step 2 – Load the Multi‑Page Image with BatchProcessor + +`BatchProcessor` is designed for exactly this scenario: iterating over each page of a multi‑page image without you having to manually split files. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +The `BatchProcessor` reads all pages into memory, exposing them via `batchProcessor.Pages`. Each page object knows its number (`ocrPage.Number`) which we’ll use later for clear headings. + +## Step 3 – Prepare a StringBuilder to Accumulate Results + +We want a single text file that contains every page’s OCR output, separated by headers. `StringBuilder` is the most efficient way to concatenate strings in a loop. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Why a `StringBuilder`? Concatenating strings with `+` inside a loop would allocate a new string on every iteration, hurting performance—especially with large documents. + +## Step 4 – Iterate Over Each Page, Run OCR, and Append Results + +Now the core of the tutorial: looping through each page, recognizing text, and storing it with a page marker. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Why a new `OcrEngine` per page?** Some developers reuse a single engine and change its `Image` property, but that can retain language settings or previous results, leading to subtle bugs. Instantiating a fresh engine guarantees a clean slate. + +### Handling Common Edge Cases + +- **Empty pages:** If a page contains no recognizable text, `ocrEngine.Text` will be an empty string. You might want to insert a placeholder like “(No text detected)”. +- **Language selection:** By default Aspose OCR uses English. To process German or French, set `ocrEngine.Language = Language.German;` before calling `Recognize()`. +- **Performance tip:** For huge TIFFs, you can enable `ocrEngine.UseParallelProcessing = true;` to leverage multiple cores. + +## Step 5 – Write the Combined Output to a Text File + +Finally, persist the accumulated string to disk. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +The resulting `multipage_result.txt` will look something like this: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +You now have **extracted text from image** and effectively **convert scanned document text** into a searchable, editable format. + +## Bonus – Visual Overview (Image Alt Text) + +Below is a simple flow diagram illustrating the process. +*Alt text:* “Diagram showing how to extract text from image using Aspose OCR batch processing in C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(If you’re publishing this tutorial on a static site, replace the placeholder with an actual SVG or PNG.)* + +## Frequently Asked Questions + +**Does this work with PDF files?** +Yes, Aspose OCR can read PDF pages as images. You just need to convert the PDF to images first, or use `PdfDocument` from `Aspose.PDF` and feed each page’s rasterized image to `OcrEngine`. + +**What if my TIFF is password‑protected?** +`BatchProcessor` does not handle encryption directly. Decrypt the file using a library like `Aspose.Imaging` before passing it to the OCR pipeline. + +**Can I output JSON instead of plain text?** +Absolutely. Replace the `StringBuilder` logic with a JSON serializer (e.g., `System.Text.Json`) and store each page’s text under a `pageNumber` key. + +## Full Working Example + +Here’s the complete program you can copy‑paste into `Program.cs`. It includes all using directives, error handling, and comments. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Run the program with: + +```bash +dotnet run +``` + +You should see the console message confirming success, and the output file will contain the concatenated OCR results. + +## Conclusion + +We’ve just demonstrated a practical way to **extract text from image** using Aspose OCR, turning any multi‑page scanned file into plain, searchable text. By leveraging `BatchProcessor` and a clean per‑page `OcrEngine` setup, you can reliably **convert scanned document text** while keeping the codebase simple and maintainable. + +Feel free to experiment: try different languages, switch to JSON output, or integrate this logic into a web API that processes uploads on the fly. The core pattern stays the same—load, recognize, accumulate, and persist. + +Got more questions about OCR, Aspose licensing, or handling massive document batches? Drop a comment below or check out Aspose’s official documentation for deeper dives. 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/english/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..613b11d9 --- /dev/null +++ b/ocr/english/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-01-10 +description: Extract text from image using Aspose OCR in C#. Learn how to load image + for OCR, recognize Hindi text, and run OCR recognition in a few simple steps. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: en +og_description: Extract text from image using Aspose OCR in C#. Follow this step‑by‑step + guide to load image for OCR, recognize Hindi text, and run OCR recognition. +og_title: Extract Text from Image with Aspose OCR – Complete C# Guide +tags: +- Aspose OCR +- C# +- Image Processing +title: Extract Text from Image with Aspose OCR – Complete C# Guide +url: /net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extract Text from Image with Aspose OCR – Complete C# Guide + +Ever needed to **extract text from image** but weren't sure which library to pick? You're not alone—many developers hit that wall when they first tackle OCR in .NET. The good news is that Aspose OCR makes the whole process surprisingly painless, even when you're dealing with complex scripts like Hindi. + +In this tutorial we'll walk through everything you need to **load image for OCR**, **recognize Hindi text**, and **run OCR recognition** in C#. By the end, you'll have a ready‑to‑run console app that prints the extracted text straight to the screen. + +## What You'll Build + +We'll create a tiny console application that: + +1. Points the OCR engine at a folder containing language models. +2. Turns off automatic downloads—handy for locked‑down environments. +3. Selects Hindi as the target language. +4. Loads a JPEG (or PNG) that contains Hindi text. +5. Executes the recognition pipeline. +6. Writes the resulting string to the console. + +No external services, no cloud keys, just pure on‑premise OCR. + +## Prerequisites + +- **.NET 6.0** or later (the code also works on .NET Framework 4.7+). +- **Aspose.OCR for .NET** NuGet package installed. + ```bash + dotnet add package Aspose.OCR + ``` +- A folder named `OcrResources` that contains the Hindi language model (`hin.traineddata`). + You can download it from the Aspose OCR download page and drop it into `YOUR_DIRECTORY/OcrResources`. +- An image file (`input.jpg`) with clear Hindi text. + For illustration, imagine a photo of a storefront sign that reads “स्वागत है”. + +> **Pro tip:** Keep the image resolution above 300 dpi; lower resolutions can cause missed characters. + +--- + +## Step 1: Point the OCR Engine to Your Resources – *extract text from image* + +The first thing Aspose OCR needs is the location of its language models. If you skip this, the engine will try to download the files automatically—something you might not want in a secured network. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Why this matters:* By setting `ResourcesPath` you ensure the engine loads the correct trained data locally, which speeds up the first run and eliminates any surprise network traffic. + +--- + +## Step 2: Disable Automatic Resource Download – *load image for OCR* + +In many corporate environments, outbound internet access is blocked. Aspose OCR respects a flag that stops it from trying to fetch missing files on the fly. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +If you forget this line and the Hindi model isn’t present, the engine will throw an exception that looks like “Unable to download required resource”. Keeping the flag `false` gives you a clear, deterministic failure that you can handle yourself. + +--- + +## Step 3: Choose the Language – *recognize hindi text* + +Aspose OCR supports dozens of languages, but you have to tell it which one to use. Hindi is identified by `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*What if you need multiple languages?* You can set `Language = OcrLanguage.AutoDetect` to let the engine guess, but auto‑detect is slower and occasionally misfires on mixed scripts. For pure Hindi, explicit selection is the safest bet. + +--- + +## Step 4: Load Your Image – *load image for OCR* + +Now we hand the engine the picture we want to read. Aspose offers a convenient `ImageStream.FromFile` helper that abstracts away the underlying `System.Drawing` dependencies. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +If the file path is wrong, Aspose will raise a `FileNotFoundException`. A quick `File.Exists` check before this line can save you a debugging session. + +--- + +## Step 5: Run the OCR Engine – *run OCR recognition* + +With everything configured, we finally kick off the recognition process. This call is synchronous and blocks until the text is extracted. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Behind the scenes, Aspose performs several stages: preprocessing (deskew, noise removal), segmentation, character classification, and finally language‑specific post‑processing. The heavy lifting happens inside this single method call. + +--- + +## Step 6: Output the Extracted Text – *extract text from image* + +The result lives in the `Text` property of the engine. We simply write it to the console, but you could also store it in a database, send it over an API, or feed it into another NLP pipeline. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Expected output** (assuming the image contains “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +If you see garbled characters, double‑check that the Hindi model is correctly placed and that the image isn’t overly compressed. + +--- + +## Full Working Example + +Below is the complete program you can copy‑paste into a new console project (`dotnet new console`). Replace `YOUR_DIRECTORY` with the actual path on your machine. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** If you plan to process many images in a loop, instantiate a single `OcrEngine` and reuse it—this cuts down on initialization overhead. + +--- + +## Handling Common Pitfalls + +| Issue | Why it Happens | Quick Fix | +|-------|----------------|-----------| +| **Empty output** | Wrong language model or low‑quality image. | Verify `ResourcesPath`, increase image DPI, or try `ocrEngine.Image = ImageStream.FromFile(..., true)` to enable auto‑enhancement. | +| **Exception: Resource not found** | Missing Hindi `.traineddata`. | Download the Hindi model from Aspose, place it in `OcrResources`, and ensure the file name matches `hin.traineddata`. | +| **Garbage characters** | Encoding mismatch when printing to console. | Set console output encoding: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Performance lag** | Large images processed without scaling. | Pre‑scale the image to a max width/height of 2000 px before feeding it to OCR. | + +--- + +## Next Steps & Related Topics + +- **Batch processing:** Wrap the code in a `foreach` loop to handle a folder of images. +- **Different languages:** Swap `OcrLanguage.Hindi` for `OcrLanguage.English`, `OcrLanguage.Arabic`, etc. +- **Output formats:** Instead of `Console.WriteLine`, write to a text file (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integration with ASP.NET Core:** Expose an API endpoint that accepts an image upload and returns the extracted text as JSON. + +All of these extensions follow the same pattern—configure the engine, load an image, recognize, and consume the result. + +--- + +## Conclusion + +We’ve just shown how to **extract text from image** using Aspose OCR in C#. The guide covered every step you need to **load image for OCR**, **recognize Hindi text**, and **run OCR recognition**—all in a self‑contained console app. + +Give it a try with your own pictures, experiment with different languages, and feel free to adapt the snippet for web services or background jobs. The core idea stays the same: set resources, pick a language, feed an image, and read the `Text` property. + +If you hit any snags, check the troubleshooting table above or drop a comment. Happy coding, and may your OCR results always be crystal‑clear! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/english/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..cf1fdb42 --- /dev/null +++ b/ocr/english/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-01-10 +description: How to run OCR on an image using Aspose OCR in C#. Learn to extract text + from image, run OCR on image, and load image for OCR with GPU acceleration. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: en +og_description: How to run OCR on an image using Aspose OCR. This tutorial shows how + to extract text from image, run OCR on image, and load image for OCR efficiently. +og_title: How to Run OCR in C# – Full Step‑by‑Step Guide +tags: +- OCR +- C# +- Aspose +title: How to Run OCR in C# – Complete Guide with Aspose OCR +url: /net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Run OCR in C# – Complete Guide with Aspose OCR + +Ever wondered **how to run OCR** on a photo and pull the text out without pulling your hair out? You're not the only one. Whether you're digitizing invoices, scanning receipts, or just trying to make a searchable PDF, being able to extract text from image is a daily need for many developers. + +In this tutorial we'll walk through a practical, end‑to‑end example that shows **how to run OCR on image** files using the Aspose OCR library, complete with GPU acceleration for speed. By the end you’ll know exactly how to load image for OCR, tweak memory usage, and get clean plain‑text results—all in a few minutes of code. + +## What You’ll Learn + +- How to initialize the Aspose OCR engine in C# +- How to **load image for OCR** from disk or a stream +- How to enable GPU acceleration and limit GPU memory +- How to **extract text from image** and verify the output +- Common pitfalls (GPU module missing, memory limits) and quick fixes + +No prior experience with Aspose OCR is required; just a working .NET environment and a sample image. + +--- + +## How to Run OCR on an Image with Aspose OCR + +The first thing you need is a clear, runnable snippet that does the whole job. Below is the full program you can copy, paste, and run right away. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Expected output** (assuming the sample image contains the phrase “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Pro tip:** If you don’t see any text, double‑check that the GPU module is installed and that the image path is correct. The `ImageStream.FromFile` method throws a clear exception if the file can’t be found. + +--- + +## Extract Text from Image Using GPU Acceleration + +Why bother with the GPU at all? CPU‑only OCR works, but it can be painfully slow on large or high‑resolution pictures. Enabling GPU acceleration (step 2 above) hands the heavy lifting over to your graphics card, which can process thousands of pixels per second. + +### When to Use GPU + +- **Batch processing** – scanning dozens of invoices in one go. +- **High‑resolution scans** – anything above 300 dpi. +- **Real‑time apps** – like a mobile scanner that needs instant feedback. + +If your environment lacks a compatible GPU, simply set `EnableGpuAcceleration = false;` and the engine will fall back to CPU mode automatically. + +--- + +## Run OCR on Image – Loading the Image Correctly + +Loading the image is the **load image for OCR** step that often trips people up. Aspose OCR expects an `ImageStream`, which can be created from a file, a memory stream, or even a URL. Here are a few variations: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Edge case:** Some images contain an alpha channel (transparency) that confuses the OCR engine. Stripping alpha is easy: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Now you’ve covered the most common ways to **load image for OCR**, ensuring the engine receives a clean, supported format every time. + +--- + +## Tips for Loading Image for OCR Efficiently + +1. **Resize large images** – OCR doesn’t need a 4 K photo; scaling down to ~1500 px width speeds things up without hurting accuracy. +2. **Convert to grayscale** – reduces noise and can improve recognition on low‑contrast scans. +3. **Pre‑process with deskew** – if your image is tilted, Aspose OCR’s built‑in deskew can be enabled via `ocrEngine.Config.EnableDeskew = true;`. + +These tweaks are especially handy when you’re **extracting text from image** in bulk. + +--- + +## Common Pitfalls & How to Fix Them + +| Symptom | Likely Cause | Fix | +|---------|--------------|-----| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU module not installed | Install the Aspose OCR GPU package or disable GPU (`EnableGpuAcceleration = false`). | +| Blank output | Image path wrong or unsupported format | Verify `ImageStream.FromFile` path; try loading from bytes to ensure the file is read correctly. | +| Out‑of‑memory error | GPU memory limit too low for large batch | Increase `GpuMemoryLimit` (e.g., 2048) or process images in smaller chunks. | +| Garbled characters | Image has heavy noise or low contrast | Pre‑process: binarize, despeckle, or increase DPI before OCR. | + +--- + +## Full Working Example – Put It All Together + +Below is a compact console app that incorporates the best practices we discussed: GPU acceleration, memory limiting, image pre‑processing, and error handling. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Running this program prints the clean text extracted from your image, demonstrating a robust way to **extract text from image** even when the source isn’t perfect. + +--- + +## Conclusion + +We’ve covered **how to run OCR** on an image using Aspose OCR, from initializing the engine to loading the image, enabling GPU acceleration, and handling edge cases. You now have a solid, citation‑worthy reference that you can copy‑paste into any .NET project and start **extracting text from image** immediately. + +Next steps? Try feeding PDF pages, experiment with different languages (set `ocrEngine.Config.Language = "spa"` for Spanish), or integrate this flow into a web API that processes uploads on‑the‑fly. The sky’s the limit, and with the tools we discussed, you’re well‑equipped to tackle any OCR challenge. + +Happy coding, and may your text always be clean and your OCR fast! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/english/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..95d8524f --- /dev/null +++ b/ocr/english/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-01-10 +description: How to run OCR quickly and extract Arabic text from an image. Learn to + convert image to text, read text from PNG, and see how to extract text with Aspose + OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: en +og_description: How to run OCR in C# and extract Arabic text from a PNG image. This + guide shows you how to convert image to text and read text from PNG step‑by‑step. +og_title: How to Run OCR in C# – Extract Arabic Text from PNG +tags: +- OCR +- C# +- Aspose +title: How to Run OCR in C# – Extract Arabic Text from PNG +url: /net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Run OCR in C# – Extract Arabic Text from PNG + +Ever wondered **how to run OCR** on a picture that contains Arabic characters? You’re not alone. Many developers hit a wall when they need to **extract Arabic text** from a PNG but don’t know which library will handle right‑to‑left scripts without a headache. + +In this tutorial we’ll walk through everything you need to know to **convert image to text**, **read text from PNG**, and finally **how to extract text** using Aspose.OCR in a clean C# console app. By the end you’ll have a ready‑to‑run program that prints the Arabic string right to your terminal. + +## What You’ll Learn + +- Install and reference the Aspose.OCR NuGet package. +- Configure the OCR engine for Arabic language support. +- Load a PNG image and run the recognition process. +- Retrieve and display the extracted text. +- Tweak settings for better accuracy and handle common pitfalls. + +No prior experience with OCR is required, just a basic understanding of C# and a .NET development environment (Visual Studio, Rider, or the `dotnet` CLI will do). + +--- + +## How to Run OCR – Setting Up Aspose OCR + +### Step 1: Add the Aspose.OCR NuGet Package + +The first thing we need is the OCR library itself. Aspose.OCR is a commercial product, but it offers a free trial that works perfectly for learning purposes. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Alternatively, open the **NuGet Package Manager** in Visual Studio, search for **Aspose.OCR**, and click **Install**. + +> **Pro tip:** If you plan to use the library in a CI pipeline, add the `-v` flag to lock the version, e.g., `dotnet add package Aspose.OCR -v 23.10`. + +### Step 2: Create a New Console Project (if you don’t have one) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Now you have a fresh `Program.cs` file ready for our code. + +--- + +## Extract Arabic Text – Writing the OCR Code + +Below is the complete, ready‑to‑run program. Save it as `Program.cs` (or replace the auto‑generated file). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Why Each Line Matters + +- **`OcrEngine`**: The central class that coordinates image loading, language selection, and recognition. +- **`Language = OcrLanguage.Arabic`**: Arabic uses a right‑to‑left script and unique glyphs; setting the language tells the engine to apply the correct character models. +- **`ImageStream.FromFile`**: Handles PNG, JPEG, BMP, and many other formats. If you ever need to read from a `MemoryStream` (e.g., an uploaded file), replace this call accordingly. +- **`Recognize()`**: Performs the heavy lifting—pixel analysis, segmentation, and character classification. +- **`ocrEngine.Text`**: The final Unicode string, ready for further processing, storage, or display. + +### Expected Output + +If `arabic_sample.png` contains the phrase “مرحبا بالعالم” (Hello World), the console will print: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +If the output looks garbled, double‑check that the image is clear, the language is set to Arabic, and the OCR engine version matches the documentation. + +--- + +## Convert Image to Text – Tweaking Accuracy + +While the default settings work for most clean scans, real‑world images often need a bit of extra love. + +| Setting | What It Does | When to Use | +|---------|--------------|-------------| +| `ocrEngine.Config.Preprocess = true` | Enables automatic binarization and noise removal. | Scanned documents with shadows. | +| `ocrEngine.Config.Deskew = true` | Rotates the image to correct slight tilt. | Photos taken at an angle. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Treats the whole image as one block of text. | Simple captions or single‑line labels. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Limits recognition to Arabic characters only. | Reduces false positives on mixed‑language pages. | + +You can add these lines right after creating the engine: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Read Text from PNG – Handling Different Image Sources + +Sometimes the PNG lives in a database or comes from a web request. Here’s a quick variant that reads from a `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +The rest of the flow stays identical, which means **how to extract text** remains consistent regardless of the source. + +--- + +## How to Extract Text – Advanced Options & Edge Cases + +### 1. Multi‑Page PDFs or TIFFs + +If you need to OCR a multi‑page document, loop over each page: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Note:** You’ll need the `Aspose.PDF` package for this snippet. + +### 2. Detecting Language Automatically + +Aspose.OCR also offers auto‑detect, but it’s slower. If you’re unsure whether the image contains Arabic or another script, enable it: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +The engine will try each language model and pick the best match. + +### 3. Performance Tips + +- **Reuse the `OcrEngine`** object for multiple images; creating a new instance each time adds overhead. +- **Run in parallel** only if you have separate engine instances per thread—sharing one instance causes race conditions. + +--- + +## Conclusion + +We’ve covered **how to run OCR** in C# from start to finish, showing you how to **extract Arabic text**, **convert image to text**, **read text from PNG**, and answer **how to extract text** in a variety of scenarios. The sample code is complete, self‑contained, and ready for you to paste into any .NET console project. + +Next steps? Try swapping `OcrLanguage.Arabic` for Korean or Serbian Cyrillic to see the library’s multilingual power. Experiment with the preprocessing flags to boost accuracy on noisy scans, or integrate the OCR routine into a web API so users can upload images and get instant text results. + +Happy coding, and may your OCR results always be crystal‑clear! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/english/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..ccf1d678 --- /dev/null +++ b/ocr/english/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,296 @@ +--- +category: general +date: 2026-01-10 +description: Learn how to recognize text from image, extract text coordinates, and + convert receipt to JSON using Aspose OCR in C#. Step‑by‑step tutorial. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: en +og_description: recognize text from image in C# using Aspose OCR. This guide shows + how to extract text, get coordinates, and convert receipt to JSON. +og_title: recognize text from image – Full C# OCR Tutorial +tags: +- OCR +- C# +- Aspose +title: recognize text from image in C# – Complete Guide to OCR and JSON +url: /net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# recognize text from image – Full C# OCR Tutorial + +Ever needed to recognize text from image but weren’t sure which library to pick? You’re not alone. In many real‑world apps—expense trackers, receipt scanners, or document archivers—extracting text reliably is the first hurdle. + +In this tutorial we’ll walk through **how to extract text**, pull out its bounding boxes, and finally **convert receipt to JSON** using Aspose.OCR for .NET. By the end you’ll have a self‑contained C# project that takes a photo of a receipt and spits out a tidy JSON file with confidence scores and coordinates. + +## What You’ll Need + +Before we dive in, make sure you have the following on your machine: + +- **.NET 6.0 SDK** (or any later version). Older frameworks work too, but .NET 6 is the sweet spot for modern libraries. +- **Visual Studio 2022** or VS Code with the C# extension. +- **Aspose.OCR for .NET** NuGet package (`Aspose.OCR` and `Aspose.OCR.Output`). You can install it via the Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- A sample receipt image (e.g., `receipt.jpg`) placed in a folder you’ll reference later. + +That’s it—no extra SDKs, no native binaries, just pure managed code. + +## Step 1: Create a New Console Project + +First things first, spin up a console app. It’s the quickest way to test OCR without UI overhead. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Pro tip:** Keep the project folder tidy; create a sub‑folder called `Resources` and drop `receipt.jpg` there. It makes path handling painless. + +## Step 2: Load the Receipt Image + +Now we actually **recognize text from image**. The first step is to point the OCR engine at the file. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Why do we wrap the load in a simple existence check? Because in production you often deal with user uploads that might be missing or corrupted. Catching the issue early saves you from cryptic exceptions later. + +## Step 3: Perform OCR – **recognize text from image** + +With the image in memory, we ask Aspose to **recognize text from image**. This operation is synchronous and returns a rich result set. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Behind the scenes Aspose runs a neural network trained on millions of characters. The engine populates `ocrEngine.Text`, `ocrEngine.RecognitionResult`, and a collection of `OcrRegion` objects that hold coordinates. That’s exactly what we need for the next step. + +## Step 4: **How to extract text** – Getting the raw string + +If you only care about the plain text (maybe for a quick search), you can pull it straight from the engine: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +You’ll notice line breaks where the OCR detected paragraph boundaries. In many receipt‑scanning scenarios the raw string is enough to pull out totals, dates, or vendor names using simple regexes. + +## Step 5: **extract text coordinates** – Bounding boxes for each word + +Often you need to know *where* on the image a particular piece of text lives—for example, to highlight the total amount in a UI. Aspose gives us that via `OcrRegion` objects. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Notice we’re looping over **extract text coordinates** for every recognized segment. The coordinates are relative to the original image, so you can overlay them in a graphics canvas or HTML `` element. + +## Step 6: **convert receipt to JSON** – Saving detailed results + +Now comes the part that ties everything together: we want a machine‑readable structure that includes the text, confidence scores, and the bounding boxes. Aspose ships with `JsonSaveOptions` that make this a breeze. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +The resulting file looks something like this (trimmed for brevity): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +You now have a **convert receipt to JSON** artifact that can be fed into downstream services—think expense‑report APIs, analytics pipelines, or even a simple UI that draws rectangles around each word. + +## Full Working Example + +Putting all the pieces together, here’s the complete `Program.cs` you can copy‑paste into your project: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Run the program (`dotnet run`) and watch the console output. Open `Resources/receipt.json` to verify the structure. + +## Common Questions & Edge Cases + +- **What if the image is blurry?** + Aspose OCR works best with 300 dpi or higher. If you get low confidence scores, consider applying a sharpening filter before feeding the image to the engine. + +- **Can I recognize multiple languages?** + Yes. Set `ocrEngine.Language = Language.English | Language.Spanish;` before calling `Recognize()`. + +- **How do I limit output to only numbers (e.g., totals)?** + After you have the plain text, run a regex like `\d+\.\d{2}` on `ocrEngine.Text`. Because we already have coordinates, you can map the matched string back to its region for visual highlighting. + +- **Is the JSON format customizable?** + The `JsonSaveOptions` class exposes a handful of flags. If you need a completely custom schema, you can iterate over `ocrEngine.RecognitionResult.Regions` and serialize the objects yourself with `System.Text.Json`. + +## Conclusion + +We’ve just demonstrated how to **recognize text from image** in C# using Aspose.OCR, **how to extract text**, pull out **extract text coordinates**, and finally **convert receipt to JSON**. The entire flow lives in a single, easy‑to‑run console app, making it perfect for prototypes or as a building block in larger systems. + +Next steps? Try feeding the JSON into a front‑end that draws the bounding boxes, or plug the output into an expense‑report service. You could also experiment with different image formats (PNG, TIFF) or batch‑process a folder of receipts. + +Got more questions about OCR, Aspose, or JSON handling? Drop a comment below, and happy coding! + +![Receipt image example for recognize text from image](receipt.jpg "Receipt image example") + +{{< /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/net/ocr-configuration/_index.md b/ocr/french/net/ocr-configuration/_index.md index 277556a4..c94e61f5 100644 --- a/ocr/french/net/ocr-configuration/_index.md +++ b/ocr/french/net/ocr-configuration/_index.md @@ -39,9 +39,12 @@ Libérez la puissance de la reconnaissance d’images OCR dans .NET avec Aspose. Débloquez de puissantes capacités OCR avec Aspose.OCR pour .NET. Extrayez le texte des images de manière transparente. ### [OCROOpération avec liste dans la reconnaissance d'images OCR](./ocr-operation-with-list/) Libérez le potentiel d’Aspose.OCR pour .NET. Effectuez sans effort la reconnaissance d’images OCR avec des listes. Boostez la productivité et l’extraction de données dans vos applications. +### [Lire une ressource intégrée dans .NET – Guide complet pour définir la licence Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Apprenez à lire une ressource intégrée et à configurer la licence Aspose dans vos applications .NET. + {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/french/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..2596ac1b --- /dev/null +++ b/ocr/french/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-01-10 +description: Lire une ressource intégrée et définir la licence Aspose en C#. Apprenez + à utiliser GetManifestResourceStream, à intégrer un fichier de licence et à obtenir + l'assembly d'exécution .NET dans un seul tutoriel. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: fr +og_description: Lisez une ressource intégrée dans .NET et configurez rapidement la + licence Aspose. Guide étape par étape couvrant GetManifestResourceStream, l’intégration + de la licence et l’utilisation de l’assembly en cours d’exécution. +og_title: Lire la ressource incorporée – Définir la licence Aspose dans .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Lire une ressource intégrée dans .NET – Guide complet pour configurer la licence + Aspose +url: /fr/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Lire une ressource intégrée – Guide complet pour définir la licence Aspose + +Vous avez déjà eu besoin de **lire une ressource intégrée** à l’exécution et vous vous êtes demandé comment obtenir votre bibliothèque Aspose OCR sous licence sans coder en dur les chemins ? Vous n’êtes pas seul. Dans de nombreuses applications d’entreprise, le fichier de licence vit à l’intérieur de l’assembly afin de ne pas avoir à déployer de fichiers supplémentaires ou à se soucier de permissions manquantes. Ce tutoriel vous montre exactement comment lire une ressource intégrée et définir la licence Aspose en utilisant la méthode .NET `GetManifestResourceStream`. + +Nous passerons en revue tout ce dont vous avez besoin : intégrer le fichier `.lic`, le récupérer avec `GetExecutingAssembly`, puis l’appliquer à la classe `License` d’Aspose OCR. À la fin, vous disposerez d’une solution autonome qui fonctionne sur n’importe quel projet .NET—sans fichiers externes requis. + +## Ce que vous allez apprendre + +- **Comment intégrer un fichier de licence** dans un projet .NET afin qu’il devienne partie du DLL compilé. +- La bonne façon **d’utiliser GetManifestResourceStream** pour lire cette ressource intégrée. +- Comment **définir la licence Aspose** programmatique sans toucher au système de fichiers. +- Astuces pour gérer les pièges courants comme les noms de ressources mal orthographiés ou les actions de génération manquantes. +- Un exemple de code complet, exécutable, que vous pouvez copier‑coller dans votre propre solution. + +### Prérequis + +- .NET 6.0 ou supérieur (le code fonctionne également avec .NET Framework 4.x, il suffit d’ajuster le fichier projet en conséquence). +- Package NuGet Aspose.OCR installé (`dotnet add package Aspose.OCR`). +- Familiarité de base avec C# et Visual Studio (ou votre IDE préféré). + +Si vous avez déjà ces éléments en place, super—plongeons‑y. + +## Étape 1 : Intégrer le fichier de licence Aspose dans votre assembly + +La première chose dont vous avez besoin est le vrai fichier de licence (`Aspose.OCR.lic`). Au lieu de le copier à côté de votre exécutable, vous allez l’intégrer comme **ressource**. + +1. Ajoutez le fichier `.lic` à votre projet (par ex., créez un dossier `Resources` et déposez le fichier à l’intérieur). +2. Dans les propriétés du fichier, définissez **Build Action** sur `Embedded Resource`. + *Astuce :* gardez la structure de dossiers simple ; le nom complet de la ressource sera `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Pourquoi intégrer ? Parce que l’assembly porte maintenant la licence en interne, éliminant le risque d’un fichier manquant sur un serveur de production. + +## Étape 2 : Récupérer la ressource intégrée avec GetExecutingAssembly + +Maintenant que la licence vit à l’intérieur du DLL, il vous faut un moyen de **lire la ressource intégrée** à l’exécution. La classe .NET `Assembly` vous fournit exactement cela. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +La méthode `GetExecutingAssembly` renvoie l’assembly qui s’exécute actuellement—parfait pour localiser les ressources qui se trouvent à côté de votre code. + +## Étape 3 : Ouvrir le flux de licence avec GetManifestResourceStream + +Avec la référence à l’assembly en main, vous pouvez appeler `GetManifestResourceStream`. Cette méthode renvoie un `Stream` que vous pouvez transmettre directement à Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Remarquez que nous utilisons une instruction `using` **null‑conditional** (`using Stream?`) afin de garantir que le flux soit automatiquement libéré. Si le nom est incorrect, nous levons une exception claire—cela vous évite des échecs silencieux plus tard. + +## Étape 4 : Appliquer la licence à Aspose OCR + +La classe `License` d’Aspose attend un `Stream`. Nous en avons déjà un, donc la dernière étape est directe. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +C’est tout ! Le moteur Aspose OCR est maintenant entièrement licencié et prêt à traiter des images sans le filigrane d’évaluation. + +## Exemple complet fonctionnel + +Voici un programme complet, prêt à copier‑coller, qui démontre l’ensemble du processus. Il inclut les directives `using` nécessaires, la gestion des erreurs, et un appel OCR simple pour prouver que la licence est active. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Sortie attendue + +Lorsque vous exécutez le programme sur une machine avec une licence valide intégrée, vous devriez voir : + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Si le flux de licence est introuvable, la console affichera le nom de la ressource manquante, vous guidant ainsi à revérifier le **Build Action** et l’espace de noms. + +## Problèmes courants & comment les éviter + +| Problème | Pourquoi cela arrive | Solution | +|----------|----------------------|----------| +| **Nom de ressource incorrect** | .NET construit le nom de la ressource à partir de l’espace de noms par défaut + le chemin du dossier. | Utilisez `Assembly.GetManifestResourceNames()` pour lister les noms disponibles et vérifier la chaîne exacte. | +| **Fichier de licence non défini comme Embedded Resource** | L’action de génération par défaut est `Content`. | Changez‑la en `Embedded Resource` dans les propriétés du fichier. | +| **Exécution depuis un assembly différent** | Si vous appelez le code depuis une bibliothèque de classes, `GetExecutingAssembly()` peut renvoyer la bibliothèque au lieu de l’exe principal. | Utilisez `Assembly.GetEntryAssembly()` ou transmettez explicitement l’assembly correct. | +| **Flux disposé trop tôt** | Utilisation accidentelle d’un bloc `using` qui ferme le flux prématurément. | Gardez le `using` autour de l’appel `SetLicense`, comme montré ci‑dessus. | +| **Incompatibilité de version Aspose.OCR** | Les versions plus récentes peuvent exiger un format de licence différent. | Téléchargez toujours la dernière licence depuis votre compte Aspose et ré‑intégrez‑la. | + +## Utiliser la même technique pour d’autres fichiers intégrés + +Le schéma—**lire une ressource intégrée**, puis **utiliser GetManifestResourceStream**—fonctionne pour tout type de fichier : configurations JSON, images, même DLL natives. Il suffit d’ajuster le `resourceName` et la façon dont vous consommez le flux. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Vue d’ensemble visuelle + +![Diagramme illustrant comment lire une ressource intégrée et définir la licence Aspose](read-embedded-resource-diagram.png) + +*Texte alternatif :* lire une ressource intégrée – diagramme montrant l’intégration, la récupération avec GetManifestResourceStream, et l’application de la licence Aspose. + +## Récapitulatif + +Nous avons couvert comment **lire une ressource intégrée** dans un assembly .NET, les étapes exactes pour **utiliser GetManifestResourceStream**, et la manière propre de **définir la licence Aspose** sans exposer de fichiers sur le disque. En intégrant la licence, vous éliminez les tracas de déploiement et rendez votre application portable. + +## Et après ? + +- **Automatiser les mises à jour de licence :** écrivez un petit script d’étape de build qui remplace le fichier `.lic` intégré lorsque vous renouvelez votre abonnement Aspose. +- **Sécuriser la ressource :** envisagez de chiffrer la licence avant de l’intégrer et de la déchiffrer à l’exécution pour une protection supplémentaire. +- **Explorer d’autres produits Aspose :** la même approche fonctionne pour Aspose.Words, Aspose.PDF, etc., chacun avec sa propre classe `License`. + +N’hésitez pas à expérimenter—peut‑être intégrerez‑vous plusieurs licences pour différents modules, ou utiliserez‑vous un nom de ressource piloté par une configuration. Le ciel est la limite. + +--- + +*Bon codage ! Si vous rencontrez des difficultés, laissez un commentaire ci‑dessous ou consultez les forums Aspose pour plus d’exemples.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/french/net/skew-angle-calculation/_index.md index c7073d78..7d9d9b72 100644 --- a/ocr/french/net/skew-angle-calculation/_index.md +++ b/ocr/french/net/skew-angle-calculation/_index.md @@ -40,9 +40,12 @@ Explorez Aspose.OCR pour .NET, une solution OCR puissante pour une reconnaissanc Libérez la puissance d'Aspose.OCR pour .NET, une solution robuste pour la reconnaissance d'images. Apprenez à calculer les angles d'inclinaison sans effort. ### [Calculer l'angle d'inclinaison à partir de l'URI dans la reconnaissance d'images OCR](./calculate-skew-angle-from-uri/) Explorez Aspose.OCR pour .NET pour calculer sans effort les angles d'inclinaison dans la reconnaissance d'images OCR. Valorisez vos projets avec précision et efficacité. +### [Comment redresser une image en C# – Guide complet de prétraitement OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Apprenez à redresser les images en C# avant l'OCR pour améliorer la précision de la reconnaissance. + {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/french/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..02d6169a --- /dev/null +++ b/ocr/french/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-01-10 +description: Comment redresser une image et améliorer les résultats OCR avec Aspose.OCR. + Apprenez à prétraiter l'image pour l'OCR, à éliminer le bruit du scan et à reconnaître + le texte du scan. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: fr +og_description: Comment redresser une image et améliorer la précision de l’OCR. Ce + guide montre comment prétraiter une image pour l’OCR, éliminer le bruit d’un scan + et reconnaître le texte d’un scan à l’aide d’Aspose.OCR. +og_title: Comment redresser une image en C# – Guide complet de prétraitement OCR +tags: +- OCR +- C# +- Image Processing +title: Comment redresser une image en C# – Guide complet de prétraitement OCR +url: /fr/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment redresser une image en C# – Guide complet de pré‑traitement OCR + +Vous êtes‑vous déjà demandé **how to deskew image** les fichiers avant de les envoyer à un moteur OCR ? Vous n'êtes pas le seul. Les documents numérisés sont souvent de travers, bruyants ou à faible contraste, ce qui perturbe toute tentative de reconnaissance de texte. + +Dans ce tutoriel, nous allons parcourir un exemple complet et exécutable qui **preprocesses image for OCR**, supprime le bruit du scan, et enfin **recognize text from scan** en utilisant la bibliothèque Aspose.OCR. À la fin, vous aurez une vision claire de **how to use OCR** en C# tout en gardant le code court et simple. + +> **Pro tip :** Même une petite rotation (5‑10°) peut faire chuter la précision de l'OCR de 30 % ou plus. Le redressement est la première étape que vous ne devez jamais sauter. + +--- + +## Ce dont vous avez besoin + +- **.NET 6+** (le code fonctionne également sur .NET Framework, mais .NET 6 est le LTS actuel) +- **Aspose.OCR for .NET** – vous pouvez l’obtenir depuis NuGet (`Install-Package Aspose.OCR`) +- Un fichier d’exemple TIFF/PNG/JPEG qui est tourné ou bruyant (nous utiliserons `noisy_rotated.tif` dans l’exemple) +- Tout IDE de votre choix – Visual Studio, Rider ou VS Code conviendra + +C’est tout. Pas de bibliothèques supplémentaires, pas de services externes. + +## Étape 1 – Charger l’image source (Pourquoi c’est important) + +Avant de pouvoir **deskew image**, nous devons la lire dans un `ImageStream` Aspose. Cet objet abstrait les entrées/sorties de fichiers et fournit à l’engin OCR une interface cohérente. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Pourquoi charger d’abord ?* Parce que tous les filtres suivants opèrent sur une image en mémoire. Si le fichier ne peut pas être lu, toute la chaîne de traitement s’effondre. + +## Étape 2 – Construire un pipeline de pré‑traitement (Deskew + Denoise + Contrast) + +Un flux de travail OCR robuste enchaîne généralement plusieurs filtres. C’est ici que nous **preprocesses image for OCR** et, plus important encore, **how to deskew image** automatiquement. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Pourquoi ces trois ?** +- **DeskewFilter** résout le problème “how to deskew image” automatiquement ; vous n’avez pas besoin de deviner l’angle. +- **DenoiseFilter** répond à la nécessité de “remove noise from scan”, qui sinon crée des caractères fantômes. +- **ContrastBoostFilter** aide le moteur OCR à distinguer le texte sombre d’un fond clair, un problème classique lorsque vous *preprocesses image for OCR*. + +## Étape 3 – Appliquer le pipeline (Voir la transformation) + +Maintenant nous exécutons réellement les filtres. L’`processedImage` retourné est ce que nous fournirons au moteur OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Si vous ouvrez `cleaned_output.tif`, vous devriez remarquer que le texte est droit, moins granuleux et avec un contraste plus élevé. Cette vérification visuelle est pratique lorsque vous *remove noise from scan* et que vous voulez confirmer que le redressement a fonctionné. + +## Étape 4 – Créer et configurer le moteur OCR (How to Use OCR) + +Avec une image propre en main, nous instancions `OcrEngine`. C’est le cœur de **how to use OCR** avec Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Pourquoi définir `AutoPageSegmentation` ?* Parce que de nombreux scans contiennent des tableaux ou plusieurs colonnes. L’activer permet au moteur de diviser la page intelligemment, améliorant le résultat final de **recognize text from scan**. + +## Étape 5 – Exécuter le processus de reconnaissance (Reconnaître enfin le texte) + +Voici le moment de vérité : nous demandons au moteur de lire le texte. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Si tout s’est déroulé sans problème, vous verrez un bloc de texte propre qui correspond au document original. C’est le résultat d’un **deskewing image** correct, du **removing noise** et du **preprocessing image for OCR**. + +## Étape 6 – Exemple complet fonctionnel (Prêt à copier‑coller) + +Ci-dessous le programme complet, prêt à être compilé. Remplacez simplement le chemin du fichier et vous êtes prêt à partir. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Sortie attendue** (truncée pour plus de concision) : + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Si la sortie semble brouillée, vérifiez que l’image source n’est pas tournée au-delà de 30°, ou augmentez `DeskewFilter.MaxAngle`. + +## Questions fréquentes (Cas limites & Variations) + +| Question | Réponse | +|----------|--------| +| **Et si mon scan est tourné de 45° ?** | `DeskewFilter` est limité à `MaxAngle`. Augmentez‑le (par ex., `MaxAngle = 60`) ou pré‑tournez l’image avec une bibliothèque graphique avant de la fournir au pipeline. | +| **Puis‑je traiter les PDF page‑par‑page ?** | Oui. Convertissez chaque page PDF en image (par ex., avec `Aspose.Pdf`) et exécutez le même pipeline sur chaque bitmap. | +| **Mon document est en français – dois‑je changer quelque chose ?** | Définissez `ocrEngine.Language = Language.French;` ou chargez un pack de langue personnalisé. Le reste du pipeline reste identique. | +| **Existe‑t‑il un moyen de conserver la résolution originale ?** | `PreprocessPipeline` travaille sur le bitmap original, préservant le DPI. Évitez simplement d’appeler `ImageStream.Resize` sauf si vous devez réduire la taille pour des raisons de performance. | +| **Comment le renforcement du contraste affecte‑t‑il les scans couleur ?** | `ContrastBoostFilter` agit sur chaque canal ; il est sûr pour les images en niveaux de gris ou en couleur, mais vous pouvez également convertir en niveaux de gris d’abord avec `new GrayscaleFilter()`. | + +## Exemple d’image (Aide visuelle) + +![exemple de how to deskew image](/images/deskew-example.png) + +*L’image montre un avant/après d’un scan tourné de 12°, bruyant, qui a été deskewed et nettoyé.* + +## Conclusion + +Nous avons couvert **how to deskew image** avec Aspose.OCR, démontré un pipeline complet de **preprocess image for OCR**, montré comment **remove noise from scan**, et enfin **recognize text from scan** avec quelques lignes de C#. En enchaînant `DeskewFilter`, `DenoiseFilter` et `ContrastBoostFilter`, vous obtenez un bitmap propre qui permet au moteur OCR d’accomplir sa tâche sans être gêné par des artefacts. + +Prochaines étapes ? Essayez d’expérimenter avec différentes intensités de filtres, ajoutez un `BinarizationFilter` pour une sortie noir‑et‑blanc pure, ou alimentez l’image nettoyée dans un pipeline NLP en aval. Le même schéma fonctionne pour les reçus, passeports et documents historiques. + +Vous avez d’autres questions sur **how to use OCR** dans d’autres langages ou frameworks ? Laissez un commentaire, 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/net/text-recognition/_index.md b/ocr/french/net/text-recognition/_index.md index 1b27348f..b9db2834 100644 --- a/ocr/french/net/text-recognition/_index.md +++ b/ocr/french/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Améliorez vos applications .NET avec Aspose.OCR pour une reconnaissance efficac Libérez le potentiel de l’OCR dans .NET avec Aspose.OCR. Extrayez le texte des PDF sans effort. Téléchargez-le maintenant pour une expérience d'intégration transparente. ### [Reconnaître la table dans la reconnaissance d'images OCR](./recognize-table/) Libérez le potentiel d'Aspose.OCR pour .NET avec notre guide complet sur la reconnaissance des tableaux dans la reconnaissance d'images OCR. +### [Comment exécuter l'OCR en C# – Guide complet avec Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Apprenez à implémenter l'OCR en C# avec Aspose OCR grâce à ce guide complet, étape par étape, pour des résultats précis. +### [Comment exécuter l'OCR en C# – Extraire du texte arabe depuis un PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Apprenez à extraire du texte arabe à partir d'images PNG en utilisant Aspose OCR avec C#. +### [Extraire du texte d'une image avec Aspose OCR – Guide complet C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Apprenez à extraire du texte d'images avec Aspose OCR en C# grâce à ce guide complet étape par étape. +### [Extraire du texte d'une image en C# – Guide complet Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Apprenez à extraire du texte d'une image en C# avec Aspose OCR grâce à ce guide complet étape par étape. +### [Créer un PDF recherchable à partir d'un PNG en C# – Guide complet](./create-searchable-pdf-from-png-in-c-complete-guide/) +Apprenez à transformer un PNG en PDF recherchable avec Aspose OCR en C#, étape par étape. +### [Reconnaître du texte à partir d'une image en C# – Guide complet OCR et JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Apprenez à extraire du texte d'une image en C# et à obtenir les résultats au format JSON avec 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/french/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/french/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..d0cf9e88 --- /dev/null +++ b/ocr/french/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Créer un PDF consultable à partir d'un PNG avec C#. Apprenez comment + convertir une image en PDF, extraire le texte d'un PNG et effectuer la reconnaissance + OCR d'une image en C# dans un seul tutoriel facile. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: fr +og_description: Créer un PDF consultable à partir d'un PNG avec C#. Ce guide montre + comment convertir une image en PDF, extraire le texte d'un PNG et effectuer la reconnaissance + OCR d'une image en C# avec Aspose. +og_title: Créer un PDF recherchable à partir de PNG en C# – Étape par étape +tags: +- Aspose OCR +- C# +- PDF/A +title: Créer un PDF consultable à partir d’un PNG en C# – Guide complet +url: /fr/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Créer un PDF consultable à partir d'un PNG en C# – Guide complet + +Vous devez **créer un PDF consultable** à partir d'un fichier PNG en C# ? Vous n'êtes pas seul—de nombreux développeurs rencontrent cet obstacle lorsqu'ils souhaitent que leurs images numérisées soient à la fois affichables **et** recherchables par texte. Dans ce tutoriel, nous parcourrons l'ensemble du pipeline : **convertir une image en PDF**, exécuter l'OCR pour **extraire le texte du PNG**, et enfin enregistrer le tout sous forme d'un document **PDF/A‑2b** conforme et consultable. + +À la fin, vous disposerez d'un extrait de code unique et réutilisable que vous pourrez intégrer à n'importe quel projet .NET, ainsi que d'une poignée de conseils pratiques qui vous éviteront des maux de tête plus tard. Aucun service externe, uniquement la bibliothèque Aspose OCR et quelques lignes de C#. + +> **Pré-requis** +> * .NET 6+ (or .NET Framework 4.7.2+). +> * Visual Studio 2022 or any C#‑compatible IDE. +> * A valid Aspose OCR license (or a free trial). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Créer un PDF consultable à partir d'un PNG avec C#"} + +## Étape 1 – Installer et référencer Aspose OCR pour C# + +Tout d'abord : vous avez besoin du package NuGet Aspose OCR. Ouvrez votre terminal (ou la console du gestionnaire de packages) et exécutez : + +```bash +dotnet add package Aspose.OCR +``` + +Si vous préférez l'interface graphique, faites un clic droit sur votre projet → **Manage NuGet Packages…** → recherchez *Aspose.OCR* et installez la dernière version stable. + +Pourquoi cette bibliothèque ? Elle prend en charge **convertir png en pdf**, gère les images multi‑pages, et peut générer du PDF/A‑2b directement—parfait pour créer un **PDF consultable** conforme aux normes d'archivage. + +> **Astuce pro :** Enregistrez votre licence tôt dans `Program.cs` pour éviter le filigrane d'évaluation. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Étape 2 – Charger le PNG et exécuter l'OCR (extraire le texte du png) + +Nous allons maintenant charger l'image source. L'assistant `ImageStream.FromFile` masque les détails du système de fichiers et fonctionne avec tout format raster pris en charge. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +À ce stade, le moteur a **extrait le texte du png** et l'a stocké en interne. Vous pouvez même inspecter le texte brut via `ocrEngine.Text`, ce qui est pratique pour le débogage ou la journalisation. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **Et si l'image est multi‑page ?** +> Aspose OCR traite chaque page comme une couche distincte. Appelez simplement `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` et le moteur itérera automatiquement. + +## Étape 3 – Configurer les options PDF/A‑2b (créer un PDF consultable) + +Pour transformer le résultat OCR en **PDF consultable**, nous devons indiquer à Aspose comment empaqueter la sortie. PDF/A‑2b est le compromis idéal pour la préservation à long terme et garantit que la couche de texte est recherchable. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Pourquoi intégrer l'image originale ? Certaines vérifications de conformité exigent que la représentation visuelle corresponde à la numérisation originale. Ce drapeau rend le fichier une véritable opération **convertir image en pdf** tout en préservant le texte consultable. + +## Étape 4 – Enregistrer le résultat et vérifier (convertir png en pdf) + +Enfin, nous écrivons le fichier de sortie. La même méthode `Save` fonctionne pour n'importe quel chemin que vous fournissez. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Ouvrez le `output.pdf` résultant dans Adobe Reader ou tout visualiseur PDF et essayez de rechercher un mot qui apparaît dans le PNG original. Si le mot est mis en surbrillance, félicitations—vous avez réussi à **créer un PDF consultable** à partir d'un PNG ! + +### Script de vérification rapide (optionnel) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Pourquoi utiliser PDF/A‑2b pour les PDF consultables ? + +* **Sécurité d'archivage :** PDF/A‑2b garantit que le fichier peut être rendu de la même manière des décennies plus tard. +* **Conformité réglementaire :** De nombreuses industries (juridique, médicale, financière) exigent le PDF/A pour la conservation des dossiers. +* **Recherchabilité :** La couche de texte OCR intégrée rend le document indexable par les outils de recherche de bureau. + +Si vous n'avez pas besoin de la charge supplémentaire de conformité, vous pouvez supprimer la ligne `PdfAStandard` et simplement utiliser `new PdfSaveOptions()`—la sortie sera toujours consultable, mais pas en PDF/A‑2b. + +## Problèmes courants & comment les éviter + +| Symptôme | Cause probable | Solution | +|----------|----------------|----------| +| Aucun texte consultable n'apparaît | `ocrEngine.Recognize()` n'a jamais été appelé ou a échoué silencieusement | Assurez-vous que le chemin de l'image est correct et que la licence est enregistrée. | +| Le PDF est volumineux (10 + Mo) | Le PNG original est haute résolution et `EmbedOriginalImage` est vrai | Réduisez la résolution de l'image avant l'OCR ou définissez `EmbedOriginalImage = false`. | +| Le texte est illisible | Langue non détectée automatiquement | Définissez `ocrEngine.Language = "eng";` (ou votre langue cible) avant `Recognize()`. | + +## Exemple complet fonctionnel (prêt à copier‑coller) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Exécutez le programme, ouvrez `output.pdf` et essayez de rechercher des mots que vous savez présents dans `input.png`. Si tout correspond, vous avez maîtrisé le flux de travail **convertir image en pdf** et appris à **ocr image c#**. + +## Prochaines étapes & sujets connexes + +* **Traitement par lots :** Parcourez un dossier de PNG et fusionnez les résultats en un seul PDF. +* **Formats de sortie alternatifs :** Aspose OCR peut également générer DOCX, TXT, ou PDF/A‑1b consultable. +* **Optimisation des performances :** Utilisez `ocrEngine.RecognitionMode = RecognitionMode.Fast` pour de gros volumes où la précision absolue n'est pas critique. +* **Autres bibliothèques :** Si votre budget est limité, explorez Tesseract .NET—bien que vous perdiez le support PDF/A intégré. + +--- + +### TL;DR + +Nous vous avons montré comment **créer un PDF consultable** à partir d'un PNG en utilisant Aspose OCR en C#. Les étapes sont : + +1. Installer Aspose OCR (`dotnet add package Aspose.OCR`). +2. Charger le PNG et exécuter `ocrEngine.Recognize()` (**extraire le texte du png**). +3. Configurer `PdfSaveOptions` pour PDF/A‑2b (**convertir image en pdf** & **convertir png en pdf**). +4. Enregistrer le fichier et vérifier la couche consultable. + +Essayez-le, ajustez les options, et vous disposerez rapidement d'un pipeline robuste pour transformer n'importe quelle image numérisée en un PDF prêt pour l'archivage et consultable. 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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/french/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..1a767378 --- /dev/null +++ b/ocr/french/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-01-10 +description: Extraire du texte d’une image à l’aide d’Aspose OCR en C#. Apprenez comment + convertir le texte d’un document numérisé avec un traitement par lots et enregistrer + les résultats. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: fr +og_description: Extraire du texte d’une image avec Aspose OCR en C#. Ce tutoriel montre + comment convertir le texte d’un document numérisé en utilisant le traitement par + lots. +og_title: Extraire du texte d’une image en C# – Guide complet Aspose OCR +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Extraire du texte d’une image en C# – Guide complet Aspose OCR +url: /fr/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extraire du texte à partir d'une image – Guide complet Aspose OCR + +Vous avez déjà eu besoin d'**extraire du texte à partir d'une image** mais vous ne saviez pas par où commencer ? Vous n'êtes pas seul ; de nombreux développeurs rencontrent ce problème lorsqu'ils traitent des PDF numérisés, des TIFF multi‑pages ou des reçus basés sur des photos. La bonne nouvelle, c'est qu'avec Aspose OCR vous pouvez **convertir le texte de documents numérisés** en seulement quelques lignes de C#. + +Dans ce tutoriel, nous allons parcourir un scénario réel : prendre un TIFF multi‑pages, exécuter un OCR par lots sur chaque page, et écrire un fichier texte unique contenant le contenu de chaque page. À la fin, vous disposerez d'une application console prête à l'emploi, comprendrez pourquoi chaque étape est importante, et saurez comment ajuster le flux pour des cas particuliers comme des images protégées par mot de passe ou des packs de langues personnalisés. + +## Prérequis + +- .NET 6.0 SDK ou version ultérieure (le code fonctionne également avec .NET Core et .NET Framework) +- Visual Studio 2022 (ou tout éditeur de votre choix) +- Un fichier de licence Aspose OCR (ou vous pouvez utiliser le mode d'évaluation gratuit) +- Un fichier image multi‑pages (par ex., `multipage.tif`) placé dans un dossier que vous pouvez référencer + +Aucun package NuGet supplémentaire n'est requis au-delà de `Aspose.OCR` ; nous l'installerons à la première étape. + +## Étape 1 – Installer Aspose OCR et configurer le projet + +Pour commencer, créez un nouveau projet console et ajoutez la bibliothèque Aspose OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Astuce :** Si vous avez un fichier de licence (`Aspose.OCR.lic`), copiez‑le à la racine du projet. La bibliothèque le détectera automatiquement au moment de l'exécution. + +Pourquoi cette étape ? L'installation du package vous donne accès à `BatchProcessor`, `OcrEngine` et d'autres classes pratiques qui abstraient la gestion d'images de bas niveau. Elle garantit également que vous utilisez les derniers algorithmes OCR fournis par Aspose. + +## Étape 2 – Charger l'image multi‑pages avec BatchProcessor + +`BatchProcessor` est conçu précisément pour ce scénario : itérer sur chaque page d'une image multi‑pages sans que vous ayez à découper manuellement les fichiers. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +Le `BatchProcessor` lit toutes les pages en mémoire, les exposant via `batchProcessor.Pages`. Chaque objet page connaît son numéro (`ocrPage.Number`) que nous utiliserons plus tard pour des en‑têtes clairs. + +## Étape 3 – Préparer un StringBuilder pour accumuler les résultats + +Nous voulons un fichier texte unique contenant la sortie OCR de chaque page, séparée par des en‑têtes. `StringBuilder` est la façon la plus efficace de concaténer des chaînes dans une boucle. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Pourquoi un `StringBuilder` ? Concaténer des chaînes avec `+` dans une boucle allouerait une nouvelle chaîne à chaque itération, nuisant aux performances — surtout avec de gros documents. + +## Étape 4 – Itérer sur chaque page, exécuter l'OCR et ajouter les résultats + +Voici le cœur du tutoriel : parcourir chaque page, reconnaître le texte, et le stocker avec un marqueur de page. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Pourquoi un nouveau `OcrEngine` par page ?** Certains développeurs réutilisent un même moteur et modifient sa propriété `Image`, mais cela peut conserver les paramètres de langue ou les résultats précédents, entraînant des bugs subtils. Instancier un nouveau moteur garantit une base propre. + +### Gestion des cas limites courants + +- **Pages vides :** Si une page ne contient aucun texte reconnaissable, `ocrEngine.Text` sera une chaîne vide. Vous pouvez insérer un espace réservé comme « (No text detected) ». +- **Sélection de la langue :** Par défaut, Aspose OCR utilise l'anglais. Pour traiter l'allemand ou le français, définissez `ocrEngine.Language = Language.German;` avant d'appeler `Recognize()`. +- **Astuce de performance :** Pour les TIFF très volumineux, vous pouvez activer `ocrEngine.UseParallelProcessing = true;` afin d'exploiter plusieurs cœurs. + +## Étape 5 – Écrire la sortie combinée dans un fichier texte + +Enfin, persistez la chaîne accumulée sur le disque. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Le fichier `multipage_result.txt` résultant ressemblera à ceci : + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Vous avez maintenant **extrait du texte à partir d'une image** et efficacement **converti le texte de documents numérisés** en un format consultable et éditable. + +## Bonus – Vue d'ensemble visuelle (Texte alternatif de l'image) + +Ci-dessous se trouve un diagramme de flux simple illustrant le processus. +*Texte alternatif :* « Diagramme montrant comment extraire du texte à partir d'une image en utilisant le traitement par lots Aspose OCR en C# ». + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Si vous publiez ce tutoriel sur un site statique, remplacez le placeholder par un SVG ou PNG réel.)* + +## Questions fréquentes + +**Cette fonctionnalité fonctionne‑t‑elle avec les fichiers PDF ?** +Oui, Aspose OCR peut lire les pages PDF sous forme d'images. Vous devez simplement convertir le PDF en images d'abord, ou utiliser `PdfDocument` de `Aspose.PDF` et fournir l'image rasterisée de chaque page à `OcrEngine`. + +**Que faire si mon TIFF est protégé par mot de passe ?** +`BatchProcessor` ne gère pas le chiffrement directement. Déchiffrez le fichier à l'aide d'une bibliothèque comme `Aspose.Imaging` avant de le transmettre au pipeline OCR. + +**Puis‑je produire du JSON au lieu du texte brut ?** +Absolument. Remplacez la logique `StringBuilder` par un sérialiseur JSON (par ex., `System.Text.Json`) et stockez le texte de chaque page sous une clé `pageNumber`. + +## Exemple complet fonctionnel + +Voici le programme complet que vous pouvez copier‑coller dans `Program.cs`. Il inclut toutes les directives `using`, la gestion des erreurs et les commentaires. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Exécutez le programme avec : + +```bash +dotnet run +``` + +Vous devriez voir le message console confirmant le succès, et le fichier de sortie contiendra les résultats OCR concaténés. + +## Conclusion + +Nous venons de démontrer une méthode pratique pour **extraire du texte à partir d'une image** avec Aspose OCR, transformant tout fichier numérisé multi‑pages en texte brut et consultable. En exploitant `BatchProcessor` et une configuration propre de `OcrEngine` par page, vous pouvez de manière fiable **convertir le texte de documents numérisés** tout en conservant une base de code simple et maintenable. + +N'hésitez pas à expérimenter : essayez différentes langues, passez à une sortie JSON, ou intégrez cette logique dans une API web qui traite les téléchargements à la volée. Le schéma de base reste le même — charger, reconnaître, accumuler et persister. + +Vous avez d'autres questions sur l'OCR, la licence Aspose, ou la gestion de gros lots de documents ? Laissez un commentaire ci‑dessous ou consultez la documentation officielle d'Aspose pour des informations plus détaillées. 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/french/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..1b853e40 --- /dev/null +++ b/ocr/french/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,283 @@ +--- +category: general +date: 2026-01-10 +description: Extraire du texte d’une image avec Aspose OCR en C#. Apprenez comment + charger une image pour l’OCR, reconnaître le texte hindi et exécuter la reconnaissance + OCR en quelques étapes simples. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: fr +og_description: Extraire du texte d’une image avec Aspose OCR en C#. Suivez ce guide + étape par étape pour charger l’image pour l’OCR, reconnaître le texte hindi et exécuter + la reconnaissance OCR. +og_title: Extraire du texte d’une image avec Aspose OCR – Guide complet C# +tags: +- Aspose OCR +- C# +- Image Processing +title: Extraire du texte d’une image avec Aspose OCR – Guide complet C# +url: /fr/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extraire du texte d'une image avec Aspose OCR – Guide complet C# + +Ever needed to **extract text from image** but weren't sure which library to pick? You're not alone—many developers hit that wall when they first tackle OCR in .NET. The good news is that Aspose OCR makes the whole process surprisingly painless, even when you're dealing with complex scripts like Hindi. + +Vous avez déjà eu besoin d'**extraire du texte d'une image** mais vous ne saviez pas quelle bibliothèque choisir ? Vous n'êtes pas seul—de nombreux développeurs rencontrent ce problème lorsqu'ils abordent pour la première fois l'OCR dans .NET. La bonne nouvelle, c'est qu'Aspose OCR rend le processus étonnamment simple, même lorsque vous travaillez avec des scripts complexes comme le hindi. + +In this tutorial we'll walk through everything you need to **load image for OCR**, **recognize Hindi text**, and **run OCR recognition** in C#. By the end, you'll have a ready‑to‑run console app that prints the extracted text straight to the screen. + +Dans ce tutoriel, nous parcourrons tout ce dont vous avez besoin pour **charger une image pour l'OCR**, **reconnaître du texte hindi**, et **exécuter la reconnaissance OCR** en C#. À la fin, vous disposerez d'une application console prête à l'emploi qui affiche le texte extrait directement à l'écran. + +## Ce que vous allez créer + +We'll create a tiny console application that: + +Nous créerons une petite application console qui : + +1. Points the OCR engine at a folder containing language models. + Pointe le moteur OCR vers un dossier contenant les modèles de langue. +2. Turns off automatic downloads—handy for locked‑down environments. + Désactive les téléchargements automatiques—pratique pour les environnements verrouillés. +3. Selects Hindi as the target language. + Sélectionne le hindi comme langue cible. +4. Loads a JPEG (or PNG) that contains Hindi text. + Charge un JPEG (ou PNG) contenant du texte hindi. +5. Executes the recognition pipeline. + Exécute le pipeline de reconnaissance. +6. Writes the resulting string to the console. + Écrit la chaîne résultante dans la console. + +No external services, no cloud keys, just pure on‑premise OCR. + +Pas de services externes, pas de clés cloud, juste de l'OCR purement sur site. + +## Prérequis + +- **.NET 6.0** ou ultérieur (le code fonctionne également avec .NET Framework 4.7+). +- **Aspose.OCR for .NET** package NuGet installé. + ```bash + dotnet add package Aspose.OCR + ``` +- Un dossier nommé `OcrResources` contenant le modèle de langue hindi (`hin.traineddata`). + Vous pouvez le télécharger depuis la page de téléchargement d'Aspose OCR et le placer dans `YOUR_DIRECTORY/OcrResources`. +- Un fichier image (`input.jpg`) avec du texte hindi clair. + À titre d'illustration, imaginez une photo d'une enseigne de magasin affichant « स्वागत है ». + +> **Astuce :** Gardez la résolution de l'image supérieure à 300 dpi ; des résolutions plus faibles peuvent entraîner des caractères manquants. + +--- + +## Étape 1 : Pointer le moteur OCR vers vos ressources – *extraire du texte d'une image* + +The first thing Aspose OCR needs is the location of its language models. If you skip this, the engine will try to download the files automatically—something you might not want in a secured network. + +La première chose dont Aspose OCR a besoin est l'emplacement de ses modèles de langue. Si vous omettez cela, le moteur tentera de télécharger les fichiers automatiquement—ce que vous ne souhaitez peut‑être pas dans un réseau sécurisé. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Why this matters:* By setting `ResourcesPath` you ensure the engine loads the correct trained data locally, which speeds up the first run and eliminates any surprise network traffic. + +*Pourquoi c'est important :* En définissant `ResourcesPath`, vous assurez que le moteur charge localement les données d'entraînement correctes, ce qui accélère la première exécution et élimine tout trafic réseau inattendu. + +--- + +## Étape 2 : Désactiver le téléchargement automatique des ressources – *charger une image pour l'OCR* + +In many corporate environments, outbound internet access is blocked. Aspose OCR respects a flag that stops it from trying to fetch missing files on the fly. + +Dans de nombreux environnements d'entreprise, l'accès Internet sortant est bloqué. Aspose OCR respecte un drapeau qui l'empêche de tenter de récupérer les fichiers manquants à la volée. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +If you forget this line and the Hindi model isn’t present, the engine will throw an exception that looks like “Unable to download required resource”. Keeping the flag `false` gives you a clear, deterministic failure that you can handle yourself. + +Si vous oubliez cette ligne et que le modèle hindi n'est pas présent, le moteur lèvera une exception semblable à « Unable to download required resource ». Garder le drapeau à `false` vous donne un échec clair et déterministe que vous pouvez gérer vous‑même. + +--- + +## Étape 3 : Choisir la langue – *reconnaître du texte hindi* + +Aspose OCR supports dozens of languages, but you have to tell it which one to use. Hindi is identified by `OcrLanguage.Hindi`. + +Aspose OCR prend en charge des dizaines de langues, mais vous devez lui indiquer laquelle utiliser. Le hindi est identifié par `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*What if you need multiple languages?* You can set `Language = OcrLanguage.AutoDetect` to let the engine guess, but auto‑detect is slower and occasionally misfires on mixed scripts. For pure Hindi, explicit selection is the safest bet. + +*Et si vous avez besoin de plusieurs langues ?* Vous pouvez définir `Language = OcrLanguage.AutoDetect` pour laisser le moteur deviner, mais la détection automatique est plus lente et parfois inexacte sur des scripts mixtes. Pour du hindi pur, la sélection explicite est la solution la plus sûre. + +--- + +## Étape 4 : Charger votre image – *charger une image pour l'OCR* + +Now we hand the engine the picture we want to read. Aspose offers a convenient `ImageStream.FromFile` helper that abstracts away the underlying `System.Drawing` dependencies. + +Nous remettons maintenant au moteur l'image que nous voulons lire. Aspose propose un assistant pratique `ImageStream.FromFile` qui masque les dépendances sous‑jacentes de `System.Drawing`. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +If the file path is wrong, Aspose will raise a `FileNotFoundException`. A quick `File.Exists` check before this line can save you a debugging session. + +Si le chemin du fichier est incorrect, Aspose lèvera une `FileNotFoundException`. Un rapide contrôle `File.Exists` avant cette ligne peut vous éviter une session de débogage. + +--- + +## Étape 5 : Exécuter le moteur OCR – *exécuter la reconnaissance OCR* + +With everything configured, we finally kick off the recognition process. This call is synchronous and blocks until the text is extracted. + +Une fois tout configuré, nous lançons enfin le processus de reconnaissance. Cet appel est synchrone et bloque jusqu'à ce que le texte soit extrait. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Behind the scenes, Aspose performs several stages: preprocessing (deskew, noise removal), segmentation, character classification, and finally language‑specific post‑processing. The heavy lifting happens inside this single method call. + +En coulisses, Aspose exécute plusieurs étapes : prétraitement (redressement, suppression du bruit), segmentation, classification des caractères, puis post‑traitement spécifique à la langue. Le travail intensif se fait à l'intérieur de cet appel de méthode unique. + +--- + +## Étape 6 : Afficher le texte extrait – *extraire du texte d'une image* + +The result lives in the `Text` property of the engine. We simply write it to the console, but you could also store it in a database, send it over an API, or feed it into another NLP pipeline. + +Le résultat se trouve dans la propriété `Text` du moteur. Nous l'écrivons simplement dans la console, mais vous pourriez également le stocker dans une base de données, l'envoyer via une API, ou le transmettre à un autre pipeline NLP. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Résultat attendu** (en supposant que l'image contient « स्वागत है ») : + +``` +=== OCR RESULT === +स्वागत है +``` + +If you see garbled characters, double‑check that the Hindi model is correctly placed and that the image isn’t overly compressed. + +Si vous voyez des caractères illisibles, vérifiez que le modèle hindi est correctement placé et que l'image n'est pas trop compressée. + +--- + +## Exemple complet fonctionnel + +Below is the complete program you can copy‑paste into a new console project (`dotnet new console`). Replace `YOUR_DIRECTORY` with the actual path on your machine. + +Voici le programme complet que vous pouvez copier‑coller dans un nouveau projet console (`dotnet new console`). Remplacez `YOUR_DIRECTORY` par le chemin réel sur votre machine. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Conseil :** If you plan to process many images in a loop, instantiate a single `OcrEngine` and reuse it—this cuts down on initialization overhead. + +> **Conseil :** Si vous prévoyez de traiter de nombreuses images dans une boucle, créez une seule instance de `OcrEngine` et réutilisez‑la—cela réduit la surcharge d'initialisation. + +--- + +## Gestion des problèmes courants + +| Problème | Pourquoi cela se produit | Solution rapide | +|----------|--------------------------|-----------------| +| **Sortie vide** | Modèle de langue incorrect ou image de mauvaise qualité. | Vérifiez `ResourcesPath`, augmentez le DPI de l'image, ou essayez `ocrEngine.Image = ImageStream.FromFile(..., true)` pour activer l'amélioration automatique. | +| **Exception : Ressource non trouvée** | Fichier `.traineddata` hindi manquant. | Téléchargez le modèle hindi depuis Aspose, placez‑le dans `OcrResources`, et assurez‑vous que le nom du fichier correspond à `hin.traineddata`. | +| **Caractères illisibles** | Mauvais encodage lors de l'affichage dans la console. | Définissez l'encodage de sortie de la console : `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Lenteur de performance** | Images volumineuses traitées sans redimensionnement. | Redimensionnez l'image à une largeur/hauteur maximale de 2000 px avant de la transmettre à l'OCR. | + +--- + +## Prochaines étapes et sujets associés + +- **Traitement par lots :** Enveloppez le code dans une boucle `foreach` pour gérer un dossier d'images. +- **Langues différentes :** Remplacez `OcrLanguage.Hindi` par `OcrLanguage.English`, `OcrLanguage.Arabic`, etc. +- **Formats de sortie :** Au lieu de `Console.WriteLine`, écrivez dans un fichier texte (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Intégration avec ASP.NET Core :** Exposez un point d'API qui accepte le téléchargement d'une image et renvoie le texte extrait en JSON. + +Toutes ces extensions suivent le même schéma : configurer le moteur, charger une image, reconnaître, et consommer le résultat. + +--- + +## Conclusion + +We’ve just shown how to **extract text from image** using Aspose OCR in C#. The guide covered every step you need to **load image for OCR**, **recognize Hindi text**, and **run OCR recognition**—all in a self‑contained console app. + +Nous venons de montrer comment **extraire du texte d'une image** en utilisant Aspose OCR en C#. Le guide a couvert chaque étape nécessaire pour **charger une image pour l'OCR**, **reconnaître du texte hindi**, et **exécuter la reconnaissance OCR**—le tout dans une application console autonome. + +Give it a try with your own pictures, experiment with different languages, and feel free to adapt the snippet for web services or background jobs. The core idea stays the same: set resources, pick a language, feed an image, and read the `Text` property. + +Essayez-le avec vos propres images, expérimentez différentes langues, et n'hésitez pas à adapter le fragment pour des services web ou des tâches en arrière‑plan. L'idée principale reste la même : définir les ressources, choisir une langue, fournir une image, et lire la propriété `Text`. + +If you hit any snags, check the troubleshooting table above or drop a comment. Happy coding, and may your OCR results always be crystal‑clear! + +Si vous rencontrez des problèmes, consultez le tableau de dépannage ci‑dessus ou laissez un commentaire. Bon codage, et que vos résultats OCR soient toujours d'une clarté cristalline ! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/french/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..aaee41df --- /dev/null +++ b/ocr/french/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Comment exécuter l’OCR sur une image avec Aspose OCR en C#. Apprenez + à extraire le texte d’une image, à lancer l’OCR sur une image et à charger l’image + pour l’OCR avec accélération GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: fr +og_description: Comment exécuter l’OCR sur une image avec Aspose OCR. Ce tutoriel + montre comment extraire du texte d’une image, lancer l’OCR sur l’image et charger + l’image pour l’OCR de manière efficace. +og_title: Comment exécuter l’OCR en C# – Guide complet étape par étape +tags: +- OCR +- C# +- Aspose +title: Comment exécuter l’OCR en C# – Guide complet avec Aspose OCR +url: /fr/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment exécuter l'OCR en C# – Guide complet avec Aspose OCR + +Vous vous êtes déjà demandé **comment exécuter l'OCR** sur une photo et extraire le texte sans perdre patience ? Vous n'êtes pas le seul. Que vous numérisiez des factures, scanniez des reçus ou simplement essayiez de créer un PDF consultable, pouvoir extraire du texte d'une image est un besoin quotidien pour de nombreux développeurs. + +Dans ce tutoriel, nous parcourrons un exemple pratique, de bout en bout, qui montre **comment exécuter l'OCR sur des images** à l'aide de la bibliothèque Aspose OCR, avec accélération GPU pour la rapidité. À la fin, vous saurez exactement comment charger une image pour l'OCR, ajuster l'utilisation de la mémoire et obtenir des résultats en texte brut propre — le tout en quelques minutes de code. + +## Ce que vous apprendrez + +- Comment initialiser le moteur Aspose OCR en C# +- Comment **charger une image pour l'OCR** depuis le disque ou un flux +- Comment activer l'accélération GPU et limiter la mémoire GPU +- Comment **extraire du texte d'une image** et vérifier la sortie +- Pièges courants (module GPU non installé, limites de mémoire) et solutions rapides + +Aucune expérience préalable avec Aspose OCR n'est requise ; il suffit d'un environnement .NET fonctionnel et d'une image d'exemple. + +--- + +## Comment exécuter l'OCR sur une image avec Aspose OCR + +La première chose dont vous avez besoin est un extrait de code clair et exécutable qui fait tout le travail. Vous trouverez ci-dessous le programme complet que vous pouvez copier, coller et exécuter immédiatement. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Sortie attendue** (en supposant que l'image d'exemple contienne la phrase « Hello World ») : + +``` +=== OCR Result === +Hello World +``` + +> **Astuce pro :** Si vous ne voyez aucun texte, vérifiez que le module GPU est installé et que le chemin de l'image est correct. La méthode `ImageStream.FromFile` génère une exception claire si le fichier est introuvable. + +--- + +## Extraire du texte d'une image avec accélération GPU + +Pourquoi se soucier du GPU ? L'OCR uniquement CPU fonctionne, mais il peut être douloureusement lent sur des images grandes ou haute résolution. Activer l'accélération GPU (étape 2 ci‑dessus) confie la charge lourde à votre carte graphique, qui peut traiter des milliers de pixels par seconde. + +### Quand utiliser le GPU + +- **Traitement par lots** – numériser des dizaines de factures en une fois. +- **Scans haute résolution** – tout ce qui dépasse 300 dpi. +- **Applications en temps réel** – comme un scanner mobile qui nécessite un retour instantané. + +Si votre environnement ne dispose pas d'un GPU compatible, il suffit de définir `EnableGpuAcceleration = false;` et le moteur reviendra automatiquement en mode CPU. + +--- + +## Exécuter l'OCR sur une image – charger correctement l'image + +Le chargement de l'image est l'étape **charger une image pour l'OCR** qui fait souvent trébucher les gens. Aspose OCR attend un `ImageStream`, qui peut être créé à partir d'un fichier, d'un flux mémoire ou même d'une URL. Voici quelques variantes : + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Cas particulier :** Certaines images contiennent un canal alpha (transparence) qui perturbe le moteur OCR. Supprimer l'alpha est simple : + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Vous avez maintenant couvert les méthodes les plus courantes pour **charger une image pour l'OCR**, garantissant que le moteur reçoit à chaque fois un format propre et pris en charge. + +--- + +## Conseils pour charger une image pour l'OCR efficacement + +1. **Redimensionner les grandes images** – l'OCR n'a pas besoin d'une photo 4 K ; réduire à une largeur d'environ 1500 px accélère le processus sans nuire à la précision. +2. **Convertir en niveaux de gris** – réduit le bruit et peut améliorer la reconnaissance sur des scans à faible contraste. +3. **Pré‑traiter avec la correction d'inclinaison** – si votre image est inclinée, la correction d'inclinaison intégrée d'Aspose OCR peut être activée via `ocrEngine.Config.EnableDeskew = true;`. + +Ces ajustements sont particulièrement utiles lorsque vous **extrayez du texte d'une image** en masse. + +--- + +## Problèmes courants et comment les résoudre + +| Symptôme | Cause probable | Solution | +|----------|----------------|----------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | module GPU non installé | Installez le package GPU d'Aspose OCR ou désactivez le GPU (`EnableGpuAcceleration = false`). | +| Sortie vide | Chemin de l'image incorrect ou format non pris en charge | Vérifiez le chemin de `ImageStream.FromFile` ; essayez de charger depuis des octets pour vous assurer que le fichier est lu correctement. | +| Erreur de mémoire insuffisante | Limite de mémoire GPU trop basse pour un gros lot | Augmentez `GpuMemoryLimit` (par ex., 2048) ou traitez les images par lots plus petits. | +| Caractères illisibles | L'image contient beaucoup de bruit ou un faible contraste | Pré‑traitez : binarisez, désépissez ou augmentez le DPI avant l'OCR. | + +--- + +## Exemple complet fonctionnel – assemblez le tout + +Voici une application console compacte qui intègre les meilleures pratiques que nous avons abordées : accélération GPU, limitation de la mémoire, pré‑traitement d'image et gestion des erreurs. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +L'exécution de ce programme affiche le texte propre extrait de votre image, démontrant une méthode robuste pour **extraire du texte d'une image** même lorsque la source n'est pas parfaite. + +--- + +## Conclusion + +Nous avons couvert **comment exécuter l'OCR** sur une image avec Aspose OCR, depuis l'initialisation du moteur jusqu'au chargement de l'image, l'activation de l'accélération GPU et la gestion des cas particuliers. Vous disposez maintenant d'une référence solide et digne de citation que vous pouvez copier‑coller dans n'importe quel projet .NET et commencer à **extraire du texte d'une image** immédiatement. + +Prochaines étapes ? Essayez d’alimenter des pages PDF, expérimentez différentes langues (définissez `ocrEngine.Config.Language = "spa"` pour l'espagnol), ou intégrez ce flux dans une API web qui traite les téléchargements à la volée. Le ciel est la limite, et avec les outils que nous avons présentés, vous êtes bien équipé pour relever tout défi OCR. + +Bon codage, et que votre texte soit toujours propre et votre OCR rapide ! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/french/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..66f3199d --- /dev/null +++ b/ocr/french/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-01-10 +description: Comment exécuter rapidement l'OCR et extraire du texte arabe d'une image. + Apprenez à convertir une image en texte, à lire le texte d'un PNG, et découvrez + comment extraire du texte avec Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: fr +og_description: Comment exécuter l'OCR en C# et extraire du texte arabe d'une image + PNG. Ce guide vous montre comment convertir une image en texte et lire le texte + d'un PNG étape par étape. +og_title: Comment exécuter l'OCR en C# – Extraire du texte arabe à partir d'un PNG +tags: +- OCR +- C# +- Aspose +title: Comment exécuter l'OCR en C# – Extraire du texte arabe d’un PNG +url: /fr/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment exécuter l'OCR en C# – Extraire du texte arabe depuis un PNG + +Vous êtes-vous déjà demandé **comment exécuter l'OCR** sur une image contenant des caractères arabes ? Vous n'êtes pas seul. De nombreux développeurs se heurtent à un mur lorsqu'ils doivent **extraire du texte arabe** d'un PNG sans savoir quelle bibliothèque gère correctement les scripts de droite à gauche sans prise de tête. + +Dans ce tutoriel, nous passerons en revue tout ce que vous devez savoir pour **convertir une image en texte**, **lire du texte depuis un PNG**, et enfin **comment extraire du texte** à l'aide d'Aspose.OCR dans une application console C# propre. À la fin, vous disposerez d’un programme prêt à l’emploi qui affiche la chaîne arabe directement dans votre terminal. + +## Ce que vous allez apprendre + +- Installer et référencer le package NuGet Aspose.OCR. +- Configurer le moteur OCR pour la prise en charge de la langue arabe. +- Charger une image PNG et lancer le processus de reconnaissance. +- Récupérer et afficher le texte extrait. +- Ajuster les paramètres pour une meilleure précision et gérer les pièges courants. + +Aucune expérience préalable avec l'OCR n'est requise, juste une compréhension de base du C# et un environnement de développement .NET (Visual Studio, Rider ou le CLI `dotnet` suffiront). + +--- + +## Comment exécuter l'OCR – Configuration d'Aspose OCR + +### Étape 1 : Ajouter le package NuGet Aspose.OCR + +La première chose dont nous avons besoin est la bibliothèque OCR elle‑même. Aspose.OCR est un produit commercial, mais il propose une version d’essai gratuite qui fonctionne parfaitement à des fins d’apprentissage. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Vous pouvez également ouvrir le **Gestionnaire de packages NuGet** dans Visual Studio, rechercher **Aspose.OCR**, puis cliquer sur **Installer**. + +> **Astuce :** Si vous prévoyez d’utiliser la bibliothèque dans un pipeline CI, ajoutez le drapeau `-v` pour verrouiller la version, par ex., `dotnet add package Aspose.OCR -v 23.10`. + +### Étape 2 : Créer un nouveau projet console (si vous n’en avez pas) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Vous avez maintenant un fichier `Program.cs` frais, prêt pour notre code. + +--- + +## Extraction du texte arabe – Écriture du code OCR + +Voici le programme complet, prêt à l’exécution. Enregistrez‑le sous le nom `Program.cs` (ou remplacez le fichier auto‑généré). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Pourquoi chaque ligne est importante + +- **`OcrEngine`** : La classe centrale qui coordonne le chargement d’image, la sélection de la langue et la reconnaissance. +- **`Language = OcrLanguage.Arabic`** : L’arabe utilise un script de droite à gauche et des glyphes uniques ; définir la langue indique au moteur d’appliquer les modèles de caractères appropriés. +- **`ImageStream.FromFile`** : Gère PNG, JPEG, BMP et bien d’autres formats. Si vous devez lire depuis un `MemoryStream` (par ex., un fichier téléchargé), remplacez cet appel en conséquence. +- **`Recognize()`** : Effectue le travail lourd — analyse des pixels, segmentation et classification des caractères. +- **`ocrEngine.Text`** : La chaîne Unicode finale, prête pour un traitement ultérieur, un stockage ou un affichage. + +### Résultat attendu + +Si `arabic_sample.png` contient la phrase « مرحبا بالعالم » (Hello World), la console affichera : + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Si la sortie apparaît corrompue, vérifiez que l’image est nette, que la langue est bien réglée sur l’arabe, et que la version du moteur OCR correspond à la documentation. + +--- + +## Conversion d’image en texte – Optimiser la précision + +Si les paramètres par défaut fonctionnent pour la plupart des scans propres, les images du monde réel nécessitent souvent un petit ajustement supplémentaire. + +| Paramètre | Fonction | Quand l’utiliser | +|-----------|----------|-------------------| +| `ocrEngine.Config.Preprocess = true` | Active la binarisation automatique et la suppression du bruit. | Documents scannés avec des ombres. | +| `ocrEngine.Config.Deskew = true` | Fait pivoter l’image pour corriger une légère inclinaison. | Photos prises sous un angle. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Traite l’ensemble de l’image comme un seul bloc de texte. | Légendes simples ou étiquettes d’une seule ligne. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Limite la reconnaissance aux seuls caractères arabes. | Réduit les faux positifs sur des pages multilingues. | + +Vous pouvez ajouter ces lignes juste après la création du moteur : + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Lecture du texte depuis un PNG – Gestion de différentes sources d’image + +Parfois le PNG se trouve dans une base de données ou provient d’une requête web. Voici une variante rapide qui lit depuis un `byte[]` : + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Le reste du flux reste identique, ce qui signifie que **comment extraire du texte** reste cohérent quel que soit la source. + +--- + +## Comment extraire du texte – Options avancées & cas limites + +### 1. PDFs ou TIFFs multi‑pages + +Si vous devez OCRiser un document multi‑pages, bouclez sur chaque page : + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Note :** Vous aurez besoin du package `Aspose.PDF` pour cet extrait. + +### 2. Détection automatique de la langue + +Aspose.OCR propose également la détection automatique, mais elle est plus lente. Si vous n’êtes pas sûr que l’image contienne de l’arabe ou un autre script, activez‑la : + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +Le moteur testera chaque modèle de langue et choisira le meilleur correspondance. + +### 3. Conseils de performance + +- **Réutilisez l’objet `OcrEngine`** pour plusieurs images ; créer une nouvelle instance à chaque fois ajoute du surcoût. +- **Exécutez en parallèle** uniquement si vous avez des instances de moteur distinctes par thread — partager une même instance provoque des conditions de concurrence. + +--- + +## Conclusion + +Nous avons couvert **comment exécuter l'OCR** en C# de bout en bout, en vous montrant comment **extraire du texte arabe**, **convertir une image en texte**, **lire du texte depuis un PNG**, et répondre à **comment extraire du texte** dans diverses situations. Le code d’exemple est complet, autonome, et prêt à être collé dans n’importe quel projet console .NET. + +Et après ? Essayez de remplacer `OcrLanguage.Arabic` par le coréen ou le serbe cyrillique pour découvrir la puissance multilingue de la bibliothèque. Expérimentez avec les drapeaux de prétraitement pour améliorer la précision sur des scans bruyants, ou intégrez la routine OCR dans une API web afin que les utilisateurs puissent télécharger des images et obtenir instantanément le texte. + +Bon codage, et que vos résultats OCR soient toujours d’une clarté cristalline ! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/french/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..a9b83675 --- /dev/null +++ b/ocr/french/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-01-10 +description: Apprenez à reconnaître le texte à partir d’une image, à extraire les + coordonnées du texte et à convertir un reçu en JSON à l’aide d’Aspose OCR en C#. + Tutoriel étape par étape. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: fr +og_description: reconnaître le texte d'une image en C# avec Aspose OCR. Ce guide montre + comment extraire le texte, obtenir les coordonnées et convertir le reçu en JSON. +og_title: Reconnaître le texte à partir d'une image – Tutoriel complet OCR C# +tags: +- OCR +- C# +- Aspose +title: Reconnaître du texte à partir d'une image en C# – Guide complet de l'OCR et + du JSON +url: /fr/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# reconnaître du texte à partir d'une image – Tutoriel complet C# OCR + +Vous avez déjà eu besoin de reconnaître du texte à partir d'une image mais vous ne saviez pas quelle bibliothèque choisir ? Vous n'êtes pas seul. Dans de nombreuses applications réelles — suiveurs de dépenses, scanners de reçus ou archivistes de documents — extraire du texte de manière fiable est le premier obstacle. + +Dans ce tutoriel, nous allons parcourir **comment extraire du texte**, récupérer ses boîtes englobantes, et enfin **convertir le reçu en JSON** en utilisant Aspose.OCR pour .NET. À la fin, vous disposerez d'un projet C# autonome qui prend une photo d'un reçu et génère un fichier JSON propre avec les scores de confiance et les coordonnées. + +## Ce dont vous avez besoin + +Avant de plonger, assurez‑vous d’avoir les éléments suivants sur votre machine : + +- **.NET 6.0 SDK** (ou toute version ultérieure). Les anciens frameworks fonctionnent aussi, mais .NET 6 est le point idéal pour les bibliothèques modernes. +- **Visual Studio 2022** ou VS Code avec l'extension C#. +- **Aspose.OCR for .NET** package NuGet (`Aspose.OCR` et `Aspose.OCR.Output`). Vous pouvez l'installer via la console du gestionnaire de packages : + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Une image de reçu d'exemple (par ex., `receipt.jpg`) placée dans un dossier que vous référencerez plus tard. + +C’est tout — pas de SDK supplémentaires, pas de binaires natifs, juste du code géré pur. + +## Étape 1 : Créer un nouveau projet console + +Tout d'abord, créez une application console. C’est le moyen le plus rapide de tester l'OCR sans surcharge d'interface utilisateur. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Astuce :** Gardez le dossier du projet propre ; créez un sous‑dossier appelé `Resources` et déposez `receipt.jpg` à l'intérieur. Cela rend la gestion des chemins sans effort. + +## Étape 2 : Charger l'image du reçu + +Maintenant nous **reconnaissons réellement du texte à partir d'une image**. La première étape consiste à pointer le moteur OCR vers le fichier. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Pourquoi enveloppons‑nous le chargement dans une simple vérification d'existence ? Parce qu'en production vous traitez souvent des téléchargements d'utilisateurs qui peuvent être manquants ou corrompus. Détecter le problème tôt vous évite des exceptions obscures plus tard. + +## Étape 3 : Effectuer l'OCR – **reconnaître du texte à partir d'une image** + +Avec l'image en mémoire, nous demandons à Aspose de **reconnaître du texte à partir d'une image**. Cette opération est synchrone et renvoie un ensemble de résultats riche. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +En coulisses, Aspose exécute un réseau neuronal entraîné sur des millions de caractères. Le moteur remplit `ocrEngine.Text`, `ocrEngine.RecognitionResult` et une collection d'objets `OcrRegion` contenant les coordonnées. C’est exactement ce dont nous avons besoin pour l’étape suivante. + +## Étape 4 : **Comment extraire du texte** – Obtenir la chaîne brute + +Si vous ne vous souciez que du texte brut (peut‑être pour une recherche rapide), vous pouvez le récupérer directement depuis le moteur : + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Vous remarquerez des sauts de ligne là où l'OCR a détecté des limites de paragraphe. Dans de nombreux scénarios de numérisation de reçus, la chaîne brute suffit pour extraire les totaux, dates ou noms de fournisseurs à l'aide de simples expressions régulières. + +## Étape 5 : **extraire les coordonnées du texte** – Boîtes englobantes pour chaque mot + +Souvent vous devez savoir *où* sur l'image se trouve un morceau de texte particulier — par exemple, pour mettre en évidence le montant total dans une interface. Aspose nous fournit cela via des objets `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Remarquez que nous parcourons **extraire les coordonnées du texte** pour chaque segment reconnu. Les coordonnées sont relatives à l'image originale, vous pouvez donc les superposer sur un canevas graphique ou un élément HTML ``. + +## Étape 6 : **convertir le reçu en JSON** – Enregistrement des résultats détaillés + +Vient maintenant la partie qui relie tout : nous voulons une structure lisible par machine incluant le texte, les scores de confiance et les boîtes englobantes. Aspose fournit `JsonSaveOptions` qui simplifient cela. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Le fichier résultant ressemble à ceci (abrégé pour la concision) : + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Vous avez maintenant un artefact **convertir le reçu en JSON** qui peut être alimenté dans des services en aval — pensez aux API de rapports de dépenses, aux pipelines d'analyse, ou même à une interface simple qui dessine des rectangles autour de chaque mot. + +## Exemple complet fonctionnel + +En assemblant toutes les pièces, voici le `Program.cs` complet que vous pouvez copier‑coller dans votre projet : + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Exécutez le programme (`dotnet run`) et observez la sortie console. Ouvrez `Resources/receipt.json` pour vérifier la structure. + +## Questions fréquentes & cas limites + +- **Que faire si l'image est floue ?** + Aspose OCR fonctionne mieux avec 300 dpi ou plus. Si vous obtenez de faibles scores de confiance, envisagez d'appliquer un filtre de netteté avant d'alimenter l'image au moteur. + +- **Puis-je reconnaître plusieurs langues ?** + Oui. Définissez `ocrEngine.Language = Language.English | Language.Spanish;` avant d'appeler `Recognize()`. + +- **Comment limiter la sortie aux seuls nombres (par ex., totaux) ?** + Après avoir le texte brut, exécutez une expression régulière comme `\d+\.\d{2}` sur `ocrEngine.Text`. Comme nous disposons déjà des coordonnées, vous pouvez mapper la chaîne correspondante à sa région pour la mise en évidence visuelle. + +- **Le format JSON est‑il personnalisable ?** + La classe `JsonSaveOptions` expose quelques indicateurs. Si vous avez besoin d'un schéma totalement personnalisé, vous pouvez parcourir `ocrEngine.RecognitionResult.Regions` et sérialiser les objets vous‑même avec `System.Text.Json`. + +## Conclusion + +Nous venons de démontrer comment **reconnaître du texte à partir d'une image** en C# avec Aspose.OCR, **comment extraire du texte**, récupérer les **coordonnées du texte extrait**, et enfin **convertir le reçu en JSON**. L’ensemble du flux réside dans une seule application console facile à exécuter, ce qui la rend parfaite pour les prototypes ou comme bloc de construction dans des systèmes plus grands. + +Prochaines étapes ? Essayez d’alimenter le JSON dans un front‑end qui dessine les boîtes englobantes, ou branchez la sortie dans un service de rapports de dépenses. Vous pouvez également expérimenter différents formats d'image (PNG, TIFF) ou traiter par lots un dossier de reçus. + +Vous avez d’autres questions sur l’OCR, Aspose ou la manipulation du JSON ? Laissez un commentaire ci‑dessous, et bon codage ! + +![Exemple d'image de reçu pour reconnaître du texte à partir d'une image](receipt.jpg "Exemple d'image de reçu") + +{{< /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/net/ocr-configuration/_index.md b/ocr/german/net/ocr-configuration/_index.md index cd1f09d6..0f2d9a45 100644 --- a/ocr/german/net/ocr-configuration/_index.md +++ b/ocr/german/net/ocr-configuration/_index.md @@ -39,9 +39,12 @@ Nutzen Sie mit Aspose.OCR die Leistungsfähigkeit der OCR-Bilderkennung in .NET. Nutzen Sie leistungsstarke OCR-Funktionen mit Aspose.OCR für .NET. Extrahieren Sie nahtlos Text aus Bildern. ### [OCROperation mit Liste in der OCR-Bilderkennung](./ocr-operation-with-list/) Nutzen Sie das Potenzial von Aspose.OCR für .NET. Führen Sie mühelos eine OCR-Bilderkennung mit Listen durch. Steigern Sie die Produktivität und Datenextraktion in Ihren Anwendungen. +### [Einbetten von Ressourcen in .NET lesen – Vollständige Anleitung zum Setzen der Aspose-Lizenz](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Erfahren Sie, wie Sie eingebettete Ressourcen in .NET auslesen und die Aspose-Lizenz korrekt setzen. + {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/german/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..c5f6fe0d --- /dev/null +++ b/ocr/german/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-01-10 +description: Lese eingebettete Ressource und setze die Aspose‑Lizenz in C#. Erfahre, + wie man GetManifestResourceStream verwendet, eine Lizenzdatei einbettet und die + ausführende Assembly in .NET in einem einzigen Tutorial ermittelt. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: de +og_description: Lesen Sie eingebettete Ressourcen in .NET und setzen Sie die Aspose‑Lizenz + schnell. Schritt‑für‑Schritt‑Anleitung zu GetManifestResourceStream, Einbetten der + Lizenz und Verwendung der ausführenden Assembly. +og_title: Eingebettete Ressource lesen – Aspose-Lizenz in .NET festlegen +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Eingebettete Ressource in .NET lesen – Vollständige Anleitung zum Setzen der + Aspose‑Lizenz +url: /de/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Eingebettete Ressource lesen – Komplettanleitung zum Setzen der Aspose‑Lizenz + +Haben Sie jemals **eingebettete Ressource lesen** zur Laufzeit benötigt und sich gefragt, wie Sie Ihre Aspose OCR‑Bibliothek lizenzieren können, ohne Pfade hart zu kodieren? Sie sind nicht allein. In vielen Unternehmens‑Apps befindet sich die Lizenzdatei innerhalb der Assembly, sodass Sie keine zusätzlichen Dateien ausliefern oder sich um fehlende Berechtigungen sorgen müssen. Dieses Tutorial zeigt Ihnen genau, wie Sie eine eingebettete Ressource lesen und die Aspose‑Lizenz mit der .NET‑Methode `GetManifestResourceStream` setzen. + +Wir gehen Schritt für Schritt durch alles, was Sie benötigen: das Einbetten der `.lic`‑Datei, das Auslesen mit `GetExecutingAssembly` und schließlich das Anwenden auf die Aspose OCR‑`License`‑Klasse. Am Ende haben Sie eine eigenständige Lösung, die in jedem .NET‑Projekt funktioniert – ohne externe Dateien. + +## Was Sie lernen werden + +- **Wie man eine Lizenzdatei** in ein .NET‑Projekt einbettet, sodass sie Teil der kompilierten DLL wird. +- Der korrekte Weg, **GetManifestResourceStream zu verwenden**, um diese eingebettete Ressource zu lesen. +- Wie man **Aspose‑Lizenz** programmgesteuert setzt, ohne das Dateisystem zu berühren. +- Tipps zum Umgang mit häufigen Stolperfallen wie falsch geschriebenen Ressourcennamen oder fehlenden Build‑Aktionen. +- Ein vollständiges, ausführbares Code‑Beispiel, das Sie in Ihre eigene Lösung übernehmen können. + +### Voraussetzungen + +- .NET 6.0 oder höher (der Code funktioniert auch mit .NET Framework 4.x, passen Sie lediglich die Projektdatei an). +- Aspose.OCR‑NuGet‑Paket installiert (`dotnet add package Aspose.OCR`). +- Grundlegende Kenntnisse in C# und Visual Studio (oder Ihrer bevorzugten IDE). + +Wenn Sie diese Voraussetzungen bereits erfüllt haben, großartig – lassen Sie uns loslegen. + +## Schritt 1: Die Aspose‑Lizenzdatei in Ihre Assembly einbetten + +Das Erste, was Sie benötigen, ist die eigentliche Lizenzdatei (`Aspose.OCR.lic`). Anstatt sie neben Ihrer ausführbaren Datei zu kopieren, betten Sie sie als **Ressource** ein. + +1. Fügen Sie die `.lic`‑Datei zu Ihrem Projekt hinzu (z. B. erstellen Sie einen Ordner `Resources` und legen die Datei dort ab). +2. Stellen Sie in den Dateieigenschaften **Build Action** auf `Embedded Resource`. + *Pro‑Tipp:* Halten Sie die Ordnerstruktur einfach; der vollqualifizierte Ressourcenname wird `YourNamespace.Resources.Aspose.OCR.lic` sein. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Warum einbetten? Weil die Assembly die Lizenz nun intern trägt und das Risiko einer fehlenden Datei auf einem Produktions‑Server eliminiert. + +## Schritt 2: Die eingebettete Ressource mit GetExecutingAssembly abrufen + +Da die Lizenz jetzt in der DLL liegt, benötigen Sie eine Möglichkeit, **eingebettete Ressource lesen** zur Laufzeit. Die .NET‑Klasse `Assembly` liefert genau das. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +Die Methode `GetExecutingAssembly` gibt die Assembly zurück, die gerade ausgeführt wird – perfekt, um Ressourcen zu finden, die neben Ihrem Code liegen. + +## Schritt 3: Den Lizenz‑Stream mit GetManifestResourceStream öffnen + +Mit dem Assembly‑Verweis in der Hand können Sie `GetManifestResourceStream` aufrufen. Diese Methode liefert einen `Stream`, den Sie direkt an Aspose übergeben können. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Beachten Sie, dass wir eine **null‑bedingte** `using`‑Anweisung (`using Stream?`) verwenden, um sicherzustellen, dass der Stream automatisch freigegeben wird. Ist der Name falsch, werfen wir eine klare Ausnahme – das verhindert stille Fehler später. + +## Schritt 4: Die Lizenz auf Aspose OCR anwenden + +Die `License`‑Klasse von Aspose erwartet einen `Stream`. Da wir bereits einen haben, ist der letzte Schritt unkompliziert. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Das war’s! Die Aspose OCR‑Engine ist nun vollständig lizenziert und bereit, Bilder ohne Wasserzeichen der Testversion zu verarbeiten. + +## Voll funktionsfähiges Beispiel + +Unten finden Sie ein komplettes, copy‑and‑paste‑bereites Programm, das den gesamten Prozess demonstriert. Es enthält die notwendigen `using`‑Direktiven, Fehlerbehandlung und einen einfachen OCR‑Aufruf, um zu zeigen, dass die Lizenz aktiv ist. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Erwartete Ausgabe + +Wenn Sie das Programm auf einem Rechner mit einer gültigen, eingebetteten Lizenz ausführen, sollten Sie Folgendes sehen: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Kann der Lizenz‑Stream nicht gefunden werden, gibt die Konsole den fehlenden Ressourcennamen aus und weist Sie darauf hin, die **Build Action** und den Namespace zu überprüfen. + +## Häufige Stolperfallen & wie man sie vermeidet + +| Problem | Warum es passiert | Lösung | +|---------|-------------------|--------| +| **Ressourcenname stimmt nicht** | .NET erzeugt den Ressourcennamen aus dem Standard‑Namespace + Ordnerpfad. | Verwenden Sie `Assembly.GetManifestResourceNames()`, um verfügbare Namen aufzulisten und den genauen String zu prüfen. | +| **Lizenzdatei nicht als Embedded Resource gesetzt** | Die Standard‑Build‑Action ist `Content`. | Ändern Sie sie in den Dateieigenschaften zu `Embedded Resource`. | +| **Ausführung aus einer anderen Assembly** | Wenn Sie den Code aus einer Klassenbibliothek aufrufen, liefert `GetExecutingAssembly()` möglicherweise die Bibliothek statt der Haupt‑Exe. | Nutzen Sie `Assembly.GetEntryAssembly()` oder übergeben Sie explizit die korrekte Assembly. | +| **Stream vor der Nutzung freigegeben** | Durch versehentliche Verwendung eines `using`‑Blocks, der den Stream zu früh schließt. | Halten Sie das `using` um den Aufruf von `SetLicense` wie oben gezeigt. | +| **Aspose.OCR‑Versionskonflikt** | Neuere Versionen können ein anderes Lizenzformat erfordern. | Laden Sie stets die neueste Lizenz von Ihrem Aspose‑Konto herunter und betten Sie sie erneut ein. | + +## Die gleiche Technik für andere eingebettete Dateien verwenden + +Das Muster – **eingebettete Ressource lesen**, dann **GetManifestResourceStream verwenden** – funktioniert für jede Dateityp: JSON‑Konfigurationen, Bilder, sogar native DLLs. Passen Sie einfach `resourceName` und die Art, wie Sie den Stream konsumieren, an. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Visueller Überblick + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt‑Text:* Eingebettete Ressource lesen – Diagramm zeigt Einbetten, Abrufen mit GetManifestResourceStream und Anwenden der Aspose‑Lizenz. + +## Zusammenfassung + +Wir haben behandelt, wie man **eingebettete Ressource lesen** in einer .NET‑Assembly durchführt, die genauen Schritte zur **Verwendung von GetManifestResourceStream** und den sauberen Weg, **Aspose‑Lizenz** zu setzen, ohne Dateien auf der Festplatte offenzulegen. Durch das Einbetten der Lizenz beseitigen Sie Deploy‑Probleme und halten Ihre Anwendung portabel. + +## Was kommt als Nächstes? + +- **Lizenz‑Updates automatisieren:** Schreiben Sie ein kleines Build‑Zeit‑Skript, das die eingebettete `.lic`‑Datei ersetzt, wenn Sie Ihr Aspose‑Abonnement erneuern. +- **Ressource sichern:** Verschlüsseln Sie die Lizenz vor dem Einbetten und entschlüsseln Sie sie zur Laufzeit für zusätzlichen Schutz. +- **Weitere Aspose‑Produkte erkunden:** Der gleiche Ansatz funktioniert für Aspose.Words, Aspose.PDF usw., jeweils mit ihrer eigenen `License`‑Klasse. + +Probieren Sie es aus – vielleicht betten Sie mehrere Lizenzen für verschiedene Module ein oder wechseln zu einem konfigurationsgesteuerten Ressourcennamen. Der Himmel ist die Grenze. + +--- + +*Viel Spaß beim Coden! Wenn Sie auf Probleme stoßen, hinterlassen Sie einen Kommentar unten oder schauen Sie im Aspose‑Forum nach weiteren Beispielen.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/german/net/skew-angle-calculation/_index.md index 4dd29181..7d4226c8 100644 --- a/ocr/german/net/skew-angle-calculation/_index.md +++ b/ocr/german/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ Entdecken Sie Aspose.OCR für .NET, eine leistungsstarke OCR-Lösung für die ge Nutzen Sie die Leistungsfähigkeit von Aspose.OCR für .NET, einer robusten Lösung für die Bilderkennung. Erfahren Sie, wie Sie Schräglaufwinkel mühelos berechnen. ### [Berechnen Sie den Schrägwinkel aus URI in der OCR-Bilderkennung](./calculate-skew-angle-from-uri/) Entdecken Sie Aspose.OCR für .NET, um Schräglaufwinkel bei der OCR-Bilderkennung mühelos zu berechnen. Verbessern Sie Ihre Projekte mit Präzision und Effizienz. +### [Wie man ein Bild in C# begradigt – Vollständiger OCR-Vorverarbeitungsleitfaden](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Erfahren Sie, wie Sie Bildverzerrungen in C# entfernen und die OCR-Genauigkeit durch umfassende Vorverarbeitung steigern. {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/german/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..8c498ade --- /dev/null +++ b/ocr/german/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-01-10 +description: Wie man ein Bild entneigt und OCR‑Ergebnisse mit Aspose.OCR verbessert. + Lernen Sie, das Bild für OCR vorzubereiten, Rauschen aus dem Scan zu entfernen und + Text aus dem Scan zu erkennen. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: de +og_description: Wie man ein Bild entsteilt und die OCR‑Genauigkeit verbessert. Dieser + Leitfaden zeigt, wie man ein Bild für OCR vorverarbeitet, Rauschen aus dem Scan + entfernt und Text aus dem Scan mit Aspose.OCR erkennt. +og_title: Wie man ein Bild in C# entzerrt – Vollständiger Leitfaden zur OCR‑Vorverarbeitung +tags: +- OCR +- C# +- Image Processing +title: Wie man ein Bild in C# entzerrt – Vollständiger Leitfaden zur OCR‑Vorverarbeitung +url: /de/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Bilder in C# entneigt – Vollständiger OCR‑Vorverarbeitungs‑Leitfaden + +Haben Sie sich jemals gefragt, **wie man Bilddateien entneigt**, bevor man sie an eine OCR‑Engine übergibt? Sie sind nicht der Einzige. Gescannte Dokumente sind oft schief, verrauscht oder haben geringen Kontrast, und das beeinträchtigt jede Texterkennungs‑Versuch. + +In diesem Tutorial führen wir ein vollständiges, ausführbares Beispiel durch, das **Bild für OCR vorverarbeitet**, Rauschen aus dem Scan entfernt und schließlich **Text aus dem Scan erkennt** mithilfe der Aspose.OCR‑Bibliothek. Am Ende haben Sie ein klares Bild davon, **wie man OCR** in C# verwendet, während der Code kurz und prägnant bleibt. + +> **Profi‑Tipp:** Schon eine kleine Drehung (5‑10°) kann die OCR‑Genauigkeit um 30 % oder mehr reduzieren. Das Entneigen ist der erste Schritt, den Sie niemals überspringen sollten. + +--- + +## Was Sie benötigen + +- **.NET 6+** (der Code funktioniert auch unter .NET Framework, aber .NET 6 ist das aktuelle LTS) +- **Aspose.OCR für .NET** – Sie können es von NuGet holen (`Install-Package Aspose.OCR`) +- Eine Beispiel‑TIFF/PNG/JPEG, die gedreht oder verrauscht ist (wir verwenden `noisy_rotated.tif` im Beispiel) +- Beliebige IDE – Visual Studio, Rider oder VS Code reicht aus + +Das war’s. Keine zusätzlichen Bibliotheken, keine externen Dienste. + +--- + +## Schritt 1 – Quellbild laden (Warum das wichtig ist) + +Bevor wir **Bild entneigen** können, müssen wir es in einen Aspose `ImageStream` einlesen. Dieses Objekt abstrahiert die Dateiein‑ und -ausgabe und stellt der OCR‑Engine eine konsistente Schnittstelle bereit. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Warum zuerst laden?* Weil alle nachfolgenden Filter auf einem Bild im Speicher arbeiten. Wenn die Datei nicht gelesen werden kann, bricht die gesamte Pipeline zusammen. + +--- + +## Schritt 2 – Vorverarbeitungspipeline erstellen (Entneigen + Rauschentfernung + Kontrast) + +Ein robustes OCR‑Workflow verkettet normalerweise mehrere Filter. Hier **verarbeiten wir das Bild für OCR vor** und, noch wichtiger, **wie man Bild automatisch entneigt**. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Warum diese drei?** +- **DeskewFilter** löst das Problem „wie man Bild entneigt“ automatisch; Sie müssen den Winkel nicht schätzen. +- **DenoiseFilter** adressiert die Anforderung „Rauschen aus dem Scan entfernen“, das sonst Phantom‑Zeichen erzeugt. +- **ContrastBoostFilter** hilft der OCR‑Engine, dunklen Text von einem hellen Hintergrund zu unterscheiden, ein klassisches Problem, wenn Sie *Bild für OCR vorverarbeiten*. + +--- + +## Schritt 3 – Pipeline anwenden (Transformation sehen) + +Jetzt führen wir die Filter tatsächlich aus. Das zurückgegebene `processedImage` ist das, was wir an die OCR‑Engine übergeben. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Wenn Sie `cleaned_output.tif` öffnen, sollten Sie feststellen, dass der Text gerade, weniger körnig und mit höherem Kontrast ist. Diese visuelle Kontrolle ist praktisch, wenn Sie *Rauschen aus dem Scan entfernen* und bestätigen möchten, dass das Entneigen funktioniert hat. + +--- + +## Schritt 4 – OCR‑Engine erstellen und konfigurieren (Wie man OCR verwendet) + +Mit einem bereinigten Bild in der Hand instanziieren wir `OcrEngine`. Dies ist das Kernstück von **wie man OCR** mit Aspose verwendet. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Warum `AutoPageSegmentation` setzen?* Weil viele Scans Tabellen oder mehrere Spalten enthalten. Das Einschalten lässt die Engine die Seite intelligent aufteilen, was das Endergebnis von **Text aus dem Scan erkennen** verbessert. + +--- + +## Schritt 5 – Erkennungsprozess ausführen (Endlich Text erkennen) + +Jetzt der entscheidende Moment: Wir lassen die Engine den Text lesen. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Wenn alles reibungslos verlief, sehen Sie einen sauberen Textblock, der dem Originaldokument entspricht. Das ist die Belohnung für korrektes **Entneigen des Bildes**, **Entfernen von Rauschen** und **Vorverarbeiten des Bildes für OCR**. + +--- + +## Schritt 6 – Vollständiges funktionierendes Beispiel (Kopier‑ und Einfüge‑bereit) + +Unten finden Sie das komplette Programm, bereit zum Kompilieren. Ersetzen Sie einfach den Dateipfad und Sie können loslegen. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Erwartete Ausgabe** (aus Gründen der Kürze gekürzt): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Wenn die Ausgabe unleserlich aussieht, prüfen Sie, ob das Quellbild nicht um mehr als 30° gedreht ist, oder erhöhen Sie `DeskewFilter.MaxAngle`. + +--- + +## Häufig gestellte Fragen (Randfälle & Variationen) + +| Frage | Antwort | +|----------|--------| +| **Was, wenn mein Scan um 45° gedreht ist?** | `DeskewFilter` begrenzt sich auf `MaxAngle`. Erhöhen Sie ihn (z. B. `MaxAngle = 60`) oder drehen Sie das Bild vorab mit einer Grafikbibliothek, bevor Sie es in die Pipeline geben. | +| **Kann ich PDFs seitenweise verarbeiten?** | Ja. Konvertieren Sie jede PDF‑Seite in ein Bild (z. B. mit `Aspose.Pdf`) und führen Sie die gleiche Pipeline für jedes Bitmap aus. | +| **Mein Dokument ist auf Französisch – muss ich etwas ändern?** | Setzen Sie `ocrEngine.Language = Language.French;` oder laden Sie ein benutzerdefiniertes Sprachpaket. Der Rest der Pipeline bleibt unverändert. | +| **Gibt es eine Möglichkeit, die Originalauflösung beizubehalten?** | `PreprocessPipeline` arbeitet mit dem Original‑Bitmap und bewahrt die DPI. Vermeiden Sie einfach den Aufruf von `ImageStream.Resize`, es sei denn, Sie müssen aus Leistungsgründen verkleinern. | +| **Wie wirkt sich das Kontrast‑Boosting auf farbige Scans aus?** | `ContrastBoostFilter` arbeitet auf jedem Kanal; es ist sicher für Graustufen‑ oder Farbbilder, Sie können das Bild jedoch auch zuerst mit `new GrayscaleFilter()` in Graustufen konvertieren. | + +--- + +## Bildbeispiel (Visuelle Hilfe) + +![Beispiel zum Entneigen von Bildern](/images/deskew-example.png) + +*Das Bild zeigt ein Vorher/Nachher einer um 12° gedrehten, verrauschten Aufnahme, die entneigt und bereinigt wurde.* + +--- + +## Fazit + +Wir haben **wie man Bild entneigt** mit Aspose.OCR behandelt, eine vollständige **Bild‑vorverarbeitung für OCR**‑Pipeline demonstriert, gezeigt, wie man **Rauschen aus dem Scan entfernt**, und schließlich **Text aus dem Scan erkennt** mit wenigen Zeilen C#. Durch die Verkettung von `DeskewFilter`, `DenoiseFilter` und `ContrastBoostFilter` erhalten Sie ein bereinigtes Bitmap, das der OCR‑Engine ermöglicht, ihre Arbeit zu erledigen, ohne an Artefakten zu ersticken. + +Nächste Schritte? Experimentieren Sie mit unterschiedlichen Filterstärken, fügen Sie einen `BinarizationFilter` für reine Schwarz‑Weiß‑Ausgabe hinzu oder geben Sie das bereinigte Bild an eine nachgelagerte NLP‑Pipeline weiter. Das gleiche Muster funktioniert ebenso für Quittungen, Reisepässe und historische Dokumente. + +Haben Sie weitere Fragen zu **wie man OCR verwendet** in anderen Sprachen oder Frameworks? Hinterlassen Sie 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/german/net/text-recognition/_index.md b/ocr/german/net/text-recognition/_index.md index 164bd821..13025d9c 100644 --- a/ocr/german/net/text-recognition/_index.md +++ b/ocr/german/net/text-recognition/_index.md @@ -27,7 +27,7 @@ Entdecken Sie die Funktionen von Aspose.OCR für .NET und verändern Sie die Art ## Erhalten Sie das Ergebnis als JSON in der OCR-Bilderkennung -Nutzen Sie das volle Potenzial von Aspose.OCR für .NET, indem Sie lernen, wie Sie mühelos OCR-Ergebnisse im JSON-Format erhalten. Diese Schritt-für-Schritt-Anleitung gewährleistet einen reibungslosen Weg zur Verbesserung Ihrer Bilderkennungsfähigkeiten. Steigern Sie die Effizienz Ihrer Anwendung mit den robusten Funktionen und der branchenführenden Technologie von Aspose.OCR. +Nutzen Sie das volle Potenzial von Aspose.OCR für .NET, indem Sie lernen, wie Sie mühelos OCR-Ergebnisse im JSON-Format erhalten. Diese Schritt‑für‑Schritt‑Anleitung gewährleistet einen reibungslosen Weg zur Verbesserung Ihrer Bilderkennungsfähigkeiten. Steigern Sie die Effizienz Ihrer Anwendung mit den robusten Funktionen und der branchenführenden Technologie von Aspose.OCR. ## Modus „OCR-Erkennungsbereiche“ in der OCR-Bilderkennung @@ -44,20 +44,33 @@ Navigieren Sie mit Aspose.OCR für .NET durch die Komplexität der Tabellenerken Sind Sie bereit, Ihre .NET-Anwendungen zu revolutionieren? Tauchen Sie ein in unsere Tutorials zur Texterkennung und nutzen Sie die Leistungsfähigkeit von Aspose.OCR für eine genaue und effiziente Texterkennung in Bildern. Laden Sie es jetzt herunter und begeben Sie sich auf eine Reise mit erweiterten OCR-Funktionen. ## Tutorials zur Texterkennung ### [Erhalten Sie Auswahlmöglichkeiten für erkannte Zeichen bei der OCR-Bilderkennung](./get-choices-for-recognized-characters/) -Erweitern Sie Ihre .NET-Anwendungen mit Aspose.OCR für eine genaue Zeichenerkennung. Befolgen Sie unsere Schritt-für-Schritt-Anleitung, um Auswahlmöglichkeiten für erkannte Zeichen bei der Bilderkennung abzurufen. +Erweitern Sie Ihre .NET-Anwendungen mit Aspose.OCR für eine genaue Zeichenerkennung. Befolgen Sie unsere Schritt‑für‑Schritt‑Anleitung, um Auswahlmöglichkeiten für erkannte Zeichen bei der Bilderkennung abzurufen. ### [Erhalten Sie das Erkennungsergebnis bei der OCR-Bilderkennung](./get-recognition-result/) Entdecken Sie Aspose.OCR für .NET, eine leistungsstarke OCR-Lösung für die nahtlose Texterkennung in Bildern. ### [Erhalten Sie das Ergebnis als JSON in der OCR-Bilderkennung](./get-result-as-json/) -Nutzen Sie die Leistungsfähigkeit von Aspose.OCR für .NET. Erfahren Sie, wie Sie mühelos OCR-Ergebnisse im JSON-Format erhalten. Verbessern Sie Ihre Bilderkennung mit dieser Schritt-für-Schritt-Anleitung. +Nutzen Sie die Leistungsfähigkeit von Aspose.OCR für .NET. Erfahren Sie, wie Sie mühelos OCR-Ergebnisse im JSON-Format erhalten. Verbessern Sie Ihre Bilderkennung mit dieser Schritt‑für‑Schritt‑Anleitung. ### [Modus „OCR-Erkennungsbereiche“ in der OCR-Bilderkennung](./ocr-detect-areas-mode/) Erweitern Sie Ihre .NET-Anwendungen mit Aspose.OCR für eine effiziente Bildtexterkennung. Entdecken Sie den OCR-Erkennungsmodus für präzise Ergebnisse. ### [Erkennen Sie PDF mit der OCR-Bilderkennung](./recognize-pdf/) Nutzen Sie das Potenzial von OCR in .NET mit Aspose.OCR. Extrahieren Sie mühelos Text aus PDFs. Laden Sie es jetzt herunter und genießen Sie eine nahtlose Integration. ### [Tabelle in der OCR-Bilderkennung erkennen](./recognize-table/) Nutzen Sie das Potenzial von Aspose.OCR für .NET mit unserem umfassenden Leitfaden zum Erkennen von Tabellen in der OCR-Bilderkennung. +### [Wie man OCR in C# ausführt – Komplettanleitung mit Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Erfahren Sie, wie Sie OCR in C# mit Aspose OCR implementieren – Schritt‑für‑Schritt‑Anleitung für .NET‑Entwickler. +### [Wie man OCR in C# ausführt – Arabischen Text aus PNG extrahieren](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Lernen Sie, wie Sie mit Aspose.OCR arabischen Text aus PNG‑Dateien in C# extrahieren – Schritt‑für‑Schritt‑Anleitung für .NET‑Entwickler. +### [Text aus Bild extrahieren mit Aspose OCR – Komplettanleitung für C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Lernen Sie, wie Sie mit Aspose OCR Text aus Bildern extrahieren – Schritt‑für‑Schritt‑Anleitung für C#‑Entwickler. +### [Text aus Bild extrahieren in C# – Komplettanleitung für Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Erfahren Sie, wie Sie mit Aspose OCR Text aus Bildern in C# extrahieren – umfassende Schritt‑für‑Schritt‑Anleitung. +### [Erstellen Sie ein durchsuchbares PDF aus PNG in C# – Komplettanleitung](./create-searchable-pdf-from-png-in-c-complete-guide/) +Erfahren Sie, wie Sie mit Aspose.OCR ein durchsuchbares PDF aus PNG‑Dateien in C# erstellen – Schritt‑für‑Schritt‑Anleitung. +### [Text aus Bild erkennen in C# – Komplettanleitung für OCR und JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Lernen Sie, wie Sie mit Aspose.OCR Text aus Bildern in C# extrahieren und das Ergebnis im JSON-Format erhalten – Schritt‑für‑Schritt‑Anleitung. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/german/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..a1ff6260 --- /dev/null +++ b/ocr/german/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Erstelle ein durchsuchbares PDF aus PNG mit C#. Lerne, wie du ein Bild + in PDF konvertierst, Text aus PNG extrahierst und ein Bild mit OCR in C# verarbeitest + – alles in einem einfachen Tutorial. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: de +og_description: Erstellen Sie ein durchsuchbares PDF aus PNG mit C#. Dieser Leitfaden + zeigt, wie man ein Bild in PDF konvertiert, Text aus PNG extrahiert und ein Bild + mit C# und Aspose OCR verarbeitet. +og_title: Durchsuchbare PDF aus PNG in C# erstellen – Schritt für Schritt +tags: +- Aspose OCR +- C# +- PDF/A +title: Erstelle ein durchsuchbares PDF aus PNG in C# – Vollständige Anleitung +url: /de/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Durchsuchbares PDF aus PNG in C# erstellen – Komplettanleitung + +Möchten Sie **create searchable pdf** aus einer PNG‑Datei in C# erstellen? Sie sind nicht allein – vielen Entwicklern begegnet dieses Problem, wenn ihre gescannten Bilder sowohl angezeigt **und** text‑durchsuchbar sein sollen. In diesem Tutorial gehen wir den gesamten Ablauf durch: **convert image to pdf**, OCR ausführen, um **extract text from png** zu erhalten, und schließlich alles als **PDF/A‑2b**‑konformes durchsuchbares Dokument speichern. + +Am Ende haben Sie einen einzelnen, wiederverwendbaren Code‑Snippet, den Sie in jedes .NET‑Projekt einbinden können, sowie eine Reihe praktischer Tipps, die Ihnen später Kopfschmerzen ersparen. Keine externen Dienste, nur die Aspose OCR‑Bibliothek und ein paar Zeilen C#. + +> **Voraussetzungen** +> * .NET 6+ (oder .NET Framework 4.7.2+). +> * Visual Studio 2022 oder jede C#‑kompatible IDE. +> * Eine gültige Aspose OCR‑Lizenz (oder ein kostenloser Test). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Durchsuchbares PDF aus PNG mit C# erstellen"} + +## Schritt 1 – Aspose OCR für C# installieren und referenzieren + +Zuerst benötigen Sie das Aspose OCR‑NuGet‑Paket. Öffnen Sie Ihr Terminal (oder die Package Manager Console) und führen Sie aus: + +```bash +dotnet add package Aspose.OCR +``` + +Falls Sie die GUI bevorzugen, klicken Sie mit der rechten Maustaste auf Ihr Projekt → **Manage NuGet Packages…** → suchen Sie nach *Aspose.OCR* und installieren Sie die neueste stabile Version. + +Warum diese Bibliothek? Sie unterstützt **convert png to pdf**, verarbeitet mehrseitige Bilder und kann PDF/A‑2b direkt ausgeben – perfekt, um ein **searchable pdf** zu erstellen, das den Archivierungsstandards entspricht. + +> **Pro‑Tipp:** Registrieren Sie Ihre Lizenz frühzeitig in `Program.cs`, um das Evaluations‑Wasserzeichen zu vermeiden. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Schritt 2 – PNG laden und OCR ausführen (extract text from png) + +Jetzt laden wir das Quellbild. Der Helfer `ImageStream.FromFile` abstrahiert die Dateisystemdetails und funktioniert mit jedem unterstützten Rasterformat. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +An diesem Punkt hat die Engine **extracted text from png** und intern gespeichert. Sie können den Rohtext über `ocrEngine.Text` einsehen – praktisch zum Debuggen oder Protokollieren. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **Was, wenn das Bild mehrseitig ist?** +> Aspose OCR behandelt jede Seite als separate Ebene. Rufen Sie einfach `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` auf, und die Engine iteriert automatisch. + +## Schritt 3 – PDF/A‑2b‑Optionen konfigurieren (create searchable pdf) + +Um das OCR‑Ergebnis in ein **searchable pdf** zu verwandeln, müssen wir Aspose mitteilen, wie die Ausgabe verpackt werden soll. PDF/A‑2b ist der optimale Standard für langfristige Aufbewahrung und garantiert, dass die Textebene durchsuchbar ist. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Warum das Originalbild einbetten? Einige Compliance‑Prüfungen verlangen, dass die visuelle Darstellung mit dem Originalscan übereinstimmt. Dieses Flag macht die Datei zu einer echten **convert image to pdf**‑Operation, während der durchsuchbare Text erhalten bleibt. + +## Schritt 4 – Ergebnis speichern und prüfen (convert png to pdf) + +Abschließend schreiben wir die Ausgabedatei. Die gleiche `Save`‑Methode funktioniert für jeden von Ihnen angegebenen Pfad. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Öffnen Sie das resultierende `output.pdf` in Adobe Reader oder einem anderen PDF‑Betrachter und suchen Sie nach einem Wort, das im ursprünglichen PNG vorkommt. Wenn das Wort hervorgehoben wird, herzlichen Glückwunsch – Sie haben erfolgreich **create searchable pdf** aus einer PNG erstellt! + +### Schnell‑Verifizierungsskript (optional) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Warum PDF/A‑2b für durchsuchbare PDFs verwenden? + +* **Archivierungssicherheit:** PDF/A‑2b garantiert, dass die Datei auch in Jahrzehnten noch gleich dargestellt wird. +* **Regulatorische Konformität:** Viele Branchen (Recht, Medizin, Finanzen) verlangen PDF/A für die Aufbewahrung von Unterlagen. +* **Durchsuchbarkeit:** Die eingebettete OCR‑Textebene macht das Dokument durch Desktop‑Suchwerkzeuge indexierbar. + +Wenn Sie die zusätzliche Compliance‑Last nicht benötigen, können Sie die Zeile `PdfAStandard` weglassen und einfach `new PdfSaveOptions()` verwenden – die Ausgabe bleibt durchsuchbar, ist jedoch kein PDF/A‑2b. + +## Häufige Stolperfallen & wie man sie vermeidet + +| Symptom | Wahrscheinliche Ursache | Lösung | +|---------|--------------------------|--------| +| Keine durchsuchbaren Texte sichtbar | `ocrEngine.Recognize()` wurde nie aufgerufen oder ist stillschweigend fehlgeschlagen | Stellen Sie sicher, dass der Bildpfad korrekt ist und die Lizenz registriert wurde. | +| PDF ist riesig (10 + MB) | Original‑PNG hat hohe Auflösung und `EmbedOriginalImage` ist true | Bild vor OCR verkleinern oder `EmbedOriginalImage = false` setzen. | +| Text ist unleserlich | Sprache wurde nicht automatisch erkannt | `ocrEngine.Language = "eng";` (oder Ihre Zielsprache) vor `Recognize()` setzen. | + +## Vollständiges Beispiel (Copy‑Paste‑bereit) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Programm ausführen, `output.pdf` öffnen und nach Wörtern suchen, von denen Sie wissen, dass sie in `input.png` vorkommen. Wenn alles passt, haben Sie den **convert image to pdf**‑Workflow gemeistert und gelernt, wie man **ocr image c#**‑artig arbeitet. + +## Nächste Schritte & verwandte Themen + +* **Batch‑Verarbeitung:** Durchlaufen Sie einen Ordner mit PNGs und fügen Sie die Ergebnisse zu einem einzigen PDF zusammen. +* **Alternative Ausgabeformate:** Aspose OCR kann auch DOCX, TXT oder durchsuchbares PDF/A‑1b erzeugen. +* **Performance‑Optimierung:** Verwenden Sie `ocrEngine.RecognitionMode = RecognitionMode.Fast` für große Mengen, bei denen absolute Genauigkeit nicht kritisch ist. +* **Andere Bibliotheken:** Wenn das Budget knapp ist, prüfen Sie Tesseract .NET – allerdings verlieren Sie die integrierte PDF/A‑Unterstützung. + +--- + +### TL;DR + +Wir haben gezeigt, wie man **create searchable pdf** aus einer PNG mit Aspose OCR in C# erstellt. Die Schritte sind: + +1. Aspose OCR installieren (`dotnet add package Aspose.OCR`). +2. PNG laden und `ocrEngine.Recognize()` ausführen (**extract text from png**). +3. `PdfSaveOptions` für PDF/A‑2b konfigurieren (**convert image to pdf** & **convert png to pdf**). +4. Datei speichern und die durchsuchbare Ebene prüfen. + +Probieren Sie es aus, passen Sie die Optionen an, und Sie haben bald eine robuste Pipeline, um jedes gescannte Bild in ein archivierungs‑bereites, durchsuchbares PDF zu verwandeln. 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/german/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/german/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..4fcd6b53 --- /dev/null +++ b/ocr/german/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-01-10 +description: Extrahieren Sie Text aus einem Bild mit Aspose OCR in C#. Erfahren Sie, + wie Sie gescannten Dokumenttext mit Batch‑Verarbeitung konvertieren und die Ergebnisse + speichern. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: de +og_description: Extrahieren Sie Text aus einem Bild mit Aspose OCR in C#. Dieses Tutorial + zeigt, wie man gescannten Dokumententext mithilfe der Stapelverarbeitung konvertiert. +og_title: Text aus Bild in C# extrahieren – Vollständiger Aspose OCR‑Leitfaden +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Text aus Bild in C# extrahieren – vollständiger Aspose-OCR-Leitfaden +url: /de/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Text aus Bild extrahieren – Vollständiger Aspose OCR Leitfaden + +Haben Sie jemals **Text aus Bild extrahieren** müssen, wussten aber nicht, wo Sie anfangen sollen? Sie sind nicht allein; viele Entwickler stoßen an diese Grenze, wenn sie mit gescannten PDFs, mehrseitigen TIFFs oder foto‑basierten Belegen arbeiten. Die gute Nachricht ist, dass Sie mit Aspose OCR **gescannten Dokumenttext** in nur wenigen Zeilen C# **konvertieren** können. + +In diesem Tutorial gehen wir ein reales Szenario durch: Wir nehmen ein mehrseitiges TIFF, führen Batch‑OCR für jede Seite aus und schreiben eine einzige Textdatei, die den Inhalt aller Seiten enthält. Am Ende haben Sie eine sofort ausführbare Konsolen‑App, verstehen, warum jeder Schritt wichtig ist, und wissen, wie Sie den Ablauf für Randfälle wie passwortgeschützte Bilder oder benutzerdefinierte Sprachpakete anpassen können. + +## Voraussetzungen + +- .NET 6.0 SDK oder neuer (der Code funktioniert auch mit .NET Core und .NET Framework) +- Visual Studio 2022 (oder ein beliebiger Editor Ihrer Wahl) +- Eine Aspose OCR Lizenzdatei (oder Sie können den kostenlosen Evaluierungsmodus nutzen) +- Eine mehrseitige Bilddatei (z. B. `multipage.tif`), die in einem Ordner liegt, den Sie referenzieren können + +Keine zusätzlichen NuGet‑Pakete sind über `Aspose.OCR` hinaus erforderlich; wir installieren dieses im ersten Schritt. + +## Schritt 1 – Aspose OCR installieren und das Projekt einrichten + +Um zu beginnen, erstellen Sie ein neues Konsolen‑Projekt und binden die Aspose OCR‑Bibliothek ein. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro‑Tipp:** Wenn Sie eine Lizenzdatei (`Aspose.OCR.lic`) haben, kopieren Sie sie in das Projekt‑Root. Die Bibliothek erkennt sie zur Laufzeit automatisch. + +Warum dieser Schritt? Das Installieren des Pakets gibt Ihnen Zugriff auf `BatchProcessor`, `OcrEngine` und andere nützliche Klassen, die die low‑level Bildverarbeitung abstrahieren. Es stellt außerdem sicher, dass Sie die neuesten OCR‑Algorithmen verwenden, die Aspose bereitstellt. + +## Schritt 2 – Mehrseitiges Bild mit BatchProcessor laden + +`BatchProcessor` ist genau für dieses Szenario konzipiert: Er iteriert über jede Seite eines mehrseitigen Bildes, ohne dass Sie die Dateien manuell aufteilen müssen. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +Der `BatchProcessor` liest alle Seiten in den Speicher, zugänglich über `batchProcessor.Pages`. Jedes Seiten‑Objekt kennt seine Nummer (`ocrPage.Number`), die wir später für klare Überschriften verwenden. + +## Schritt 3 – StringBuilder vorbereiten, um Ergebnisse zu sammeln + +Wir wollen eine einzige Textdatei, die den OCR‑Ausgabe jeder Seite enthält, getrennt durch Überschriften. `StringBuilder` ist die effizienteste Methode, Zeichenketten in einer Schleife zu verketten. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Warum ein `StringBuilder`? Das Konkatenieren von Zeichenketten mit `+` innerhalb einer Schleife würde bei jeder Iteration eine neue Zeichenkette allokieren und die Leistung beeinträchtigen – besonders bei großen Dokumenten. + +## Schritt 4 – Über jede Seite iterieren, OCR ausführen und Ergebnisse anhängen + +Jetzt der Kern des Tutorials: Durch jede Seite schleifen, Text erkennen und ihn mit einem Seiten‑Marker speichern. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Warum ein neuer `OcrEngine` pro Seite?** Einige Entwickler verwenden eine einzige Engine und ändern deren `Image`‑Eigenschaft, aber das kann Spracheinstellungen oder vorherige Ergebnisse behalten, was zu subtilen Fehlern führt. Das Instanziieren einer frischen Engine garantiert einen sauberen Ausgangszustand. + +### Umgang mit häufigen Randfällen + +- **Leere Seiten:** Wenn eine Seite keinen erkennbaren Text enthält, ist `ocrEngine.Text` eine leere Zeichenkette. Sie könnten einen Platzhalter wie „(Kein Text erkannt)“ einfügen. +- **Sprachauswahl:** Standardmäßig verwendet Aspose OCR Englisch. Um Deutsch oder Französisch zu verarbeiten, setzen Sie `ocrEngine.Language = Language.German;` bevor Sie `Recognize()` aufrufen. +- **Performance‑Tipp:** Für sehr große TIFFs können Sie `ocrEngine.UseParallelProcessing = true;` aktivieren, um mehrere Kerne zu nutzen. + +## Schritt 5 – Kombinierte Ausgabe in eine Textdatei schreiben + +Zum Schluss speichern wir die gesammelte Zeichenkette auf dem Datenträger. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Die resultierende `multipage_result.txt` wird etwa so aussehen: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Sie haben nun **Text aus Bild extrahiert** und effektiv **gescannten Dokumenttext** in ein durchsuchbares, editierbares Format **konvertiert**. + +## Bonus – Visuelle Übersicht (Bild‑Alt‑Text) + +Unten finden Sie ein einfaches Flussdiagramm, das den Prozess veranschaulicht. +*Alt‑Text:* „Diagramm, das zeigt, wie man Text aus Bild mit Aspose OCR Batch‑Processing in C# extrahiert“. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Wenn Sie dieses Tutorial auf einer statischen Website veröffentlichen, ersetzen Sie den Platzhalter durch ein echtes SVG oder PNG.)* + +## Häufig gestellte Fragen + +**Funktioniert das mit PDF‑Dateien?** +Ja, Aspose OCR kann PDF‑Seiten als Bilder lesen. Sie müssen das PDF zuerst in Bilder konvertieren oder `PdfDocument` aus `Aspose.PDF` verwenden und jedes gerasterte Bild an `OcrEngine` übergeben. + +**Was, wenn mein TIFF passwortgeschützt ist?** +`BatchProcessor` verarbeitet Verschlüsselungen nicht direkt. Entschlüsseln Sie die Datei mit einer Bibliothek wie `Aspose.Imaging`, bevor Sie sie an die OCR‑Pipeline übergeben. + +**Kann ich JSON statt Klartext ausgeben?** +Absolut. Ersetzen Sie die `StringBuilder`‑Logik durch einen JSON‑Serializer (z. B. `System.Text.Json`) und speichern Sie den Text jeder Seite unter einem Schlüssel `pageNumber`. + +## Vollständiges funktionierendes Beispiel + +Hier ist das komplette Programm, das Sie in `Program.cs` einfügen können. Es enthält alle `using`‑Direktiven, Fehlerbehandlung und Kommentare. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Führen Sie das Programm aus mit: + +```bash +dotnet run +``` + +Sie sollten die Konsolennachricht sehen, die den Erfolg bestätigt, und die Ausgabedatei wird die zusammengefügten OCR‑Ergebnisse enthalten. + +## Fazit + +Wir haben gerade gezeigt, wie man **Text aus Bild** mit Aspose OCR praktisch **extrahiert**, um jede mehrseitige gescannte Datei in Klartext, durchsuchbar und editierbar zu verwandeln. Durch die Nutzung von `BatchProcessor` und einer sauberen pro‑Seite‑`OcrEngine`‑Einrichtung können Sie zuverlässig **gescannten Dokumenttext** konvertieren und gleichzeitig den Code einfach und wartbar halten. + +Fühlen Sie sich frei zu experimentieren: Probieren Sie verschiedene Sprachen, wechseln Sie zu JSON‑Ausgabe oder integrieren Sie diese Logik in eine Web‑API, die Uploads on‑the‑fly verarbeitet. Das Kernmuster bleibt gleich – laden, erkennen, sammeln und persistieren. + +Haben Sie weitere Fragen zu OCR, Aspose‑Lizenzierung oder dem Umgang mit massiven Dokumenten‑Batches? Hinterlassen Sie einen Kommentar unten oder schauen Sie in die offizielle Aspose‑Dokumentation für tiefere Einblicke. 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/german/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/german/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..53b16365 --- /dev/null +++ b/ocr/german/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Extrahieren Sie Text aus einem Bild mit Aspose OCR in C#. Erfahren Sie, + wie Sie ein Bild für OCR laden, Hindi‑Text erkennen und die OCR‑Erkennung in wenigen + einfachen Schritten ausführen. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: de +og_description: Extrahiere Text aus einem Bild mit Aspose OCR in C#. Befolge diese + Schritt‑für‑Schritt‑Anleitung, um das Bild für OCR zu laden, Hindi‑Text zu erkennen + und die OCR‑Erkennung auszuführen. +og_title: Text aus Bild mit Aspose OCR extrahieren – Vollständiger C#‑Leitfaden +tags: +- Aspose OCR +- C# +- Image Processing +title: Text aus Bild mit Aspose OCR extrahieren – Vollständiger C#‑Leitfaden +url: /de/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Text aus Bild extrahieren mit Aspose OCR – Vollständiger C# Leitfaden + +Haben Sie jemals **Text aus Bild** extrahieren müssen, waren sich aber nicht sicher, welche Bibliothek Sie wählen sollten? Sie sind nicht allein — viele Entwickler stoßen an diese Hürde, wenn sie zum ersten Mal OCR in .NET angehen. Die gute Nachricht ist, dass Aspose OCR den gesamten Prozess überraschend mühelos macht, selbst wenn Sie mit komplexen Schriften wie Hindi arbeiten. + +In diesem Tutorial führen wir Sie durch alles, was Sie benötigen, um **load image for OCR**, **recognize Hindi text** und **run OCR recognition** in C# auszuführen. Am Ende haben Sie eine sofort einsatzbereite Konsolen‑App, die den extrahierten Text direkt auf dem Bildschirm ausgibt. + +## Was Sie bauen werden + +Wir erstellen eine kleine Konsolen‑Anwendung, die: + +1. Den OCR‑Engine auf einen Ordner mit Sprachmodellen zeigt. +2. Automatische Downloads deaktiviert — praktisch für gesperrte Umgebungen. +3. Hindi als Zielsprache auswählt. +4. Ein JPEG (oder PNG) lädt, das Hindi‑Text enthält. +5. Die Erkennungspipeline ausführt. +6. Die resultierende Zeichenkette in die Konsole schreibt. + +Keine externen Dienste, keine Cloud‑Schlüssel, nur reines On‑Premise‑OCR. + +## Voraussetzungen + +- **.NET 6.0** oder höher (der Code funktioniert auch mit .NET Framework 4.7+). +- **Aspose.OCR for .NET** NuGet‑Paket installiert. + ```bash + dotnet add package Aspose.OCR + ``` +- Ein Ordner namens `OcrResources`, der das Hindi‑Sprachmodell (`hin.traineddata`) enthält. + Sie können es von der Aspose OCR‑Download‑Seite herunterladen und in `YOUR_DIRECTORY/OcrResources` ablegen. +- Eine Bilddatei (`input.jpg`) mit klarem Hindi‑Text. + Zur Veranschaulichung stellen Sie sich ein Foto eines Laden­schildes vor, das „स्वागत है“ zeigt. + +> **Pro‑Tipp:** Halten Sie die Bildauflösung über 300 dpi; niedrigere Auflösungen können zu fehlenden Zeichen führen. + +--- + +## Schritt 1: OCR‑Engine auf Ihre Ressourcen zeigen – *extract text from image* + +Das Erste, was Aspose OCR benötigt, ist der Speicherort seiner Sprachmodelle. Wenn Sie das überspringen, versucht die Engine, die Dateien automatisch herunterzuladen — etwas, das Sie in einem gesicherten Netzwerk vielleicht nicht wollen. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Warum das wichtig ist:* Durch das Setzen von `ResourcesPath` stellen Sie sicher, dass die Engine die richtigen Trainingsdaten lokal lädt, was den ersten Durchlauf beschleunigt und unerwarteten Netzwerkverkehr eliminiert. + +--- + +## Schritt 2: Automatischen Ressourcen‑Download deaktivieren – *load image for OCR* + +In vielen Unternehmensumgebungen ist der ausgehende Internetzugriff blockiert. Aspose OCR respektiert ein Flag, das verhindert, dass fehlende Dateien nachgeladen werden. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Wenn Sie diese Zeile vergessen und das Hindi‑Modell nicht vorhanden ist, wirft die Engine eine Ausnahme mit der Meldung „Unable to download required resource“. Das Setzen des Flags auf `false` liefert Ihnen einen klaren, deterministischen Fehler, den Sie selbst behandeln können. + +--- + +## Schritt 3: Sprache auswählen – *recognize hindi text* + +Aspose OCR unterstützt Dutzende von Sprachen, aber Sie müssen angeben, welche verwendet werden soll. Hindi wird durch `OcrLanguage.Hindi` identifiziert. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Was, wenn Sie mehrere Sprachen benötigen?* Sie können `Language = OcrLanguage.AutoDetect` setzen, damit die Engine rät, aber Auto‑Detect ist langsamer und erkennt gemischte Skripte gelegentlich falsch. Für reines Hindi ist die explizite Auswahl die sicherste Variante. + +--- + +## Schritt 4: Bild laden – *load image for OCR* + +Jetzt übergeben wir der Engine das Bild, das gelesen werden soll. Aspose bietet einen praktischen Helfer `ImageStream.FromFile`, der die zugrunde liegenden `System.Drawing`‑Abhängigkeiten abstrahiert. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Ist der Dateipfad falsch, löst Aspose eine `FileNotFoundException` aus. Ein kurzer `File.Exists`‑Check vor dieser Zeile kann Ihnen eine Debug‑Session ersparen. + +--- + +## Schritt 5: OCR‑Engine ausführen – *run OCR recognition* + +Mit allen Einstellungen starten wir schließlich den Erkennungsprozess. Dieser Aufruf ist synchron und blockiert, bis der Text extrahiert ist. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Im Hintergrund führt Aspose mehrere Stufen aus: Vorverarbeitung (Entzerrung, Rauschunterdrückung), Segmentierung, Zeichenklassifizierung und schließlich sprachspezifische Nachbearbeitung. Das eigentliche Schwergewicht steckt in diesem einzigen Methodenaufruf. + +--- + +## Schritt 6: Extrahierten Text ausgeben – *extract text from image* + +Das Ergebnis befindet sich in der `Text`‑Eigenschaft der Engine. Wir schreiben es einfach in die Konsole, Sie könnten es aber auch in einer Datenbank speichern, über eine API senden oder in eine andere NLP‑Pipeline einspeisen. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Erwartete Ausgabe** (wenn das Bild „स्वागत है“ enthält): + +``` +=== OCR RESULT === +स्वागत है +``` + +Sie sehen verzerrte Zeichen, prüfen Sie, ob das Hindi‑Modell korrekt platziert ist und das Bild nicht zu stark komprimiert wurde. + +--- + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das komplette Programm, das Sie in ein neues Konsolen‑Projekt (`dotnet new console`) kopieren können. Ersetzen Sie `YOUR_DIRECTORY` durch den tatsächlichen Pfad auf Ihrem Rechner. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tipp:** Wenn Sie viele Bilder in einer Schleife verarbeiten wollen, instanziieren Sie ein einzelnes `OcrEngine`‑Objekt und wiederverwenden Sie es — das reduziert den Initialisierungs‑Overhead. + +--- + +## Häufige Stolperfallen behandeln + +| Problem | Warum es passiert | Schnelle Lösung | +|---------|-------------------|-----------------| +| **Leere Ausgabe** | Falsches Sprachmodell oder Bild von schlechter Qualität. | `ResourcesPath` prüfen, Bild‑DPI erhöhen oder `ocrEngine.Image = ImageStream.FromFile(..., true)` verwenden, um Auto‑Enhancement zu aktivieren. | +| **Ausnahme: Resource not found** | Fehlende Hindi‑`.traineddata`. | Hindi‑Modell von Aspose herunterladen, in `OcrResources` legen und sicherstellen, dass der Dateiname `hin.traineddata` lautet. | +| **Garbage‑Zeichen** | Kodierungsproblem beim Konsolenausdruck. | Konsolen‑Ausgabekodierung setzen: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Performance‑Einbruch** | Große Bilder ohne Skalierung verarbeitet. | Bild vor dem OCR auf maximal 2000 px Breite/Höhe skalieren. | + +--- + +## Nächste Schritte & verwandte Themen + +- **Batch‑Verarbeitung:** Code in einer `foreach`‑Schleife einbetten, um einen Ordner mit Bildern zu bearbeiten. +- **Andere Sprachen:** `OcrLanguage.Hindi` durch `OcrLanguage.English`, `OcrLanguage.Arabic` usw. ersetzen. +- **Ausgabeformate:** Statt `Console.WriteLine` in eine Textdatei schreiben (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integration mit ASP.NET Core:** Einen API‑Endpunkt bereitstellen, der ein Bild‑Upload akzeptiert und den extrahierten Text als JSON zurückgibt. + +All diese Erweiterungen folgen demselben Muster — Engine konfigurieren, Bild laden, erkennen und Ergebnis nutzen. + +--- + +## Fazit + +Wir haben gezeigt, wie man **Text aus Bild** mit Aspose OCR in C# extrahiert. Der Leitfaden deckte jeden Schritt ab, den Sie benötigen, um **load image for OCR**, **recognize Hindi text** und **run OCR recognition** durchzuführen — alles in einer eigenständigen Konsolen‑App. + +Probieren Sie es mit Ihren eigenen Bildern, experimentieren Sie mit anderen Sprachen und passen Sie das Snippet gern für Web‑Services oder Hintergrundjobs an. Die Kernidee bleibt gleich: Ressourcen setzen, Sprache wählen, Bild zufüttern und die `Text`‑Eigenschaft auslesen. + +Bei Problemen schauen Sie in die obige Fehlertabelle oder hinterlassen Sie einen Kommentar. Viel Spaß beim Coden, und mögen Ihre OCR‑Ergebnisse stets kristallklar sein! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/german/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..412cc31d --- /dev/null +++ b/ocr/german/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Wie man OCR auf einem Bild mit Aspose OCR in C# ausführt. Erfahren Sie, + wie Sie Text aus einem Bild extrahieren, OCR auf ein Bild anwenden und ein Bild + für OCR mit GPU‑Beschleunigung laden. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: de +og_description: Wie man OCR auf einem Bild mit Aspose OCR ausführt. Dieses Tutorial + zeigt, wie man Text aus einem Bild extrahiert, OCR auf ein Bild anwendet und das + Bild effizient für OCR lädt. +og_title: Wie man OCR in C# ausführt – Vollständige Schritt‑für‑Schritt‑Anleitung +tags: +- OCR +- C# +- Aspose +title: Wie man OCR in C# ausführt – Vollständiger Leitfaden mit Aspose OCR +url: /de/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man OCR in C# ausführt – Vollständiger Leitfaden mit Aspose OCR + +Haben Sie sich jemals gefragt, **wie man OCR** auf einem Foto ausführt und den Text extrahiert, ohne sich die Haare zu raufen? Sie sind nicht der Einzige. Egal, ob Sie Rechnungen digitalisieren, Quittungen scannen oder einfach ein durchsuchbares PDF erstellen möchten, die Fähigkeit, Text aus einem Bild zu extrahieren, ist für viele Entwickler ein täglicher Bedarf. + +In diesem Tutorial führen wir Sie durch ein praktisches End‑to‑End‑Beispiel, das **wie man OCR auf Bild**‑Dateien mit der Aspose OCR‑Bibliothek ausführt, inklusive GPU‑Beschleunigung für Geschwindigkeit, zeigt. Am Ende wissen Sie genau, wie man **Bild für OCR lädt**, den Speicherverbrauch anpasst und saubere Klartext‑Ergebnisse erhält – alles in wenigen Code‑Zeilen. + +## Was Sie lernen werden + +- Wie man die Aspose OCR‑Engine in C# initialisiert +- Wie man **Bild für OCR lädt** von Festplatte oder Stream +- Wie man GPU‑Beschleunigung aktiviert und GPU‑Speicher begrenzt +- Wie man **Text aus Bild extrahiert** und die Ausgabe verifiziert +- Häufige Fallstricke (fehlendes GPU‑Modul, Speichergrenzen) und schnelle Lösungen + +Vorkenntnisse mit Aspose OCR sind nicht erforderlich; Sie benötigen lediglich eine funktionierende .NET‑Umgebung und ein Beispielbild. + +--- + +## Wie man OCR auf einem Bild mit Aspose OCR ausführt + +Das Erste, was Sie benötigen, ist ein klares, ausführbares Snippet, das die gesamte Aufgabe erledigt. Unten finden Sie das vollständige Programm, das Sie sofort kopieren, einfügen und ausführen können. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Erwartete Ausgabe** (unter der Annahme, dass das Beispielbild den Ausdruck „Hello World“ enthält): + +``` +=== OCR Result === +Hello World +``` + +> **Pro Tipp:** Wenn Sie keinen Text sehen, überprüfen Sie, ob das GPU‑Modul installiert ist und der Bildpfad korrekt ist. Die Methode `ImageStream.FromFile` wirft eine klare Ausnahme, wenn die Datei nicht gefunden werden kann. + +--- + +## Text aus Bild mit GPU‑Beschleunigung extrahieren + +Warum überhaupt die GPU verwenden? OCR nur mit CPU funktioniert, kann aber bei großen oder hochauflösenden Bildern schmerzhaft langsam sein. Das Aktivieren der GPU‑Beschleunigung (Schritt 2 oben) überträgt die schwere Arbeit auf Ihre Grafikkarte, die Tausende von Pixeln pro Sekunde verarbeiten kann. + +### Wann GPU verwenden + +- **Stapelverarbeitung** – das Scannen von Dutzenden Rechnungen auf einmal. +- **Hochauflösende Scans** – alles über 300 dpi. +- **Echtzeit‑Apps** – wie ein mobiler Scanner, der sofortiges Feedback benötigt. + +Falls Ihre Umgebung keine kompatible GPU hat, setzen Sie einfach `EnableGpuAcceleration = false;` und die Engine wechselt automatisch in den CPU‑Modus. + +--- + +## OCR auf Bild ausführen – Bild korrekt laden + +Das Laden des Bildes ist der **Bild für OCR laden**‑Schritt, der häufig Probleme bereitet. Aspose OCR erwartet einen `ImageStream`, der aus einer Datei, einem Memory‑Stream oder sogar einer URL erstellt werden kann. Hier sind einige Varianten: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Randfall:** Einige Bilder enthalten einen Alpha‑Kanal (Transparenz), der die OCR‑Engine verwirrt. Das Entfernen von Alpha ist einfach: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Jetzt haben Sie die gängigsten Methoden zum **Bild für OCR laden** abgedeckt, sodass die Engine jedes Mal ein sauberes, unterstütztes Format erhält. + +--- + +## Tipps zum effizienten Laden von Bild für OCR + +1. **Große Bilder verkleinern** – OCR benötigt kein 4 K‑Foto; das Herunterskalieren auf ca. 1500 px Breite beschleunigt den Vorgang, ohne die Genauigkeit zu beeinträchtigen. +2. **In Graustufen konvertieren** – reduziert Rauschen und kann die Erkennung bei kontrastarmen Scans verbessern. +3. **Vorverarbeitung mit Entzerrung** – wenn Ihr Bild geneigt ist, kann die eingebaute Entzerrung von Aspose OCR über `ocrEngine.Config.EnableDeskew = true;` aktiviert werden. + +Diese Anpassungen sind besonders nützlich, wenn Sie **Text aus Bild extrahieren** in großen Mengen. + +--- + +## Häufige Fallstricke & wie man sie behebt + +| Symptom | Likely Cause | Fix | +|---------|--------------|-----| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU‑Modul nicht installiert | Installieren Sie das Aspose OCR GPU‑Paket oder deaktivieren Sie die GPU (`EnableGpuAcceleration = false`). | +| Blank output | Bildpfad falsch oder nicht unterstütztes Format | Überprüfen Sie den Pfad von `ImageStream.FromFile`; versuchen Sie, aus Bytes zu laden, um sicherzustellen, dass die Datei korrekt gelesen wird. | +| Out‑of‑memory error | GPU‑Speicherlimit zu niedrig für große Stapel | Erhöhen Sie `GpuMemoryLimit` (z. B. 2048) oder verarbeiten Sie Bilder in kleineren Chargen. | +| Garbled characters | Bild hat starkes Rauschen oder niedrigen Kontrast | Vorverarbeiten: binarisieren, entstauben oder DPI vor OCR erhöhen. | + +--- + +## Vollständiges funktionierendes Beispiel – Alles zusammenführen + +Unten finden Sie eine kompakte Konsolen‑App, die die besprochenen Best Practices integriert: GPU‑Beschleunigung, Speicherbegrenzung, Bildvorverarbeitung und Fehlerbehandlung. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Das Ausführen dieses Programms gibt den sauberen Text aus, der aus Ihrem Bild extrahiert wurde, und demonstriert eine robuste Methode zum **Text aus Bild extrahieren**, selbst wenn die Quelle nicht perfekt ist. + +--- + +## Fazit + +Wir haben **wie man OCR** auf einem Bild mit Aspose OCR behandelt, von der Initialisierung der Engine über das Laden des Bildes, das Aktivieren der GPU‑Beschleunigung bis hin zur Behandlung von Randfällen. Sie haben nun eine solide, zitierfähige Referenz, die Sie in jedes .NET‑Projekt kopieren‑einfügen können, um sofort **Text aus Bild zu extrahieren**. + +Nächste Schritte? Versuchen Sie, PDF‑Seiten zu verarbeiten, experimentieren Sie mit verschiedenen Sprachen (setzen Sie `ocrEngine.Config.Language = "spa"` für Spanisch) oder integrieren Sie diesen Ablauf in eine Web‑API, die Uploads on‑the‑fly verarbeitet. Der Himmel ist das Limit, und mit den besprochenen Werkzeugen sind Sie gut gerüstet, jede OCR‑Herausforderung zu meistern. + +Viel Spaß beim Programmieren, und möge Ihr Text immer sauber und Ihr OCR schnell sein! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/german/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..abcaeae4 --- /dev/null +++ b/ocr/german/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-01-10 +description: Wie man OCR schnell ausführt und arabischen Text aus einem Bild extrahiert. + Lernen Sie, ein Bild in Text zu konvertieren, Text aus PNG zu lesen und zu sehen, + wie man Text mit Aspose OCR extrahiert. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: de +og_description: Wie man OCR in C# ausführt und arabischen Text aus einem PNG‑Bild + extrahiert. Dieser Leitfaden zeigt Ihnen, wie Sie ein Bild in Text umwandeln und + Text aus einem PNG Schritt für Schritt lesen. +og_title: Wie man OCR in C# ausführt – Arabischen Text aus PNG extrahieren +tags: +- OCR +- C# +- Aspose +title: Wie man OCR in C# ausführt – Arabischen Text aus PNG extrahieren +url: /de/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man OCR in C# ausführt – Arabischen Text aus PNG extrahieren + +Haben Sie sich jemals gefragt, **wie man OCR** auf einem Bild ausführt, das arabische Zeichen enthält? Sie sind nicht allein. Viele Entwickler stoßen auf ein Problem, wenn sie **arabischen Text** aus einer PNG extrahieren müssen, aber nicht wissen, welche Bibliothek rechts‑nach‑links‑Skripte ohne Kopfschmerzen verarbeitet. + +In diesem Tutorial führen wir Sie durch alles, was Sie wissen müssen, um **Bild zu Text zu konvertieren**, **Text aus PNG zu lesen** und schließlich **wie man Text extrahiert** mit Aspose.OCR in einer sauberen C#-Konsolenanwendung. Am Ende haben Sie ein sofort ausführbares Programm, das die arabische Zeichenkette direkt in Ihrem Terminal ausgibt. + +## Was Sie lernen werden + +- Installieren und referenzieren Sie das Aspose.OCR NuGet-Paket. +- Konfigurieren Sie die OCR-Engine für arabische Sprachunterstützung. +- Laden Sie ein PNG-Bild und führen Sie den Erkennungsprozess aus. +- Rufen Sie den extrahierten Text ab und zeigen Sie ihn an. +- Passen Sie die Einstellungen für bessere Genauigkeit an und behandeln Sie gängige Fallstricke. + +Vorkenntnisse mit OCR sind nicht erforderlich, nur ein grundlegendes Verständnis von C# und einer .NET-Entwicklungsumgebung (Visual Studio, Rider oder die `dotnet`-CLI reichen aus). + +--- + +## Wie man OCR ausführt – Einrichtung von Aspose OCR + +### Schritt 1: Das Aspose.OCR NuGet-Paket hinzufügen + +Das Erste, was wir benötigen, ist die OCR-Bibliothek selbst. Aspose.OCR ist ein kommerzielles Produkt, bietet aber eine kostenlose Testversion, die für Lernzwecke perfekt funktioniert. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Alternativ öffnen Sie den **NuGet Package Manager** in Visual Studio, suchen nach **Aspose.OCR** und klicken auf **Installieren**. + +> **Profi‑Tipp:** Wenn Sie die Bibliothek in einer CI‑Pipeline verwenden möchten, fügen Sie das `-v`‑Flag hinzu, um die Version zu sperren, z. B. `dotnet add package Aspose.OCR -v 23.10`. + +### Schritt 2: Ein neues Konsolenprojekt erstellen (falls Sie noch keins haben) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Jetzt haben Sie eine frische `Program.cs`-Datei, bereit für unseren Code. + +--- + +## Arabischen Text extrahieren – Schreiben des OCR-Codes + +Unten finden Sie das vollständige, sofort ausführbare Programm. Speichern Sie es als `Program.cs` (oder ersetzen Sie die automatisch generierte Datei). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Warum jede Zeile wichtig ist + +- **`OcrEngine`**: Die zentrale Klasse, die das Laden von Bildern, die Sprachauswahl und die Erkennung koordiniert. +- **`Language = OcrLanguage.Arabic`**: Arabisch verwendet ein Rechts‑nach‑Links‑Schriftsystem und einzigartige Glyphen; das Setzen der Sprache weist die Engine an, die richtigen Zeichenmodelle zu verwenden. +- **`ImageStream.FromFile`**: Unterstützt PNG, JPEG, BMP und viele weitere Formate. Wenn Sie jemals aus einem `MemoryStream` lesen müssen (z. B. eine hochgeladene Datei), ersetzen Sie diesen Aufruf entsprechend. +- **`Recognize()`**: Führt die eigentliche Arbeit aus – Pixelanalyse, Segmentierung und Zeichenklassifizierung. +- **`ocrEngine.Text`**: Die endgültige Unicode‑Zeichenkette, bereit für weitere Verarbeitung, Speicherung oder Anzeige. + +### Erwartete Ausgabe + +Wenn `arabic_sample.png` den Satz “مرحبا بالعالم” (Hello World) enthält, gibt die Konsole aus: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Wenn die Ausgabe verzerrt aussieht, überprüfen Sie, ob das Bild klar ist, die Sprache auf Arabisch eingestellt ist und die OCR‑Engine-Version mit der Dokumentation übereinstimmt. + +--- + +## Bild zu Text konvertieren – Genauigkeit optimieren + +Während die Standardeinstellungen für die meisten sauberen Scans funktionieren, benötigen reale Bilder oft ein wenig zusätzliche Nachbearbeitung. + +| Einstellung | Was es macht | Wann zu verwenden | +|------------|--------------|-------------------| +| `ocrEngine.Config.Preprocess = true` | Aktiviert automatische Binärisierung und Rauschunterdrückung. | Gescannte Dokumente mit Schatten. | +| `ocrEngine.Config.Deskew = true` | Dreht das Bild, um leichte Neigungen zu korrigieren. | Fotos, die aus einem Winkel aufgenommen wurden. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Behandelt das gesamte Bild als einen Textblock. | Einfache Bildunterschriften oder einzeilige Beschriftungen. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Begrenzt die Erkennung auf arabische Zeichen. | Reduziert Fehlalarme bei mehrsprachigen Seiten. | + +Sie können diese Zeilen direkt nach der Erstellung der Engine hinzufügen: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Text aus PNG lesen – Umgang mit verschiedenen Bildquellen + +Manchmal befindet sich das PNG in einer Datenbank oder stammt aus einer Webanfrage. Hier ist eine schnelle Variante, die aus einem `byte[]` liest: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Der Rest des Ablaufs bleibt identisch, was bedeutet, dass **wie man Text extrahiert** unabhängig von der Quelle konsistent bleibt. + +--- + +## Wie man Text extrahiert – Erweiterte Optionen & Sonderfälle + +### 1. Mehrseitige PDFs oder TIFFs + +Wenn Sie ein mehrseitiges Dokument OCR‑verarbeiten müssen, iterieren Sie über jede Seite: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Hinweis:** Für diesen Codeausschnitt benötigen Sie das `Aspose.PDF`‑Paket. + +### 2. Sprache automatisch erkennen + +Aspose.OCR bietet auch Auto‑Detect, ist jedoch langsamer. Wenn Sie nicht sicher sind, ob das Bild Arabisch oder ein anderes Skript enthält, aktivieren Sie es: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +Die Engine wird jedes Sprachmodell ausprobieren und das beste Ergebnis auswählen. + +### 3. Leistungstipps + +- **`OcrEngine`**‑Objekt für mehrere Bilder wiederverwenden; jedes Mal eine neue Instanz zu erstellen, verursacht zusätzlichen Aufwand. +- Nur **parallel ausführen**, wenn Sie separate Engine‑Instanzen pro Thread haben – das Teilen einer Instanz führt zu Race‑Conditions. + +--- + +## Fazit + +Wir haben **wie man OCR** in C# von Anfang bis Ende behandelt und gezeigt, wie man **arabischen Text extrahiert**, **Bild zu Text konvertiert**, **Text aus PNG liest** und **wie man Text extrahiert** in verschiedenen Szenarien beantwortet. Der Beispielcode ist vollständig, eigenständig und bereit, in jedes .NET‑Konsolenprojekt eingefügt zu werden. + +Nächste Schritte? Tauschen Sie `OcrLanguage.Arabic` gegen Koreanisch oder serbisches Kyrillisch aus, um die mehrsprachige Leistungsfähigkeit der Bibliothek zu sehen. Experimentieren Sie mit den Pre‑Processing‑Flags, um die Genauigkeit bei verrauschten Scans zu erhöhen, oder integrieren Sie die OCR‑Routine in eine Web‑API, sodass Benutzer Bilder hochladen und sofortige Textresultate erhalten können. + +Viel Spaß beim Programmieren, und möge Ihr OCR‑Ergebnis stets kristallklar sein! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/german/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..d56f396d --- /dev/null +++ b/ocr/german/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,294 @@ +--- +category: general +date: 2026-01-10 +description: Erfahren Sie, wie Sie Text aus einem Bild erkennen, Textkoordinaten extrahieren + und einen Beleg mit Aspose OCR in C# in JSON konvertieren. Schritt‑für‑Schritt‑Tutorial. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: de +og_description: Texterkennung aus Bild in C# mit Aspose OCR. Dieser Leitfaden zeigt, + wie man Text extrahiert, Koordinaten erhält und Quittungen in JSON konvertiert. +og_title: Text aus Bild erkennen – Vollständiges C# OCR‑Tutorial +tags: +- OCR +- C# +- Aspose +title: Text aus Bild in C# erkennen – Vollständiger Leitfaden zu OCR und JSON +url: /de/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Texterkennung aus Bild – Vollständiges C# OCR‑Tutorial + +Haben Sie jemals Text aus einem Bild erkennen müssen, waren sich aber nicht sicher, welche Bibliothek Sie wählen sollten? Sie sind nicht allein. In vielen realen Anwendungen – Ausgaben‑Tracker, Beleg‑Scanner oder Dokumenten‑Archivierer – ist das zuverlässige Extrahieren von Text die erste Hürde. + +In diesem Tutorial führen wir Sie durch **how to extract text**, holen die Begrenzungsrahmen und schließlich **convert receipt to JSON** mit Aspose.OCR für .NET. Am Ende haben Sie ein eigenständiges C#‑Projekt, das ein Foto eines Belegs nimmt und eine übersichtliche JSON‑Datei mit Vertrauenswerten und Koordinaten ausgibt. + +## Was Sie benötigen + +- **.NET 6.0 SDK** (oder eine neuere Version). Ältere Frameworks funktionieren ebenfalls, aber .NET 6 ist der optimale Punkt für moderne Bibliotheken. +- **Visual Studio 2022** oder VS Code mit der C#‑Erweiterung. +- **Aspose.OCR for .NET** NuGet‑Paket (`Aspose.OCR` und `Aspose.OCR.Output`). Sie können es über die Package Manager Console installieren: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Ein Beispiel‑Beleg‑Bild (z. B. `receipt.jpg`), das in einem Ordner abgelegt wird, auf den Sie später verweisen. + +Das war's – keine zusätzlichen SDKs, keine nativen Binärdateien, nur reiner verwalteter Code. + +## Schritt 1: Neues Konsolenprojekt erstellen + +Zuerst einmal ein Konsolen‑App erstellen. Das ist der schnellste Weg, OCR ohne UI‑Overhead zu testen. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Pro‑Tipp:** Halten Sie den Projektordner aufgeräumt; erstellen Sie einen Unterordner namens `Resources` und legen Sie dort `receipt.jpg` ab. Das macht die Pfadbehandlung mühelos. + +## Schritt 2: Beleg‑Bild laden + +Jetzt führen wir tatsächlich **recognize text from image** aus. Der erste Schritt besteht darin, die OCR‑Engine auf die Datei zu richten. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Warum wickeln wir das Laden in eine einfache Existenzprüfung? Weil Sie in der Produktion häufig mit Benutzer‑Uploads zu tun haben, die fehlen oder beschädigt sein können. Das frühzeitige Erkennen des Problems erspart Ihnen später kryptische Ausnahmen. + +## Schritt 3: OCR ausführen – **recognize text from image** + +Mit dem Bild im Speicher lassen wir Aspose **recognize text from image**. Dieser Vorgang ist synchron und liefert ein umfangreiches Ergebnis‑Set. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Im Hintergrund führt Aspose ein neuronales Netzwerk aus, das auf Millionen von Zeichen trainiert wurde. Die Engine füllt `ocrEngine.Text`, `ocrEngine.RecognitionResult` und eine Sammlung von `OcrRegion`‑Objekten, die Koordinaten enthalten. Genau das benötigen wir für den nächsten Schritt. + +## Schritt 4: **How to extract text** – Roh‑String erhalten + +Wenn Sie nur am reinen Text interessiert sind (vielleicht für eine schnelle Suche), können Sie ihn direkt aus der Engine holen: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Sie werden Zeilenumbrüche dort sehen, wo die OCR Absatzgrenzen erkannt hat. In vielen Beleg‑Scanning‑Szenarien reicht der Roh‑String aus, um Summen, Daten oder Händlernamen mit einfachen Regexes zu extrahieren. + +## Schritt 5: **extract text coordinates** – Begrenzungsrahmen für jedes Wort + +Oft müssen Sie wissen, *wo* auf dem Bild ein bestimmter Textabschnitt liegt – zum Beispiel, um den Gesamtbetrag in einer UI hervorzuheben. Aspose liefert das über `OcrRegion`‑Objekte. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Beachten Sie, dass wir über **extract text coordinates** für jedes erkannte Segment iterieren. Die Koordinaten sind relativ zum Originalbild, sodass Sie sie in einer Grafik‑Canvas oder einem HTML‑``‑Element überlagern können. + +## Schritt 6: **convert receipt to JSON** – Detaillierte Ergebnisse speichern + +Jetzt kommt der Teil, der alles zusammenführt: Wir wollen eine maschinenlesbare Struktur, die den Text, Vertrauenswerte und die Begrenzungsrahmen enthält. Aspose liefert `JsonSaveOptions`, die das zum Kinderspiel machen. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Die resultierende Datei sieht etwa so aus (gekürzt für die Übersicht): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Sie haben jetzt ein **convert receipt to JSON**‑Artefakt, das in nachgelagerte Dienste eingespeist werden kann – denken Sie an Expense‑Report‑APIs, Analyse‑Pipelines oder sogar eine einfache UI, die Rechtecke um jedes Wort zeichnet. + +## Vollständiges funktionierendes Beispiel + +Wenn wir alle Teile zusammenfügen, finden Sie hier das komplette `Program.cs`, das Sie in Ihr Projekt kopieren können: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Führen Sie das Programm (`dotnet run`) aus und beobachten Sie die Konsolenausgabe. Öffnen Sie `Resources/receipt.json`, um die Struktur zu überprüfen. + +## Häufige Fragen & Sonderfälle + +- **What if the image is blurry?** + Aspose OCR funktioniert am besten mit 300 dpi oder höher. Wenn Sie niedrige Vertrauenswerte erhalten, sollten Sie vor dem Übergeben des Bildes an die Engine einen Schärfungsfilter anwenden. + +- **Can I recognize multiple languages?** + Ja. Setzen Sie `ocrEngine.Language = Language.English | Language.Spanish;` bevor Sie `Recognize()` aufrufen. + +- **How do I limit output to only numbers (e.g., totals)?** + Nachdem Sie den reinen Text haben, führen Sie ein Regex wie `\d+\.\d{2}` auf `ocrEngine.Text` aus. Da wir bereits Koordinaten besitzen, können Sie die gefundene Zeichenkette zurück zu ihrer Region für visuelle Hervorhebung zuordnen. + +- **Is the JSON format customizable?** + Die Klasse `JsonSaveOptions` stellt einige Flags bereit. Wenn Sie ein völlig benutzerdefiniertes Schema benötigen, können Sie über `ocrEngine.RecognitionResult.Regions` iterieren und die Objekte selbst mit `System.Text.Json` serialisieren. + +## Fazit + +Wir haben gerade gezeigt, wie man **recognize text from image** in C# mit Aspose.OCR durchführt, **how to extract text**, **extract text coordinates** abruft und schließlich **convert receipt to JSON**. Der gesamte Ablauf befindet sich in einer einzigen, leicht auszuführenden Konsolen‑App, was ihn perfekt für Prototypen oder als Baustein in größeren Systemen macht. + +Nächste Schritte? Versuchen Sie, das JSON in ein Front‑End zu speisen, das die Begrenzungsrahmen zeichnet, oder schließen Sie die Ausgabe an einen Expense‑Report‑Dienst an. Sie können auch mit verschiedenen Bildformaten (PNG, TIFF) experimentieren oder einen Ordner mit Belegen stapelweise verarbeiten. + +Haben Sie weitere Fragen zu OCR, Aspose oder JSON‑Verarbeitung? Hinterlassen Sie unten einen Kommentar, und viel Spaß beim Coden! + +![Belegbildbeispiel für recognize text from image](receipt.jpg "Belegbildbeispiel") + +{{< /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/net/ocr-configuration/_index.md b/ocr/greek/net/ocr-configuration/_index.md index 8f9f7a91..1a60db70 100644 --- a/ocr/greek/net/ocr-configuration/_index.md +++ b/ocr/greek/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ url: /el/net/ocr-configuration/ Ξεκλειδώστε ισχυρές δυνατότητες OCR με το Aspose.OCR για .NET. Εξαγωγή κειμένου από εικόνες απρόσκοπτα. ### [OCROΛειτουργία με λίστα στην Αναγνώριση εικόνας OCR](./ocr-operation-with-list/) Ξεκλειδώστε τις δυνατότητες του Aspose.OCR για .NET. Εκτελέστε χωρίς κόπο αναγνώριση εικόνας OCR με λίστες. Ενισχύστε την παραγωγικότητα και την εξαγωγή δεδομένων στις εφαρμογές σας. +### [Ανάγνωση Ενσωματωμένου Πόρου σε .NET – Πλήρης Οδηγός για Ρύθμιση Άδειας Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Μάθετε πώς να διαβάζετε ενσωματωμένους πόρους σε .NET και να ρυθμίζετε την άδεια Aspose με βήμα-βήμα οδηγίες. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/greek/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..7bca9a16 --- /dev/null +++ b/ocr/greek/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-01-10 +description: Διαβάστε ενσωματωμένο πόρο και ορίστε την άδεια Aspose σε C#. Μάθετε + πώς να χρησιμοποιείτε το GetManifestResourceStream, να ενσωματώνετε ένα αρχείο άδειας + και να λαμβάνετε το εκτελούμενο assembly .NET σε ένα ενιαίο σεμινάριο. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: el +og_description: Διαβάστε ενσωματωμένο πόρο στο .NET και ορίστε άμεσα την άδεια Aspose. + Οδηγός βήμα‑βήμα που καλύπτει το GetManifestResourceStream, την ενσωμάτωση της άδειας + και τη χρήση του εκτελούμενου assembly. +og_title: Ανάγνωση ενσωματωμένου πόρου – Ορισμός άδειας Aspose στο .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Ανάγνωση ενσωματωμένου πόρου στο .NET – Πλήρης οδηγός για τη ρύθμιση της άδειας + Aspose +url: /el/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ανάγνωση Ενσωματωμένου Πόρου – Πλήρης Οδηγός για Ορισμό Άδειας Aspose + +Κάποτε χρειάστηκε να **διαβάσετε ενσωματωμένο πόρο** κατά το χρόνο εκτέλεσης και αναρωτηθήκατε πώς να ενεργοποιήσετε την άδεια της βιβλιοθήκης Aspose OCR χωρίς να κωδικοποιήσετε σκληρά διαδρομές; Δεν είστε ο μόνος. Σε πολλές εταιρικές εφαρμογές το αρχείο άδειας βρίσκεται μέσα στο assembly, ώστε να μην χρειάζεται να διανείμετε επιπλέον αρχεία ή να ανησυχείτε για ελλιπείς άδειες. Αυτό το tutorial σας δείχνει ακριβώς πώς να διαβάσετε έναν ενσωματωμένο πόρο και να ορίσετε την άδεια Aspose χρησιμοποιώντας τη μέθοδο .NET `GetManifestResourceStream`. + +Θα περάσουμε από όλα όσα χρειάζεστε: την ενσωμάτωση του αρχείου `.lic`, την ανάκτηση του με `GetExecutingAssembly`, και τέλος την εφαρμογή του στην κλάση `License` του Aspose OCR. Στο τέλος θα έχετε μια αυτο‑συνεπή λύση που λειτουργεί σε οποιοδήποτε έργο .NET — χωρίς εξωτερικά αρχεία. + +## Τι Θα Μάθετε + +- **Πώς να ενσωματώσετε ένα αρχείο άδειας** σε ένα έργο .NET ώστε να γίνει μέρος του μεταγλωττισμένου DLL. +- Τον σωστό τρόπο **χρήσης του GetManifestResourceStream** για την ανάγνωση του ενσωματωμένου πόρου. +- Πώς να **ορίσετε την άδεια Aspose** προγραμματιστικά χωρίς να αγγίξετε το σύστημα αρχείων. +- Συμβουλές για την αντιμετώπιση κοινών παγίδων όπως λανθασμένα ονόματα πόρων ή ελλιπείς ενέργειες κατασκευής. +- Ένα πλήρες, εκτελέσιμο παράδειγμα κώδικα που μπορείτε να ενσωματώσετε στη δική σας λύση. + +### Προαπαιτούμενα + +- .NET 6.0 ή νεότερο (ο κώδικας λειτουργεί επίσης σε .NET Framework 4.x, απλώς προσαρμόστε το αρχείο έργου αναλόγως). +- Πακέτο NuGet Aspose.OCR εγκατεστημένο (`dotnet add package Aspose.OCR`). +- Βασική εξοικείωση με C# και Visual Studio (ή το αγαπημένο σας IDE). + +Αν έχετε ήδη αυτά τα στοιχεία, τέλεια — ας ξεκινήσουμε. + +## Βήμα 1: Ενσωμάτωση του Αρχείου Άδειας Aspose στο Assembly σας + +Το πρώτο που χρειάζεστε είναι το πραγματικό αρχείο άδειας (`Aspose.OCR.lic`). Αντί να το αντιγράψετε δίπλα στο εκτελέσιμο, θα το ενσωματώσετε ως **πόρο**. + +1. Προσθέστε το αρχείο `.lic` στο έργο σας (π.χ. δημιουργήστε έναν φάκελο `Resources` και τοποθετήστε το αρχείο εκεί). +2. Στις ιδιότητες του αρχείου, ορίστε **Build Action** σε `Embedded Resource`. + *Συμβουλή:* κρατήστε τη δομή φακέλων απλή· το πλήρες όνομα του πόρου θα είναι `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Γιατί να ενσωματώσετε; Επειδή το assembly τώρα μεταφέρει την άδεια μέσα του, εξαλείφοντας τον κίνδυνο απώλειας αρχείου σε παραγωγικό διακομιστή. + +## Βήμα 2: Ανάκτηση του Ενσωματωμένου Πόρου με GetExecutingAssembly + +Τώρα που η άδεια βρίσκεται μέσα στο DLL, χρειάζεστε έναν τρόπο να **διαβάσετε ενσωματωμένο πόρο** κατά το χρόνο εκτέλεσης. Η κλάση .NET `Assembly` σας παρέχει ακριβώς αυτό. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +Η μέθοδος `GetExecutingAssembly` επιστρέφει το assembly που εκτελείται αυτή τη στιγμή — ιδανική για τον εντοπισμό πόρων που ζουν δίπλα στον κώδικά σας. + +## Βήμα 3: Άνοιγμα του Stream της Άδειας με GetManifestResourceStream + +Με την αναφορά στο assembly στα χέρια, μπορείτε να καλέσετε `GetManifestResourceStream`. Αυτή η μέθοδος επιστρέφει ένα `Stream` που μπορείτε να περάσετε απευθείας στο Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Παρατηρήστε ότι χρησιμοποιούμε μια **null‑conditional** δήλωση `using` (`using Stream?`) για να διασφαλίσουμε ότι το stream θα διαγραφεί αυτόματα. Αν το όνομα είναι λανθασμένο, ρίχνουμε μια σαφή εξαίρεση — αυτό σας σώζει από σιωπηλές αποτυχίες αργότερα. + +## Βήμα 4: Εφαρμογή της Άδειας στο Aspose OCR + +Η κλάση `License` του Aspose αναμένει ένα `Stream`. Το έχουμε ήδη, οπότε το τελευταίο βήμα είναι απλό. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Και τα παραπάνω! Η μηχανή Aspose OCR είναι πλέον πλήρως αδειοδοτημένη και έτοιμη να επεξεργαστεί εικόνες χωρίς το υδατογράφημα δοκιμής. + +## Πλήρες Παράδειγμα Λειτουργίας + +Παρακάτω υπάρχει ένα πλήρες, έτοιμο για αντιγραφή‑και‑επικόλληση πρόγραμμα που δείχνει όλη τη διαδικασία. Περιλαμβάνει τις απαραίτητες `using` δηλώσεις, διαχείριση σφαλμάτων, και μια απλή κλήση OCR για να αποδείξει ότι η άδεια είναι ενεργή. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Αναμενόμενο Αποτέλεσμα + +Όταν εκτελέσετε το πρόγραμμα σε μηχάνημα με έγκυρη ενσωματωμένη άδεια, θα δείτε: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Αν το stream της άδειας δεν βρεθεί, η κονσόλα θα αναφέρει το λείπον όνομα πόρου, καθοδηγώντας σας να ελέγξετε ξανά το **Build Action** και το namespace. + +## Συχνές Παγίδες & Πώς να τις Αποφύγετε + +| Πρόβλημα | Γιατί Συμβαίνει | Διόρθωση | +|----------|-----------------|----------| +| **Ασυμφωνία ονόματος πόρου** | Το .NET δημιουργεί το όνομα του πόρου από το προεπιλεγμένο namespace + τη διαδρομή φακέλου. | Χρησιμοποιήστε `Assembly.GetManifestResourceNames()` για να εμφανίσετε τα διαθέσιμα ονόματα και να επαληθεύσετε το ακριβές string. | +| **Το αρχείο άδειας δεν έχει οριστεί ως Embedded Resource** | Η προεπιλεγμένη Build Action είναι `Content`. | Αλλάξτε το σε `Embedded Resource` στις ιδιότητες του αρχείου. | +| **Εκτέλεση από διαφορετικό assembly** | Αν καλέσετε τον κώδικα από βιβλιοθήκη κλάσεων, το `GetExecutingAssembly()` μπορεί να επιστρέψει τη βιβλιοθήκη αντί του κύριου exe. | Χρησιμοποιήστε `Assembly.GetEntryAssembly()` ή περάστε ρητά το σωστό assembly. | +| **Το stream διαγράφεται πριν τη χρήση** | Χρήση `using` μπλοκ που κλείνει το stream πολύ νωρίς. | Κρατήστε το `using` γύρω από την κλήση `SetLicense`, όπως φαίνεται παραπάνω. | +| **Ασυμφωνία έκδοσης Aspose.OCR** | Νεότερες εκδόσεις μπορεί να απαιτούν διαφορετική μορφή άδειας. | Κατεβάστε πάντα την πιο πρόσφατη άδεια από τον λογαριασμό σας στο Aspose και επανενσωματώστε την. | + +## Χρήση της Ίδιας Τεχνικής για Άλλα Ενσωματωμένα Αρχεία + +Το μοτίβο — **ανάγνωση ενσωματωμένου πόρου**, έπειτα **χρήση GetManifestResourceStream** — λειτουργεί για οποιοδήποτε τύπο αρχείου: JSON configs, εικόνες, ακόμη και native DLLs. Απλώς προσαρμόστε το `resourceName` και τον τρόπο κατανάλωσης του stream. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Οπτική Επισκόπηση + +![Διάγραμμα που απεικονίζει πώς να διαβάσετε ενσωματωμένο πόρο και να ορίσετε την άδεια Aspose](read-embedded-resource-diagram.png) + +*Κείμενο εναλλακτικής περιγραφής:* διάγραμμα που δείχνει την ενσωμάτωση, την ανάκτηση με GetManifestResourceStream και την εφαρμογή της άδειας Aspose. + +## Συνοψίζοντας + +Καλύψαμε πώς να **διαβάσετε ενσωματωμένο πόρο** σε ένα assembly .NET, τα ακριβή βήματα για **χρήση του GetManifestResourceStream**, και τον καθαρό τρόπο για **ορισμό της άδειας Aspose** χωρίς να εκθέτετε αρχεία στο δίσκο. Ενσωματώνοντας την άδεια, εξαλείφετε τα προβλήματα ανάπτυξης και κρατάτε την εφαρμογή σας φορητή. + +## Τι Ακολουθεί; + +- **Αυτοματοποιήστε τις ενημερώσεις άδειας:** Γράψτε ένα μικρό script που εκτελείται κατά το build και αντικαθιστά το ενσωματωμένο αρχείο `.lic` όταν ανανεώνετε τη συνδρομή σας στο Aspose. +- **Ασφαλίστε τον πόρο:** Σκεφτείτε να κρυπτογραφήσετε την άδεια πριν την ενσωμάτωση και να την αποκρυπτογραφήσετε κατά το χρόνο εκτέλεσης για επιπλέον προστασία. +- **Εξερευνήστε άλλα προϊόντα Aspose:** Η ίδια προσέγγιση λειτουργεί για Aspose.Words, Aspose.PDF κ.λπ., καθένα με τη δική του κλάση `License`. + +Μη διστάσετε να πειραματιστείτε — ίσως ενσωματώσετε πολλαπλές άδειες για διαφορετικά modules ή μεταβείτε σε όνομα πόρου που καθορίζεται από ρυθμίσεις. Ο ουρανός είναι το όριο. + +--- + +*Καλή προγραμματιστική! Αν αντιμετωπίσετε δυσκολίες, αφήστε ένα σχόλιο παρακάτω ή ελέγξτε τα φόρουμ του 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/net/skew-angle-calculation/_index.md b/ocr/greek/net/skew-angle-calculation/_index.md index da9d4d22..33dc3b7d 100644 --- a/ocr/greek/net/skew-angle-calculation/_index.md +++ b/ocr/greek/net/skew-angle-calculation/_index.md @@ -2,7 +2,7 @@ title: Υπολογισμός γωνίας λοξής linktitle: Υπολογισμός γωνίας λοξής second_title: Aspose.OCR .NET API -description: Ξεκλειδώστε τα μυστικά του ακριβούς υπολογισμού της γωνίας κλίσης στην αναγνώριση εικόνας OCR με το Aspose.OCR για .NET. Βελτιώστε την ακρίβεια και την αποτελεσματικότητα χωρίς κόπο στα έργα σας. +description: Ξεκλειδώστε τα μυστικά του ακριβούς υπολογμού της γωνίας κλίσης στην αναγνώριση εικόνας OCR με το Aspose.OCR για .NET. Βελτιώστε την ακρίβεια και την αποτελεσματικότητα χωρίς κόπο στα έργα σας. weight: 20 url: /el/net/skew-angle-calculation/ --- @@ -15,7 +15,7 @@ url: /el/net/skew-angle-calculation/ ## Εισαγωγή -Επιδιώκετε την άψογη αναγνώριση κειμένου στις εφαρμογές σας C#; Μην ψάχνετε άλλο! Τα σεμινάρια υπολογισμού γωνίας κλίσης, που υποστηρίζονται από το Aspose.OCR για .NET, θα σας καθοδηγήσουν στην περίπλοκη διαδικασία με φινέτσα. +Επιδιώκετε την άψογη αναγνώριση κειμένου στις εφαρμογές σας C#; Μην ψάχνετε άλλο! Τα σεμινάρια υπολογμού γωνίας κλίσης, που υποστηρίζονται από το Aspose.OCR για .NET, θα σας καθοδηγήσουν στην περίπλοκη διαδικασία με φινέτσα. ## Κατανόηση του υπολογισμού της γωνίας λοξής Η γωνία κλίσης παίζει καθοριστικό ρόλο στην αναγνώριση εικόνας OCR, διασφαλίζοντας την ακριβή ερμηνεία του κειμένου. Στα σεμινάρια μας, ξετυλίγουμε την πολυπλοκότητα, παρέχοντας βήμα προς βήμα πληροφορίες για τη διαδικασία υπολογισμού. Είτε είστε αρχάριος είτε έμπειρος προγραμματιστής, κατανοήστε τις βασικές αρχές χωρίς κόπο. @@ -40,9 +40,12 @@ url: /el/net/skew-angle-calculation/ Απελευθερώστε τη δύναμη του Aspose.OCR για .NET, μια ισχυρή λύση για την αναγνώριση εικόνων. Μάθετε πώς να υπολογίζετε τις γωνίες λοξής χωρίς κόπο. ### [Υπολογίστε τη γωνία κλίσης από το URI στην Αναγνώριση εικόνας OCR](./calculate-skew-angle-from-uri/) Εξερευνήστε το Aspose.OCR για .NET για να υπολογίσετε εύκολα τις γωνίες λοξής στην αναγνώριση εικόνας OCR. Βελτιώστε τα έργα σας με ακρίβεια και αποτελεσματικότητα. +### [Πώς να διορθώσετε την κλίση εικόνας σε C# – Ολοκληρωμένος οδηγός προεπεξεργασίας OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Ανακαλύψτε πώς να αφαιρέσετε την κλίση εικόνας σε C# για βελτιωμένη ακρίβεια 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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/greek/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..855f926d --- /dev/null +++ b/ocr/greek/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,267 @@ +--- +category: general +date: 2026-01-10 +description: Πώς να διορθώσετε την κλίση μιας εικόνας και να βελτιώσετε τα αποτελέσματα + OCR με το Aspose.OCR. Μάθετε πώς να προεπεξεργάζεστε την εικόνα για OCR, να αφαιρείτε + τον θόρυβο από τη σάρωση και να αναγνωρίζετε κείμενο από τη σάρωση. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: el +og_description: Πώς να διορθώσετε την κλίση μιας εικόνας και να βελτιώσετε την ακρίβεια + του OCR. Αυτός ο οδηγός δείχνει πώς να προεπεξεργαστείτε την εικόνα για OCR, να + αφαιρέσετε τον θόρυβο από τη σάρωση και να αναγνωρίσετε το κείμενο από τη σάρωση + χρησιμοποιώντας το Aspose.OCR. +og_title: Πώς να διορθώσετε την κλίση εικόνας σε C# – Πλήρης οδηγός προεπεξεργασίας + OCR +tags: +- OCR +- C# +- Image Processing +title: Πώς να διορθώσετε την κλίση εικόνας σε C# – Πλήρης οδηγός προεπεξεργασίας OCR +url: /el/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να διορθώσετε την κλίση εικόνας σε C# – Ολοκληρωμένος Οδηγός Προεπεξεργασίας OCR + +Έχετε αναρωτηθεί ποτέ **πώς να διορθώσετε την κλίση εικόνας** πριν τη δώσετε σε μια μηχανή OCR; Δεν είστε οι μόνοι. Τα σαρωμένα έγγραφα είναι συχνά κεκλιμένα, θορυβώδη ή χαμηλής αντίθεσης, και αυτό επηρεάζει οποιαδήποτε προσπάθεια αναγνώρισης κειμένου. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από ένα πλήρες, εκτελέσιμο παράδειγμα που **προετοιμάζει την εικόνα για OCR**, αφαιρεί τον θόρυβο από το σκαν, και τελικά **αναγνωρίζει κείμενο από το σκαν** χρησιμοποιώντας τη βιβλιοθήκη Aspose.OCR. Στο τέλος θα έχετε μια σαφή εικόνα για **πώς να χρησιμοποιήσετε OCR** σε C# κρατώντας τον κώδικα σύντομο και ευανάγνωστο. + +> **Pro tip:** Ακόμη και μια μικρή περιστροφή (5‑10°) μπορεί να μειώσει την ακρίβεια του OCR κατά 30 % ή περισσότερο. Η διόρθωση κλίσης είναι το πρώτο βήμα που δεν πρέπει ποτέ να παραλείψετε. + +--- + +## Τι θα χρειαστείτε + +- **.NET 6+** (ο κώδικας λειτουργεί και σε .NET Framework, αλλά το .NET 6 είναι το τρέχον LTS) +- **Aspose.OCR for .NET** – μπορείτε να το αποκτήσετε από το NuGet (`Install-Package Aspose.OCR`) +- Ένα δείγμα αρχείου TIFF/PNG/JPEG που είναι περιστραμμένο ή θορυβώδες (θα χρησιμοποιήσουμε το `noisy_rotated.tif` στο παράδειγμα) +- Οποιοδήποτε IDE προτιμάτε – Visual Studio, Rider ή VS Code αρκούν + +Αυτό είναι όλο. Χωρίς πρόσθετες βιβλιοθήκες, χωρίς εξωτερικές υπηρεσίες. + +--- + +## Βήμα 1 – Φόρτωση της Πηγαίας Εικόνας (Γιατί είναι Σημαντικό) + +Πριν μπορέσουμε να **διορθώσουμε την κλίση εικόνας**, πρέπει να τη διαβάσουμε σε ένα Aspose `ImageStream`. Αυτό το αντικείμενο αφαιρεί την πολυπλοκότητα του I/O αρχείων και παρέχει στη μηχανή OCR μια συνεπή διεπαφή. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Γιατί να φορτώσουμε πρώτα;* Επειδή όλα τα επόμενα φίλτρα λειτουργούν πάνω σε μια εικόνα στη μνήμη. Αν το αρχείο δεν μπορεί να διαβαστεί, ολόκληρη η αλυσίδα καταρρέει. + +--- + +## Βήμα 2 – Δημιουργία Σειράς Προεπεξεργασίας (Διόρθωση Κλίσης + Αφαίρεση Θορύβου + Αντίθεση) + +Μια αξιόπιστη ροή εργασίας OCR συνήθως συνδέει πολλά φίλτρα. Εδώ είναι που **προετοιμάζουμε την εικόνα για OCR** και, πιο σημαντικό, **πώς να διορθώσετε την κλίση εικόνας** αυτόματα. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Γιατί αυτά τα τρία;** +- **DeskewFilter** λύνει το πρόβλημα «πώς να διορθώσετε την κλίση εικόνας» αυτόματα· δεν χρειάζεται να μαντέψετε τη γωνία. +- **DenoiseFilter** αντιμετωπίζει την απαίτηση «αφαίρεση θορύβου από το σκαν», που αλλιώς δημιουργεί φανταστικούς χαρακτήρες. +- **ContrastBoostFilter** βοηθά τη μηχανή OCR να διακρίνει το σκοτεινό κείμενο από το φωτεινό φόντο, ένα κλασικό ζήτημα όταν *προετοιμάζετε την εικόνα για OCR*. + +--- + +## Βήμα 3 – Εφαρμογή της Σειράς (Δείτε τη Μεταμόρφωση) + +Τώρα τρέχουμε τα φίλτρα. Η επιστρεφόμενη `processedImage` είναι αυτή που θα δώσουμε στη μηχανή OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Αν ανοίξετε το `cleaned_output.tif`, θα παρατηρήσετε ότι το κείμενο είναι ευθεία, λιγότερο σπόρια και με υψηλότερη αντίθεση. Αυτός ο οπτικός έλεγχος είναι χρήσιμος όταν *αφαιρείτε θόρυβο από το σκαν* και θέλετε να επιβεβαιώσετε ότι η διόρθωση κλίσης λειτούργησε. + +--- + +## Βήμα 4 – Δημιουργία και Διαμόρφωση της Μηχανής OCR (Πώς να Χρησιμοποιήσετε OCR) + +Με μια καθαρή εικόνα στα χέρια, δημιουργούμε το `OcrEngine`. Αυτό είναι ο πυρήνας του **πώς να χρησιμοποιήσετε OCR** με την Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Γιατί ορίζουμε το `AutoPageSegmentation`;* Επειδή πολλά σκαν περιέχουν πίνακες ή πολλαπλές στήλες. Η ενεργοποίηση του επιτρέπει στη μηχανή να χωρίσει τη σελίδα έξυπνα, βελτιώνοντας το τελικό αποτέλεσμα **αναγνώρισης κειμένου από το σκαν**. + +--- + +## Βήμα 5 – Εκτέλεση της Διαδικασίας Αναγνώρισης (Τέλος, Αναγνώριση Κειμένου) + +Τώρα η στιγμή της αλήθειας: ζητάμε από τη μηχανή να διαβάσει το κείμενο. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Αν όλα πήγαν ομαλά, θα δείτε ένα καθαρό μπλοκ κειμένου που ταιριάζει με το αρχικό έγγραφο. Αυτό είναι το αποτέλεσμα της σωστής **διόρθωσης κλίσης εικόνας**, της **αφαίρεσης θορύβου** και της **προετοιμασίας εικόνας για OCR**. + +--- + +## Βήμα 6 – Πλήρες Παράδειγμα Εργασίας (Έτοιμο για Αντιγραφή‑Επικόλληση) + +Παρακάτω είναι το πλήρες πρόγραμμα, έτοιμο για μεταγλώττιση. Απλώς αντικαταστήστε τη διαδρομή του αρχείου και είστε έτοιμοι. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Αναμενόμενο αποτέλεσμα** (κομμένο για συντομία): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Αν το αποτέλεσμα φαίνεται παραμορφωμένο, ελέγξτε ξανά ότι η πηγή δεν είναι περιστραμμένη περισσότερο από 30°, ή αυξήστε το `DeskewFilter.MaxAngle`. + +--- + +## Συχνές Ερωτήσεις (Ακραίες Περιπτώσεις & Παραλλαγές) + +| Ερώτηση | Απάντηση | +|----------|--------| +| **Τι γίνεται αν το σκαν είναι περιστραμμένο 45°;** | Το `DeskewFilter` περιορίζεται στο `MaxAngle`. Αυξήστε το (π.χ., `MaxAngle = 60`) ή προ‑περιστρέψτε την εικόνα με μια βιβλιοθήκη γραφικών πριν τη δώσετε στη σειρά. | +| **Μπορώ να επεξεργαστώ PDF σελίδα‑με‑σελίδα;** | Ναι. Μετατρέψτε κάθε σελίδα PDF σε εικόνα (π.χ., χρησιμοποιώντας `Aspose.Pdf`) και τρέξτε την ίδια σειρά σε κάθε bitmap. | +| **Το έγγραφό μου είναι στα Γαλλικά – χρειάζεται κάτι άλλο;** | Ορίστε `ocrEngine.Language = Language.French;` ή φορτώστε ένα προσαρμοσμένο language pack. Τα υπόλοιπα της σειράς παραμένουν ίδια. | +| **Υπάρχει τρόπος να διατηρήσω την αρχική ανάλυση;** | Το `PreprocessPipeline` λειτουργεί στο αρχικό bitmap, διατηρώντας το DPI. Απλώς αποφύγετε το `ImageStream.Resize` εκτός αν χρειάζεται να μειώσετε το μέγεθος για απόδοση. | +| **Πώς επηρεάζει η ενίσχυση αντίθεσης τις έγχρωμες σαρώσεις;** | Το `ContrastBoostFilter` λειτουργεί σε κάθε κανάλι· είναι ασφαλές για γκρι κλίμακα ή έγχρωμες εικόνες, αλλά μπορείτε επίσης να μετατρέψετε σε γκρι με `new GrayscaleFilter()`. | + +--- + +## Παράδειγμα Εικόνας (Οπτική Βοήθεια) + +![how to deskew image example](/images/deskew-example.png) + +*Η εικόνα δείχνει πριν/μετά από ένα σκαν 12° περιστρεφόμενο, θορυβώδες, που έχει διορθωθεί και καθαριστεί.* + +--- + +## Συμπέρασμα + +Καλύψαμε **πώς να διορθώσετε την κλίση εικόνας** χρησιμοποιώντας το Aspose.OCR, παρουσιάσαμε μια πλήρη **συνεχόμενη προετοιμασία εικόνας για OCR**, δείξαμε πώς να **αφαιρέσετε θόρυβο από το σκαν**, και τελικά **αναγνωρίσαμε κείμενο από το σκαν** με λίγες γραμμές C#. Συνδυάζοντας τα `DeskewFilter`, `DenoiseFilter` και `ContrastBoostFilter` λαμβάνετε ένα καθαρό bitmap που επιτρέπει στη μηχανή OCR να κάνει τη δουλειά της χωρίς να “πνίγεται” από εναπομεινάρια. + +Τι θα κάνετε στη συνέχεια; Δοκιμάστε διαφορετικές εντάσεις φίλτρων, προσθέστε ένα `BinarizationFilter` για καθαρό μαύρο‑άσπρο αποτέλεσμα, ή δώστε την καθαρή εικόνα σε μια επόμενη NLP αλυσίδα. Το ίδιο μοτίβο λειτουργεί για αποδείξεις, διαβατήρια και ιστορικά έγγραφα. + +Έχετε περισσότερες ερωτήσεις για **πώς να χρησιμοποιήσετε 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/net/text-recognition/_index.md b/ocr/greek/net/text-recognition/_index.md index 7c0b04e8..6a71e5a6 100644 --- a/ocr/greek/net/text-recognition/_index.md +++ b/ocr/greek/net/text-recognition/_index.md @@ -53,11 +53,24 @@ url: /el/net/text-recognition/ Βελτιώστε τις εφαρμογές σας .NET με το Aspose.OCR για αποτελεσματική αναγνώριση κειμένου εικόνας. Εξερευνήστε τη λειτουργία ανίχνευσης περιοχών OCR για ακριβή αποτελέσματα. ### [Αναγνώριση PDF στο OCR Image Recognition](./recognize-pdf/) Ξεκλειδώστε τις δυνατότητες του OCR στο .NET με το Aspose.OCR. Εξαγωγή κειμένου από αρχεία PDF χωρίς κόπο. Κάντε λήψη τώρα για μια απρόσκοπτη εμπειρία ενσωμάτωσης. +### [Δημιουργία αναζητήσιμου PDF από PNG σε C# – Πλήρης οδηγός](./create-searchable-pdf-from-png-in-c-complete-guide/) +Μάθετε πώς να μετατρέψετε εικόνες PNG σε αναζητήσιμα PDF χρησιμοποιώντας C# και Aspose.OCR, βήμα προς βήμα οδηγός. ### [Αναγνώριση πίνακα στην Αναγνώριση εικόνας OCR](./recognize-table/) Ξεκλειδώστε τις δυνατότητες του Aspose.OCR για .NET με τον ολοκληρωμένο οδηγό μας για την αναγνώριση πινάκων στην αναγνώριση εικόνας OCR. +### [Πώς να εκτελέσετε OCR σε C# – Πλήρης οδηγός με Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Μάθετε βήμα προς βήμα πώς να εκτελέσετε OCR σε C# χρησιμοποιώντας το Aspose OCR για ακριβή αναγνώριση κειμένου. +### [Πώς να εκτελέσετε OCR σε C# – Εξαγωγή αραβικού κειμένου από PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Μάθετε πώς να χρησιμοποιήσετε το Aspose.OCR σε C# για εξαγωγή αραβικού κειμένου από εικόνες PNG με ακρίβεια. +### [Εξαγωγή κειμένου από εικόνα με Aspose OCR – Πλήρης οδηγός C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Μάθετε βήμα προς βήμα πώς να εξάγετε κείμενο από εικόνες χρησιμοποιώντας το Aspose OCR σε C# για ακριβή αποτελέσματα. +### [Εξαγωγή κειμένου από εικόνα σε C# – Πλήρης οδηγός Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Μάθετε βήμα προς βήμα πώς να εξάγετε κείμενο από εικόνες χρησιμοποιώντας Aspose OCR σε C# για ακριβή αποτελέσματα. +### [Αναγνώριση κειμένου από εικόνα σε C# – Πλήρης οδηγός OCR και JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Μάθετε πώς να αναγνωρίζετε κείμενο από εικόνες σε C# και να εξάγετε τα αποτελέσματα σε μορφή JSON με τον 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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/greek/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..65950c24 --- /dev/null +++ b/ocr/greek/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Δημιουργήστε αναζητήσιμο PDF από PNG χρησιμοποιώντας C#. Μάθετε πώς να + μετατρέψετε εικόνα σε PDF, να εξάγετε κείμενο από PNG και να κάνετε OCR σε εικόνα + με C# σε έναν εύκολο οδηγό. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: el +og_description: Δημιουργήστε αναζητήσιμο PDF από PNG με C#. Αυτός ο οδηγός δείχνει + πώς να μετατρέψετε εικόνα σε PDF, να εξάγετε κείμενο από PNG και να κάνετε OCR στην + εικόνα με C# και Aspose. +og_title: Δημιουργία Αναζητήσιμου PDF από PNG σε C# – Βήμα‑βήμα +tags: +- Aspose OCR +- C# +- PDF/A +title: Δημιουργία Αναζητήσιμου PDF από PNG σε C# – Πλήρης Οδηγός +url: /el/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Δημιουργία Αναζητήσιμου PDF από PNG σε C# – Πλήρης Οδηγός + +Χρειάζεστε **να δημιουργήσετε αναζητήσιμο pdf** από ένα αρχείο PNG σε C#; Δεν είστε μόνοι—πολλοί προγραμματιστές αντιμετωπίζουν αυτό το εμπόδιο όταν θέλουν οι σαρωμένες εικόνες τους να είναι τόσο προβολές **και** κείμενο‑αναζητήσιμες. Σε αυτό το tutorial θα περάσουμε από όλη τη διαδικασία: **convert image to pdf**, εκτέλεση OCR για **extract text from png**, και τελικά αποθήκευση όλων ως **PDF/A‑2b** συμβατό αναζητήσιμο έγγραφο. + +Στο τέλος θα έχετε ένα ενιαίο, επαναχρησιμοποιήσιμο απόσπασμα κώδικα που μπορείτε να ενσωματώσετε σε οποιοδήποτε .NET project, συν μια σειρά πρακτικών συμβουλών που θα σας εξοικονομήσουν προβλήματα αργότερα. Χωρίς εξωτερικές υπηρεσίες, μόνο η βιβλιοθήκη Aspose OCR και μερικές γραμμές C#. + +> **Προαπαιτούμενα** +> * .NET 6+ (ή .NET Framework 4.7.2+). +> * Visual Studio 2022 ή οποιοδήποτε IDE συμβατό με C#. +> * Ένα έγκυρο άδεια Aspose OCR (ή δωρεάν δοκιμή). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Δημιουργία αναζητήσιμου PDF από PNG χρησιμοποιώντας C#"} + +## Βήμα 1 – Εγκατάσταση και Αναφορά Aspose OCR για C# + +Πρώτα απ' όλα: χρειάζεστε το πακέτο NuGet Aspose OCR. Ανοίξτε το τερματικό (ή το Package Manager Console) και εκτελέστε: + +```bash +dotnet add package Aspose.OCR +``` + +Αν προτιμάτε το GUI, κάντε δεξί‑κλικ στο project → **Manage NuGet Packages…** → αναζητήστε *Aspose.OCR* και εγκαταστήστε την πιο πρόσφατη σταθερή έκδοση. + +Γιατί αυτή η βιβλιοθήκη; Υποστηρίζει **convert png to pdf**, διαχειρίζεται εικόνες πολλαπλών σελίδων, και μπορεί να εξάγει PDF/A‑2b αμέσως—ιδανική για τη δημιουργία ενός **searchable pdf** που συμμορφώνεται με τα πρότυπα αρχειοθέτησης. + +> **Συμβουλή:** Καταχωρίστε την άδειά σας νωρίς στο `Program.cs` για να αποφύγετε το υδατογράφημα αξιολόγησης. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Βήμα 2 – Φόρτωση του PNG και Εκτέλεση OCR (extract text from png) + +Τώρα θα φορτώσουμε την πηγή εικόνας. Η βοηθητική συνάρτηση `ImageStream.FromFile` αφαιρεί τις λεπτομέρειες του συστήματος αρχείων και λειτουργεί με οποιαδήποτε υποστηριζόμενη μορφή raster. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +Σε αυτό το σημείο η μηχανή έχει **extracted text from png** και το αποθήκευσε εσωτερικά. Μπορείτε ακόμη να ελέγξετε το ακατέργαστο κείμενο μέσω `ocrEngine.Text`, κάτι χρήσιμο για εντοπισμό σφαλμάτων ή καταγραφή. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **Τι γίνεται αν η εικόνα είναι πολλαπλών σελίδων;** +> Aspose OCR αντιμετωπίζει κάθε σελίδα ως ξεχωριστό στρώμα. Απλώς καλέστε `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` και η μηχανή θα επαναλάβει αυτόματα. + +## Βήμα 3 – Διαμόρφωση επιλογών PDF/A‑2b (create searchable pdf) + +Για να μετατρέψουμε το αποτέλεσμα OCR σε **searchable pdf**, πρέπει να πούμε στην Aspose πώς να συσκευάσει την έξοδο. PDF/A‑2b είναι η ιδανική επιλογή για μακροπρόθεσμη διατήρηση και εγγυάται ότι το στρώμα κειμένου είναι αναζητήσιμο. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Γιατί να ενσωματώσουμε την αρχική εικόνα; Ορισμένοι έλεγχοι συμμόρφωσης απαιτούν η οπτική αναπαράσταση να ταιριάζει με το αρχικό σκαν. Αυτή η σημαία κάνει το αρχείο μια πραγματική λειτουργία **convert image to pdf** ενώ διατηρεί το αναζητήσιμο κείμενο. + +## Βήμα 4 – Αποθήκευση του Αποτελέσματος και Επαλήθευση (convert png to pdf) + +Τέλος, γράφουμε το αρχείο εξόδου. Η ίδια μέθοδος `Save` λειτουργεί για οποιοδήποτε μονοπάτι δώσετε. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Ανοίξτε το παραγόμενο `output.pdf` στο Adobe Reader ή σε οποιονδήποτε προβολέα PDF και δοκιμάστε να αναζητήσετε μια λέξη που εμφανίζεται στο αρχικό PNG. Αν η λέξη επισημανθεί, συγχαρητήρια—έχετε επιτυχώς **create searchable pdf** από ένα PNG! + +### Γρήγορο σενάριο επαλήθευσης (προαιρετικό) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Γιατί να χρησιμοποιήσετε PDF/A‑2b για Αναζητήσιμα PDFs; + +* **Ασφάλεια αρχειοθέτησης:** PDF/A‑2b εγγυάται ότι το αρχείο μπορεί να αποδοθεί με τον ίδιο τρόπο δεκαετίες αργότερα. +* **Κανονιστική συμμόρφωση:** Πολλές βιομηχανίες (νομική, ιατρική, χρηματοοικονομική) απαιτούν PDF/A για τη διατήρηση αρχείων. +* **Αναζητησιμότητα:** Το ενσωματωμένο στρώμα κειμένου OCR κάνει το έγγραφο ευρετήσιμο από εργαλεία αναζήτησης επιφάνειας εργασίας. + +Αν δεν χρειάζεστε το επιπλέον βάρος συμμόρφωσης, μπορείτε να αφαιρέσετε τη γραμμή `PdfAStandard` και απλώς να χρησιμοποιήσετε `new PdfSaveOptions()`—η έξοδος θα είναι ακόμα αναζητήσιμη, απλώς όχι PDF/A‑2b. + +## Συνηθισμένα Προβλήματα & Πώς να τα Αποφύγετε + +| Σύμπτωμα | Πιθανή Αιτία | Διόρθωση | +|----------|---------------|----------| +| Δεν εμφανίζεται αναζητήσιμο κείμενο | `ocrEngine.Recognize()` δεν κλήθηκε ποτέ ή απέτυχε σιωπηρά | Βεβαιωθείτε ότι το μονοπάτι της εικόνας είναι σωστό και ότι η άδεια είναι καταχωρημένη. | +| Το PDF είναι τεράστιο (10 + MB) | Το αρχικό PNG είναι υψηλής ανάλυσης και `EmbedOriginalImage` είναι true | Μειώστε την ανάλυση της εικόνας πριν το OCR ή ορίστε `EmbedOriginalImage = false`. | +| Το κείμενο είναι παραμορφωμένο | Η γλώσσα δεν εντοπίστηκε αυτόματα | Ορίστε `ocrEngine.Language = "eng";` (ή τη γλώσσα-στόχο σας) πριν το `Recognize()`. | + +## Πλήρες Παράδειγμα Εργασίας (Έτοιμο για Αντιγραφή‑Επικόλληση) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Εκτελέστε το πρόγραμμα, ανοίξτε το `output.pdf` και δοκιμάστε να αναζητήσετε λέξεις που γνωρίζετε ότι υπάρχουν στο `input.png`. Αν όλα ταιριάζουν, έχετε μόλις κατακτήσει τη ροή εργασίας **convert image to pdf** και έμαθατε πώς να **ocr image c#** με στυλ. + +## Επόμενα Βήματα & Σχετικά Θέματα + +* **Batch processing:** Επανάληψη σε φάκελο PNG και συγχώνευση των αποτελεσμάτων σε ένα PDF. +* **Alternative output formats:** Η Aspose OCR μπορεί επίσης να εκδώσει DOCX, TXT ή searchable PDF/A‑1b. +* **Performance tuning:** Χρησιμοποιήστε `ocrEngine.RecognitionMode = RecognitionMode.Fast` για μεγάλα όγκους όπου η απόλυτη ακρίβεια δεν είναι κρίσιμη. +* **Other libraries:** Αν έχετε περιορισμένο προϋπολογισμό, εξερευνήστε το Tesseract .NET—αν και χάνετε την ενσωματωμένη υποστήριξη PDF/A. + +--- + +### TL;DR + +Σας δείξαμε πώς να **create searchable pdf** από ένα PNG χρησιμοποιώντας Aspose OCR σε C#. Τα βήματα είναι: + +1. Εγκαταστήστε το Aspose OCR (`dotnet add package Aspose.OCR`). +2. Φορτώστε το PNG και εκτελέστε `ocrEngine.Recognize()` (**extract text from png**). +3. Διαμορφώστε `PdfSaveOptions` για PDF/A‑2b (**convert image to pdf** & **convert png to pdf**). +4. Αποθηκεύστε το αρχείο και επαληθεύστε το αναζητήσιμο στρώμα. + +Δοκιμάστε το, προσαρμόστε τις επιλογές, και σύντομα θα έχετε μια ισχυρή διαδικασία για τη μετατροπή οποιασδήποτε σαρωμένης εικόνας σε ένα έτοιμο για αρχειοθέτηση, αναζητήσιμο PDF. Καλό προγραμματισμό! + +{{< /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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/greek/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..f8d9749f --- /dev/null +++ b/ocr/greek/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-01-10 +description: Εξαγωγή κειμένου από εικόνα χρησιμοποιώντας το Aspose OCR σε C#. Μάθετε + πώς να μετατρέπετε το κείμενο σαρωμένου εγγράφου με επεξεργασία παρτίδας και να + αποθηκεύετε τα αποτελέσματα. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: el +og_description: Εξαγωγή κειμένου από εικόνα με το Aspose OCR σε C#. Αυτό το σεμινάριο + δείχνει πώς να μετατρέψετε το κείμενο σαρωμένου εγγράφου χρησιμοποιώντας επεξεργασία + παρτίδας. +og_title: Εξαγωγή κειμένου από εικόνα σε C# – Πλήρης οδηγός Aspose OCR +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Εξαγωγή κειμένου από εικόνα σε C# – Πλήρης οδηγός Aspose OCR +url: /el/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Εξαγωγή κειμένου από εικόνα – Πλήρης οδηγός Aspose OCR + +Κάποτε χρειάστηκε να **εξαγάγετε κείμενο από εικόνα** αλλά δεν ήξερες από πού να ξεκινήσεις; Δεν είσαι μόνος· πολλοί προγραμματιστές αντιμετωπίζουν το ίδιο πρόβλημα όταν δουλεύουν με σαρωμένα PDF, πολυ‑σελίδες TIFF ή αποδείξεις σε μορφή φωτογραφίας. Τα καλά νέα είναι ότι με το Aspose OCR μπορείς να **μετατρέψεις κείμενο σαρωμένου εγγράφου** με λίγες μόνο γραμμές C#. + +Σε αυτό το tutorial θα περάσουμε από ένα πραγματικό σενάριο: λήψη ενός πολυ‑σελίδων TIFF, εκτέλεση batch OCR σε κάθε σελίδα και δημιουργία ενός μοναδικού αρχείου κειμένου που περιέχει το περιεχόμενο όλων των σελίδων. Στο τέλος θα έχεις μια έτοιμη για εκτέλεση εφαρμογή console, θα καταλάβεις γιατί κάθε βήμα είναι σημαντικό και θα ξέρεις πώς να προσαρμόσεις τη ροή για ειδικές περιπτώσεις όπως εικόνες με κωδικό πρόσβασης ή προσαρμοσμένα πακέτα γλώσσας. + +## Προαπαιτούμενα + +- .NET 6.0 SDK ή νεότερο (ο κώδικας λειτουργεί επίσης με .NET Core και .NET Framework) +- Visual Studio 2022 (ή οποιονδήποτε επεξεργαστή προτιμάς) +- Αρχείο άδειας Aspose OCR (ή μπορείς να χρησιμοποιήσεις τη δωρεάν λειτουργία αξιολόγησης) +- Αρχείο εικόνας πολλαπλών σελίδων (π.χ., `multipage.tif`) τοποθετημένο σε φάκελο που μπορείς να αναφέρεις + +Δεν απαιτούνται επιπλέον πακέτα NuGet εκτός από το `Aspose.OCR`; θα το εγκαταστήσουμε στο πρώτο βήμα. + +## Βήμα 1 – Εγκατάσταση Aspose OCR και ρύθμιση του έργου + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro tip:** Αν διαθέτεις αρχείο άδειας (`Aspose.OCR.lic`), αντέγραψέ το στη ρίζα του έργου. Η βιβλιοθήκη θα το εντοπίσει αυτόματα κατά το χρόνο εκτέλεσης. + +Γιατί αυτό το βήμα; Η εγκατάσταση του πακέτου σου δίνει πρόσβαση σε `BatchProcessor`, `OcrEngine` και άλλες χρήσιμες κλάσεις που αφαιρούν την ανάγκη χειρισμού εικόνας χαμηλού επιπέδου. Επίσης εξασφαλίζει ότι χρησιμοποιείς τους πιο πρόσφατους αλγόριθμους OCR που παρέχει η Aspose. + +## Βήμα 2 – Φόρτωση της πολυ‑σελίδας εικόνας με BatchProcessor + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +Το `BatchProcessor` έχει σχεδιαστεί ακριβώς για αυτό το σενάριο: επανάληψη σε κάθε σελίδα μιας εικόνας πολλαπλών σελίδων χωρίς να χρειάζεται να χωρίσεις τα αρχεία χειροκίνητα. + +Ο `BatchProcessor` διαβάζει όλες τις σελίδες στη μνήμη, τις εκθέτει μέσω του `batchProcessor.Pages`. Κάθε αντικείμενο σελίδας γνωρίζει τον αριθμό του (`ocrPage.Number`) που θα χρησιμοποιήσουμε αργότερα για σαφείς επικεφαλίδες. + +## Βήμα 3 – Προετοιμασία StringBuilder για τη συσσώρευση των αποτελεσμάτων + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Γιατί StringBuilder; Η συνένωση συμβολοσειρών με `+` μέσα σε βρόχο δημιουργεί νέα αντικείμενα σε κάθε επανάληψη, μειώνοντας την απόδοση—ιδιαίτερα σε μεγάλα έγγραφα. + +## Βήμα 4 – Επανάληψη σε κάθε σελίδα, εκτέλεση OCR και προσθήκη αποτελεσμάτων + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Γιατί νέο `OcrEngine` ανά σελίδα;** Κάποιοι προγραμματιστές επαναχρησιμοποιούν μία μηχανή και αλλάζουν την ιδιότητα `Image`, αλλά αυτό μπορεί να διατηρήσει ρυθμίσεις γλώσσας ή προηγούμενα αποτελέσματα, οδηγώντας σε λεπτές σφάλματα. Η δημιουργία νέας μηχανής εξασφαλίζει καθαρό περιβάλλον. + +### Διαχείριση κοινών ειδικών περιπτώσεων + +- **Κενές σελίδες:** Αν μια σελίδα δεν περιέχει αναγνωρίσιμο κείμενο, το `ocrEngine.Text` θα είναι κενό. Μπορείς να προσθέσεις έναν δείκτη όπως “(Δεν εντοπίστηκε κείμενο)”. +- **Επιλογή γλώσσας:** Από προεπιλογή το Aspose OCR χρησιμοποιεί Αγγλικά. Για επεξεργασία Γερμανικών ή Γαλλικών, όρισε `ocrEngine.Language = Language.German;` πριν καλέσεις το `Recognize()`. +- **Συμβουλή απόδοσης:** Για τεράστια TIFF, μπορείς να ενεργοποιήσεις `ocrEngine.UseParallelProcessing = true;` ώστε να εκμεταλλευτείς πολλαπλούς πυρήνες. + +## Βήμα 5 – Εγγραφή του συνδυασμένου αποτελέσματος σε αρχείο κειμένου + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Το παραγόμενο `multipage_result.txt` θα έχει περίπου την εξής μορφή: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Τώρα έχεις **εξαγάγει κείμενο από εικόνα** και έχεις **μετατρέψει κείμενο σαρωμένου εγγράφου** σε μορφή αναζητήσιμη και επεξεργάσιμη. + +## Bonus – Οπτική επισκόπηση (Alt Text εικόνας) + +Παρακάτω υπάρχει ένα απλό διάγραμμα ροής που απεικονίζει τη διαδικασία. +*Alt text:* “Διάγραμμα που δείχνει πώς να εξαγάγετε κείμενο από εικόνα χρησιμοποιώντας batch processing του Aspose OCR σε C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Αν δημοσιεύεις αυτό το tutorial σε στατικό site, αντικατέστησε το placeholder με ένα πραγματικό SVG ή PNG.)* + +## Συχνές ερωτήσεις + +**Λειτουργεί αυτό με αρχεία PDF;** +Ναι, το Aspose OCR μπορεί να διαβάσει σελίδες PDF ως εικόνες. Απλώς χρειάζεται πρώτα να μετατρέψεις το PDF σε εικόνες, ή να χρησιμοποιήσεις το `PdfDocument` από το `Aspose.PDF` και να περάσεις την ραστερισμένη εικόνα κάθε σελίδας στο `OcrEngine`. + +**Τι γίνεται αν το TIFF είναι προστατευμένο με κωδικό;** +Το `BatchProcessor` δεν διαχειρίζεται κρυπτογράφηση απευθείας. Αποκρυπτογράφησε το αρχείο χρησιμοποιώντας μια βιβλιοθήκη όπως το `Aspose.Imaging` πριν το περάσεις στην αλυσίδα OCR. + +**Μπορώ να εξάγω JSON αντί για απλό κείμενο;** +Απολύτως. Αντικατάστησε τη λογική του `StringBuilder` με έναν JSON serializer (π.χ., `System.Text.Json`) και αποθήκευσε το κείμενο κάθε σελίδας κάτω από ένα κλειδί `pageNumber`. + +## Πλήρες λειτουργικό παράδειγμα + +Ακολουθεί το πλήρες πρόγραμμα που μπορείς να αντιγράψεις‑και‑επικολλήσεις στο `Program.cs`. Περιλαμβάνει όλες τις οδηγίες `using`, διαχείριση σφαλμάτων και σχόλια. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Τρέξε το πρόγραμμα με: + +```bash +dotnet run +``` + +Θα πρέπει να δεις το μήνυμα στην κονσόλα που επιβεβαιώνει την επιτυχία, και το αρχείο εξόδου θα περιέχει τα συνενωμένα αποτελέσματα OCR. + +## Συμπέρασμα + +Δείξαμε μια πρακτική μέθοδο για **εξαγωγή κειμένου από εικόνα** χρησιμοποιώντας το Aspose OCR, μετατρέποντας οποιοδήποτε πολυ‑σελίδων σαρωμένο αρχείο σε απλό, αναζητήσιμο κείμενο. Εκμεταλλευόμενοι το `BatchProcessor` και μια καθαρή ρύθμιση `OcrEngine` ανά σελίδα, μπορείς αξιόπιστα να **μετατρέψεις κείμενο σαρωμένου εγγράφου** διατηρώντας τον κώδικα απλό και συντηρήσιμο. + +Νιώσε ελεύθερος/η να πειραματιστείς: δοκίμασε διαφορετικές γλώσσες, άλλαξε την έξοδο σε JSON, ή ενσωμάτωσε αυτή τη λογική σε ένα web API που επεξεργάζεται ανεβάσματα σε πραγματικό χρόνο. Το βασικό μοτίβο παραμένει το ίδιο—φόρτωση, αναγνώριση, συσσώρευση και αποθήκευση. + +Έχεις περισσότερες ερωτήσεις σχετικά με OCR, άδειες Aspose ή διαχείριση τεράστιων δέσμης εγγράφων; Άφησε ένα σχόλιο παρακάτω ή δες την επίσημη τεκμηρίωση της Aspose για πιο βαθιές πληροφορίες. Καλό 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/greek/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/greek/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..daf568f3 --- /dev/null +++ b/ocr/greek/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Εξάγετε κείμενο από εικόνα χρησιμοποιώντας το Aspose OCR σε C#. Μάθετε + πώς να φορτώνετε εικόνα για OCR, να αναγνωρίζετε κείμενο στα Χίντι και να εκτελείτε + την αναγνώριση OCR σε λίγα απλά βήματα. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: el +og_description: Εξάγετε κείμενο από εικόνα χρησιμοποιώντας το Aspose OCR σε C#. Ακολουθήστε + αυτόν τον οδηγό βήμα‑βήμα για να φορτώσετε την εικόνα για OCR, να αναγνωρίσετε κείμενο + στα Χίντι και να εκτελέσετε την αναγνώριση OCR. +og_title: Εξαγωγή κειμένου από εικόνα με Aspose OCR – Πλήρης οδηγός C# +tags: +- Aspose OCR +- C# +- Image Processing +title: Εξαγωγή κειμένου από εικόνα με Aspose OCR – Πλήρης οδηγός C# +url: /el/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Εξαγωγή Κειμένου από Εικόνα με Aspose OCR – Πλήρης Οδηγός C# + +Έχετε χρειαστεί ποτέ να **εξάγετε κείμενο από εικόνα** αλλά δεν ήσασταν σίγουροι ποια βιβλιοθήκη να επιλέξετε; Δεν είστε μόνοι—πολλοί προγραμματιστές αντιμετωπίζουν αυτό το εμπόδιο όταν ασχολούνται για πρώτη φορά με OCR στο .NET. Τα καλά νέα είναι ότι το Aspose OCR κάνει όλη τη διαδικασία απροσδόκητα εύκολη, ακόμη και όταν δουλεύετε με σύνθετα αλφάβητα όπως τα Hindi. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από όλα όσα χρειάζεστε για **φόρτωση εικόνας για OCR**, **αναγνώριση κειμένου Hindi**, και **εκτέλεση OCR** σε C#. Στο τέλος, θα έχετε μια έτοιμη για εκτέλεση κονσόλα που εκτυπώνει το εξαγόμενο κείμενο κατευθείαν στην οθόνη. + +## Τι Θα Δημιουργήσετε + +Θα φτιάξουμε μια μικρή εφαρμογή κονσόλας που: + +1. Κατευθύνει τη μηχανή OCR σε φάκελο που περιέχει μοντέλα γλώσσας. +2. Απενεργοποιεί τις αυτόματες λήψεις—χρήσιμο για περιβάλλοντα με περιορισμένη πρόσβαση. +3. Επιλέγει τα Hindi ως τη γλώσσα-στόχο. +4. Φορτώνει ένα JPEG (ή PNG) που περιέχει κείμενο Hindi. +5. Εκτελεί τη διαδικασία αναγνώρισης. +6. Γράφει το αποτέλεσμα στην κονσόλα. + +Χωρίς εξωτερικές υπηρεσίες, χωρίς κλειδιά cloud, μόνο καθαρό OCR on‑premise. + +## Προαπαιτούμενα + +- **.NET 6.0** ή νεότερο (ο κώδικας λειτουργεί επίσης σε .NET Framework 4.7+). +- **Aspose.OCR for .NET** πακέτο NuGet εγκατεστημένο. + ```bash + dotnet add package Aspose.OCR + ``` +- Ένας φάκελος με όνομα `OcrResources` που περιέχει το μοντέλο γλώσσας Hindi (`hin.traineddata`). + Μπορείτε να το κατεβάσετε από τη σελίδα λήψης του Aspose OCR και να το τοποθετήσετε στο `YOUR_DIRECTORY/OcrResources`. +- Ένα αρχείο εικόνας (`input.jpg`) με καθαρό κείμενο Hindi. + Για παράδειγμα, φανταστείτε μια φωτογραφία πινακίδας καταστήματος που γράφει “स्वागत है”. + +> **Pro tip:** Κρατήστε την ανάλυση της εικόνας πάνω από 300 dpi· χαμηλότερες αναλύσεις μπορεί να προκαλέσουν χαμένα χαρακτήρες. + +--- + +## Βήμα 1: Καθορίστε τη Μηχανή OCR στα Πόρους Σας – *extract text from image* + +Το πρώτο που χρειάζεται το Aspose OCR είναι η θέση των μοντέλων γλώσσας. Αν το παραλείψετε, η μηχανή θα προσπαθήσει να κατεβάσει τα αρχεία αυτόματα—κάτι που ίσως δεν θέλετε σε ασφαλισμένο δίκτυο. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Γιατί είναι σημαντικό:* Ορίζοντας το `ResourcesPath` εξασφαλίζετε ότι η μηχανή φορτώνει τα σωστά εκπαιδευμένα δεδομένα τοπικά, κάτι που επιταχύνει την πρώτη εκτέλεση και αφαιρεί τυχόν ανεπιθύμητη κίνηση δικτύου. + +--- + +## Βήμα 2: Απενεργοποίηση Αυτόματης Λήψης Πόρων – *load image for OCR* + +Σε πολλά εταιρικά περιβάλλοντα η εξωτερική πρόσβαση στο internet είναι αποκλεισμένη. Το Aspose OCR σέβεται μια σημαία που το εμποδίζει να προσπαθήσει να κατεβάσει τα ελλιπή αρχεία «on‑the‑fly». + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Αν ξεχάσετε αυτή τη γραμμή και το μοντέλο Hindi δεν υπάρχει, η μηχανή θα ρίξει μια εξαίρεση που μοιάζει με “Unable to download required resource”. Κρατώντας τη σημαία `false` παίρνετε μια σαφή, καθορισμένη αποτυχία που μπορείτε να διαχειριστείτε εσείς. + +--- + +## Βήμα 3: Επιλογή Γλώσσας – *recognize hindi text* + +Το Aspose OCR υποστηρίζει δεκάδες γλώσσες, αλλά πρέπει να του πείτε ποια να χρησιμοποιήσει. Τα Hindi αναγνωρίζονται με `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Τι γίνεται αν χρειάζεστε πολλές γλώσσες;* Μπορείτε να ορίσετε `Language = OcrLanguage.AutoDetect` ώστε η μηχανή να μαντεύει, αλλά η αυτόματη ανίχνευση είναι πιο αργή και μερικές φορές αποτυγχάνει σε μεικτά αλφάβητα. Για καθαρά Hindi, η ρητή επιλογή είναι η πιο ασφαλής. + +--- + +## Βήμα 4: Φόρτωση Εικόνας – *load image for OCR* + +Τώρα παραδίδουμε στη μηχανή την εικόνα που θέλουμε να διαβάσει. Το Aspose προσφέρει τη βολική βοηθητική μέθοδο `ImageStream.FromFile` που αφαιρεί τις εξαρτήσεις του `System.Drawing`. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Αν το μονοπάτι του αρχείου είναι λανθασμένο, το Aspose θα ρίξει `FileNotFoundException`. Ένας γρήγορος έλεγχος `File.Exists` πριν από αυτή τη γραμμή μπορεί να σας εξοικονομήσει χρόνο εντοπισμού σφαλμάτων. + +--- + +## Βήμα 5: Εκτέλεση Μηχανής OCR – *run OCR recognition* + +Με όλα ρυθμισμένα, ξεκινάμε τελικά τη διαδικασία αναγνώρισης. Αυτή η κλήση είναι συγχρονισμένη και μπλοκάρει μέχρι να εξαχθεί το κείμενο. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Στο παρασκήνιο, το Aspose εκτελεί αρκετά στάδια: προεπεξεργασία (ευθυγράμμιση, αφαίρεση θορύβου), τμηματοποίηση, ταξινόμηση χαρακτήρων, και τέλος γλωσσική μετα-επεξεργασία. Η «βαριά δουλειά» γίνεται μέσα σε αυτή τη μοναδική κλήση μεθόδου. + +--- + +## Βήμα 6: Εξαγωγή του Κειμένου – *extract text from image* + +Το αποτέλεσμα βρίσκεται στην ιδιότητα `Text` της μηχανής. Απλώς το γράφουμε στην κονσόλα, αλλά μπορείτε επίσης να το αποθηκεύσετε σε βάση δεδομένων, να το στείλετε μέσω API, ή να το τροφοδοτήσετε σε άλλη διαδικασία NLP. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Αναμενόμενο αποτέλεσμα** (υπόθεση ότι η εικόνα περιέχει “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +Αν δείτε ακατάλληλους χαρακτήρες, ελέγξτε ξανά ότι το μοντέλο Hindi είναι σωστά τοποθετημένο και ότι η εικόνα δεν είναι υπερβολικά συμπιεσμένη. + +--- + +## Πλήρες Παράδειγμα Λειτουργίας + +Παρακάτω βρίσκεται το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε‑και‑επικολλήσετε σε ένα νέο έργο κονσόλας (`dotnet new console`). Αντικαταστήστε το `YOUR_DIRECTORY` με το πραγματικό μονοπάτι στον υπολογιστή σας. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** Αν σκοπεύετε να επεξεργαστείτε πολλές εικόνες σε βρόχο, δημιουργήστε μία μόνο `OcrEngine` και επαναχρησιμοποιήστε την—αυτό μειώνει το κόστος εκκίνησης. + +--- + +## Αντιμετώπιση Συνηθισμένων Προβλημάτων + +| Issue | Why it Happens | Quick Fix | +|-------|----------------|-----------| +| **Empty output** | Wrong language model or low‑quality image. | Verify `ResourcesPath`, increase image DPI, or try `ocrEngine.Image = ImageStream.FromFile(..., true)` to enable auto‑enhancement. | +| **Exception: Resource not found** | Missing Hindi `.traineddata`. | Download the Hindi model from Aspose, place it in `OcrResources`, and ensure the file name matches `hin.traineddata`. | +| **Garbage characters** | Encoding mismatch when printing to console. | Set console output encoding: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Performance lag** | Large images processed without scaling. | Pre‑scale the image to a max width/height of 2000 px before feeding it to OCR. | + +--- + +## Επόμενα Βήματα & Σχετικά Θέματα + +- **Batch processing:** Τυλίξτε τον κώδικα σε βρόχο `foreach` για επεξεργασία φακέλου εικόνων. +- **Different languages:** Αντικαταστήστε το `OcrLanguage.Hindi` με `OcrLanguage.English`, `OcrLanguage.Arabic`, κ.λπ. +- **Output formats:** Αντί για `Console.WriteLine`, γράψτε σε αρχείο κειμένου (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integration with ASP.NET Core:** Εκθέστε ένα endpoint API που δέχεται ανέβασμα εικόνας και επιστρέφει το εξαγόμενο κείμενο ως JSON. + +Όλες αυτές οι επεκτάσεις ακολουθούν το ίδιο μοτίβο—ρυθμίστε τη μηχανή, φορτώστε μια εικόνα, αναγνωρίστε, και χρησιμοποιήστε το αποτέλεσμα. + +--- + +## Συμπέρασμα + +Σήμερα δείξαμε πώς να **εξάγετε κείμενο από εικόνα** χρησιμοποιώντας το Aspose OCR σε C#. Ο οδηγός κάλυψε κάθε βήμα που χρειάζεστε για **φόρτωση εικόνας για OCR**, **αναγνώριση κειμένου Hindi**, και **εκτέλεση OCR**—όλα σε μια αυτόνομη εφαρμογή κονσόλας. + +Δοκιμάστε το με τις δικές σας φωτογραφίες, πειραματιστείτε με διαφορετικές γλώσσες, και προσαρμόστε το απόσπασμα για web services ή background jobs. Η βασική ιδέα παραμένει η ίδια: ορίστε τους πόρους, επιλέξτε γλώσσα, τροφοδοτήστε εικόνα, και διαβάστε την ιδιότητα `Text`. + +Αν αντιμετωπίσετε δυσκολίες, ελέγξτε τον πίνακα αντιμετώπισης προβλημάτων παραπάνω ή αφήστε ένα σχόλιο. Καλή προγραμματιστική δουλειά, και εύχομαι τα αποτελέσματα OCR σας να είναι πάντα kristall‑clear! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/greek/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..738750e0 --- /dev/null +++ b/ocr/greek/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Πώς να εκτελέσετε OCR σε μια εικόνα χρησιμοποιώντας το Aspose OCR σε + C#. Μάθετε πώς να εξάγετε κείμενο από εικόνα, να εκτελέσετε OCR σε εικόνα και να + φορτώσετε εικόνα για OCR με επιτάχυνση GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: el +og_description: Πώς να εκτελέσετε OCR σε μια εικόνα χρησιμοποιώντας το Aspose OCR. + Αυτό το σεμινάριο δείχνει πώς να εξάγετε κείμενο από εικόνα, να εκτελέσετε OCR στην + εικόνα και να φορτώσετε την εικόνα για OCR αποδοτικά. +og_title: Πώς να εκτελέσετε OCR σε C# – Πλήρης οδηγός βήμα‑βήμα +tags: +- OCR +- C# +- Aspose +title: Πώς να Εκτελέσετε OCR σε C# – Πλήρης Οδηγός με το Aspose OCR +url: /el/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Εκτελέσετε OCR σε C# – Πλήρης Οδηγός με το Aspose OCR + +Έχετε αναρωτηθεί ποτέ **πώς να εκτελέσετε OCR** σε μια φωτογραφία και να εξάγετε το κείμενο χωρίς να τσακίζετε τα μαλλιά σας; Δεν είστε ο μόνος. Είτε ψηφιοποιείτε τιμολόγια, σκανάρετε αποδείξεις, είτε απλώς προσπαθείτε να δημιουργήσετε ένα αναζητήσιμο PDF, η δυνατότητα εξαγωγής κειμένου από εικόνα είναι καθημερινή ανάγκη για πολλούς προγραμματιστές. + +Σε αυτό το tutorial θα περάσουμε από ένα πρακτικό, ολοκληρωμένο παράδειγμα που δείχνει **πώς να εκτελέσετε OCR σε αρχεία εικόνας** χρησιμοποιώντας τη βιβλιοθήκη Aspose OCR, με πλήρη επιτάχυνση GPU για ταχύτητα. Στο τέλος θα γνωρίζετε ακριβώς πώς να φορτώσετε εικόνα για OCR, να ρυθμίσετε τη χρήση μνήμης και να λάβετε καθαρά αποτελέσματα απλού κειμένου — όλα σε λίγα λεπτά κώδικα. + +## Τι Θα Μάθετε + +- Πώς να αρχικοποιήσετε τη μηχανή Aspose OCR σε C# +- Πώς να **φορτώσετε εικόνα για OCR** από δίσκο ή ροή +- Πώς να ενεργοποιήσετε την επιτάχυνση GPU και να περιορίσετε τη μνήμη GPU +- Πώς να **εξάγετε κείμενο από εικόνα** και να επαληθεύσετε το αποτέλεσμα +- Συνηθισμένα προβλήματα (έλλειψη μονάδας GPU, περιορισμοί μνήμης) και γρήγορες λύσεις + +Δεν απαιτείται προηγούμενη εμπειρία με το Aspose OCR· αρκεί ένα λειτουργικό περιβάλλον .NET και μια δείγμα εικόνας. + +--- + +## Πώς να Εκτελέσετε OCR σε Εικόνα με το Aspose OCR + +Το πρώτο που χρειάζεστε είναι ένα σαφές, εκτελέσιμο απόσπασμα κώδικα που κάνει όλη τη δουλειά. Παρακάτω είναι το πλήρες πρόγραμμα που μπορείτε να αντιγράψετε, επικολλήσετε και να τρέξετε αμέσως. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Αναμενόμενο αποτέλεσμα** (υποθέτοντας ότι η δείγμα εικόνας περιέχει τη φράση “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Συμβουλή:** Αν δεν βλέπετε κανένα κείμενο, ελέγξτε ξανά ότι η μονάδα GPU είναι εγκατεστημένη και ότι η διαδρομή της εικόνας είναι σωστή. Η μέθοδος `ImageStream.FromFile` ρίχνει μια σαφή εξαίρεση αν το αρχείο δεν βρεθεί. + +--- + +## Εξαγωγή Κειμένου από Εικόνα Χρησιμοποιώντας Επιτάχυνση GPU + +Γιατί να ασχοληθούμε με το GPU; Το OCR μόνο με CPU λειτουργεί, αλλά μπορεί να είναι εξαιρετικά αργό σε μεγάλες ή υψηλής ανάλυσης εικόνες. Η ενεργοποίηση της επιτάχυνσης GPU (βήμα 2 παραπάνω) μεταβιβάζει το βαρέως φορτίου στην κάρτα γραφικών σας, η οποία μπορεί να επεξεργαστεί χιλιάδες εικονοστοιχεία ανά δευτερόλεπτο. + +### Πότε να Χρησιμοποιήσετε GPU + +- **Επεξεργασία παρτίδας** – σάρωση δεκάδων τιμολογίων σε μία φορά. +- **Σάρωση υψηλής ανάλυσης** – οτιδήποτε πάνω από 300 dpi. +- **Εφαρμογές σε πραγματικό χρόνο** – όπως ένας κινητός σαρωτής που χρειάζεται άμεση ανάδραση. + +Αν το περιβάλλον σας δεν διαθέτει συμβατό GPU, απλώς ορίστε `EnableGpuAcceleration = false;` και η μηχανή θα επιστρέψει αυτόματα σε λειτουργία CPU. + +--- + +## Εκτέλεση OCR σε Εικόνα – Φόρτωση της Εικόνας Σωστά + +Η φόρτωση της εικόνας είναι το βήμα **load image for OCR** που συχνά προκαλεί προβλήματα. Το Aspose OCR αναμένει ένα `ImageStream`, το οποίο μπορεί να δημιουργηθεί από αρχείο, ροή μνήμης ή ακόμη και URL. Εδώ είναι μερικές παραλλαγές: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Ακραία περίπτωση:** Κάποιες εικόνες περιέχουν κανάλι άλφα (διαφάνεια) που μπερδεύει τη μηχανή OCR. Η αφαίρεση του άλφα είναι εύκολη: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Τώρα καλύψατε τους πιο συνηθισμένους τρόπους **load image for OCR**, διασφαλίζοντας ότι η μηχανή λαμβάνει πάντα ένα καθαρό, υποστηριζόμενο φορμάτ. + +--- + +## Συμβουλές για Αποτελεσματική Φόρτωση Εικόνας για OCR + +1. **Αλλαγή μεγέθους μεγάλων εικόνων** – το OCR δεν χρειάζεται φωτογραφία 4 K· η σμίκρυνση σε πλάτος ~1500 px επιταχύνει τη διαδικασία χωρίς να επηρεάζει την ακρίβεια. +2. **Μετατροπή σε κλίμακα του γκρι** – μειώνει τον θόρυβο και μπορεί να βελτιώσει την αναγνώριση σε σάρωση χαμηλής αντίθεσης. +3. **Προεπεξεργασία με ευθυγράμμιση** – αν η εικόνα σας είναι κεκλιμένη, η ενσωματωμένη ευθυγράμμιση του Aspose OCR μπορεί να ενεργοποιηθεί μέσω `ocrEngine.Config.EnableDeskew = true;`. + +Αυτές οι ρυθμίσεις είναι ιδιαίτερα χρήσιμες όταν **εξάγετε κείμενο από εικόνα** μαζικά. + +--- + +## Συνηθισμένα Προβλήματα & Πώς να Τα Διορθώσετε + +| Συμπτωμα | Πιθανή Αιτία | Διόρθωση | +|----------|--------------|----------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | Η μονάδα GPU δεν είναι εγκατεστημένη | Εγκαταστήστε το πακέτο Aspose OCR GPU ή απενεργοποιήστε το GPU (`EnableGpuAcceleration = false`). | +| Κενό αποτέλεσμα | Λάθος διαδρομή εικόνας ή μη υποστηριζόμενο φορμάτ | Επαληθεύστε τη διαδρομή `ImageStream.FromFile`; δοκιμάστε να φορτώσετε από bytes για να διασφαλίσετε ότι το αρχείο διαβάζεται σωστά. | +| Σφάλμα έλλειψης μνήμης | Το όριο μνήμης GPU είναι πολύ χαμηλό για μεγάλη παρτίδα | Αυξήστε το `GpuMemoryLimit` (π.χ., 2048) ή επεξεργαστείτε τις εικόνες σε μικρότερα τμήματα. | +| Παραμορφωμένοι χαρακτήρες | Η εικόνα έχει πολύ θόρυβο ή χαμηλή αντίθεση | Προεπεξεργασία: δυαδικοποίηση, αποθόρυβο ή αύξηση DPI πριν το OCR. | + +--- + +## Πλήρες Παράδειγμα Λειτουργίας – Συνδυάστε Όλα + +Παρακάτω είναι μια συμπαγής εφαρμογή κονσόλας που ενσωματώνει τις καλύτερες πρακτικές που συζητήσαμε: επιτάχυνση GPU, περιορισμός μνήμης, προεπεξεργασία εικόνας και διαχείριση σφαλμάτων. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Η εκτέλεση αυτού του προγράμματος εκτυπώνει το καθαρό κείμενο που εξήχθη από την εικόνα σας, δείχνοντας έναν αξιόπιστο τρόπο **εξαγωγής κειμένου από εικόνα** ακόμη και όταν η πηγή δεν είναι τέλεια. + +--- + +## Συμπέρασμα + +Καλύψαμε **πώς να εκτελέσετε OCR** σε εικόνα χρησιμοποιώντας το Aspose OCR, από την αρχικοποίηση της μηχανής μέχρι τη φόρτωση της εικόνας, την ενεργοποίηση της επιτάχυνσης GPU και τη διαχείριση ακραίων περιπτώσεων. Τώρα έχετε μια ισχυρή, αξιόπιστη αναφορά που μπορείτε να αντιγράψετε‑επικολλήσετε σε οποιοδήποτε έργο .NET και να ξεκινήσετε αμέσως **εξάγοντας κείμενο από εικόνα**. + +Επόμενα βήματα; Δοκιμάστε να τροφοδοτήσετε σελίδες PDF, πειραματιστείτε με διαφορετικές γλώσσες (ορίστε `ocrEngine.Config.Language = "spa"` για Ισπανικά), ή ενσωματώστε αυτή τη ροή σε ένα web API που επεξεργάζεται ανεβάσματα σε πραγματικό χρόνο. Ο ουρανός είναι το όριο, και με τα εργαλεία που συζητήσαμε, είστε καλά εξοπλισμένοι για να αντιμετωπίσετε οποιαδήποτε πρόκληση 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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/greek/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..35fd4c44 --- /dev/null +++ b/ocr/greek/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-01-10 +description: Πώς να εκτελέσετε γρήγορα OCR και να εξάγετε αραβικό κείμενο από μια + εικόνα. Μάθετε πώς να μετατρέπετε εικόνα σε κείμενο, να διαβάζετε κείμενο από PNG + και δείτε πώς να εξάγετε κείμενο με το Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: el +og_description: Πώς να εκτελέσετε OCR σε C# και να εξάγετε αραβικό κείμενο από εικόνα + PNG. Αυτός ο οδηγός σας δείχνει πώς να μετατρέψετε την εικόνα σε κείμενο και να + διαβάσετε το κείμενο από PNG βήμα‑προς‑βήμα. +og_title: Πώς να τρέξετε OCR σε C# – Εξαγωγή αραβικού κειμένου από PNG +tags: +- OCR +- C# +- Aspose +title: Πώς να εκτελέσετε OCR σε C# – Εξαγωγή αραβικού κειμένου από PNG +url: /el/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Εκτελέσετε OCR σε C# – Εξαγωγή Αραβικού Κειμένου από PNG + +Έχετε αναρωτηθεί ποτέ **πώς να εκτελέσετε OCR** σε μια εικόνα που περιέχει αραβικούς χαρακτήρες; Δεν είστε μόνοι. Πολλοί προγραμματιστές συναντούν δυσκολίες όταν πρέπει να **εξάγουν αραβικό κείμενο** από ένα PNG αλλά δεν ξέρουν ποια βιβλιοθήκη θα διαχειριστεί τα scripts από δεξιά προς αριστερά χωρίς προβλήματα. + +Σε αυτό το tutorial θα περάσουμε από όλα όσα χρειάζεστε για να **μετατρέψετε εικόνα σε κείμενο**, **διαβάσετε κείμενο από PNG**, και τελικά **πώς να εξάγετε κείμενο** χρησιμοποιώντας το Aspose.OCR σε μια καθαρή εφαρμογή κονσόλας C#. Στο τέλος θα έχετε ένα έτοιμο‑για‑εκτέλεση πρόγραμμα που εκτυπώνει το αραβικό κείμενο απευθείας στο τερματικό σας. + +## Τι Θα Μάθετε + +- Εγκατάσταση και αναφορά του πακέτου NuGet Aspose.OCR. +- Διαμόρφωση της μηχανής OCR για υποστήριξη της αραβικής γλώσσας. +- Φόρτωση εικόνας PNG και εκτέλεση της διαδικασίας αναγνώρισης. +- Ανάκτηση και εμφάνιση του εξαγόμενου κειμένου. +- Ρύθμιση παραμέτρων για καλύτερη ακρίβεια και αντιμετώπιση κοινών προβλημάτων. + +Δεν απαιτείται προηγούμενη εμπειρία με OCR, μόνο μια βασική κατανόηση της C# και ενός περιβάλλοντος ανάπτυξης .NET (Visual Studio, Rider ή η γραμμή εντολών `dotnet`). + +--- + +## Πώς να Εκτελέσετε OCR – Ρύθμιση του Aspose OCR + +### Βήμα 1: Προσθήκη του Πακέτου NuGet Aspose.OCR + +Το πρώτο πράγμα που χρειάζεστε είναι η βιβλιοθήκη OCR. Το Aspose.OCR είναι εμπορικό προϊόν, αλλά προσφέρει δωρεάν δοκιμή που λειτουργεί τέλεια για εκπαιδευτικούς σκοπούς. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Εναλλακτικά, ανοίξτε τον **NuGet Package Manager** στο Visual Studio, αναζητήστε το **Aspose.OCR** και κάντε κλικ στο **Install**. + +> **Συμβουλή:** Εάν σκοπεύετε να χρησιμοποιήσετε τη βιβλιοθήκη σε CI pipeline, προσθέστε τη σημαία `-v` για να κλειδώσετε την έκδοση, π.χ., `dotnet add package Aspose.OCR -v 23.10`. + +### Βήμα 2: Δημιουργία Νέου Project Κονσόλας (αν δεν έχετε ήδη) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Τώρα έχετε ένα νέο αρχείο `Program.cs` έτοιμο για τον κώδικά μας. + +--- + +## Εξαγωγή Αραβικού Κειμένου – Γράψιμο του Κώδικα OCR + +Παρακάτω είναι το πλήρες, έτοιμο‑για‑εκτέλεση πρόγραμμα. Αποθηκεύστε το ως `Program.cs` (ή αντικαταστήστε το αυτόματα δημιουργημένο αρχείο). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Γιατί Κάθε Γραμμή Είναι Σημαντική + +- **`OcrEngine`**: Η κεντρική κλάση που συντονίζει τη φόρτωση εικόνας, την επιλογή γλώσσας και την αναγνώριση. +- **`Language = OcrLanguage.Arabic`**: Η αραβική χρησιμοποιεί script από δεξιά προς αριστερά και μοναδικά γλύφη· ορίζοντας τη γλώσσα λέτε στη μηχανή να εφαρμόσει τα σωστά μοντέλα χαρακτήρων. +- **`ImageStream.FromFile`**: Διαχειρίζεται PNG, JPEG, BMP και πολλές άλλες μορφές. Αν χρειαστεί ποτέ να διαβάσετε από `MemoryStream` (π.χ., ένα αρχείο που ανέβηκε), αντικαταστήστε αυτήν την κλήση αναλόγως. +- **`Recognize()`**: Εκτελεί το βαριά έργο—ανάλυση pixel, τμηματοποίηση και ταξινόμηση χαρακτήρων. +- **`ocrEngine.Text`**: Η τελική συμβολοσειρά Unicode, έτοιμη για περαιτέρω επεξεργασία, αποθήκευση ή εμφάνιση. + +### Αναμενόμενο Αποτέλεσμα + +Αν το `arabic_sample.png` περιέχει τη φράση “مرحبا بالعالم” (Hello World), η κονσόλα θα εκτυπώσει: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Αν το αποτέλεσμα φαίνεται ακατάληπτο, ελέγξτε ξανά ότι η εικόνα είναι καθαρή, η γλώσσα είναι ορισμένη σε αραβική και η έκδοση της μηχανής OCR ταιριάζει με την τεκμηρίωση. + +--- + +## Μετατροπή Εικόνας σε Κείμενο – Ρύθμιση Ακρίβειας + +Ενώ οι προεπιλεγμένες ρυθμίσεις λειτουργούν για τις περισσότερες καθαρές σάρωση, οι πραγματικές εικόνες συχνά χρειάζονται λίγη επιπλέον προσοχή. + +| Ρύθμιση | Τι Κάνει | Πότε να Χρησιμοποιηθεί | +|---------|----------|------------------------| +| `ocrEngine.Config.Preprocess = true` | Ενεργοποιεί αυτόματη δυαδικοποίηση και αφαίρεση θορύβου. | Σαρωμένα έγγραφα με σκιές. | +| `ocrEngine.Config.Deskew = true` | Περιστρέφει την εικόνα για διόρθωση μικρής κλίσης. | Φωτογραφίες ληφθείσες υπό γωνία. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Αντιμετωπίζει ολόκληρη την εικόνα ως ένα μπλοκ κειμένου. | Απλές λεζάντες ή ετικέτες μίας γραμμής. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Περιορίζει την αναγνώριση μόνο σε αραβικούς χαρακτήρες. | Μειώνει ψευδώς θετικά σε σελίδες με μικτές γλώσσες. | + +Μπορείτε να προσθέσετε αυτές τις γραμμές αμέσως μετά τη δημιουργία της μηχανής: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Ανάγνωση Κειμένου από PNG – Διαχείριση Διαφορετικών Πηγών Εικόνας + +Μερικές φορές το PNG βρίσκεται σε βάση δεδομένων ή προέρχεται από αίτημα web. Εδώ είναι μια γρήγορη παραλλαγή που διαβάζει από ένα `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Το υπόλοιπο της ροής παραμένει ίδιο, πράγμα που σημαίνει ότι **πώς να εξάγετε κείμενο** παραμένει συνεπές ανεξάρτητα από την πηγή. + +--- + +## Πώς να Εξάγετε Κείμενο – Προηγμένες Επιλογές & Ακραίες Περιπτώσεις + +### 1. Πολυ‑σελίδες PDFs ή TIFFs + +Αν χρειάζεται να κάνετε OCR σε έγγραφο πολλαπλών σελίδων, κάντε βρόχο πάνω από κάθε σελίδα: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Σημείωση:** Θα χρειαστείτε το πακέτο `Aspose.PDF` για αυτό το απόσπασμα. + +### 2. Αυτόματη Ανίχνευση Γλώσσας + +Το Aspose.OCR προσφέρει επίσης αυτόματη ανίχνευση, αλλά είναι πιο αργό. Αν δεν είστε σίγουροι αν η εικόνα περιέχει αραβικό ή άλλο script, ενεργοποιήστε το: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +### 3. Συμβουλές Απόδοσης + +- **Επαναχρησιμοποίηση του αντικειμένου `OcrEngine`** για πολλαπλές εικόνες· η δημιουργία νέας στιγμής κάθε φορά προσθέτει επιβάρυνση. +- **Εκτέλεση σε παράλληλο** μόνο αν έχετε ξεχωριστές στιγμές μηχανής ανά νήμα—η κοινή χρήση μιας στιγμής προκαλεί συνθήκες αγώνα. + +--- + +## Συμπέρασμα + +Καλύψαμε **πώς να εκτελέσετε OCR** σε C# από την αρχή μέχρι το τέλος, δείχνοντάς σας πώς να **εξάγετε αραβικό κείμενο**, **μετατρέψετε εικόνα σε κείμενο**, **διαβάσετε κείμενο από PNG**, και να απαντήσετε **πώς να εξάγετε κείμενο** σε διάφορα σενάρια. Ο κώδικας δείγματος είναι πλήρης, αυτόνομος και έτοιμος για να τον επικολλήσετε σε οποιοδήποτε project κονσόλας .NET. + +Επόμενα βήματα; Δοκιμάστε να αντικαταστήσετε το `OcrLanguage.Arabic` με Κορεατικά ή Σερβικά Κυριλλικά για να δείτε τη πολύγλωσση δύναμη της βιβλιοθήκης. Πειραματιστείτε με τις σημαίες προεπεξεργασίας για να βελτιώσετε την ακρίβεια σε θορυβώδεις σαρώσεις, ή ενσωματώστε τη ρουτίνα OCR σε ένα web API ώστε οι χρήστες να μπορούν να ανεβάζουν εικόνες και να λαμβάνουν άμεσα τα αποτελέσματα κειμένου. + +Καλή κωδικοποίηση, και εύχομαι τα αποτελέσματα 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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/greek/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..69129690 --- /dev/null +++ b/ocr/greek/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-01-10 +description: Μάθετε πώς να αναγνωρίζετε κείμενο από εικόνα, να εξάγετε τις συντεταγμένες + του κειμένου και να μετατρέπετε την απόδειξη σε JSON χρησιμοποιώντας το Aspose OCR + σε C#. Οδηγός βήμα‑βήμα. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: el +og_description: Αναγνώριση κειμένου από εικόνα σε C# χρησιμοποιώντας Aspose OCR. Αυτός + ο οδηγός δείχνει πώς να εξάγετε κείμενο, να λάβετε συντεταγμένες και να μετατρέψετε + την απόδειξη σε JSON. +og_title: Αναγνώριση κειμένου από εικόνα – Πλήρης οδηγός OCR σε C# +tags: +- OCR +- C# +- Aspose +title: αναγνώριση κειμένου από εικόνα σε C# – Πλήρης οδηγός για OCR και JSON +url: /el/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# αναγνώριση κειμένου από εικόνα – Πλήρες Tutorial C# OCR + +Έχετε χρειαστεί ποτέ να αναγνωρίσετε κείμενο από εικόνα αλλά δεν ήξερατε ποια βιβλιοθήκη να επιλέξετε; Δεν είστε μόνοι. Σε πολλές πραγματικές εφαρμογές—διαχειριστές εξόδων, σαρωτές αποδείξεων ή αρχειοθέτες εγγράφων—η αξιόπιστη εξαγωγή κειμένου είναι το πρώτο εμπόδιο. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα **πώς να εξάγουμε κείμενο**, πώς να πάρουμε τα πλαίσια οριοθέτησής του και τελικά **πώς να μετατρέψουμε την απόδειξη σε JSON** χρησιμοποιώντας το Aspose.OCR για .NET. Στο τέλος θα έχετε ένα αυτόνομο έργο C# που παίρνει μια φωτογραφία απόδειξης και δημιουργεί ένα καθαρό αρχείο JSON με βαθμούς εμπιστοσύνης και συντεταγμένες. + +## Τι Θα Χρειαστείτε + +Πριν ξεκινήσουμε, βεβαιωθείτε ότι έχετε τα εξής στο μηχάνημά σας: + +- **.NET 6.0 SDK** (ή οποιαδήποτε νεότερη έκδοση). Παλαιότερα frameworks λειτουργούν επίσης, αλλά το .NET 6 είναι η ιδανική επιλογή για σύγχρονες βιβλιοθήκες. +- **Visual Studio 2022** ή VS Code με την επέκταση C#. +- **Aspose.OCR for .NET** πακέτο NuGet (`Aspose.OCR` και `Aspose.OCR.Output`). Μπορείτε να το εγκαταστήσετε μέσω του Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Ένα δείγμα εικόνας απόδειξης (π.χ. `receipt.jpg`) τοποθετημένο σε φάκελο που θα αναφέρετε αργότερα. + +Αυτό είναι όλο—χωρίς επιπλέον SDKs, χωρίς εγγενή binaries, μόνο καθαρός διαχειριζόμενος κώδικας. + +## Βήμα 1: Δημιουργία Νέου Console Project + +Πρώτα απ’ όλα, δημιουργήστε μια console εφαρμογή. Είναι ο πιο γρήγορος τρόπος για να δοκιμάσετε OCR χωρίς επιπλέον UI. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Συμβουλή:** Κρατήστε τον φάκελο του έργου οργανωμένο· δημιουργήστε έναν υπο‑φάκελο με όνομα `Resources` και τοποθετήστε εκεί το `receipt.jpg`. Έτσι η διαχείριση διαδρομών γίνεται πιο απλή. + +## Βήμα 2: Φόρτωση της Εικόνας Απόδειξης + +Τώρα θα **αναγνωρίσουμε κείμενο από εικόνα**. Το πρώτο βήμα είναι να κατευθύνουμε τη μηχανή OCR στο αρχείο. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Γιατί τυλίγουμε τη φόρτωση σε έναν απλό έλεγχο ύπαρξης; Επειδή σε παραγωγή συχνά αντιμετωπίζετε ανεβάσματα χρηστών που μπορεί να λείπουν ή να είναι κατεστραμμένα. Η έγκαιρη ανίχνευση του προβλήματος αποτρέπει cryptic exceptions αργότερα. + +## Βήμα 3: Εκτέλεση OCR – **αναγνώριση κειμένου από εικόνα** + +Με την εικόνα στη μνήμη, ζητάμε από το Aspose να **αναγνωρίσει κείμενο από εικόνα**. Η λειτουργία αυτή είναι συγχρονική και επιστρέφει ένα πλούσιο σύνολο αποτελεσμάτων. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Στο παρασκήνιο το Aspose τρέχει ένα νευρωνικό δίκτυο εκπαιδευμένο σε εκατομμύρια χαρακτήρες. Η μηχανή γεμίζει τα `ocrEngine.Text`, `ocrEngine.RecognitionResult` και μια συλλογή αντικειμένων `OcrRegion` που περιέχουν συντεταγμένες. Αυτό είναι ακριβώς ό,τι χρειαζόμαστε για το επόμενο βήμα. + +## Βήμα 4: **πώς να εξάγετε κείμενο** – Λήψη της ακατέργαστης συμβολοσειράς + +Αν σας ενδιαφέρει μόνο το απλό κείμενο (π.χ. για γρήγορη αναζήτηση), μπορείτε να το πάρετε κατευθείαν από τη μηχανή: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Θα παρατηρήσετε αλλαγές γραμμής όπου το OCR ανίχνευσε όρια παραγράφων. Σε πολλές περιπτώσεις σάρωσης αποδείξεων η ακατέργαστη συμβολοσειρά αρκεί για να εξαχθούν τα σύνολα, οι ημερομηνίες ή τα ονόματα προμηθευτών με απλά regex. + +## Βήμα 5: **συντεταγμένες κειμένου** – Πλαίσια οριοθέτησης για κάθε λέξη + +Συχνά χρειάζεται να ξέρετε *πού* στην εικόνα βρίσκεται ένα συγκεκριμένο κομμάτι κειμένου—π.χ. για να επισημάνετε το συνολικό ποσό σε UI. Το Aspose μας παρέχει αυτό μέσω των αντικειμένων `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Παρατηρήστε ότι κάνουμε βρόχο πάνω στις **συντεταγμένες κειμένου** για κάθε αναγνωρισμένο τμήμα. Οι συντεταγμένες είναι σχετικές με την αρχική εικόνα, ώστε να μπορείτε να τις τοποθετήσετε σε ένα graphics canvas ή σε στοιχείο HTML ``. + +## Βήμα 6: **μετατροπή απόδειξης σε JSON** – Αποθήκευση λεπτομερών αποτελεσμάτων + +Τώρα έρχεται το κομμάτι που ενώνει τα πάντα: θέλουμε μια δομή μηχανής‑αναγνώσιμη που να περιλαμβάνει το κείμενο, τους βαθμούς εμπιστοσύνης και τα πλαίσια οριοθέτησης. Το Aspose παρέχει την κλάση `JsonSaveOptions` που κάνει αυτή τη δουλειά παιχνιδάκι. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Το παραγόμενο αρχείο μοιάζει κάπως έτσι (συνοπτικό για συντομία): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Τώρα έχετε ένα **αποτέλεσμα μετατροπής απόδειξης σε JSON** που μπορεί να τροφοδοτηθεί σε downstream υπηρεσίες—π.χ. APIs αναφοράς εξόδων, pipelines analytics ή ακόμη και ένα απλό UI που σχεδιάζει ορθογώνια γύρω από κάθε λέξη. + +## Πλήρες Παράδειγμα Λειτουργίας + +Συνδυάζοντας όλα τα κομμάτια, εδώ είναι το πλήρες `Program.cs` που μπορείτε να αντιγράψετε‑επικολλήσετε στο έργο σας: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Τρέξτε το πρόγραμμα (`dotnet run`) και παρακολουθήστε την έξοδο στην κονσόλα. Ανοίξτε το `Resources/receipt.json` για να επαληθεύσετε τη δομή. + +## Συχνές Ερωτήσεις & Ακραίες Περιπτώσεις + +- **Τι γίνεται αν η εικόνα είναι θολή;** + Το Aspose OCR αποδίδει καλύτερα με 300 dpi ή περισσότερο. Αν λάβετε χαμηλούς βαθμούς εμπιστοσύνης, σκεφτείτε να εφαρμόσετε φίλτρο sharpening πριν περάσετε την εικόνα στη μηχανή. + +- **Μπορώ να αναγνωρίσω πολλαπλές γλώσσες;** + Ναι. Ορίστε `ocrEngine.Language = Language.English | Language.Spanish;` πριν καλέσετε το `Recognize()`. + +- **Πώς περιορίζω την έξοδο μόνο σε αριθμούς (π.χ. σύνολα);** + Αφού έχετε το απλό κείμενο, τρέξτε ένα regex όπως `\d+\.\d{2}` στο `ocrEngine.Text`. Επειδή ήδη έχουμε τις συντεταγμένες, μπορείτε να αντιστοιχίσετε το ταιριασμένο string στην περιοχή του για οπτική επισήμανση. + +- **Μπορεί να προσαρμοστεί η μορφή JSON;** + Η κλάση `JsonSaveOptions` εκθέτει μια σειρά σημαιών. Αν χρειάζεστε εντελώς προσαρμοσμένο σχήμα, μπορείτε να διασχίσετε τα `ocrEngine.RecognitionResult.Regions` και να σειριοποιήσετε τα αντικείμενα μόνοι σας με `System.Text.Json`. + +## Συμπέρασμα + +Δείξαμε πώς να **αναγνωρίσετε κείμενο από εικόνα** σε C# χρησιμοποιώντας το Aspose.OCR, **πώς να εξάγετε κείμενο**, να πάρετε **συντεταγμένες κειμένου**, και τέλος να **μετατρέψετε την απόδειξη σε JSON**. Η όλη ροή βρίσκεται σε μια μόνο, εύκολη στην εκτέλεση console εφαρμογή, καθιστώντας την ιδανική για πρωτότυπα ή ως δομικό στοιχείο σε μεγαλύτερα συστήματα. + +Τι επόμενα βήματα; Δοκιμάστε να τροφοδοτήσετε το JSON σε ένα front‑end που σχεδιάζει τα πλαίσια, ή ενσωματώστε το αποτέλεσμα σε υπηρεσία αναφοράς εξόδων. Μπορείτε επίσης να πειραματιστείτε με διαφορετικές μορφές εικόνας (PNG, TIFF) ή να επεξεργαστείτε μαζικά έναν φάκελο αποδείξεων. + +Έχετε περισσότερες ερωτήσεις για OCR, Aspose ή διαχείριση JSON; Αφήστε ένα σχόλιο παρακάτω, και καλή προγραμματιστική δουλειά! + +![Παράδειγμα εικόνας απόδειξης για αναγνώριση κειμένου από εικόνα](receipt.jpg "Παράδειγμα εικόνας απόδειξης") + +{{< /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/net/ocr-configuration/_index.md b/ocr/hindi/net/ocr-configuration/_index.md index fcdbf9b6..ea80424f 100644 --- a/ocr/hindi/net/ocr-configuration/_index.md +++ b/ocr/hindi/net/ocr-configuration/_index.md @@ -29,7 +29,7 @@ Aspose.OCR के साथ .NET में OCR छवि पहचान की ## ओसीआर छवि पहचान में सूची के साथ ओसीआरऑपरेशन .NET के लिए Aspose.OCR की विशाल क्षमता का अन्वेषण करें क्योंकि आप आसानी से सूचियों के साथ OCR छवि पहचान करते हैं। यह ट्यूटोरियल न केवल पाठ निष्कर्षण को बढ़ाता है बल्कि विविध डेटा सेटों को संभालने में उत्पादकता को भी बढ़ाता है। सूची संचालन के साथ ओसीआर की दक्षता को उजागर करें। -अंत में, ये OCR कॉन्फ़िगरेशन ट्यूटोरियल .NET के लिए Aspose.OCR की समग्र समझ प्रदान करते हैं। चाहे आप संग्रहित छवियों, फ़ोल्डरों, भाषा चयन, या सूचियों के साथ काम कर रहे हों, ये चरण-दर-चरण मार्गदर्शिकाएँ सुनिश्चित करती हैं कि आप ओसीआर की पूरी क्षमता का उपयोग करें, जिससे आपके एप्लिकेशन की पाठ निष्कर्षण क्षमताओं में वृद्धि हो। Aspose.OCR के साथ OCR जादू में गोता लगाएँ, अन्वेषण करें और अनलॉक करें! +अंत में, ये OCR कॉन्फ़िगरेशन ट्यूटोरियल .NET के लिए Aspose.OCR की समग्र समझ प्रदान करते हैं। चाहे आप संग्रहित छवियों, फ़ोल्डरों, भाषा चयन, या सूचियों के साथ काम कर रहे हों, ये चरण-दर-चरण मार्गदर्शिकाएँ सुनिश्चित करती हैं कि आप OCR की पूरी क्षमता का उपयोग करें, जिससे आपके एप्लिकेशन की पाठ निष्कर्षण क्षमताओं में वृद्धि हो। Aspose.OCR के साथ OCR जादू में गोता लगाएँ, अन्वेषण करें और अनलॉक करें! ## ओसीआर कॉन्फ़िगरेशन ट्यूटोरियल ### [ओसीआर छवि पहचान में पुरालेख के साथ ओसीआरऑपरेशन](./ocr-operation-with-archive/) Aspose.OCR के साथ .NET अनुप्रयोगों में OCR की क्षमता को अनलॉक करें। संग्रहित छवियों से चरण-दर-चरण पाठ निकालना सीखें। @@ -39,9 +39,12 @@ Aspose.OCR के साथ .NET में OCR छवि पहचान की .NET के लिए Aspose.OCR के साथ शक्तिशाली OCR क्षमताओं को अनलॉक करें। छवियों से पाठ को निर्बाध रूप से निकालें। ### [ओसीआर छवि पहचान में सूची के साथ ओसीआरऑपरेशन](./ocr-operation-with-list/) .NET के लिए Aspose.OCR की क्षमता को अनलॉक करें। सूचियों के साथ OCR छवि पहचान सहजता से निष्पादित करें। अपने अनुप्रयोगों में उत्पादकता और डेटा निष्कर्षण को बढ़ावा दें। +### [.NET में एम्बेडेड रिसोर्स पढ़ें – Aspose लाइसेंस सेट करने के लिए पूर्ण गाइड](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Aspose लाइसेंस सेट करने के लिए .NET में एम्बेडेड रिसोर्स पढ़ने का पूर्ण मार्गदर्शन। + {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/hindi/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..29a1f5f4 --- /dev/null +++ b/ocr/hindi/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-01-10 +description: C# में एम्बेडेड रिसोर्स पढ़ें और Aspose लाइसेंस सेट करें। जानें कि GetManifestResourceStream + का उपयोग कैसे करें, लाइसेंस फ़ाइल को एम्बेड करें, और एक ही ट्यूटोरियल में .NET में + निष्पादित असेंबली प्राप्त करें। +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: hi +og_description: .NET में एम्बेडेड रिसोर्स पढ़ें और Aspose लाइसेंस जल्दी सेट करें। + GetManifestResourceStream, लाइसेंस को एम्बेड करने और निष्पादित असेंबली का उपयोग + करने को कवर करने वाला चरण‑दर‑चरण गाइड। +og_title: एम्बेडेड रिसोर्स पढ़ें – .NET में Aspose लाइसेंस सेट करें +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: .NET में एम्बेडेड रिसोर्स पढ़ें – Aspose लाइसेंस सेट करने की पूरी गाइड +url: /hi/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Read Embedded Resource – Aspose लाइसेंस सेट करने के लिए पूर्ण गाइड + +क्या आपको कभी **read embedded resource** को रनटाइम पर पढ़ने की ज़रूरत पड़ी है और सोचा है कि Aspose OCR लाइब्रेरी को बिना पाथ हार्ड‑कोड किए लाइसेंस कैसे दें? आप अकेले नहीं हैं। कई कॉरपोरेट एप्लिकेशन्स में लाइसेंस फ़ाइल असेंबली के अंदर रहती है ताकि आपको अतिरिक्त फ़ाइलें शिप न करनी पड़े या परमिशन की कमी की चिंता न हो। यह ट्यूटोरियल आपको दिखाता है कि कैसे एक embedded resource पढ़ें और .NET के `GetManifestResourceStream` मेथड का उपयोग करके Aspose लाइसेंस सेट करें। + +हम सब कुछ कवर करेंगे: `.lic` फ़ाइल को एम्बेड करना, `GetExecutingAssembly` से उसे निकालना, और अंत में Aspose OCR `License` क्लास में लागू करना। अंत तक आपके पास एक self‑contained समाधान होगा जो किसी भी .NET प्रोजेक्ट पर काम करेगा—बाहरी फ़ाइलों की कोई ज़रूरत नहीं। + +## What You'll Learn + +- **How to embed a license file** को .NET प्रोजेक्ट में एम्बेड करके इसे कंपाइल्ड DLL का हिस्सा बनाना। +- सही तरीके से **use GetManifestResourceStream** करके उस embedded resource को पढ़ना। +- **set Aspose license** को प्रोग्रामेटिकली फ़ाइल सिस्टम को छुए बिना लागू करना। +- सामान्य pitfalls जैसे गलत resource नाम या गलत build actions को संभालने के टिप्स। +- एक पूर्ण, runnable कोड सैंपल जो आप अपने समाधान में डाल सकते हैं। + +### Prerequisites + +- .NET 6.0 या बाद का संस्करण (कोड .NET Framework 4.x पर भी काम करता है, बस प्रोजेक्ट फ़ाइल को उसी अनुसार एडजस्ट करें)। +- Aspose.OCR NuGet पैकेज इंस्टॉल किया हुआ (`dotnet add package Aspose.OCR`)। +- C# और Visual Studio (या आपका पसंदीदा IDE) की बेसिक समझ। + +यदि आपके पास ये सब तैयार हैं, तो चलिए शुरू करते हैं। + +## Step 1: Embed the Aspose License File into Your Assembly + +सबसे पहले आपको वास्तविक लाइसेंस फ़ाइल (`Aspose.OCR.lic`) चाहिए। इसे अपने executable के बगल में कॉपी करने के बजाय, आप इसे **resource** के रूप में एम्बेड करेंगे। + +1. `.lic` फ़ाइल को अपने प्रोजेक्ट में जोड़ें (उदाहरण के लिए, `Resources` फ़ोल्डर बनाएं और फ़ाइल वहाँ रखें)। +2. फ़ाइल की प्रॉपर्टीज़ में **Build Action** को `Embedded Resource` सेट करें। + *Pro tip:* फ़ोल्डर स्ट्रक्चर को सरल रखें; पूर्ण‑qualified resource नाम होगा `YourNamespace.Resources.Aspose.OCR.lic`। + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +क्यों एम्बेड करें? क्योंकि अब असेंबली के अंदर ही लाइसेंस रहता है, जिससे प्रोडक्शन सर्वर पर फ़ाइल न मिलने का जोखिम समाप्त हो जाता है। + +## Step 2: Retrieve the Embedded Resource Using GetExecutingAssembly + +अब लाइसेंस DLL के अंदर है, आपको रनटाइम पर **read embedded resource** करने का तरीका चाहिए। .NET का `Assembly` क्लास यही काम देता है। + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +`GetExecutingAssembly` मेथड वह असेंबली रिटर्न करता है जो अभी चल रही है—कोड के साथ रहने वाले रिसोर्सेज़ को लोकेट करने के लिए एकदम सही। + +## Step 3: Open the License Stream with GetManifestResourceStream + +असेंबली रेफ़रेंस हाथ में होने पर, आप `GetManifestResourceStream` को कॉल कर सकते हैं। यह मेथड एक `Stream` रिटर्न करता है जिसे सीधे Aspose को पास किया जा सकता है। + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +ध्यान दें कि हमने **null‑conditional** `using` स्टेटमेंट (`using Stream?`) का उपयोग किया है ताकि स्ट्रीम ऑटोमैटिकली डिस्पोज़ हो जाए। अगर नाम गलत है, तो हम एक स्पष्ट एक्सेप्शन थ्रो करते हैं—यह बाद में साइलेंट फेल्योर से बचाता है। + +## Step 4: Apply the License to Aspose OCR + +Aspose का `License` क्लास एक `Stream` की अपेक्षा करता है। हमारे पास पहले से ही एक है, इसलिए अंतिम कदम सीधा है। + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +बस! Aspose OCR इंजन अब पूरी तरह लाइसेंस्ड है और ट्रायल वाटरमार्क के बिना इमेज प्रोसेस कर सकता है। + +## Full Working Example + +नीचे एक पूर्ण, copy‑and‑paste‑ready प्रोग्राम दिया गया है जो पूरी प्रक्रिया को दर्शाता है। इसमें आवश्यक `using` डायरेक्टिव्स, एरर हैंडलिंग, और लाइसेंस एक्टिव है यह साबित करने के लिए एक सरल OCR कॉल शामिल है। + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Expected Output + +जब आप प्रोग्राम को वैध लाइसेंस एम्बेडेड मशीन पर चलाते हैं, तो आपको यह आउटपुट देखना चाहिए: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +यदि लाइसेंस स्ट्रीम नहीं मिल पाती, तो कंसोल में मिसिंग रिसोर्स नाम रिपोर्ट होगा, जिससे आप **Build Action** और नेमस्पेस को दोबारा चेक कर सकेंगे। + +## Common Pitfalls & How to Avoid Them + +| Issue | Why It Happens | Fix | +|-------|----------------|-----| +| **Resource name mismatch** | .NET डिफ़ॉल्ट नेमस्पेस + फ़ोल्डर पाथ से रिसोर्स नाम बनाता है। | `Assembly.GetManifestResourceNames()` का उपयोग करके उपलब्ध नामों की लिस्ट देखें और सटीक स्ट्रिंग वेरिफ़ाई करें। | +| **License file not set as Embedded Resource** | डिफ़ॉल्ट Build Action `Content` होती है। | फ़ाइल प्रॉपर्टीज़ में इसे `Embedded Resource` में बदलें। | +| **Running from a different assembly** | अगर आप कोड को क्लास लाइब्रेरी से कॉल करते हैं, तो `GetExecutingAssembly()` लाइब्रेरी को रिटर्न कर सकता है, मुख्य exe नहीं। | `Assembly.GetEntryAssembly()` का उपयोग करें या सही असेंबली को स्पष्ट रूप से पास करें। | +| **Stream disposed before use** | अनजाने में `using` ब्लॉक स्ट्रीम को बहुत जल्दी बंद कर देता है। | `SetLicense` कॉल के आसपास `using` रखें, जैसा ऊपर दिखाया गया है। | +| **Aspose.OCR version mismatch** | नए वर्ज़न में लाइसेंस फ़ॉर्मेट अलग हो सकता है। | हमेशा अपने Aspose अकाउंट से नवीनतम लाइसेंस डाउनलोड करें और फिर से एम्बेड करें। | + +## Using the Same Technique for Other Embedded Files + +यह पैटर्न—**read embedded resource**, फिर **use GetManifestResourceStream**—किसी भी फ़ाइल टाइप के लिए काम करता है: JSON कॉन्फ़िग्स, इमेजेज़, यहाँ तक कि नेटिव DLLs भी। सिर्फ `resourceName` और स्ट्रीम को कैसे कंज्यूम करना है, इसे एडजस्ट करें। + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Visual Overview + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt text:* read embedded resource – एम्बेडिंग, GetManifestResourceStream से रिट्रीविंग, और Aspose लाइसेंस लागू करने की प्रक्रिया दर्शाने वाला डायग्राम। + +## Recap + +हमने बताया कि कैसे .NET असेंबली में **read embedded resource** किया जाता है, `GetManifestResourceStream` का सही उपयोग कैसे किया जाता है, और **set Aspose license** को फ़ाइल सिस्टम पर फ़ाइलें उजागर किए बिना साफ़-सुथरे तरीके से लागू किया जाता है। लाइसेंस को एम्बेड करके आप डिप्लॉयमेंट की झंझटों से बचते हैं और एप्लिकेशन को पोर्टेबल बनाते हैं। + +## What’s Next? + +- **Automate license updates:** एक छोटा बिल्ड‑टाइम स्क्रिप्ट लिखें जो आपके Aspose सब्सक्रिप्शन के रिन्यू होने पर एम्बेडेड `.lic` फ़ाइल को रिप्लेस करे। +- **Secure the resource:** लाइसेंस को एम्बेड करने से पहले एन्क्रिप्ट करने और रनटाइम पर डिक्रिप्ट करने पर विचार करें, ताकि अतिरिक्त सुरक्षा मिल सके। +- **Explore other Aspose products:** वही तरीका Aspose.Words, Aspose.PDF आदि के लिए भी काम करता है, हर एक का अपना `License` क्लास होता है। + +बिल्कुल प्रयोग करें—शायद आप विभिन्न मॉड्यूल्स के लिए कई लाइसेंस एम्बेड करेंगे, या कॉन्फ़िगरेशन‑ड्रिवेन रिसोर्स नाम पर स्विच करेंगे। संभावनाएँ असीमित हैं। + +--- + +*Happy coding! अगर आपको कोई दिक्कत आती है, तो नीचे कमेंट करें या अधिक उदाहरणों के लिए 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/net/skew-angle-calculation/_index.md b/ocr/hindi/net/skew-angle-calculation/_index.md index 2c9caab0..faa28a0b 100644 --- a/ocr/hindi/net/skew-angle-calculation/_index.md +++ b/ocr/hindi/net/skew-angle-calculation/_index.md @@ -40,9 +40,12 @@ url: /hi/net/skew-angle-calculation/ .NET के लिए Aspose.OCR की शक्ति को उजागर करें, जो छवि पहचान के लिए एक मजबूत समाधान है। आसानी से तिरछे कोणों की गणना करना सीखें। ### [ओसीआर छवि पहचान में यूआरआई से तिरछा कोण की गणना करें](./calculate-skew-angle-from-uri/) OCR छवि पहचान में तिरछे कोणों की आसानी से गणना करने के लिए .NET के लिए Aspose.OCR का अन्वेषण करें। अपनी परियोजनाओं को सटीकता और दक्षता के साथ बढ़ाएं। +### [C# में इमेज को डेस्क्यू कैसे करें – पूर्ण OCR प्री‑प्रोसेसिंग गाइड](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +C# में इमेज को डेस्क्यू करने और 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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/hindi/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..e129bd8d --- /dev/null +++ b/ocr/hindi/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-01-10 +description: Aspose.OCR के साथ छवि को डेस्क्यू कैसे करें और OCR परिणामों में सुधार + करें। OCR के लिए छवि को पूर्व-प्रसंस्करण करना सीखें, स्कैन से शोर हटाएँ, और स्कैन + से पाठ को पहचानें। +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: hi +og_description: इमेज को डेस्क्यू कैसे करें और OCR की सटीकता बढ़ाएँ। यह गाइड दिखाता + है कि OCR के लिए इमेज को कैसे प्री‑प्रोसेस करें, स्कैन से शोर हटाएँ, और Aspose.OCR + का उपयोग करके स्कैन से टेक्स्ट को पहचानें। +og_title: C# में इमेज को डेस्क्यू कैसे करें – पूर्ण OCR प्री‑प्रोसेसिंग गाइड +tags: +- OCR +- C# +- Image Processing +title: C# में छवि को डेस्क्यू कैसे करें – पूर्ण OCR प्री‑प्रोसेसिंग गाइड +url: /hi/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में इमेज को डेस्क्यू कैसे करें – पूर्ण OCR प्री‑प्रोसेसिंग गाइड + +क्या आपने कभी **इमेज को डेस्क्यू** करने के बारे में सोचा है इससे पहले कि आप उन्हें OCR इंजन को दें? आप अकेले नहीं हैं। स्कैन किए गए दस्तावेज़ अक्सर तिरछे, शोरयुक्त, या कम‑कॉन्ट्रास्ट होते हैं, और यह किसी भी टेक्स्ट‑रिकग्निशन प्रयास को बिगाड़ देता है। + +इस ट्यूटोरियल में हम एक पूर्ण, चलाने योग्य उदाहरण के माध्यम से जाएंगे जो **OCR के लिए इमेज को प्री‑प्रोसेस** करता है, स्कैन से शोर हटाता है, और अंत में Aspose.OCR लाइब्रेरी का उपयोग करके **स्कैन से टेक्स्ट को पहचानें** है। अंत तक आपके पास C# में **OCR का उपयोग कैसे करें** की स्पष्ट समझ होगी, जबकि कोड छोटा और सरल रहेगा। + +> **Pro tip:** यहाँ तक कि एक छोटा रोटेशन (5‑10°) भी OCR की सटीकता को 30 % या अधिक घटा सकता है। डेस्क्यूइंग वह पहला कदम है जिसे आपको कभी नहीं छोड़ना चाहिए। + +## आपको क्या चाहिए + +- **.NET 6+** (कोड .NET Framework पर भी काम करता है, लेकिन .NET 6 वर्तमान LTS है) +- **Aspose.OCR for .NET** – आप इसे NuGet से प्राप्त कर सकते हैं (`Install-Package Aspose.OCR`) +- एक नमूना TIFF/PNG/JPEG जो घुमा हुआ या शोरयुक्त हो (हम उदाहरण में `noisy_rotated.tif` का उपयोग करेंगे) +- कोई भी IDE जो आपको पसंद हो – Visual Studio, Rider, या VS Code चलेगा + +बस इतना ही। कोई अतिरिक्त लाइब्रेरी नहीं, कोई बाहरी सेवा नहीं। + +## चरण 1 – स्रोत इमेज लोड करें (यह क्यों महत्वपूर्ण है) + +इमेज को **डेस्क्यू** करने से पहले, हमें इसे Aspose `ImageStream` में पढ़ना होगा। यह ऑब्जेक्ट फ़ाइल I/O को एब्स्ट्रैक्ट करता है और OCR इंजन को एक सुसंगत इंटरफ़ेस प्रदान करता है। + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*पहले लोड क्यों करें?* क्योंकि सभी बाद के फ़िल्टर मेमोरी में मौजूद इमेज पर काम करते हैं। यदि फ़ाइल पढ़ी नहीं जा सकती, तो पूरी पाइपलाइन विफल हो जाती है। + +## चरण 2 – प्री‑प्रोसेसिंग पाइपलाइन बनाएं (Deskew + Denoise + Contrast) + +एक मजबूत OCR वर्कफ़्लो आमतौर पर कई फ़िल्टरों को जोड़ता है। यहाँ हम **OCR के लिए इमेज को प्री‑प्रोसेस** करते हैं और, उससे भी अधिक महत्वपूर्ण, **इमेज को डेस्क्यू** स्वचालित रूप से करते हैं। + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**इन तीनों का चयन क्यों?** +- **DeskewFilter** “इमेज को डेस्क्यू कैसे करें” समस्या को स्वचालित रूप से हल करता है; आपको कोण का अनुमान लगाने की आवश्यकता नहीं है। +- **DenoiseFilter** “स्कैन से शोर हटाएँ” की आवश्यकता को पूरा करता है, जो अन्यथा भ्रामक अक्षर बनाता है। +- **ContrastBoostFilter** OCR इंजन को गहरे टेक्स्ट को हल्के बैकग्राउंड से अलग करने में मदद करता है, जो एक क्लासिक समस्या है जब आप *OCR के लिए इमेज को प्री‑प्रोसेस* करते हैं। + +## चरण 3 – पाइपलाइन लागू करें (परिवर्तन देखना) + +अब हम वास्तव में फ़िल्टर चलाते हैं। लौटाया गया `processedImage` वही है जिसे हम OCR इंजन को देंगे। + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +यदि आप `cleaned_output.tif` खोलते हैं, तो आपको दिखेगा कि टेक्स्ट सीधा है, कम दानेदार है, और अधिक कॉन्ट्रास्ट वाला है। यह दृश्य जांच उपयोगी है जब आप *स्कैन से शोर हटाएँ* और यह पुष्टि करना चाहते हैं कि डेस्क्यू काम किया। + +## चरण 4 – OCR इंजन बनाएं और कॉन्फ़िगर करें (OCR का उपयोग कैसे करें) + +एक साफ़ इमेज हाथ में होने पर, हम `OcrEngine` को इंस्टैंशिएट करते हैं। यह Aspose के साथ **OCR का उपयोग कैसे करें** का मुख्य भाग है। + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*`AutoPageSegmentation` सेट क्यों करें?* क्योंकि कई स्कैन में टेबल या कई कॉलम होते हैं। इसे ऑन करने से इंजन पेज को बुद्धिमानी से विभाजित कर सकता है, जिससे अंतिम **स्कैन से टेक्स्ट को पहचानें** परिणाम सुधरता है। + +## चरण 5 – पहचान प्रक्रिया चलाएँ (अंत में टेक्स्ट पहचानें) + +अब सच्चाई का क्षण: हम इंजन से टेक्स्ट पढ़ने को कहते हैं। + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +यदि सब कुछ सुचारू रूप से चला, तो आप एक साफ़ टेक्स्ट ब्लॉक देखेंगे जो मूल दस्तावेज़ से मेल खाता है। यह सही तरीके से **इमेज को डेस्क्यू**, **शोर हटाने**, और **OCR के लिए इमेज को प्री‑प्रोसेस** करने का परिणाम है। + +## चरण 6 – पूर्ण कार्यशील उदाहरण (कॉपी‑पेस्ट तैयार) + +नीचे पूरा प्रोग्राम दिया गया है, जिसे कंपाइल करने के लिए तैयार है। केवल फ़ाइल पाथ बदलें और आप तैयार हैं। + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**अपेक्षित आउटपुट** (संक्षिप्त रूप में): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +यदि आउटपुट गड़बड़ दिखे, तो दोबारा जांचें कि स्रोत इमेज 30° से अधिक घुमा नहीं है, या `DeskewFilter.MaxAngle` बढ़ाएँ। + +## अक्सर पूछे जाने वाले प्रश्न (एज केस और विविधताएँ) + +| Question | Answer | +|----------|--------| +| **अगर मेरा स्कैन 45° घुमा हुआ है तो क्या करें?** | `DeskewFilter` `MaxAngle` पर सीमित रहता है। इसे बढ़ाएँ (जैसे, `MaxAngle = 60`) या पाइपलाइन में फीड करने से पहले ग्राफ़िक्स लाइब्रेरी से इमेज को पहले‑घुमा दें। | +| **क्या मैं PDFs को पेज‑बाय‑पेज प्रोसेस कर सकता हूँ?** | हां। प्रत्येक PDF पेज को इमेज में बदलें (जैसे, `Aspose.Pdf` का उपयोग करके) और हर बिटमैप पर वही पाइपलाइन चलाएँ। | +| **मेरे दस्तावेज़ फ्रेंच में हैं – क्या मुझे कुछ बदलना चाहिए?** | `ocrEngine.Language = Language.French;` सेट करें या एक कस्टम भाषा पैक लोड करें। पाइपलाइन का बाकी हिस्सा वही रहता है। | +| **क्या मूल रिज़ॉल्यूशन को बनाए रखने का कोई तरीका है?** | `PreprocessPipeline` मूल बिटमैप पर काम करता है, DPI को संरक्षित रखता है। केवल तब `ImageStream.Resize` कॉल करने से बचें जब आपको प्रदर्शन के लिए डाउनस्केल करने की आवश्यकता हो। | +| **कॉन्ट्रास्ट बूस्टिंग रंगीन स्कैन को कैसे प्रभावित करता है?** | `ContrastBoostFilter` प्रत्येक चैनल पर काम करता है; यह ग्रेस्केल या कलर इमेज दोनों के लिए सुरक्षित है, लेकिन आप पहले `new GrayscaleFilter()` से ग्रेस्केल में भी बदल सकते हैं। | + +## इमेज उदाहरण (विज़ुअल सहायता) + +![इमेज को डेस्क्यू करने का उदाहरण](/images/deskew-example.png) + +*यह चित्र 12° घुमा हुआ, शोरयुक्त स्कैन का पहले/बाद दिखाता है जिसे डेस्क्यू और साफ़ किया गया है।* + +## निष्कर्ष + +हमने Aspose.OCR का उपयोग करके **इमेज को डेस्क्यू** करने को कवर किया, एक पूर्ण **OCR के लिए इमेज को प्री‑प्रोसेस** पाइपलाइन दिखायी, **स्कैन से शोर हटाने** का तरीका बताया, और अंत में कुछ लाइनों के C# कोड से **स्कैन से टेक्स्ट को पहचानें**। `DeskewFilter`, `DenoiseFilter`, और `ContrastBoostFilter` को जोड़कर आप एक साफ़ बिटमैप प्राप्त करते हैं जो OCR इंजन को बिना किसी आर्टिफैक्ट के काम करने देता है। + +अगले कदम? विभिन्न फ़िल्टर स्ट्रेंथ के साथ प्रयोग करें, शुद्ध ब्लैक‑एंड‑व्हाइट आउटपुट के लिए `BinarizationFilter` जोड़ें, या साफ़ की गई इमेज को डाउनस्ट्रीम NLP पाइपलाइन में फीड करें। यही पैटर्न रसीदों, पासपोर्ट और ऐतिहासिक दस्तावेज़ों के लिए भी काम करता है। + +क्या आपके पास अन्य भाषाओं या फ्रेमवर्क में **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/net/text-recognition/_index.md b/ocr/hindi/net/text-recognition/_index.md index 0512ee10..5276494a 100644 --- a/ocr/hindi/net/text-recognition/_index.md +++ b/ocr/hindi/net/text-recognition/_index.md @@ -27,7 +27,7 @@ url: /hi/net/text-recognition/ ## OCR छवि पहचान में JSON के रूप में परिणाम प्राप्त करें -आसानी से JSON प्रारूप में OCR परिणाम प्राप्त करने का तरीका सीखकर .NET के लिए Aspose.OCR की पूरी क्षमता का उपयोग करें। यह चरण-दर-चरण मार्गदर्शिका आपकी छवि पहचान क्षमताओं को बढ़ाने की दिशा में एक सहज यात्रा सुनिश्चित करती है। Aspose.OCR की मजबूत विशेषताओं और उद्योग-अग्रणी तकनीक के साथ अपने एप्लिकेशन की दक्षता बढ़ाएँ। +आसानी से JSON प्रारूप में OCR परिणाम प्राप्त करने का तरीका सीखकर .NET के लिए Aspose.OCR की पूरी क्षमता का उपयोग करें। यह चरण-दर-स्टेप मार्गदर्शिका आपकी छवि पहचान क्षमताओं को बढ़ाने की दिशा में एक सहज यात्रा सुनिश्चित करती है। Aspose.OCR की मजबूत विशेषताओं और उद्योग-अग्रणी तकनीक के साथ अपने एप्लिकेशन की दक्षता बढ़ाएँ। ## ओसीआर छवि पहचान में ओसीआर डिटेक्ट एरिया मोड @@ -44,20 +44,33 @@ Aspose.OCR के साथ .NET में OCR की क्षमता को क्या आप अपने .NET अनुप्रयोगों में क्रांति लाने के लिए तैयार हैं? हमारे टेक्स्ट रिकग्निशन ट्यूटोरियल्स में गोता लगाएँ और छवियों में सटीक और कुशल टेक्स्ट पहचान के लिए Aspose.OCR की शक्ति का उपयोग करें। अभी डाउनलोड करें और उन्नत ओसीआर क्षमताओं की यात्रा पर निकलें। ## पाठ पहचान ट्यूटोरियल ### [ओसीआर छवि पहचान में मान्यता प्राप्त पात्रों के लिए विकल्प प्राप्त करें](./get-choices-for-recognized-characters/) -सटीक चरित्र पहचान के लिए Aspose.OCR के साथ अपने .NET अनुप्रयोगों को बेहतर बनाएं। छवि पहचान में मान्यता प्राप्त पात्रों के विकल्प पुनः प्राप्त करने के लिए हमारी चरण-दर-चरण मार्गदर्शिका का पालन करें। +सटीक चरित्र पहचान के लिए Aspose.OCR के साथ अपने .NET अनुप्रयोगों को बेहतर बनाएं। छवि पहचान में मान्यता प्राप्त पात्रों के विकल्प पुनः प्राप्त करने के लिए हमारी चरण-दर-स्टेप मार्गदर्शिका का पालन करें। ### [ओसीआर छवि पहचान में मान्यता परिणाम प्राप्त करें](./get-recognition-result/) .NET के लिए Aspose.OCR का अन्वेषण करें, जो छवियों में निर्बाध पाठ पहचान के लिए एक शक्तिशाली OCR समाधान है। ### [OCR छवि पहचान में JSON के रूप में परिणाम प्राप्त करें](./get-result-as-json/) -.NET के लिए Aspose.OCR की शक्ति को उजागर करें। JSON प्रारूप में OCR परिणाम सहजता से प्राप्त करना सीखें। इस चरण-दर-चरण मार्गदर्शिका के साथ अपनी छवि पहचान बढ़ाएँ। +.NET के लिए Aspose.OCR की शक्ति को उजागर करें। JSON प्रारूप में OCR परिणाम सहजता से प्राप्त करना सीखें। इस चरण-दर-स्टेप मार्गदर्शिका के साथ अपनी छवि पहचान बढ़ाएँ। ### [ओसीआर छवि पहचान में ओसीआर डिटेक्ट एरिया मोड](./ocr-detect-areas-mode/) कुशल छवि पाठ पहचान के लिए Aspose.OCR के साथ अपने .NET अनुप्रयोगों को बेहतर बनाएं। सटीक परिणामों के लिए ओसीआर डिटेक्ट एरिया मोड का अन्वेषण करें। ### [ओसीआर छवि पहचान में पीडीएफ को पहचानें](./recognize-pdf/) Aspose.OCR के साथ .NET में OCR की क्षमता को अनलॉक करें। पीडीएफ़ से आसानी से टेक्स्ट निकालें। सहज एकीकरण अनुभव के लिए अभी डाउनलोड करें। ### [ओसीआर छवि पहचान में तालिका को पहचानें](./recognize-table/) OCR छवि पहचान में तालिकाओं को पहचानने पर हमारे व्यापक गाइड के साथ .NET के लिए Aspose.OCR की क्षमता को अनलॉक करें। +### [C# में OCR चलाने का तरीका – Aspose OCR के साथ पूर्ण गाइड](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Aspose OCR के साथ C# में OCR को लागू करने की चरण-दर-स्टेप मार्गदर्शन। आसान सेटअप और उपयोग के लिए पूर्ण गाइड। +### [C# में OCR चलाने का तरीका – PNG से अरबी टेक्स्ट निकालें](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +C# में Aspose OCR का उपयोग करके PNG फ़ाइल से अरबी टेक्स्ट निकालने की चरण-दर-स्टेप मार्गदर्शन। +### [Aspose OCR के साथ इमेज से टेक्स्ट निकालें – पूर्ण C# गाइड](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Aspose OCR का उपयोग करके C# में इमेज से टेक्स्ट निकालने की पूरी प्रक्रिया सीखें। चरण-दर-शरण गाइड। +### [C# में PNG से खोज योग्य PDF बनाएं – पूर्ण गाइड](./create-searchable-pdf-from-png-in-c-complete-guide/) +C# में Aspose OCR का उपयोग करके PNG फ़ाइल से खोज योग्य PDF बनाने की पूरी प्रक्रिया सीखें। +### [C# में इमेज से टेक्स्ट निकालें – पूर्ण Aspose OCR गाइड](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Aspose OCR का उपयोग करके C# में इमेज से टेक्स्ट निकालने की विस्तृत चरण-दर-चरण गाइड। +### [C# में इमेज से टेक्स्ट पहचानें – OCR और JSON का पूर्ण गाइड](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +C# में Aspose OCR का उपयोग करके इमेज से टेक्स्ट निकालें और परिणाम को JSON में प्राप्त करने की पूरी प्रक्रिया सीखें। + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/hindi/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..de754f7d --- /dev/null +++ b/ocr/hindi/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: C# का उपयोग करके PNG से खोज योग्य PDF बनाएं। जानें कि कैसे इमेज को PDF + में बदलें, PNG से टेक्स्ट निकालें, और एक आसान ट्यूटोरियल में C# में इमेज का OCR + करें। +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: hi +og_description: C# का उपयोग करके PNG से खोज योग्य PDF बनाएं। यह गाइड दिखाता है कि + कैसे इमेज को PDF में बदलें, PNG से टेक्स्ट निकालें, और Aspose के साथ C# में इमेज + का OCR करें। +og_title: C# में PNG से खोज योग्य PDF बनाएं – चरण‑दर‑चरण +tags: +- Aspose OCR +- C# +- PDF/A +title: C# में PNG से खोज योग्य PDF बनाएं – पूर्ण गाइड +url: /hi/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में PNG से खोज योग्य PDF बनाएं – पूर्ण गाइड + +क्या आपको C# में PNG फ़ाइल से **searchable pdf** बनाने की ज़रूरत है? आप अकेले नहीं हैं—कई डेवलपर्स इस समस्या का सामना करते हैं जब वे चाहते हैं कि उनके स्कैन किए गए इमेज दोनों ही देखे जा सकें **और** टेक्स्ट‑सर्चेबल हों। इस ट्यूटोरियल में हम पूरी प्रक्रिया को देखेंगे: **convert image to pdf**, OCR चलाकर **extract text from png**, और अंत में सब कुछ **PDF/A‑2b** अनुरूप खोज योग्य दस्तावेज़ के रूप में सहेजेंगे। + +अंत तक आपके पास एक एकल, पुन: उपयोग योग्य कोड स्निपेट होगा जिसे आप किसी भी .NET प्रोजेक्ट में डाल सकते हैं, साथ ही कुछ व्यावहारिक टिप्स भी मिलेंगी जो बाद में आपके सिरदर्द को बचाएंगी। कोई बाहरी सेवाएँ नहीं, केवल Aspose OCR लाइब्रेरी और कुछ ही पंक्तियों का C#। + +> **Prerequisites** +> * .NET 6+ (या .NET Framework 4.7.2+). +> * Visual Studio 2022 या कोई भी C#‑compatible IDE। +> * एक वैध Aspose OCR लाइसेंस (या फ्री ट्रायल)। + +--- + +![Create searchable PDF example](image-placeholder.png){alt="C# का उपयोग करके PNG से खोज योग्य PDF बनाएं"} + +## चरण 1 – C# के लिए Aspose OCR स्थापित और संदर्भित करें + +सबसे पहले: आपको Aspose OCR NuGet पैकेज चाहिए। अपना टर्मिनल (या पैकेज मैनेजर कंसोल) खोलें और चलाएँ: + +```bash +dotnet add package Aspose.OCR +``` + +यदि आप GUI पसंद करते हैं, तो अपने प्रोजेक्ट पर राइट‑क्लिक करें → **Manage NuGet Packages…** → *Aspose.OCR* खोजें और नवीनतम स्थिर संस्करण स्थापित करें। + +यह लाइब्रेरी क्यों? यह **convert png to pdf** को सपोर्ट करती है, मल्टी‑पेज इमेज को संभालती है, और बॉक्स से बाहर PDF/A‑2b आउटपुट कर सकती है—जो आर्काइव मानकों के अनुरूप **searchable pdf** बनाने के लिए परफेक्ट है। + +> **Pro tip:** मूल्यांकन वॉटरमार्क से बचने के लिए `Program.cs` में जल्दी अपना लाइसेंस रजिस्टर करें। + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## चरण 2 – PNG लोड करें और OCR चलाएँ (extract text from png) + +अब हम स्रोत इमेज लोड करेंगे। `ImageStream.FromFile` हेल्पर फ़ाइल‑सिस्टम विवरणों को एब्स्ट्रैक्ट करता है और किसी भी समर्थित रास्टर फ़ॉर्मेट के साथ काम करता है। + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +इस बिंदु पर इंजन ने **extracted text from png** कर ली है और उसे आंतरिक रूप से संग्रहीत किया है। आप `ocrEngine.Text` के माध्यम से कच्चा टेक्स्ट भी देख सकते हैं, जो डिबगिंग या लॉगिंग के लिए उपयोगी है। + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **What if the image is multi‑page?** +> Aspose OCR प्रत्येक पेज को एक अलग लेयर के रूप में मानता है। बस `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` कॉल करें और इंजन स्वचालित रूप से इटररेट करेगा। + +## चरण 3 – PDF/A‑2b विकल्प कॉन्फ़िगर करें (create searchable pdf) + +OCR परिणाम को **searchable pdf** में बदलने के लिए, हमें Aspose को बताना होगा कि आउटपुट को कैसे पैकेज किया जाए। PDF/A‑2b दीर्घकालिक संरक्षण के लिए आदर्श है और यह गारंटी देता है कि टेक्स्ट लेयर सर्चेबल है। + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +मूल इमेज को एम्बेड क्यों करें? कुछ अनुपालन जांचों को विज़ुअल प्रतिनिधित्व को मूल स्कैन से मिलाने की आवश्यकता होती है। यह फ़्लैग फ़ाइल को एक वास्तविक **convert image to pdf** ऑपरेशन बनाता है जबकि खोज योग्य टेक्स्ट को संरक्षित रखता है। + +## चरण 4 – परिणाम सहेजें और सत्यापित करें (convert png to pdf) + +अंत में, हम आउटपुट फ़ाइल लिखते हैं। वही `Save` मेथड किसी भी पाथ के लिए काम करता है जो आप प्रदान करते हैं। + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +परिणामी `output.pdf` को Adobe Reader या किसी भी PDF व्यूअर में खोलें और मूल PNG में मौजूद किसी शब्द को खोजने की कोशिश करें। यदि शब्द हाइलाइट हो, तो बधाई—आपने सफलतापूर्वक PNG से **create searchable pdf** बना लिया है! + +### त्वरित सत्यापन स्क्रिप्ट (वैकल्पिक) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## खोज योग्य PDFs के लिए PDF/A‑2b क्यों उपयोग करें? + +* **Archival safety:** PDF/A‑2b गारंटी देता है कि फ़ाइल दशकों बाद भी समान रूप से रेंडर होगी। +* **Regulatory compliance:** कई उद्योग (कानूनी, मेडिकल, फ़ाइनेंस) रिकॉर्ड‑कीपिंग के लिए PDF/A की आवश्यकता रखते हैं। +* **Searchability:** एम्बेडेड OCR टेक्स्ट लेयर दस्तावेज़ को डेस्कटॉप सर्च टूल्स द्वारा इंडेक्सेबल बनाता है। + +यदि आपको अतिरिक्त अनुपालन की आवश्यकता नहीं है, तो आप `PdfAStandard` लाइन को हटा सकते हैं और बस `new PdfSaveOptions()` का उपयोग कर सकते हैं—आउटपुट अभी भी खोज योग्य रहेगा, बस PDF/A‑2b नहीं होगा। + +## सामान्य समस्याएँ और उन्हें कैसे टालें + +| लक्षण | संभावित कारण | समाधान | +|---------|--------------|-----| +| खोज योग्य टेक्स्ट नहीं दिख रहा | `ocrEngine.Recognize()` कभी नहीं बुलाया गया या चुपचाप विफल रहा | सुनिश्चित करें कि इमेज पाथ सही है और लाइसेंस रजिस्टर्ड है। | +| PDF बहुत बड़ा है (10 + MB) | मूल PNG हाई‑रेज़ोल्यूशन है और `EmbedOriginalImage` true है | OCR से पहले इमेज को डाउनस्केल करें या `EmbedOriginalImage = false` सेट करें। | +| टेक्स्ट गड़बड़ है | भाषा स्वचालित रूप से नहीं पहचानी गई | `Recognize()` से पहले `ocrEngine.Language = "eng";` (या अपनी लक्ष्य भाषा) सेट करें। | + +## पूर्ण कार्यशील उदाहरण (कॉपी‑पेस्ट तैयार) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +प्रोग्राम चलाएँ, `output.pdf` खोलें, और उन शब्दों को खोजने की कोशिश करें जो आप `input.png` में मौजूद जानते हैं। यदि सब कुछ सही है, तो आपने अभी **convert image to pdf** वर्कफ़्लो में महारत हासिल कर ली है और **ocr image c#** शैली सीख ली है। + +## अगले कदम और संबंधित विषय + +* **Batch processing:** PNGs के फ़ोल्डर पर लूप चलाएँ और परिणामों को एकल PDF में मर्ज करें। +* **Alternative output formats:** Aspose OCR DOCX, TXT, या searchable PDF/A‑1b भी उत्पन्न कर सकता है। +* **Performance tuning:** बड़े वॉल्यूम के लिए जहाँ पूर्ण सटीकता आवश्यक नहीं है, `ocrEngine.RecognitionMode = RecognitionMode.Fast` उपयोग करें। +* **Other libraries:** यदि बजट सीमित है, तो Tesseract .NET देखें—हालाँकि आपको बिल्ट‑इन PDF/A सपोर्ट नहीं मिलेगा। + +--- + +### TL;DR + +हमने आपको दिखाया कि कैसे C# में Aspose OCR का उपयोग करके PNG से **create searchable pdf** बनाते हैं। चरण इस प्रकार हैं: + +1. Aspose OCR स्थापित करें (`dotnet add package Aspose.OCR`)। +2. PNG लोड करें और `ocrEngine.Recognize()` चलाएँ (**extract text from png**)। +3. PDF/A‑2b के लिए `PdfSaveOptions` कॉन्फ़िगर करें (**convert image to pdf** और **convert png to pdf**)। +4. फ़ाइल सहेजें और खोज योग्य लेयर को सत्यापित करें। + +इसे आज़माएँ, विकल्पों को समायोजित करें, और आप जल्द ही किसी भी स्कैन की गई इमेज को आर्काइव‑रेडी, खोज योग्य PDF में बदलने के लिए एक मजबूत पाइपलाइन बना लेंगे। कोडिंग का आनंद लें! + +{{< /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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/hindi/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..438b32c2 --- /dev/null +++ b/ocr/hindi/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-01-10 +description: Aspose OCR का उपयोग करके C# में छवि से टेक्स्ट निकालें। बैच प्रोसेसिंग + के साथ स्कैन किए गए दस्तावेज़ के टेक्स्ट को कैसे बदलें और परिणाम सहेजें, यह सीखें। +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: hi +og_description: Aspose OCR का उपयोग करके C# में छवि से पाठ निकालें। यह ट्यूटोरियल + दिखाता है कि बैच प्रोसेसिंग का उपयोग करके स्कैन किए गए दस्तावेज़ का पाठ कैसे परिवर्तित + किया जाए। +og_title: C# में इमेज से टेक्स्ट निकालें – पूर्ण Aspose OCR गाइड +tags: +- OCR +- C# +- Aspose +- Image Processing +title: C# में इमेज से टेक्स्ट निकालें – पूर्ण Aspose OCR गाइड +url: /hi/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# इमेज से टेक्स्ट निकालें – पूर्ण Aspose OCR गाइड + +क्या आपको कभी **इमेज से टेक्स्ट निकालना** पड़ा है लेकिन शुरुआत कहाँ से करें, यह नहीं पता था? आप अकेले नहीं हैं; कई डेवलपर्स स्कैन किए गए PDFs, मल्टी‑पेज TIFFs, या फोटो‑आधारित रसीदों से निपटते समय इस समस्या का सामना करते हैं। अच्छी खबर यह है कि Aspose OCR के साथ आप सिर्फ कुछ ही C# लाइनों में **स्कैन किए गए दस्तावेज़ का टेक्स्ट बदल** सकते हैं। + +इस ट्यूटोरियल में हम एक वास्तविक परिदृश्य पर चलेंगे: एक मल्टी‑पेज TIFF लेना, प्रत्येक पेज पर बैच OCR चलाना, और एक ही टेक्स्ट फ़ाइल लिखना जिसमें हर पेज की सामग्री हो। अंत तक आपके पास एक तैयार‑चलाने‑योग्य कंसोल ऐप होगा, आप समझेंगे कि प्रत्येक चरण क्यों महत्वपूर्ण है, और पासवर्ड‑सुरक्षित इमेज या कस्टम भाषा पैक्स जैसे किनारी मामलों के लिए फ्लो को कैसे समायोजित किया जाए, यह भी जानेंगे। + +## पूर्वापेक्षाएँ + +- .NET 6.0 SDK या बाद का (कोड .NET Core और .NET Framework के साथ भी काम करता है) +- Visual Studio 2022 (या कोई भी एडिटर जो आप पसंद करते हैं) +- एक Aspose OCR लाइसेंस फ़ाइल (या आप मुफ्त एवाल्यूएशन मोड का उपयोग कर सकते हैं) +- एक मल्टी‑पेज इमेज फ़ाइल (उदा., `multipage.tif`) जिसे आप रेफ़रेंस कर सकें + +`Aspose.OCR` के अलावा कोई अतिरिक्त NuGet पैकेज आवश्यक नहीं है; हम इसे पहले चरण में स्थापित करेंगे। + +## चरण 1 – Aspose OCR स्थापित करें और प्रोजेक्ट सेट अप करें + +शुरू करने के लिए, एक नया कंसोल प्रोजेक्ट बनाएं और Aspose OCR लाइब्रेरी को जोड़ें। + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro tip:** यदि आपके पास लाइसेंस फ़ाइल (`Aspose.OCR.lic`) है, तो उसे प्रोजेक्ट रूट में कॉपी करें। लाइब्रेरी रनटाइम पर इसे स्वचालित रूप से ले लेगी। + +इस चरण की आवश्यकता क्यों है? पैकेज स्थापित करने से आपको `BatchProcessor`, `OcrEngine`, और अन्य उपयोगी क्लासेज़ मिलते हैं जो लो‑लेवल इमेज हैंडलिंग को एब्स्ट्रैक्ट करते हैं। यह यह भी सुनिश्चित करता है कि आप Aspose द्वारा प्रदान किए गए नवीनतम OCR एल्गोरिदम का उपयोग कर रहे हैं। + +## चरण 2 – BatchProcessor के साथ मल्टी‑पेज इमेज लोड करें + +`BatchProcessor` बिल्कुल इसी परिदृश्य के लिए डिज़ाइन किया गया है: मल्टी‑पेज इमेज के प्रत्येक पेज पर इटररेट करना, बिना फ़ाइलों को मैन्युअली विभाजित किए। + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` सभी पेजों को मेमोरी में पढ़ता है, उन्हें `batchProcessor.Pages` के माध्यम से एक्सपोज़ करता है। प्रत्येक पेज ऑब्जेक्ट अपना नंबर (`ocrPage.Number`) जानता है, जिसे हम बाद में स्पष्ट हेडिंग्स के लिए उपयोग करेंगे। + +## चरण 3 – परिणामों को इकट्ठा करने के लिए StringBuilder तैयार करें + +हम एक ही टेक्स्ट फ़ाइल चाहते हैं जिसमें हर पेज का OCR आउटपुट हेडर द्वारा अलग किया गया हो। `StringBuilder` लूप में स्ट्रिंग्स को जोड़ने का सबसे प्रभावी तरीका है। + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +`StringBuilder` क्यों? लूप के अंदर `+` से स्ट्रिंग्स जोड़ने से हर इटररेशन पर नई स्ट्रिंग अलोकेट होती है, जिससे प्रदर्शन घटता है—विशेषकर बड़े दस्तावेज़ों में। + +## चरण 4 – प्रत्येक पेज पर इटररेट करें, OCR चलाएँ, और परिणाम जोड़ें + +अब ट्यूटोरियल का मुख्य भाग: प्रत्येक पेज पर लूप करना, टेक्स्ट पहचानना, और पेज मार्कर के साथ उसे स्टोर करना। + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**प्रति पेज नया `OcrEngine` क्यों?** कुछ डेवलपर्स एक ही इंजन को पुन: उपयोग करके उसकी `Image` प्रॉपर्टी बदलते हैं, लेकिन इससे भाषा सेटिंग्स या पिछले परिणाम रह सकते हैं, जिससे सूक्ष्म बग्स उत्पन्न हो सकते हैं। नया इंजन इंस्टैंशिएट करने से साफ़ स्लेट मिलती है। + +### सामान्य किनारी मामलों को संभालना + +- **खाली पेज:** यदि पेज में कोई पहचान योग्य टेक्स्ट नहीं है, तो `ocrEngine.Text` एक खाली स्ट्रिंग होगी। आप “(No text detected)” जैसा प्लेसहोल्डर डालना चाह सकते हैं। +- **भाषा चयन:** डिफ़ॉल्ट रूप से Aspose OCR अंग्रेज़ी का उपयोग करता है। जर्मन या फ़्रेंच प्रोसेस करने के लिए `ocrEngine.Language = Language.German;` को `Recognize()` कॉल से पहले सेट करें। +- **प्रदर्शन टिप:** बड़े TIFFs के लिए आप `ocrEngine.UseParallelProcessing = true;` को सक्षम करके कई कोर का उपयोग कर सकते हैं। + +## चरण 5 – संयुक्त आउटपुट को टेक्स्ट फ़ाइल में लिखें + +अंत में, इकट्ठा किए गए स्ट्रिंग को डिस्क पर सहेजें। + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +परिणामी `multipage_result.txt` कुछ इस तरह दिखेगा: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +आपने अब **इमेज से टेक्स्ट निकालना** कर लिया है और प्रभावी रूप से **स्कैन किए गए दस्तावेज़ का टेक्स्ट बदल** एक खोज योग्य, संपादन योग्य फ़ॉर्मेट में बदल दिया है। + +## बोनस – विज़ुअल ओवरव्यू (इमेज ऑल्ट टेक्स्ट) + +नीचे एक सरल फ्लो डायग्राम है जो प्रक्रिया को दर्शाता है। +*Alt text:* “डायग्राम जो दिखाता है कि Aspose OCR बैच प्रोसेसिंग का उपयोग करके C# में इमेज से टेक्स्ट कैसे निकाला जाता है”। + +![OCR Flow Diagram](placeholder-image-url.png) + +*(यदि आप इस ट्यूटोरियल को एक स्थैतिक साइट पर प्रकाशित कर रहे हैं, तो प्लेसहोल्डर को वास्तविक SVG या PNG से बदलें।)* + +## अक्सर पूछे जाने वाले प्रश्न + +**क्या यह PDF फ़ाइलों के साथ काम करता है?** +हाँ, Aspose OCR PDF पेजों को इमेज के रूप में पढ़ सकता है। आपको पहले PDF को इमेज में बदलना होगा, या `Aspose.PDF` से `PdfDocument` का उपयोग करके प्रत्येक पेज की रास्टराइज़्ड इमेज को `OcrEngine` को फीड करना होगा। + +**अगर मेरा TIFF पासवर्ड‑सुरक्षित है तो?** +`BatchProcessor` सीधे एन्क्रिप्शन को संभालता नहीं है। OCR पाइपलाइन में पास करने से पहले `Aspose.Imaging` जैसी लाइब्रेरी का उपयोग करके फ़ाइल को डिक्रिप्ट करें। + +**क्या मैं प्लेन टेक्स्ट की बजाय JSON आउटपुट कर सकता हूँ?** +बिल्कुल। `StringBuilder` लॉजिक को JSON सीरियलाइज़र (जैसे `System.Text.Json`) से बदलें और प्रत्येक पेज का टेक्स्ट `pageNumber` कुंजी के तहत स्टोर करें। + +## पूर्ण कार्यशील उदाहरण + +यहाँ पूरा प्रोग्राम है जिसे आप `Program.cs` में कॉपी‑पेस्ट कर सकते हैं। इसमें सभी using डायरेक्टिव्स, एरर हैंडलिंग, और कमेंट्स शामिल हैं। + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +प्रोग्राम चलाएँ: + +```bash +dotnet run +``` + +आपको कंसोल में सफलता का संदेश दिखना चाहिए, और आउटपुट फ़ाइल में संयोजित OCR परिणाम होंगे। + +## निष्कर्ष + +हमने अभी-अभी Aspose OCR का उपयोग करके **इमेज से टेक्स्ट निकालना** का एक व्यावहारिक तरीका दिखाया, जिससे कोई भी मल्टी‑पेज स्कैन फ़ाइल साधारण, खोज योग्य टेक्स्ट में बदल जाती है। `BatchProcessor` और साफ़ प्रति‑पेज `OcrEngine` सेटअप का उपयोग करके आप भरोसेमंद रूप से **स्कैन किए गए दस्तावेज़ का टेक्स्ट बदल** सकते हैं, जबकि कोडबेस को सरल और मेंटेन करने योग्य रख सकते हैं। + +बिना हिचकिचाहट प्रयोग करें: विभिन्न भाषाओं को आज़माएँ, JSON आउटपुट पर स्विच करें, या इस लॉजिक को वेब API में इंटीग्रेट करें जो अपलोड को रियल‑टाइम प्रोसेस करता है। मूल पैटर्न वही रहता है—लोड करें, पहचानें, इकट्ठा करें, और सहेजें। + +OCR, Aspose लाइसेंसिंग, या बड़े दस्तावेज़ बैच को संभालने के बारे में और सवाल हैं? नीचे कमेंट डालें या गहरी जानकारी के लिए 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/hindi/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..00f32b49 --- /dev/null +++ b/ocr/hindi/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Aspose OCR का उपयोग करके C# में छवि से टेक्स्ट निकालें। जानें कि OCR + के लिए छवि कैसे लोड करें, हिंदी टेक्स्ट को पहचानें, और कुछ सरल चरणों में OCR पहचान + चलाएँ। +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: hi +og_description: Aspose OCR का उपयोग करके C# में छवि से टेक्स्ट निकालें। OCR के लिए + छवि लोड करने, हिंदी टेक्स्ट पहचानने और OCR मान्यता चलाने के लिए इस चरण‑दर‑चरण गाइड + का पालन करें। +og_title: Aspose OCR के साथ छवि से टेक्स्ट निकालें – पूर्ण C# गाइड +tags: +- Aspose OCR +- C# +- Image Processing +title: Aspose OCR के साथ इमेज से टेक्स्ट निकालें – पूर्ण C# गाइड +url: /hi/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR के साथ इमेज से टेक्स्ट निकालें – पूर्ण C# गाइड + +क्या आपको कभी **इमेज से टेक्स्ट निकालने** की जरूरत पड़ी है लेकिन आप नहीं जानते थे कि कौनसी लाइब्रेरी चुनें? आप अकेले नहीं हैं—कई डेवलपर्स को .NET में OCR से पहली बार निपटते समय यही समस्या आती है। अच्छी खबर यह है कि Aspose OCR पूरी प्रक्रिया को आश्चर्यजनक रूप से आसान बना देता है, यहाँ तक कि जब आप हिंदी जैसी जटिल लिपियों से निपट रहे हों। + +इस ट्यूटोरियल में हम सब कुछ कवर करेंगे जो आपको **OCR के लिए इमेज लोड करने**, **हिंदी टेक्स्ट पहचानने**, और **OCR रिकग्निशन चलाने** के लिए चाहिए C# में। अंत तक, आपके पास एक तैयार‑चलाने‑योग्य कंसोल ऐप होगा जो निकाले गए टेक्स्ट को सीधे स्क्रीन पर प्रिंट करेगा। + +## आप क्या बनाएँगे + +हम एक छोटा कंसोल एप्लिकेशन बनाएँगे जो: + +1. OCR इंजन को भाषा मॉडल वाले फ़ोल्डर की ओर इंगित करता है। +2. ऑटोमैटिक डाउनलोड को बंद करता है—सुरक्षित वातावरण के लिए उपयोगी। +3. लक्ष्य भाषा के रूप में हिंदी चुनता है। +4. JPEG (या PNG) लोड करता है जिसमें हिंदी टेक्स्ट हो। +5. पहचान पाइपलाइन को निष्पादित करता है। +6. परिणामी स्ट्रिंग को कंसोल पर लिखता है। + +कोई बाहरी सर्विस नहीं, कोई क्लाउड की नहीं, सिर्फ शुद्ध ऑन‑प्रेमाइस OCR। + +## आवश्यकताएँ + +- **.NET 6.0** या बाद का संस्करण (कोड .NET Framework 4.7+ पर भी काम करता है)। +- **Aspose.OCR for .NET** NuGet पैकेज इंस्टॉल किया हुआ। + ```bash + dotnet add package Aspose.OCR + ``` +- `OcrResources` नाम का फ़ोल्डर जिसमें हिंदी भाषा मॉडल (`hin.traineddata`) हो। + आप इसे Aspose OCR डाउनलोड पेज से डाउनलोड करके `YOUR_DIRECTORY/OcrResources` में रख सकते हैं। +- एक इमेज फ़ाइल (`input.jpg`) जिसमें स्पष्ट हिंदी टेक्स्ट हो। + उदाहरण के लिए, एक स्टोरफ़्रंट साइन की फोटो जिसमें “स्वागत है” लिखा हो। + +> **Pro tip:** इमेज रेज़ॉल्यूशन को 300 dpi से ऊपर रखें; कम रेज़ॉल्यूशन से अक्षर छूट सकते हैं। + +--- + +## चरण 1: OCR इंजन को आपके संसाधनों की ओर इंगित करें – *इमेज से टेक्स्ट निकालें* + +Aspose OCR को सबसे पहले उसके भाषा मॉडल की लोकेशन चाहिए। यदि आप इसे सेट नहीं करते, तो इंजन फ़ाइलों को स्वचालित रूप से डाउनलोड करने की कोशिश करेगा—जो सुरक्षित नेटवर्क में नहीं चाहिए। + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*क्यों महत्वपूर्ण है:* `ResourcesPath` सेट करके आप सुनिश्चित करते हैं कि इंजन सही ट्रेनड डेटा स्थानीय रूप से लोड करे, जिससे पहली रन तेज़ होती है और अनपेक्षित नेटवर्क ट्रैफ़िक समाप्त हो जाता है। + +--- + +## चरण 2: ऑटोमैटिक रिसोर्स डाउनलोड को निष्क्रिय करें – *OCR के लिए इमेज लोड करें* + +कई कॉरपोरेट वातावरण में आउटबाउंड इंटरनेट एक्सेस ब्लॉक होता है। Aspose OCR एक फ़्लैग का सम्मान करता है जो इसे गायब फ़ाइलों को ऑन‑द‑फ़्लाई फ़ेच करने से रोकता है। + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +यदि आप यह लाइन भूल जाते हैं और हिंदी मॉडल मौजूद नहीं है, तो इंजन “Unable to download required resource” जैसी एक्सेप्शन फेंकेगा। फ़्लैग को `false` रखने से आपको एक स्पष्ट, निर्धारक फेल्योर मिलेगा जिसे आप स्वयं हैंडल कर सकते हैं। + +--- + +## चरण 3: भाषा चुनें – *हिंदी टेक्स्ट पहचानें* + +Aspose OCR कई भाषाओं को सपोर्ट करता है, लेकिन आपको बताना होगा कि कौनसी उपयोग करनी है। हिंदी को `OcrLanguage.Hindi` द्वारा पहचाना जाता है। + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*यदि आपको कई भाषाएँ चाहिए तो?* आप `Language = OcrLanguage.AutoDetect` सेट कर सकते हैं जिससे इंजन खुद अनुमान लगाएगा, लेकिन ऑटो‑डिटेक्ट धीमा होता है और मिश्रित स्क्रिप्ट्स पर कभी‑कभी गलत हो सकता है। शुद्ध हिंदी के लिए स्पष्ट चयन सबसे सुरक्षित है। + +--- + +## चरण 4: अपनी इमेज लोड करें – *OCR के लिए इमेज लोड करें* + +अब हम इंजन को वह तस्वीर देते हैं जिसे पढ़ना है। Aspose एक सुविधाजनक `ImageStream.FromFile` हेल्पर प्रदान करता है जो अंतर्निहित `System.Drawing` निर्भरताओं को एब्स्ट्रैक्ट करता है। + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +यदि फ़ाइल पाथ गलत है, तो Aspose `FileNotFoundException` उठाएगा। इस लाइन से पहले `File.Exists` चेक करने से डिबगिंग सत्र बच सकता है। + +--- + +## चरण 5: OCR इंजन चलाएँ – *OCR पहचान चलाएँ* + +सब कुछ कॉन्फ़िगर हो जाने के बाद, हम अंततः पहचान प्रक्रिया को शुरू करते हैं। यह कॉल सिंक्रोनस है और टेक्स्ट निकाले जाने तक ब्लॉक करती है। + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +पर्दे के पीछे, Aspose कई चरणों को निष्पादित करता है: प्री‑प्रोसेसिंग (डेस्क्यू, नॉइज़ रिमूवल), सेगमेंटेशन, कैरेक्टर क्लासिफिकेशन, और अंत में भाषा‑विशिष्ट पोस्ट‑प्रोसेसिंग। भारी काम इस एकल मेथड कॉल के भीतर होता है। + +--- + +## चरण 6: निकाले गए टेक्स्ट को आउटपुट करें – *इमेज से टेक्स्ट निकालें* + +परिणाम `engine` की `Text` प्रॉपर्टी में रहता है। हम इसे बस कंसोल पर लिखते हैं, लेकिन आप इसे डेटाबेस में स्टोर कर सकते हैं, API के ज़रिए भेज सकते हैं, या किसी अन्य NLP पाइपलाइन में फीड कर सकते हैं। + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**अपेक्षित आउटपुट** (मान लें कि इमेज में “स्वागत है” लिखा है): + +``` +=== OCR RESULT === +स्वागत है +``` + +यदि आपको गड़बड़ अक्षर दिखें, तो दोबारा जांचें कि हिंदी मॉडल सही जगह पर है और इमेज अत्यधिक कम्प्रेस्ड नहीं है। + +--- + +## पूर्ण कार्यशील उदाहरण + +नीचे पूरा प्रोग्राम है जिसे आप नई कंसोल प्रोजेक्ट (`dotnet new console`) में कॉपी‑पेस्ट कर सकते हैं। `YOUR_DIRECTORY` को अपने मशीन पर वास्तविक पाथ से बदलें। + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** यदि आप लूप में कई इमेज प्रोसेस करने की योजना बनाते हैं, तो एक ही `OcrEngine` इंस्टैंस बनाकर पुनः उपयोग करें—यह इनिशियलाइज़ेशन ओवरहेड को कम करता है। + +--- + +## सामान्य समस्याओं का समाधान + +| समस्या | क्यों होता है | त्वरित समाधान | +|-------|--------------|---------------| +| **खाली आउटपुट** | गलत भाषा मॉडल या कम‑गुणवत्ता वाली इमेज। | `ResourcesPath` सत्यापित करें, इमेज DPI बढ़ाएँ, या `ocrEngine.Image = ImageStream.FromFile(..., true)` करके ऑटो‑एन्हांसमेंट सक्षम करें। | +| **Exception: Resource not found** | हिंदी `.traineddata` फ़ाइल गायब है। | Aspose से हिंदी मॉडल डाउनलोड करें, `OcrResources` में रखें, और फ़ाइल नाम `hin.traineddata` से मेल खाता हो यह सुनिश्चित करें। | +| **गड़बड़ अक्षर** | कंसोल पर एन्कोडिंग mismatch। | कंसोल आउटपुट एन्कोडिंग सेट करें: `Console.OutputEncoding = System.Text.Encoding.UTF8;` | +| **परफ़ॉर्मेंस लैग** | बड़े इमेज बिना स्केलिंग के प्रोसेस होते हैं। | OCR को फ़ीड करने से पहले इमेज को अधिकतम 2000 px चौड़ाई/ऊँचाई तक स्केल करें। | + +--- + +## अगले कदम और संबंधित विषय + +- **बैच प्रोसेसिंग:** कोड को `foreach` लूप में रैप करके इमेज फ़ोल्डर को हैंडल करें। +- **विभिन्न भाषाएँ:** `OcrLanguage.Hindi` को `OcrLanguage.English`, `OcrLanguage.Arabic` आदि से बदलें। +- **आउटपुट फ़ॉर्मेट्स:** `Console.WriteLine` के बजाय टेक्स्ट फ़ाइल में लिखें (`File.WriteAllText("result.txt", ocrEngine.Text);`)। +- **ASP.NET Core के साथ इंटीग्रेशन:** एक API एन्डपॉइंट बनाएं जो इमेज अपलोड ले और निकाला गया टेक्स्ट JSON के रूप में रिटर्न करे। + +इन सभी एक्सटेंशन का पैटर्न समान है—इंजन को कॉन्फ़िगर करें, इमेज लोड करें, पहचान करें, और परिणाम का उपयोग करें। + +--- + +## निष्कर्ष + +हमने अभी-अभी **इमेज से टेक्स्ट निकालने** के लिए Aspose OCR को C# में उपयोग करने का तरीका दिखाया। गाइड ने हर वह कदम कवर किया जो आपको **OCR के लिए इमेज लोड करने**, **हिंदी टेक्स्ट पहचानने**, और **OCR पहचान चलाने** के लिए चाहिए—सब एक स्व-समाहित कंसोल ऐप में। + +इसे अपनी तस्वीरों के साथ आज़माएँ, विभिन्न भाषाओं के साथ प्रयोग करें, और स्निपेट को वेब सर्विस या बैकग्राउंड जॉब्स के लिए अनुकूलित करने में संकोच न करें। मूल विचार वही रहता है: रिसोर्स सेट करें, भाषा चुनें, इमेज फ़ीड करें, और `Text` प्रॉपर्टी पढ़ें। + +यदि आपको कोई समस्या आती है, तो ऊपर की ट्रबलशूटिंग टेबल देखें या टिप्पणी छोड़ें। Happy coding, और आपका 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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/hindi/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..8e8542c5 --- /dev/null +++ b/ocr/hindi/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-01-10 +description: C# में Aspose OCR का उपयोग करके छवि पर OCR कैसे चलाएँ। छवि से टेक्स्ट + निकालना सीखें, छवि पर OCR चलाएँ, और GPU त्वरण के साथ OCR के लिए छवि लोड करें। +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: hi +og_description: Aspose OCR का उपयोग करके छवि पर OCR कैसे चलाएँ। यह ट्यूटोरियल दिखाता + है कि छवि से टेक्स्ट कैसे निकालें, छवि पर OCR चलाएँ, और OCR के लिए छवि को प्रभावी + ढंग से लोड करें। +og_title: C# में OCR कैसे चलाएँ – पूर्ण चरण‑दर‑चरण गाइड +tags: +- OCR +- C# +- Aspose +title: C# में OCR कैसे चलाएँ – Aspose OCR के साथ पूर्ण गाइड +url: /hi/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में OCR चलाने का तरीका – Aspose OCR के साथ पूर्ण गाइड + +क्या आपने कभी सोचा है कि **OCR कैसे चलाएँ** और फोटो से टेक्स्ट निकालें बिना सिर दर्द हुए? आप अकेले नहीं हैं। चाहे आप इनवॉइस को डिजिटल बना रहे हों, रसीदें स्कैन कर रहे हों, या सिर्फ एक सर्चेबल PDF बनाना चाहते हों, इमेज से टेक्स्ट निकालना कई डेवलपर्स की रोज़मर्रा की जरूरत है। + +इस ट्यूटोरियल में हम एक व्यावहारिक, एंड‑टू‑एंड उदाहरण के माध्यम से दिखाएंगे कि **इमेज पर OCR कैसे चलाएँ** Aspose OCR लाइब्रेरी का उपयोग करके, जिसमें गति के लिए GPU एक्सेलेरेशन भी शामिल है। अंत तक आप बिल्कुल जान पाएँगे कि OCR के लिए इमेज कैसे लोड करें, मेमोरी उपयोग को कैसे ट्यून करें, और साफ़ प्लेन‑टेक्स्ट परिणाम कैसे प्राप्त करें—सिर्फ कुछ ही मिनटों के कोड में। + +## आप क्या सीखेंगे + +- C# में Aspose OCR इंजन को इनिशियलाइज़ कैसे करें +- डिस्क या स्ट्रीम से **OCR के लिए इमेज लोड** कैसे करें +- GPU एक्सेलेरेशन को सक्षम करना और GPU मेमोरी को सीमित करना +- इमेज से **टेक्स्ट निकालना** और आउटपुट की पुष्टि कैसे करें +- सामान्य समस्याएँ (GPU मॉड्यूल गायब, मेमोरी सीमाएँ) और त्वरित समाधान + +Aspose OCR का कोई पूर्व अनुभव आवश्यक नहीं है; बस एक कार्यशील .NET वातावरण और एक सैंपल इमेज चाहिए। + +--- + +## How to Run OCR on an Image with Aspose OCR + +सबसे पहले आपको एक स्पष्ट, रन करने योग्य स्निपेट चाहिए जो पूरा काम कर दे। नीचे पूरा प्रोग्राम दिया गया है जिसे आप कॉपी, पेस्ट और तुरंत चला सकते हैं। + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**अपेक्षित आउटपुट** (मान लेते हैं कि सैंपल इमेज में “Hello World” वाक्य है): + +``` +=== OCR Result === +Hello World +``` + +> **Pro tip:** अगर आपको कोई टेक्स्ट नहीं दिख रहा है, तो दोबारा जाँचें कि GPU मॉड्यूल स्थापित है और इमेज पाथ सही है। `ImageStream.FromFile` मेथड स्पष्ट एक्सेप्शन फेंकता है अगर फ़ाइल नहीं मिल पाती। + +--- + +## Extract Text from Image Using GPU Acceleration + +GPU की ज़रूरत क्यों? केवल CPU‑पर OCR काम करता है, लेकिन बड़े या हाई‑रेज़ोल्यूशन चित्रों पर यह बहुत धीमा हो सकता है। GPU एक्सेलेरेशन (ऊपर चरण 2) को सक्षम करने से भारी काम आपके ग्राफ़िक्स कार्ड को सौंप दिया जाता है, जो प्रति सेकंड हजारों पिक्सेल प्रोसेस कर सकता है। + +### GPU कब उपयोग करें + +- **बैच प्रोसेसिंग** – एक साथ दर्जनों इनवॉइस स्कैन करना। +- **हाई‑रेज़ोल्यूशन स्कैन** – 300 dpi से ऊपर की कोई भी इमेज। +- **रियल‑टाइम ऐप्स** – जैसे मोबाइल स्कैनर जिसे तुरंत फीडबैक चाहिए। + +अगर आपके वातावरण में संगत GPU नहीं है, तो बस `EnableGpuAcceleration = false;` सेट कर दें और इंजन स्वचालित रूप से CPU मोड में फ़ॉल्बैक हो जाएगा। + +--- + +## Run OCR on Image – Loading the Image Correctly + +इमेज लोड करना वह **OCR के लिए इमेज लोड** चरण है जो अक्सर लोगों को उलझा देता है। Aspose OCR एक `ImageStream` की अपेक्षा करता है, जिसे फ़ाइल, मेमोरी स्ट्रीम या यहाँ तक कि URL से बनाया जा सकता है। यहाँ कुछ वैरिएशन हैं: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**एज केस:** कुछ इमेज में अल्फा चैनल (ट्रांसपैरेंसी) होता है जो OCR इंजन को भ्रमित कर सकता है। अल्फा को हटाना आसान है: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +अब आप सबसे सामान्य तरीकों से **OCR के लिए इमेज लोड** कर चुके हैं, जिससे इंजन हर बार एक साफ़, समर्थित फ़ॉर्मेट प्राप्त करता है। + +--- + +## Tips for Loading Image for OCR Efficiently + +1. **बड़ी इमेज को रिसाइज़ करें** – OCR को 4 K फोटो की ज़रूरत नहीं है; लगभग 1500 px चौड़ाई तक स्केल डाउन करने से गति बढ़ती है बिना सटीकता घटाए। +2. **ग्रेस्केल में कन्वर्ट करें** – शोर कम होता है और लो‑कंट्रास्ट स्कैन पर पहचान बेहतर हो सकती है। +3. **डेस्क्यू के साथ प्री‑प्रोसेस करें** – अगर आपकी इमेज टिल्टेड है, तो `ocrEngine.Config.EnableDeskew = true;` के ज़रिए Aspose OCR का बिल्ट‑इन डेस्क्यू सक्षम किया जा सकता है। + +ये ट्रिक्स विशेष रूप से तब उपयोगी हैं जब आप **इमेज से टेक्स्ट निकाल रहे** हों बड़े पैमाने पर। + +--- + +## Common Pitfalls & How to Fix Them + +| लक्षण | संभावित कारण | समाधान | +|---------|--------------|-----| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU मॉड्यूल स्थापित नहीं है | Aspose OCR GPU पैकेज स्थापित करें या GPU को निष्क्रिय करें (`EnableGpuAcceleration = false`). | +| खाली आउटपुट | इमेज पाथ गलत है या असमर्थित फ़ॉर्मेट | `ImageStream.FromFile` पाथ की जाँच करें; फ़ाइल को सही पढ़ने के लिए बाइट्स से लोड करने का प्रयास करें। | +| मेमोरी समाप्ति त्रुटि | बड़े बैच के लिए GPU मेमोरी सीमा बहुत कम है | `GpuMemoryLimit` बढ़ाएँ (जैसे, 2048) या इमेज को छोटे हिस्सों में प्रोसेस करें। | +| गड़बड़ अक्षर | इमेज में बहुत शोर या कम कंट्रास्ट है | पूर्व-प्रसंस्करण: बाइनराइज़ करें, डेस्पेकल करें, या OCR से पहले DPI बढ़ाएँ। | + +--- + +## Full Working Example – Put It All Together + +नीचे एक कॉम्पैक्ट कंसोल ऐप दिया गया है जिसमें हमने चर्चा किए गए सर्वश्रेष्ठ प्रैक्टिसेज़ शामिल किए हैं: GPU एक्सेलेरेशन, मेमोरी लिमिटिंग, इमेज प्री‑प्रोसेसिंग, और एरर हैंडलिंग। + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +इस प्रोग्राम को चलाने पर आपके इमेज से साफ़ टेक्स्ट प्रिंट होगा, जो दर्शाता है कि **इमेज से टेक्स्ट निकालना** कितना मजबूत हो सकता है, भले ही स्रोत परफ़ेक्ट न हो। + +--- + +## Conclusion + +हमने **इमेज पर OCR चलाने** का तरीका Aspose OCR के साथ कवर किया, इंजन को इनिशियलाइज़ करने से लेकर इमेज लोड करने, GPU एक्सेलेरेशन सक्षम करने, और एज केस हैंडल करने तक। अब आपके पास एक ठोस, उद्धरण‑योग्य रेफ़रेंस है जिसे आप किसी भी .NET प्रोजेक्ट में कॉपी‑पेस्ट करके तुरंत **इमेज से टेक्स्ट निकालना** शुरू कर सकते हैं। + +अगला कदम? PDF पेज़ फीड करना, विभिन्न भाषाओं (उदाहरण: `ocrEngine.Config.Language = "spa"` स्पेनिश के लिए) के साथ प्रयोग करना, या इस फ्लो को वेब API में इंटीग्रेट करना जो अपलोड्स को ऑन‑द‑फ़्लाई प्रोसेस करे। संभावनाएँ असीमित हैं, और हमने जिन टूल्स की चर्चा की है, उनके साथ आप किसी भी 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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/hindi/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..631323dc --- /dev/null +++ b/ocr/hindi/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-01-10 +description: कैसे तेज़ी से OCR चलाएँ और एक छवि से अरबी टेक्स्ट निकालें। इमेज को टेक्स्ट + में बदलना सीखें, PNG से टेक्स्ट पढ़ें, और Aspose OCR के साथ टेक्स्ट निकालना देखें। +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: hi +og_description: C# में OCR कैसे चलाएँ और PNG छवि से अरबी टेक्स्ट निकालें। यह गाइड + आपको चरण‑दर‑चरण दिखाता है कि कैसे छवि को टेक्स्ट में बदलें और PNG से टेक्स्ट पढ़ें। +og_title: C# में OCR कैसे चलाएँ – PNG से अरबी टेक्स्ट निकालें +tags: +- OCR +- C# +- Aspose +title: C# में OCR कैसे चलाएँ – PNG से अरबी टेक्स्ट निकालें +url: /hi/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# में OCR कैसे चलाएँ – PNG से अरबी टेक्स्ट निकालें + +क्या आपने कभी सोचा है **OCR कैसे चलाएँ** एक ऐसी तस्वीर पर जिसमें अरबी अक्षर हों? आप अकेले नहीं हैं। कई डेवलपर्स को एक बाधा आती है जब उन्हें PNG से **अरबी टेक्स्ट निकालना** होता है लेकिन उन्हें नहीं पता कि कौन-सी लाइब्रेरी दाएँ‑से‑बाएँ स्क्रिप्ट को बिना समस्या के संभालेगी। + +इस ट्यूटोरियल में हम आपको वह सब बताएँगे जो आपको **इमेज को टेक्स्ट में बदलने**, **PNG से टेक्स्ट पढ़ने**, और अंत में **टेक्स्ट कैसे निकालें** Aspose.OCR का उपयोग करके एक साफ़ C# कंसोल ऐप में जानने की ज़रूरत है। अंत तक आपके पास एक तैयार‑चलाने‑योग्य प्रोग्राम होगा जो अरबी स्ट्रिंग को सीधे आपके टर्मिनल पर प्रिंट करेगा। + +## आप क्या सीखेंगे + +- Aspose.OCR NuGet पैकेज को इंस्टॉल और रेफ़रेंस करें। +- OCR इंजन को अरबी भाषा समर्थन के लिए कॉन्फ़िगर करें। +- PNG इमेज लोड करें और रिकग्निशन प्रोसेस चलाएँ। +- निकाले गए टेक्स्ट को प्राप्त करें और प्रदर्शित करें। +- बेहतर सटीकता के लिए सेटिंग्स को ट्यून करें और सामान्य समस्याओं को संभालें। + +OCR में कोई पूर्व अनुभव आवश्यक नहीं है, बस C# की बुनियादी समझ और एक .NET विकास वातावरण (Visual Studio, Rider, या `dotnet` CLI) पर्याप्त है। + +--- + +## OCR कैसे चलाएँ – Aspose OCR सेटअप + +### चरण 1: Aspose.OCR NuGet पैकेज जोड़ें + +पहला काम OCR लाइब्रेरी को प्राप्त करना है। Aspose.OCR एक व्यावसायिक उत्पाद है, लेकिन यह एक मुफ्त ट्रायल प्रदान करता है जो सीखने के लिए पूरी तरह उपयुक्त है। + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +वैकल्पिक रूप से, Visual Studio में **NuGet Package Manager** खोलें, **Aspose.OCR** खोजें, और **Install** पर क्लिक करें। + +> **Pro tip:** यदि आप लाइब्रेरी को CI पाइपलाइन में उपयोग करने की योजना बना रहे हैं, तो संस्करण को लॉक करने के लिए `-v` फ़्लैग जोड़ें, उदाहरण के लिए, `dotnet add package Aspose.OCR -v 23.10`। + +### चरण 2: नया कंसोल प्रोजेक्ट बनाएं (यदि आपके पास नहीं है) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +अब आपके पास एक नया `Program.cs` फ़ाइल तैयार है हमारे कोड के लिए। + +--- + +## अरबी टेक्स्ट निकालें – OCR कोड लिखना + +नीचे पूरा, तैयार‑चलाने‑योग्य प्रोग्राम दिया गया है। इसे `Program.cs` के रूप में सहेजें (या ऑटो‑जनरेटेड फ़ाइल को बदलें)। + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### प्रत्येक पंक्ति क्यों महत्वपूर्ण है + +- **`OcrEngine`**: वह मुख्य क्लास जो इमेज लोडिंग, भाषा चयन, और रिकग्निशन को समन्वयित करता है। +- **`Language = OcrLanguage.Arabic`**: अरबी दाएँ‑से‑बाएँ स्क्रिप्ट और विशिष्ट ग्लिफ़्स का उपयोग करती है; भाषा सेट करने से इंजन सही कैरेक्टर मॉडल लागू करता है। +- **`ImageStream.FromFile`**: PNG, JPEG, BMP और कई अन्य फ़ॉर्मेट संभालता है। यदि आपको कभी `MemoryStream` (जैसे अपलोडेड फ़ाइल) से पढ़ना हो, तो इस कॉल को उसी अनुसार बदलें। +- **`Recognize()`**: भारी काम करता है—पिक्सेल विश्लेषण, सेगमेंटेशन, और कैरेक्टर वर्गीकरण। +- **`ocrEngine.Text`**: अंतिम Unicode स्ट्रिंग, आगे की प्रोसेसिंग, स्टोरेज, या डिस्प्ले के लिए तैयार। + +### अपेक्षित आउटपुट + +यदि `arabic_sample.png` में वाक्य “مرحبا بالعالم” (Hello World) है, तो कंसोल प्रिंट करेगा: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +यदि आउटपुट गड़बड़ दिखे, तो सुनिश्चित करें कि इमेज स्पष्ट है, भाषा अरबी पर सेट है, और OCR इंजन संस्करण दस्तावेज़ के साथ मेल खाता है। + +--- + +## इमेज को टेक्स्ट में बदलें – सटीकता को ट्यून करना + +डिफ़ॉल्ट सेटिंग्स अधिकांश साफ़ स्कैन के लिए काम करती हैं, लेकिन वास्तविक दुनिया की इमेज को अक्सर कुछ अतिरिक्त ट्यूनिंग की जरूरत होती है। + +| Setting | क्या करता है | कब उपयोग करें | +|---------|--------------|-------------| +| `ocrEngine.Config.Preprocess = true` | स्वचालित बाइनराइज़ेशन और शोर हटाने को सक्षम करता है। | छायाओं वाले स्कैन किए गए दस्तावेज़। | +| `ocrEngine.Config.Deskew = true` | हल्की झुकाव को सुधारने के लिए इमेज को घुमाता है। | कोण पर ली गई फ़ोटो। | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | पूरी इमेज को एक टेक्स्ट ब्लॉक के रूप में लेता है। | सरल कैप्शन या सिंगल‑लाइन लेबल। | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | केवल अरबी अक्षरों तक पहचान को सीमित करता है। | मिश्रित‑भाषा पृष्ठों पर फॉल्स पॉज़िटिव को कम करता है। | + +आप इन पंक्तियों को इंजन बनाने के तुरंत बाद जोड़ सकते हैं: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## PNG से टेक्स्ट पढ़ें – विभिन्न इमेज स्रोतों को संभालना + +कभी‑कभी PNG डेटाबेस में रहता है या वेब अनुरोध से आता है। यहाँ एक त्वरित वैरिएंट है जो `byte[]` से पढ़ता है: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +बाकी प्रवाह समान रहता है, जिसका अर्थ है **टेक्स्ट कैसे निकालें** स्रोत की परवाह किए बिना स्थिर रहता है। + +--- + +## टेक्स्ट कैसे निकालें – उन्नत विकल्प और किनारे के मामलों + +### 1. मल्टी‑पेज PDF या TIFF + +यदि आपको मल्टी‑पेज दस्तावेज़ को OCR करना है, तो प्रत्येक पेज पर लूप करें: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **नोट:** इस स्निपेट के लिए आपको `Aspose.PDF` पैकेज की आवश्यकता होगी। + +### 2. भाषा का स्वतः पता लगाना + +Aspose.OCR ऑटो‑डिटेक्ट भी प्रदान करता है, लेकिन यह धीमा है। यदि आपको यकीन नहीं है कि इमेज में अरबी या कोई अन्य स्क्रिप्ट है, तो इसे सक्षम करें: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +### 3. प्रदर्शन टिप्स + +- **`OcrEngine`** ऑब्जेक्ट को कई इमेज के लिए पुनः उपयोग करें; हर बार नया इंस्टेंस बनाना ओवरहेड जोड़ता है। +- **समानांतर में चलाएँ** केवल तभी जब आपके पास प्रत्येक थ्रेड के लिए अलग इंजन इंस्टेंस हो—एक ही इंस्टेंस साझा करने से रेस कंडीशन होती है। + +--- + +## निष्कर्ष + +हमने C# में **OCR कैसे चलाएँ** को शुरू से अंत तक कवर किया है, आपको दिखाते हुए **अरबी टेक्स्ट निकालें**, **इमेज को टेक्स्ट में बदलें**, **PNG से टेक्स्ट पढ़ें**, और विभिन्न परिदृश्यों में **टेक्स्ट कैसे निकालें** का उत्तर दिया है। सैंपल कोड पूर्ण, स्वतंत्र, और किसी भी .NET कंसोल प्रोजेक्ट में पेस्ट करने के लिए तैयार है। + +अगला कदम? `OcrLanguage.Arabic` को कोरियन या सर्बियन सिरिलिक से बदलें और लाइब्रेरी की बहुभाषी शक्ति देखें। शोरयुक्त स्कैन पर सटीकता बढ़ाने के लिए प्री‑प्रोसेसिंग फ़्लैग्स के साथ प्रयोग करें, या OCR रूटीन को वेब API में एकीकृत करें ताकि उपयोगकर्ता इमेज अपलोड कर सकें और तुरंत टेक्स्ट परिणाम प्राप्त कर सकें। + +कोडिंग का आनंद लें, और आपके 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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/hindi/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..b39658c9 --- /dev/null +++ b/ocr/hindi/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,295 @@ +--- +category: general +date: 2026-01-10 +description: Aspose OCR का उपयोग करके C# में छवि से टेक्स्ट को पहचानना, टेक्स्ट के + निर्देशांक निकालना, और रसीद को JSON में बदलना सीखें। चरण‑दर‑चरण ट्यूटोरियल। +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: hi +og_description: Aspose OCR का उपयोग करके C# में छवि से टेक्स्ट पहचानें। यह गाइड दिखाता + है कि टेक्स्ट कैसे निकालें, निर्देशांक कैसे प्राप्त करें, और रसीद को JSON में कैसे + बदलें। +og_title: छवि से टेक्स्ट पहचानें – पूर्ण C# OCR ट्यूटोरियल +tags: +- OCR +- C# +- Aspose +title: C# में छवि से टेक्स्ट पहचानें – OCR और JSON का पूर्ण गाइड +url: /hi/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# इमेज से टेक्स्ट पहचानें – पूर्ण C# OCR ट्यूटोरियल + +क्या आपको कभी इमेज से टेक्स्ट पहचानने की ज़रूरत पड़ी है लेकिन यह नहीं पता था कि कौन सी लाइब्रेरी चुनें? आप अकेले नहीं हैं। कई वास्तविक‑दुनिया के ऐप्स—जैसे खर्च ट्रैकर, रसीद स्कैनर, या दस्तावेज़ आर्काइवर—में टेक्स्ट को विश्वसनीय रूप से निकालना पहला बाधा है। + +इस ट्यूटोरियल में हम **टेक्स्ट कैसे निकालें** को समझेंगे, उसके बाउंडिंग बॉक्स निकालेंगे, और अंत में Aspose.OCR for .NET का उपयोग करके **रसीद को JSON में बदलें**। अंत तक आपके पास एक स्व-निहित C# प्रोजेक्ट होगा जो रसीद की फोटो लेता है और विश्वसनीयता स्कोर और निर्देशांक के साथ एक साफ़ JSON फ़ाइल बनाता है। + +## आपको क्या चाहिए + +- **.NET 6.0 SDK** (या कोई भी बाद का संस्करण)। पुराने फ्रेमवर्क भी काम करेंगे, लेकिन .NET 6 आधुनिक लाइब्रेरीज़ के लिए उपयुक्त है। +- **Visual Studio 2022** या VS Code के साथ C# एक्सटेंशन। +- **Aspose.OCR for .NET** NuGet पैकेज (`Aspose.OCR` और `Aspose.OCR.Output`)। आप इसे पैकेज मैनेजर कंसोल के माध्यम से इंस्टॉल कर सकते हैं: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- एक नमूना रसीद इमेज (जैसे, `receipt.jpg`) जिसे आप बाद में संदर्भित करने वाले फ़ोल्डर में रखें। + +बस इतना ही—कोई अतिरिक्त SDK नहीं, कोई नेटिव बाइनरी नहीं, सिर्फ शुद्ध मैनेज्ड कोड। + +## चरण 1: नया कंसोल प्रोजेक्ट बनाएं + +सबसे पहले, एक कंसोल ऐप बनाएं। यह UI ओवरहेड के बिना OCR का परीक्षण करने का सबसे तेज़ तरीका है। + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Pro tip:** प्रोजेक्ट फ़ोल्डर को व्यवस्थित रखें; `Resources` नामक एक सब‑फ़ोल्डर बनाएं और उसमें `receipt.jpg` रखें। इससे पाथ हैंडलिंग आसान हो जाती है। + +## चरण 2: रसीद इमेज लोड करें + +अब हम वास्तव में **इमेज से टेक्स्ट पहचानते** हैं। पहला कदम OCR इंजन को फ़ाइल की ओर इंगित करना है। + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +हम लोड को सरल अस्तित्व जाँच में क्यों लपेटते हैं? क्योंकि प्रोडक्शन में अक्सर उपयोगकर्ता अपलोड्स होते हैं जो गायब या भ्रष्ट हो सकते हैं। समस्या को जल्दी पकड़ना बाद में अस्पष्ट अपवादों से बचाता है। + +## चरण 3: OCR निष्पादित करें – **इमेज से टेक्स्ट पहचानें** + +इमेज मेमोरी में होने पर, हम Aspose से **इमेज से टेक्स्ट पहचानने** के लिए कहते हैं। यह ऑपरेशन सिंक्रोनस है और एक समृद्ध परिणाम सेट लौटाता है। + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +पर्दे के पीछे Aspose एक न्यूरल नेटवर्क चलाता है जो लाखों अक्षरों पर प्रशिक्षित है। इंजन `ocrEngine.Text`, `ocrEngine.RecognitionResult`, और `OcrRegion` ऑब्जेक्ट्स का संग्रह भरता है जो निर्देशांक रखता है। यह अगला कदम करने के लिए बिल्कुल आवश्यक है। + +## चरण 4: **टेक्स्ट कैसे निकालें** – कच्ची स्ट्रिंग प्राप्त करना + +यदि आपको केवल साधारण टेक्स्ट चाहिए (शायद तेज़ खोज के लिए), तो आप इसे सीधे इंजन से निकाल सकते हैं: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +आप देखेंगे कि OCR ने पैराग्राफ सीमाओं को पहचानते हुए लाइन ब्रेक्स डाले हैं। कई रसीद‑स्कैनिंग परिदृश्यों में कच्ची स्ट्रिंग पर्याप्त होती है कुल, तिथियां, या विक्रेता नाम सरल रेगेक्स से निकालने के लिए। + +## चरण 5: **टेक्स्ट निर्देशांक निकालें** – प्रत्येक शब्द के लिए बाउंडिंग बॉक्स + +अक्सर आपको यह जानना होता है कि इमेज पर किसी विशेष टेक्स्ट का *कहाँ* स्थित है—उदाहरण के लिए, UI में कुल राशि को हाइलाइट करने के लिए। Aspose यह `OcrRegion` ऑब्जेक्ट्स के माध्यम से देता है। + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +ध्यान दें कि हम प्रत्येक पहचाने गए सेगमेंट के लिए **टेक्स्ट निर्देशांक निकालने** पर लूप कर रहे हैं। निर्देशांक मूल इमेज के सापेक्ष होते हैं, इसलिए आप उन्हें ग्राफ़िक्स कैनवास या HTML `` एलिमेंट में ओवरले कर सकते हैं। + +## चरण 6: **रसीद को JSON में बदलें** – विस्तृत परिणाम सहेजना + +अब वह भाग आता है जो सब कुछ जोड़ता है: हम एक मशीन‑पठनीय संरचना चाहते हैं जिसमें टेक्स्ट, विश्वसनीयता स्कोर, और बाउंडिंग बॉक्स शामिल हों। Aspose `JsonSaveOptions` के साथ आता है जो इसे आसान बनाता है। + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +परिणामी फ़ाइल कुछ इस तरह दिखती है (संक्षिप्तता के लिए छोटा किया गया): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +अब आपके पास एक **रसीद को JSON में बदलें** आर्टिफैक्ट है जिसे डाउनस्ट्रीम सेवाओं में फीड किया जा सकता है—जैसे खर्च‑रिपोर्ट API, एनालिटिक्स पाइपलाइन, या यहाँ तक कि एक सरल UI जो प्रत्येक शब्द के चारों ओर आयत बनाता है। + +## पूर्ण कार्यशील उदाहरण + +सभी भागों को जोड़ते हुए, यहाँ पूरा `Program.cs` है जिसे आप अपने प्रोजेक्ट में कॉपी‑पेस्ट कर सकते हैं: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +प्रोग्राम चलाएँ (`dotnet run`) और कंसोल आउटपुट देखें। संरचना की पुष्टि के लिए `Resources/receipt.json` खोलें। + +## सामान्य प्रश्न और किनारे के मामले + +- **अगर इमेज धुंधली है तो?** + Aspose OCR 300 dpi या उससे अधिक पर सबसे अच्छा काम करता है। यदि आपको कम विश्वसनीयता स्कोर मिलते हैं, तो इमेज को इंजन में फीड करने से पहले शार्पनिंग फ़िल्टर लागू करने पर विचार करें। + +- **क्या मैं कई भाषाएँ पहचान सकता हूँ?** + हाँ। `Recognize()` कॉल करने से पहले `ocrEngine.Language = Language.English | Language.Spanish;` सेट करें। + +- **मैं आउटपुट को केवल संख्याओं (जैसे, कुल) तक कैसे सीमित करूँ?** + साधारण टेक्स्ट मिलने के बाद, `ocrEngine.Text` पर `\d+\.\d{2}` जैसे रेगेक्स चलाएँ। क्योंकि हमारे पास पहले से ही निर्देशांक हैं, आप मिलान किए गए स्ट्रिंग को उसके क्षेत्र में वापस मैप कर सकते हैं दृश्य हाइलाइटिंग के लिए। + +- **क्या JSON फ़ॉर्मेट को कस्टमाइज़ किया जा सकता है?** + `JsonSaveOptions` क्लास कई फ़्लैग्स प्रदान करता है। यदि आपको पूरी तरह कस्टम स्कीमा चाहिए, तो आप `ocrEngine.RecognitionResult.Regions` पर इटररेट कर सकते हैं और `System.Text.Json` के साथ ऑब्जेक्ट्स को स्वयं सीरियलाइज़ कर सकते हैं। + +## निष्कर्ष + +हमने अभी दिखाया कि C# में Aspose.OCR का उपयोग करके **इमेज से टेक्स्ट कैसे पहचानें**, **टेक्स्ट कैसे निकालें**, **टेक्स्ट निर्देशांक कैसे निकालें**, और अंत में **रसीद को JSON में कैसे बदलें**। पूरी प्रक्रिया एक ही आसान‑चलाने योग्य कंसोल ऐप में रहती है, जिससे यह प्रोटोटाइप या बड़े सिस्टम में बिल्डिंग ब्लॉक के रूप में उपयुक्त है। + +अगले कदम? JSON को ऐसे फ्रंट‑एंड में फीड करने का प्रयास करें जो बाउंडिंग बॉक्स ड्रॉ करता है, या आउटपुट को खर्च‑रिपोर्ट सेवा में जोड़ें। आप विभिन्न इमेज फ़ॉर्मेट (PNG, TIFF) के साथ प्रयोग कर सकते हैं या रसीदों के फ़ोल्डर को बैच‑प्रोसेस कर सकते हैं। + +OCR, Aspose, या JSON हैंडलिंग के बारे में और प्रश्न हैं? नीचे टिप्पणी छोड़ें, और कोडिंग का आनंद लें! + +![इमेज से टेक्स्ट पहचानने के लिए रसीद इमेज उदाहरण](receipt.jpg "रसीद इमेज उदाहरण") + +{{< /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/net/ocr-configuration/_index.md b/ocr/hongkong/net/ocr-configuration/_index.md index 7a560151..85d8b415 100644 --- a/ocr/hongkong/net/ocr-configuration/_index.md +++ b/ocr/hongkong/net/ocr-configuration/_index.md @@ -39,9 +39,12 @@ url: /zh-hant/net/ocr-configuration/ 使用 Aspose.OCR for .NET 解鎖強大的 OCR 功能。將文字無縫地從圖像中提取。 ### [OCR 影像辨識中的 OCROperation 與列表](./ocr-operation-with-list/) 釋放 Aspose.OCR for .NET 的潛能。使用清單輕鬆執行 OCR 影像辨識。提高應用程式的生產力和資料提取。 +### [在 .NET 中讀取嵌入資源 – 設定 Aspose 授權完整指南](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +了解如何在 .NET 應用程式中讀取嵌入式資源並正確設定 Aspose 授權。 + {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/hongkong/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..ff74471b --- /dev/null +++ b/ocr/hongkong/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: 在 C# 中讀取嵌入式資源並設定 Aspose 授權。學習如何使用 GetManifestResourceStream、嵌入授權檔案,以及取得執行中的 + .NET 程式集,於單一教學中一次搞懂。 +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: zh-hant +og_description: 在 .NET 中讀取嵌入式資源並快速設定 Aspose 授權。逐步指南涵蓋 GetManifestResourceStream、嵌入授權以及使用執行中的組件。 +og_title: 讀取嵌入式資源 – 在 .NET 中設定 Aspose 授權 +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: 在 .NET 中讀取嵌入式資源 – 設定 Aspose 授權的完整指南 +url: /zh-hant/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 讀取嵌入式資源 – 設定 Aspose 授權完整指南 + +有沒有曾經需要在執行時 **read embedded resource**,並想知道如何在不硬編碼路徑的情況下取得 Aspose OCR 函式庫的授權?你並不孤單。在許多企業應用程式中,授權檔案會放在組件內部,這樣就不需要額外傳送檔案或擔心權限不足。本教學會完整示範如何讀取嵌入式資源,並使用 .NET 的 `GetManifestResourceStream` 方法設定 Aspose 授權。 + +我們會一步步說明你需要的所有操作:將 `.lic` 檔案嵌入、使用 `GetExecutingAssembly` 取出,最後套用到 Aspose OCR 的 `License` 類別。完成後,你將擁有一個自包含的解決方案,適用於任何 .NET 專案——不需要外部檔案。 + +## 你將學會 + +- **如何將授權檔案** 嵌入到 .NET 專案,使其成為編譯後 DLL 的一部份。 +- 正確使用 **GetManifestResourceStream** 讀取嵌入式資源的方法。 +- 如何 **以程式方式設定 Aspose 授權**,不必觸碰檔案系統。 +- 處理常見問題的技巧,例如資源名稱拼寫錯誤或 Build Action 設定不當。 +- 完整、可執行的程式碼範例,直接放入你的解決方案中使用。 + +### 前置條件 + +- .NET 6.0 或更新版本(此程式碼亦可在 .NET Framework 4.x 上執行,只需相應調整專案檔)。 +- 已安裝 Aspose.OCR NuGet 套件 (`dotnet add package Aspose.OCR`)。 +- 具備基本的 C# 與 Visual Studio(或你慣用的 IDE)使用經驗。 + +如果上述條件都已備妥,太好了——讓我們開始吧。 + +## Step 1: Embed the Aspose License File into Your Assembly + +第一步是取得實際的授權檔案(`Aspose.OCR. lic`)。不要將它放在執行檔旁邊,而是將它 **嵌入** 為資源。 + +1. 將 `.lic` 檔案加入專案(例如在 `Resources` 資料夾中放置該檔案)。 +2. 在檔案屬性中,將 **Build Action** 設為 `Embedded Resource`。 + *小技巧:保持資料夾結構簡單;完整的資源名稱將會是 `YourNamespace.Resources.Aspose.OCR.lic`。 + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +為什麼要嵌入?因為授權檔案會隨組件一起攜帶,避免在正式環境中因檔案遺失而產生問題。 + +## Step 2: Retrieve the Embedded Resource Using GetExecutingAssembly + +授權檔案已經在 DLL 內部,接下來需要在執行時 **讀取嵌入式資源**。.NET 的 `Assembly` 類別正好提供此功能。 + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +`GetExecutingAssembly` 會回傳目前執行的組件——正好用來定位與程式碼同層的資源。 + +## Step 3: Open the License Stream with GetManifestResourceStream + +取得組件參考後,即可呼叫 `GetManifestResourceStream`。此方法會回傳一個 `Stream`,可直接傳給 Aspose 使用。 + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +請注意我們使用 **null‑conditional** `using` 陳述式 (`using Stream?`) 以確保串流會自動釋放。若資源名稱錯誤,會拋出清楚的例外,避免日後出現靜默失敗。 + +## Step 4: Apply the License to Aspose OCR + +Aspose 的 `License` 類別接受 `Stream` 作為參數。我們已經取得串流,最後一步非常簡單。 + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +就這樣!Aspose OCR 引擎現在已完整授權,能在不顯示試用水印的情況下處理影像。 + +## Full Working Example + +以下是一個完整、可直接複製貼上的程式,示範整個流程。內含必要的 `using` 指示、錯誤處理,以及簡單的 OCR 呼叫,以驗證授權已生效。 + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Expected Output + +在具備有效授權且已嵌入的機器上執行程式,應會看到: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +若找不到授權串流,主控台會回報缺少的資源名稱,提醒你檢查 **Build Action** 與命名空間設定。 + +## Common Pitfalls & How to Avoid Them + +| 問題 | 為何會發生 | 解決方式 | +|------|------------|----------| +| **資源名稱不匹配** | .NET 會根據預設命名空間 + 資料夾路徑組成資源名稱。 | 使用 `Assembly.GetManifestResourceNames()` 列出所有可用名稱,確認字串完全相同。 | +| **授權檔未設定為 Embedded Resource** | 預設的 Build Action 為 `Content`。 | 在檔案屬性中改為 `Embedded Resource`。 | +| **從不同組件執行** | 若從類別庫呼叫,`GetExecutingAssembly()` 可能回傳該類別庫而非主 exe。 | 改用 `Assembly.GetEntryAssembly()`,或明確傳入正確的組件。 | +| **串流過早釋放** | 不小心在使用前就結束了 `using` 區塊。 | 如上範例,將 `using` 包住 `SetLicense` 的呼叫。 | +| **Aspose.OCR 版本不相容** | 新版可能需要不同格式的授權檔。 | 從 Aspose 帳號下載最新授權檔,重新嵌入。 | + +## Using the Same Technique for Other Embedded Files + +這套 **讀取嵌入式資源 → 使用 GetManifestResourceStream** 的模式,適用於任何檔案類型:JSON 設定、圖片,甚至原生 DLL。只要調整 `resourceName` 以及對串流的使用方式即可。 + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Visual Overview + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt text:* 讀取嵌入式資源 – 圖示說明嵌入、使用 GetManifestResourceStream 取得,並套用 Aspose 授權。 + +## Recap + +我們已說明如何在 .NET 組件中 **讀取嵌入式資源**,以及使用 **GetManifestResourceStream** 的正確步驟,最後以乾淨的方式 **設定 Aspose 授權**,不必在磁碟上留下檔案。透過將授權嵌入,你可以消除部署時的麻煩,讓應用程式更具可移植性。 + +## What’s Next? + +- **自動化授權更新**:撰寫簡易的建置腳本,在續約時自動取代嵌入的 `.lic` 檔案。 +- **保護資源**:考慮在嵌入前先加密授權,執行時再解密,以提升安全性。 +- **探索其他 Aspose 產品**:相同做法同樣適用於 Aspose.Words、Aspose.PDF 等,每個產品都有自己的 `License` 類別。 + +歡迎自行實驗——或許你會為不同模組嵌入多組授權,或改為以設定檔驅動的資源名稱。可能性無限。 + +--- + +*Happy coding! 若遇到任何問題,歡迎在下方留言或前往 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/hongkong/net/skew-angle-calculation/_index.md b/ocr/hongkong/net/skew-angle-calculation/_index.md index ad80ec37..3a94e1dd 100644 --- a/ocr/hongkong/net/skew-angle-calculation/_index.md +++ b/ocr/hongkong/net/skew-angle-calculation/_index.md @@ -40,9 +40,12 @@ url: /zh-hant/net/skew-angle-calculation/ 釋放 Aspose.OCR for .NET 的強大功能,這是一個強大的影像辨識解決方案。了解如何輕鬆計算傾斜角度。 ### [OCR 影像辨識中根據 URI 計算傾斜角度](./calculate-skew-angle-from-uri/) 探索 Aspose.OCR for .NET,輕鬆計算 OCR 影像辨識中的傾斜角度。精準有效率地增強您的專案。 +### [如何在 C# 中校正影像 – 完整的 OCR 前處理指南](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +了解如何在 C# 中校正影像,提升 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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/hongkong/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..ccada87e --- /dev/null +++ b/ocr/hongkong/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-01-10 +description: 如何校正影像傾斜並提升 Aspose.OCR 的 OCR 效果。學習為 OCR 預處理影像、去除掃描噪點,以及從掃描中辨識文字。 +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: zh-hant +og_description: 如何校正圖像傾斜並提升 OCR 準確度。本指南說明如何為 OCR 預處理圖像、去除掃描噪點,以及使用 Aspose.OCR 從掃描中辨識文字。 +og_title: 如何在 C# 中校正影像傾斜 – 完整的 OCR 前處理指南 +tags: +- OCR +- C# +- Image Processing +title: 如何在 C# 中校正圖像傾斜 – 完整 OCR 前置處理指南 +url: /zh-hant/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中校正圖像 – 完整 OCR 前處理指南 + +有沒有想過在將圖像檔案送入 OCR 引擎之前 **如何校正圖像**?你並非唯一有此疑問。掃描文件常常傾斜、雜訊多或對比度低,這會影響任何文字辨識的嘗試。 + +在本教學中,我們將逐步說明一個完整、可執行的範例,該範例 **preprocesses image for OCR**、移除掃描雜訊,最後使用 Aspose.OCR 函式庫 **recognize text from scan**。完成後,你將清楚了解在 C# 中 **how to use OCR** 的方法,同時保持程式碼簡潔易讀。 + +> **專業提示:** 即使是小幅旋轉(5‑10°)也可能使 OCR 準確率下降 30 % 以上。校正圖像是絕不可省略的第一步。 + +## 所需條件 + +- **.NET 6+**(此程式碼亦可在 .NET Framework 上執行,但 .NET 6 為目前的長期支援版) +- **Aspose.OCR for .NET** – 可從 NuGet 取得(`Install-Package Aspose.OCR`) +- 一個已旋轉或含雜訊的 TIFF/PNG/JPEG 範例(本教學使用 `noisy_rotated.tif`) +- 任意你喜歡的 IDE – Visual Studio、Rider 或 VS Code 都可 + +就這樣。無需額外函式庫,也不需要外部服務。 + +## 步驟 1 – 載入來源圖像(為何重要) + +在我們能 **deskew image** 之前,需要將其讀入 Aspose 的 `ImageStream`。此物件抽象化檔案 I/O,並為 OCR 引擎提供一致的介面。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*為何先載入?* 因為所有後續的過濾器皆在記憶體中的圖像上運作。若檔案無法讀取,整個流程就會崩潰。 + +## 步驟 2 – 建立前處理管線(校正 + 去雜訊 + 對比度) + +穩健的 OCR 工作流程通常會串接多個過濾器。這裡我們 **preprocess image for OCR**,更重要的是自動 **how to deskew image**。 + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**為何選擇這三個?** +- **DeskewFilter** 自動解決「how to deskew image」的問題;不必自行估計角度。 +- **DenoiseFilter** 處理「remove noise from scan」的需求,否則會產生虛假的字元。 +- **ContrastBoostFilter** 協助 OCR 引擎區分深色文字與淺色背景,這是當你 *preprocess image for OCR* 時的常見問題。 + +## 步驟 3 – 套用管線(觀察轉換結果) + +現在我們實際執行這些過濾器。回傳的 `processedImage` 就是我們將送入 OCR 引擎的圖像。 + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +如果開啟 `cleaned_output.tif`,你會發現文字變得筆直、較少顆粒感且對比度提升。當你 *remove noise from scan* 且想確認校正已生效時,這個視覺檢查非常方便。 + +## 步驟 4 – 建立與設定 OCR 引擎(How to Use OCR) + +取得整潔圖像後,我們實例化 `OcrEngine`。這是使用 Aspose 進行 **how to use OCR** 的核心。 + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*為何設定 `AutoPageSegmentation`?* 因為許多掃描件包含表格或多欄位。啟用它可讓引擎智慧地分割頁面,提升最終 **recognize text from scan** 的結果。 + +## 步驟 5 – 執行辨識程序(最終辨識文字) + +現在是關鍵時刻:我們請求引擎讀取文字。 + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +如果一切順利,你會看到與原始文件相符的乾淨文字區塊。這正是正確 **deskewing image**、**removing noise** 與 **preprocessing image for OCR** 的回報。 + +## 步驟 6 – 完整可執行範例(直接複製貼上) + +以下是完整程式碼,已可直接編譯。只需更換檔案路徑即可執行。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**預期輸出**(為簡潔起見已截斷): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +如果輸出看起來亂碼,請再次確認來源圖像的旋轉角度未超過 30°,或提升 `DeskewFilter.MaxAngle`。 + +## 常見問題(邊緣案例與變形) + +| Question | Answer | +|----------|--------| +| **如果我的掃描件旋轉了 45°,該怎麼辦?** | `DeskewFilter` 會限制在 `MaxAngle`。可將其提升(例如 `MaxAngle = 60`)或在送入管線前使用圖形函式庫先行旋轉圖像。 | +| **我可以逐頁處理 PDF 嗎?** | 可以。將每頁 PDF 轉成圖像(例如使用 `Aspose.Pdf`),再對每個 bitmap 執行相同的管線。 | +| **我的文件是法文的——需要做什麼變更嗎?** | 設定 `ocrEngine.Language = Language.French;` 或載入自訂語言套件。其餘管線保持不變。 | +| **有沒有方法保留原始解析度?** | `PreprocessPipeline` 直接在原始 bitmap 上運作,會保留 DPI。除非需要為效能縮小,否則請避免呼叫 `ImageStream.Resize`。 | +| **對比度提升會對彩色掃描產生什麼影響?** | `ContrastBoostFilter` 會對每個通道作用;對灰階或彩色影像皆安全,但你也可以先使用 `new GrayscaleFilter()` 轉成灰階。 | + +## 圖像範例(視覺說明) + +![如何校正圖像範例](/images/deskew-example.png) + +*此圖片顯示一張旋轉 12°、含雜訊的掃描件,經過校正與清理前後的對比。* + +## 結論 + +我們已說明如何使用 Aspose.OCR **how to deskew image**,展示完整的 **preprocess image for OCR** 管線,說明如何 **remove noise from scan**,最後以幾行 C# 代碼 **recognize text from scan**。透過串接 `DeskewFilter`、`DenoiseFilter` 與 `ContrastBoostFilter`,即可取得整潔的 bitmap,讓 OCR 引擎能順利執行而不受雜訊阻礙。 + +接下來的步驟是什麼?可以嘗試調整不同的過濾器強度、加入 `BinarizationFilter` 產生純黑白輸出,或將清理過的圖像送入後續的 NLP 流程。相同的模式同樣適用於收據、護照與歷史文件等。 + +對於其他語言或框架的 **how to use 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/net/text-recognition/_index.md b/ocr/hongkong/net/text-recognition/_index.md index 948767d8..b5140fe3 100644 --- a/ocr/hongkong/net/text-recognition/_index.md +++ b/ocr/hongkong/net/text-recognition/_index.md @@ -45,19 +45,43 @@ url: /zh-hant/net/text-recognition/ ## 文字辨識教程 ### [在 OCR 影像辨識中取得已辨識字元的選擇](./get-choices-for-recognized-characters/) 使用 Aspose.OCR 增強您的 .NET 應用程序,以實現準確的字元辨識。請依照我們的逐步指南檢索影像辨識中已辨識字元的選擇。 + ### [OCR影像辨識中取得辨識結果](./get-recognition-result/) 探索 Aspose.OCR for .NET,這是一款功能強大的 OCR 解決方案,可實現圖像中的無縫文字辨識。 + ### [在 OCR 影像辨識中取得 JSON 格式的結果](./get-result-as-json/) 釋放 Aspose.OCR for .NET 的強大功能。學習輕鬆取得 JSON 格式的 OCR 結果。透過本逐步指南增強您的影像辨識能力。 + ### [OCR影像辨識中的OCR偵測區域模式](./ocr-detect-areas-mode/) 使用 Aspose.OCR 增強您的 .NET 應用程序,以實現高效的圖像文字識別。探索 OCR 偵測區域模式以獲得精確結果。 + ### [OCR影像辨識中辨識PDF](./recognize-pdf/) 使用 Aspose.OCR 釋放 .NET 中 OCR 的潛力。輕鬆從 PDF 中提取文字。立即下載以獲得無縫整合體驗。 + +### [在 C# 中從 PNG 建立可搜尋 PDF – 完整指南](./create-searchable-pdf-from-png-in-c-complete-guide/) +使用 Aspose.OCR 在 C# 中將 PNG 圖像轉換為可搜尋的 PDF,提供完整步驟與範例說明。 + ### [OCR影像辨識中的辨識表](./recognize-table/) 透過我們關於 OCR 影像辨識中表格辨識的綜合指南,釋放 Aspose.OCR for .NET 的潛力。 + +### [如何在 C# 中執行 OCR – 使用 Aspose OCR 的完整指南](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +了解如何在 C# 中使用 Aspose OCR 完整執行文字辨識,從安裝到實作一步步教學。 + +### [如何在 C# 中執行 OCR – 從 PNG 提取阿拉伯文字](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +學習如何使用 Aspose OCR 在 C# 中從 PNG 圖像提取阿拉伯文字,提供步驟說明與範例。 + +### [使用 Aspose OCR 從圖像提取文字 – 完整 C# 指南](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +完整教學示範如何在 C# 中使用 Aspose OCR 從圖像中提取文字,涵蓋安裝、設定與實作步驟。 + +### [在 C# 中從圖像提取文字 – 完整 Aspose OCR 指南](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +完整教學示範如何在 C# 中使用 Aspose OCR 從圖像提取文字,涵蓋安裝、設定與實作步驟。 + +### [在 C# 中從圖像提取文字 – 完整 OCR 與 JSON 指南](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +學習如何在 C# 中使用 Aspose OCR 從圖像提取文字並獲取 JSON 格式結果,完整步驟與範例說明。 + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/hongkong/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..a04e035c --- /dev/null +++ b/ocr/hongkong/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,223 @@ +--- +category: general +date: 2026-01-10 +description: 使用 C# 從 PNG 建立可搜尋 PDF。學習如何將影像轉換為 PDF、從 PNG 提取文字,以及在 C# 中執行 OCR,簡單一步完成。 +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: zh-hant +og_description: 使用 C# 從 PNG 建立可搜尋的 PDF。本指南示範如何將圖像轉換為 PDF、從 PNG 提取文字,以及使用 Aspose 進行 + C# 圖像 OCR。 +og_title: 使用 C# 從 PNG 建立可搜尋 PDF – 步驟說明 +tags: +- Aspose OCR +- C# +- PDF/A +title: 使用 C# 從 PNG 建立可搜尋的 PDF – 完整指南 +url: /zh-hant/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 C# 從 PNG 建立可搜尋 PDF – 完整指南 + +需要 **從 PNG 檔案建立可搜尋的 PDF** 嗎?你並不孤單——許多開發者在想要讓掃描圖像同時可檢視 **且** 可文字搜尋時,常會卡在這裡。在本教學中,我們將完整走過整個流程:**將影像轉成 PDF**、執行 OCR **從 png 中擷取文字**,最後儲存為符合 **PDF/A‑2b** 標準的可搜尋文件。 + +完成後,你將擁有一段可直接放入任何 .NET 專案的可重複使用程式碼片段,外加數個實用小技巧,讓你日後免除頭痛。全程不需外部服務,只使用 Aspose OCR 函式庫與少量 C# 程式碼。 + +> **先決條件** +> * .NET 6+(或 .NET Framework 4.7.2+)。 +> * Visual Studio 2022 或任何相容 C# 的 IDE。 +> * 有效的 Aspose OCR 授權(或免費試用版)。 + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Create searchable PDF from PNG using C#"} + +## 步驟 1 – 安裝並參考 Aspose OCR for C# + +首先,你需要取得 Aspose OCR NuGet 套件。開啟終端機(或套件管理員主控台)並執行: + +```bash +dotnet add package Aspose.OCR +``` + +如果你偏好圖形介面,右鍵點擊專案 → **Manage NuGet Packages…** → 搜尋 *Aspose.OCR* 並安裝最新的穩定版。 + +為什麼選這個函式庫?它支援 **convert png to pdf**、能處理多頁影像,且內建輸出 PDF/A‑2b——非常適合建立符合保存標準的 **searchable pdf**。 + +> **專業小技巧:** 在 `Program.cs` 內盡早註冊授權,以避免評估版浮水印。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## 步驟 2 – 載入 PNG 並執行 OCR(extract text from png) + +接下來,我們載入來源影像。`ImageStream.FromFile` 輔助方法會抽象化檔案系統細節,且支援所有可用的點陣圖格式。 + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +此時引擎已 **extracted text from png** 並將文字儲存在內部。你甚至可以透過 `ocrEngine.Text` 直接檢視原始文字,對除錯或記錄非常有幫助。 + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **如果影像是多頁的呢?** +> Aspose OCR 會將每一頁視為獨立圖層。只要呼叫 `ocrEngine.Image = ImageStream.FromFile("multipage.tif");`,引擎就會自動逐頁處理。 + +## 步驟 3 – 設定 PDF/A‑2b 選項(create searchable pdf) + +要把 OCR 結果轉成 **searchable pdf**,必須告訴 Aspose 如何封裝輸出。PDF/A‑2b 是長期保存的理想選擇,且保證文字層可搜尋。 + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +為什麼要嵌入原始影像?某些合規檢查要求視覺呈現必須與原始掃描相符。此旗標讓檔案同時完成 **convert image to pdf** 的操作,同時保留可搜尋文字。 + +## 步驟 4 – 儲存結果並驗證(convert png to pdf) + +最後,我們將輸出檔案寫入磁碟。相同的 `Save` 方法適用於任意路徑。 + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +在 Adobe Reader 或任何 PDF 閱讀器中開啟產生的 `output.pdf`,搜尋原始 PNG 中出現的關鍵字。若關鍵字被標示,恭喜你已成功 **create searchable pdf** 從 PNG! + +### 快速驗證腳本(可選) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## 為什麼要使用 PDF/A‑2b 來製作可搜尋的 PDF? + +* **保存安全性:** PDF/A‑2b 保證檔案在未來數十年仍能以相同方式呈現。 +* **法規遵循:** 許多產業(法律、醫療、金融)要求以 PDF/A 形式保存紀錄。 +* **可搜尋性:** 嵌入的 OCR 文字層讓文件可被桌面搜尋工具索引。 + +如果不需要額外的合規功能,只要移除 `PdfAStandard` 那一行,改用 `new PdfSaveOptions()`——輸出仍會是可搜尋的,只是沒有 PDF/A‑2b 認證。 + +## 常見問題與避免方式 + +| 症狀 | 可能原因 | 解決方法 | +|------|----------|----------| +| 沒有可搜尋的文字 | `ocrEngine.Recognize()` 未被呼叫或靜默失敗 | 確認影像路徑正確且已註冊授權。 | +| PDF 檔案過大(10 + MB) | 原始 PNG 高解析度且 `EmbedOriginalImage` 為 true | 在 OCR 前縮小影像或將 `EmbedOriginalImage = false`。 | +| 文字亂碼 | 語言未自動偵測 | 在 `Recognize()` 前設定 `ocrEngine.Language = "eng";`(或目標語言)。 | + +## 完整範例(直接複製貼上) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +執行程式、開啟 `output.pdf`,搜尋 `input.png` 中已知的字詞。若一切如預期,你就已掌握 **convert image to pdf** 工作流程,並學會如何以 **ocr image c#** 方式操作。 + +## 後續步驟與相關主題 + +* **批次處理:** 迴圈處理資料夾內的 PNG,並將結果合併成單一 PDF。 +* **其他輸出格式:** Aspose OCR 也能輸出 DOCX、TXT,或 searchable PDF/A‑1b。 +* **效能調校:** 使用 `ocrEngine.RecognitionMode = RecognitionMode.Fast` 於大量資料且對精確度要求不高的情況下。 +* **其他函式庫:** 若預算有限,可考慮 Tesseract .NET——但會失去內建的 PDF/A 支援。 + +--- + +### TL;DR + +我們示範了如何使用 Aspose OCR 在 C# 中 **create searchable pdf** 從 PNG。步驟如下: + +1. 安裝 Aspose OCR(`dotnet add package Aspose.OCR`)。 +2. 載入 PNG 並呼叫 `ocrEngine.Recognize()`(**extract text from png**)。 +3. 設定 `PdfSaveOptions` 為 PDF/A‑2b(**convert image to pdf** & **convert png to pdf**)。 +4. 儲存檔案並驗證可搜尋層。 + +試試看、調整參數,你很快就能擁有一條穩定的管線,將任何掃描影像轉換成符合保存需求的可搜尋 PDF。祝開發順利! + +{{< /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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/hongkong/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..df83f5ed --- /dev/null +++ b/ocr/hongkong/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-01-10 +description: 使用 Aspose OCR 於 C# 從圖像提取文字。了解如何使用批次處理轉換掃描文件的文字並儲存結果。 +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: zh-hant +og_description: 使用 Aspose OCR 在 C# 中從圖像提取文字。本教學示範如何透過批次處理將掃描文件的文字轉換。 +og_title: 從圖像中提取文字(C#)– 完整 Aspose OCR 指南 +tags: +- OCR +- C# +- Aspose +- Image Processing +title: 在 C# 中從圖像提取文字 – 完整的 Aspose OCR 指南 +url: /zh-hant/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 從影像中擷取文字 – 完整 Aspose OCR 教學 + +是否曾需要 **從影像中擷取文字**,卻不知從何下手?你並不孤單;許多開發者在處理掃描 PDF、多頁 TIFF 或以相片形式的收據時,都會碰到這個問題。好消息是,使用 Aspose OCR,你只需幾行 C# 程式碼,就能 **將掃描文件的文字轉換** 出來。 + +在本教學中,我們將示範一個真實情境:取得多頁 TIFF,對每一頁執行批次 OCR,並寫入一個包含所有頁面內容的文字檔。完成後,你將擁有一個可直接執行的主控台應用程式,了解每個步驟的意義,並知道如何針對密碼保護的影像或自訂語言套件等邊緣案例進行調整。 + +## 前置條件 + +- .NET 6.0 SDK 或更新版本(此程式碼同樣適用於 .NET Core 與 .NET Framework) +- Visual Studio 2022(或任何你慣用的編輯器) +- Aspose OCR 授權檔(或使用免費評估模式) +- 一個多頁影像檔(例如 `multipage.tif`),放在可參考的資料夾中 + +除了 `Aspose.OCR` 之外,無需其他 NuGet 套件,我們會在第一步安裝它。 + +## 第一步 – 安裝 Aspose OCR 並建立專案 + +首先,建立一個新的主控台專案,並加入 Aspose OCR 函式庫。 + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **專業提示:** 若你有授權檔 (`Aspose.OCR.lic`),請將它複製到專案根目錄。函式庫會在執行時自動載入。 + +為什麼要這麼做?安裝套件後,你即可使用 `BatchProcessor`、`OcrEngine` 等便利類別,免除低階影像處理的麻煩;同時也確保使用 Aspose 最新的 OCR 演算法。 + +## 第二步 – 使用 BatchProcessor 載入多頁影像 + +`BatchProcessor` 正是為此情境設計:在不必手動切割檔案的情況下,逐頁遍歷多頁影像。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` 會將所有頁面讀入記憶體,透過 `batchProcessor.Pages` 取得。每個頁面物件都有其編號 (`ocrPage.Number`),稍後會用來產生清晰的標題。 + +## 第三步 – 建立 StringBuilder 以累積結果 + +我們希望產生一個包含所有頁面 OCR 輸出的單一文字檔,並以標題分隔。`StringBuilder` 是在迴圈中串接字串的最佳效能選擇。 + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +為什麼使用 `StringBuilder`?在迴圈內使用 `+` 直接串接字串會在每次迭代時產生新字串,造成大量記憶體分配,對大型文件的效能影響尤為明顯。 + +## 第四步 – 逐頁執行 OCR 並加入結果 + +現在進入教學的核心:遍歷每一頁、辨識文字,並以頁碼標記儲存。 + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**為什麼每頁都要建立新的 `OcrEngine`?** 有些開發者會重複使用同一個引擎並更改其 `Image` 屬性,但這樣可能會保留先前的語言設定或結果,導致細微錯誤。每次重新實例化可確保環境乾淨。 + +### 處理常見邊緣案例 + +- **空白頁面:** 若頁面無可辨識文字,`ocrEngine.Text` 會是空字串。你可以插入佔位文字,例如 “(未偵測到文字)”。 +- **語言選擇:** 預設 Aspose OCR 使用英文。若要處理德文或法文,可在呼叫 `Recognize()` 前設定 `ocrEngine.Language = Language.German;`。 +- **效能小技巧:** 對於巨大的 TIFF,可啟用 `ocrEngine.UseParallelProcessing = true;` 以利用多核心。 + +## 第五步 – 將合併結果寫入文字檔 + +最後,將累積的字串寫入磁碟。 + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +產生的 `multipage_result.txt` 會類似以下內容: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +現在你已 **從影像中擷取文字**,並成功 **將掃描文件的文字轉換** 為可搜尋、可編輯的格式。 + +## 加分 – 視覺概覽(圖片替代文字) + +以下是一張簡易流程圖,說明整個處理過程。 +*替代文字:*「圖示說明如何使用 Aspose OCR 批次處理在 C# 中從影像擷取文字的流程」。 + +![OCR Flow Diagram](placeholder-image-url.png) + +*(若你在靜態網站上發佈本教學,請將佔位圖換成實際的 SVG 或 PNG。)* + +## 常見問題 + +**這能處理 PDF 檔嗎?** +可以,Aspose OCR 能將 PDF 頁面當作影像讀取。你只需要先將 PDF 轉成影像,或使用 `Aspose.PDF` 的 `PdfDocument`,將每頁的光柵化影像傳給 `OcrEngine`。 + +**如果我的 TIFF 有密碼保護怎麼辦?** +`BatchProcessor` 本身不支援加密。請先使用如 `Aspose.Imaging` 等函式庫解密,然後再交給 OCR 流程。 + +**可以輸出 JSON 而非純文字嗎?** +完全可以。只要把 `StringBuilder` 的邏輯換成 JSON 序列化(例如 `System.Text.Json`),將每頁文字存入 `pageNumber` 鍵即可。 + +## 完整範例程式 + +以下是可直接貼到 `Program.cs` 的完整程式碼,包含所有 using 指令、錯誤處理與註解。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +執行程式: + +```bash +dotnet run +``` + +你應該會在主控台看到成功訊息,且輸出檔案會包含合併後的 OCR 結果。 + +## 結論 + +我們剛剛示範了如何使用 Aspose OCR **從影像中擷取文字**,將任何多頁掃描檔轉換為純文字、可搜尋的內容。透過 `BatchProcessor` 與每頁獨立的 `OcrEngine` 設定,你可以可靠地 **將掃描文件的文字轉換**,同時保持程式碼簡潔易維護。 + +歡迎自行嘗試:更換語言、改為 JSON 輸出,或將此邏輯整合到即時處理上傳檔案的 Web API。核心模式不變——載入、辨識、累積、持久化。 + +對 OCR、Aspose 授權或大量文件批次處理有更多疑問嗎?歡迎在下方留言,或參考 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/hongkong/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/hongkong/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..8a20c83a --- /dev/null +++ b/ocr/hongkong/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-01-10 +description: 使用 Aspose OCR 在 C# 中從圖像提取文字。了解如何載入圖像進行 OCR、辨識印地語文字,並在幾個簡單步驟中執行 OCR 識別。 +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: zh-hant +og_description: 使用 Aspose OCR 於 C# 從圖像提取文字。請遵循此逐步指南載入圖像進行 OCR,辨識印地語文字,並執行 OCR 識別。 +og_title: 使用 Aspose OCR 從圖片提取文字 – 完整 C# 指南 +tags: +- Aspose OCR +- C# +- Image Processing +title: 使用 Aspose OCR 從圖像提取文字 – 完整 C# 指南 +url: /zh-hant/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 從圖像提取文字(使用 Aspose OCR)– 完整 C# 指南 + +是否曾需要**從圖像提取文字**,卻不確定該選哪個函式庫?你並不孤單——許多開發者在首次處理 .NET 中的 OCR 時都會碰到這個問題。好消息是,Aspose OCR 讓整個流程出奇地簡單,即使面對像印地語這樣的複雜文字也不例外。 + +在本教學中,我們將逐步說明如何**載入圖像以進行 OCR**、**辨識印地語文字**,以及在 C# 中**執行 OCR 辨識**。完成後,你將擁有一個可直接執行的主控台應用程式,會將提取出的文字直接印在螢幕上。 + +## 您將構建的內容 + +我們將建立一個小型主控台應用程式,具備以下功能: + +1. 指定 OCR 引擎的語言模型資料夾。 +2. 關閉自動下載功能——適用於受限環境。 +3. 選擇印地語作為目標語言。 +4. 載入包含印地語文字的 JPEG(或 PNG)影像。 +5. 執行辨識流程。 +6. 將結果字串寫入主控台。 + +不需要外部服務、雲端金鑰,純粹在本機執行的 OCR。 + +## 前置條件 + +- **.NET 6.0** 或更新版本(此程式碼亦可在 .NET Framework 4.7+ 上執行)。 +- **Aspose.OCR for .NET** NuGet 套件已安裝。 + ```bash + dotnet add package Aspose.OCR + ``` +- 一個名為 `OcrResources` 的資料夾,內含印地語語言模型(`hin.traineddata`)。 + 您可以從 Aspose OCR 下載頁面取得,並放入 `YOUR_DIRECTORY/OcrResources`。 +- 一個包含清晰印地語文字的影像檔(`input.jpg`)。 + 舉例來說,可想像是一張寫有「स्वागत है」的店舖招牌照片。 + +> **專業提示:**保持影像解析度在 300 dpi 以上;較低的解析度可能導致遺漏字元。 + +--- + +## 步驟 1:將 OCR 引擎指向您的資源 – *extract text from image* + +Aspose OCR 首先需要知道語言模型的所在位置。如果省略此設定,引擎會嘗試自動下載檔案——在受限網路環境中這通常不是你想要的行為。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*為什麼這很重要:* 透過設定 `ResourcesPath`,可確保引擎在本機載入正確的訓練資料,這不僅加快首次執行的速度,也避免了意外的網路流量。 + +--- + +## 步驟 2:停用自動資源下載 – *load image for OCR* + +在許多企業環境中,對外部網際網路的存取被封鎖。Aspose OCR 支援一個旗標,可阻止它在執行時即時下載缺少的檔案。 + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +若忘記加入此行且印地語模型不存在,引擎會拋出類似「Unable to download required resource」的例外。將旗標設為 `false` 能讓失敗變得明確且可自行處理。 + +--- + +## 步驟 3:選擇語言 – *recognize hindi text* + +Aspose OCR 支援數十種語言,但必須明確告訴它要使用哪一種。印地語以 `OcrLanguage.Hindi` 表示。 + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*如果需要同時支援多種語言?* 你可以設定 `Language = OcrLanguage.AutoDetect` 讓引擎自行判斷,但自動偵測較慢且在混合文字時偶爾會失誤。對於純印地語,明確指定是最安全的做法。 + +--- + +## 步驟 4:載入影像 – *load image for OCR* + +現在把要辨識的圖片交給引擎。Aspose 提供便利的 `ImageStream.FromFile` 輔助方法,免除直接使用 `System.Drawing` 的繁雜。 + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +如果檔案路徑錯誤,Aspose 會拋出 `FileNotFoundException`。在此行之前先執行 `File.Exists` 檢查,可省去除錯時間。 + +--- + +## 步驟 5:執行 OCR 引擎 – *run OCR recognition* + +所有設定完成後,我們終於啟動辨識程序。此呼叫為同步執行,會阻塞直到文字提取完畢。 + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +在背後,Aspose 會依序執行前處理(去斜、降噪)、分割、字元分類,最後進行語言特定的後處理。繁重的運算都封裝在這個單一方法內。 + +--- + +## 步驟 6:輸出提取的文字 – *extract text from image* + +結果儲存在引擎的 `Text` 屬性中。我們只需將它寫入主控台,當然也可以存入資料庫、透過 API 回傳,或交給其他 NLP 流程。 + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**預期輸出**(假設影像包含「स्वागत है」): + +``` +=== OCR RESULT === +स्वागत है +``` + +如果看到亂碼,請再次確認印地語模型已正確放置,且影像未過度壓縮。 + +--- + +## 完整範例程式 + +以下程式碼可直接貼到新建的主控台專案(`dotnet new console`)中。請將 `YOUR_DIRECTORY` 替換為你機器上的實際路徑。 + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **提示:**若需批次處理多張影像,建議只建立一次 `OcrEngine` 並重複使用,以減少初始化開銷。 + +--- + +## 常見問題處理 + +| 問題 | 為何會發生 | 快速解決方案 | +|------|------------|--------------| +| **空白輸出** | 語言模型錯誤或影像品質低下。 | 驗證 `ResourcesPath`、提升影像 DPI,或嘗試 `ocrEngine.Image = ImageStream.FromFile(..., true)` 以啟用自動增強。 | +| **例外:找不到資源** | 缺少印地語 `.traineddata`。 | 從 Aspose 下載印地語模型,放入 `OcrResources`,並確保檔名為 `hin.traineddata`。 | +| **亂碼** | 將結果輸出至主控台時編碼不匹配。 | 設定主控台輸出編碼:`Console.OutputEncoding = System.Text.Encoding.UTF8;`。 | +| **效能延遲** | 未縮放即處理大型影像。 | 在送入 OCR 前先將影像縮放至最大寬/高 2000 px。 | + +--- + +## 後續步驟與相關主題 + +- **批次處理:**將程式碼包在 `foreach` 迴圈中,以處理整個資料夾的影像。 +- **其他語言:**將 `OcrLanguage.Hindi` 替換為 `OcrLanguage.English`、`OcrLanguage.Arabic` 等。 +- **輸出格式:**除了 `Console.WriteLine`,也可寫入文字檔(`File.WriteAllText("result.txt", ocrEngine.Text);`)。 +- **與 ASP.NET Core 整合:**建立 API 端點接受影像上傳,回傳 JSON 格式的提取文字。 + +以上所有延伸皆遵循相同模式——設定引擎、載入影像、辨識,最後使用結果。 + +--- + +## 結論 + +我們剛剛示範了如何使用 Aspose OCR 在 C# 中**從圖像提取文字**。本指南涵蓋了**載入圖像以進行 OCR**、**辨識印地語文字**以及**執行 OCR 辨識**的每一步,並提供一個可直接執行的主控台範例。 + +請自行嘗試不同的圖片、語言,或將程式碼改寫成 Web 服務或背景工作。核心概念不變:設定資源、選擇語言、提供影像,最後讀取 `Text` 屬性。 + +若遇到任何問題,請參考上方的故障排除表,或留下評論。祝開發順利,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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/hongkong/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..78743e7c --- /dev/null +++ b/ocr/hongkong/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-01-10 +description: 如何在 C# 中使用 Aspose OCR 進行圖像 OCR。學習從圖像提取文字、執行圖像 OCR,以及使用 GPU 加速載入圖像以進行 + OCR。 +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: zh-hant +og_description: 如何使用 Aspose OCR 在圖像上執行光學字符辨識。本教學示範如何從圖像提取文字、執行圖像的 OCR,以及如何有效載入圖像以進行 + OCR。 +og_title: 如何在 C# 中執行 OCR – 完整逐步指南 +tags: +- OCR +- C# +- Aspose +title: 如何在 C# 中執行 OCR – Aspose OCR 完整指南 +url: /zh-hant/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中執行 OCR – 使用 Aspose OCR 的完整指南 + +Ever wondered **如何執行 OCR** on a photo and pull the text out without pulling your hair out? You're not the only one. Whether you're digitizing invoices, scanning receipts, or just trying to make a searchable PDF, being able to extract text from image is a daily need for many developers. + +In this tutorial we'll walk through a practical, end‑to‑end example that shows **如何在影像上執行 OCR** files using the Aspose OCR library, complete with GPU acceleration for speed. By the end you’ll know exactly how to load image for OCR, tweak memory usage, and get clean plain‑text results—all in a few minutes of code. + +## 您將學習到 + +- 如何在 C# 中初始化 Aspose OCR 引擎 +- 如何 **載入影像以供 OCR** from disk or a stream +- 如何啟用 GPU 加速並限制 GPU 記憶體 +- 如何 **從影像中擷取文字** and verify the output +- 常見陷阱(GPU 模組缺失、記憶體限制)與快速解決方案 + +No prior experience with Aspose OCR is required; just a working .NET environment and a sample image. + +--- + +## 使用 Aspose OCR 在影像上執行 OCR + +The first thing you need is a clear, runnable snippet that does the whole job. Below is the full program you can copy, paste, and run right away. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**預期輸出** (assuming the sample image contains the phrase “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **專業提示:** If you don’t see any text, double‑check that the GPU module is installed and that the image path is correct. The `ImageStream.FromFile` method throws a clear exception if the file can’t be found. + +--- + +## 使用 GPU 加速從影像中擷取文字 + +Why bother with the GPU at all? CPU‑only OCR works, but it can be painfully slow on large or high‑resolution pictures. Enabling GPU acceleration (step 2 above) hands the heavy lifting over to your graphics card, which can process thousands of pixels per second. + +### 何時使用 GPU + +- **批次處理** – scanning dozens of invoices in one go. +- **高解析度掃描** – anything above 300 dpi. +- **即時應用程式** – like a mobile scanner that needs instant feedback. + +If your environment lacks a compatible GPU, simply set `EnableGpuAcceleration = false;` and the engine will fall back to CPU mode automatically. + +--- + +## 在影像上執行 OCR – 正確載入影像 + +Loading the image is the **載入影像以供 OCR** step that often trips people up. Aspose OCR expects an `ImageStream`, which can be created from a file, a memory stream, or even a URL. Here are a few variations: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**邊緣情況:** Some images contain an alpha channel (transparency) that confuses the OCR engine. Stripping alpha is easy: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Now you’ve covered the most common ways to **載入影像以供 OCR**, ensuring the engine receives a clean, supported format every time. + +--- + +## 高效載入影像以供 OCR 的技巧 + +1. **調整大型影像尺寸** – OCR doesn’t need a 4 K photo; scaling down to ~1500 px width speeds things up without hurting accuracy. +2. **轉換為灰階** – reduces noise and can improve recognition on low‑contrast scans. +3. **使用去斜前處理** – if your image is tilted, Aspose OCR’s built‑in deskew can be enabled via `ocrEngine.Config.EnableDeskew = true;`. + +These tweaks are especially handy when you’re **從影像中擷取文字** in bulk. + +--- + +## 常見陷阱與解決方法 + +| 症狀 | 可能原因 | 解決方法 | +|------|----------|----------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU 模組未安裝 | 安裝 Aspose OCR GPU 套件或停用 GPU(`EnableGpuAcceleration = false`)。 | +| 空白輸出 | 影像路徑錯誤或不支援的格式 | 驗證 `ImageStream.FromFile` 路徑;嘗試從位元組載入以確保檔案正確讀取。 | +| 記憶體不足錯誤 | 大型批次的 GPU 記憶體限制過低 | 增加 `GpuMemoryLimit`(例如 2048)或將影像分成較小批次處理。 | +| 文字亂碼 | 影像噪點過多或對比度低 | 前處理:二值化、去雜訊,或在 OCR 前提升 DPI。 | + +--- + +## 完整範例 – 整合所有步驟 + +Below is a compact console app that incorporates the best practices we discussed: GPU acceleration, memory limiting, image pre‑processing, and error handling. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Running this program prints the clean text extracted from your image, demonstrating a robust way to **從影像中擷取文字** even when the source isn’t perfect. + +--- + +## 結論 + +We’ve covered **如何執行 OCR** on an image using Aspose OCR, from initializing the engine to loading the image, enabling GPU acceleration, and handling edge cases. You now have a solid, citation‑worthy reference that you can copy‑paste into any .NET project and start **從影像中擷取文字** immediately. + +Next steps? Try feeding PDF pages, experiment with different languages (set `ocrEngine.Config.Language = "spa"` for Spanish), or integrate this flow into a web API that processes uploads on‑the‑fly. The sky’s the limit, and with the tools we discussed, you’re well‑equipped to tackle any OCR challenge. + +Happy coding, and may your text always be clean and your OCR fast! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/hongkong/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..73e87a68 --- /dev/null +++ b/ocr/hongkong/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-01-10 +description: 如何快速執行 OCR 並從圖像中提取阿拉伯文字。了解將圖像轉換為文字、從 PNG 讀取文字,以及如何使用 Aspose OCR 提取文字。 +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: zh-hant +og_description: 如何在 C# 中執行 OCR 並從 PNG 圖像中擷取阿拉伯文字。本指南一步一步示範如何將圖像轉換為文字以及從 PNG 讀取文字。 +og_title: 如何在 C# 中執行 OCR – 從 PNG 提取阿拉伯文字 +tags: +- OCR +- C# +- Aspose +title: 如何在 C# 中執行 OCR – 從 PNG 提取阿拉伯文字 +url: /zh-hant/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 C# 中執行 OCR – 從 PNG 提取阿拉伯文字 + +有沒有想過 **如何執行 OCR** 在包含阿拉伯字元的圖片上?你並不孤單。許多開發者在需要 **從 PNG 提取阿拉伯文字** 時卡住了,卻不知道哪個函式庫能順利處理從右至左的腳本。 + +在本教學中,我們將逐步說明使用 Aspose.OCR 在乾淨的 C# 主控台應用程式中 **將影像轉換為文字**、**從 PNG 讀取文字**,以及最終 **如何提取文字** 所需的全部知識。完成後,你將擁有一個可直接執行的程式,會在終端機上印出阿拉伯字串。 + +## 你將學到 + +- 安裝並參考 Aspose.OCR NuGet 套件。 +- 為阿拉伯語言支援設定 OCR 引擎。 +- 載入 PNG 影像並執行辨識程序。 +- 取得並顯示提取的文字。 +- 微調設定以提升準確度並處理常見陷阱。 + +不需要任何 OCR 的先前經驗,只要具備 C# 基礎知識以及 .NET 開發環境(Visual Studio、Rider,或 `dotnet` CLI 都可以)。 + +--- + +## 如何執行 OCR – 設定 Aspose OCR + +### 步驟 1:加入 Aspose.OCR NuGet 套件 + +我們首先需要的就是 OCR 函式庫本身。Aspose.OCR 為商業產品,但提供免費試用版,足以用於學習目的。 + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +或者,在 Visual Studio 中開啟 **NuGet 套件管理員**,搜尋 **Aspose.OCR**,然後點擊 **Install**。 + +> **專業提示:** 若你打算在 CI 流程中使用此函式庫,請加入 `-v` 參數以鎖定版本,例如 `dotnet add package Aspose.OCR -v 23.10`。 + +### 步驟 2:建立新主控台專案(如果尚未有的話) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +現在你已擁有一個全新的 `Program.cs` 檔案,可供我們撰寫程式碼。 + +--- + +## 提取阿拉伯文字 – 撰寫 OCR 程式碼 + +以下是完整且可直接執行的程式。請將其儲存為 `Program.cs`(或取代自動產生的檔案)。 + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### 為何每行程式碼都重要 + +- **`OcrEngine`**:協調影像載入、語言選擇與辨識的核心類別。 +- **`Language = OcrLanguage.Arabic`**:阿拉伯語使用從右至左的腳本與獨特字形;設定語言可讓引擎套用正確的字元模型。 +- **`ImageStream.FromFile`**:支援 PNG、JPEG、BMP 等多種格式。若需從 `MemoryStream`(例如上傳的檔案)讀取,請相應替換此呼叫。 +- **`Recognize()`**:執行繁重的工作——像素分析、分割與字元分類。 +- **`ocrEngine.Text`**:最終的 Unicode 字串,可供後續處理、儲存或顯示。 + +### 預期輸出 + +如果 `arabic_sample.png` 包含短語 “مرحبا بالعالم”(Hello World),主控台將會印出: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +如果輸出呈現亂碼,請再次確認影像是否清晰、語言是否設定為 Arabic,以及 OCR 引擎版本是否符合文件說明。 + +--- + +## 影像轉文字 – 微調準確度 + +雖然預設設定適用於大多數乾淨的掃描檔,但實務上的影像常常需要額外的調整。 + +| Setting | 功能說明 | 使用時機 | +|---------|----------|----------| +| `ocrEngine.Config.Preprocess = true` | 啟用自動二值化與除噪。 | 有陰影的掃描文件。 | +| `ocrEngine.Config.Deskew = true` | 旋轉影像以校正輕微傾斜。 | 角度拍攝的照片。 | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | 將整張影像視為單一文字區塊。 | 簡單說明或單行標籤。 | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | 僅限制辨識阿拉伯字元。 | 減少混合語言頁面的誤判。 | + +你可以在建立引擎後立即加入以下程式碼: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## 從 PNG 讀取文字 – 處理不同的影像來源 + +有時 PNG 可能儲存在資料庫中或來自網路請求。以下是一個快速範例,從 `byte[]` 讀取: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +其餘流程保持相同,這表示 **如何提取文字** 在任何來源下皆一致。 + +--- + +## 如何提取文字 – 進階選項與邊緣案例 + +### 1. 多頁 PDF 或 TIFF + +如果需要對多頁文件執行 OCR,請對每頁迴圈處理: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **注意:** 此程式碼片段需要 `Aspose.PDF` 套件。 + +### 2. 自動偵測語言 + +Aspose.OCR 亦提供自動偵測功能,但速度較慢。若不確定影像是阿拉伯語或其他腳本,請啟用此功能: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +引擎會嘗試每個語言模型,並挑選最相符的結果。 + +### 3. 效能建議 + +- **重複使用 `OcrEngine`** 物件以處理多張影像;每次重新建立實例會增加額外負擔。 +- **平行執行** 時,必須為每個執行緒提供獨立的引擎實例——共享同一實例會導致競爭條件。 + +--- + +## 結論 + +我們已從頭到尾說明了在 C# 中 **如何執行 OCR**,示範了 **提取阿拉伯文字**、**影像轉文字**、**從 PNG 讀取文字**,以及在各種情境下 **如何提取文字**。範例程式碼完整、獨立,隨時可貼入任何 .NET 主控台專案中使用。 + +接下來的步驟?嘗試將 `OcrLanguage.Arabic` 改為 Korean 或 Serbian Cyrillic,體驗函式庫的多語言能力。可實驗前處理旗標以提升噪點掃描的準確度,或將 OCR 程式整合至 Web API,讓使用者上傳影像即時取得文字結果。 + +祝程式開發順利,願你的 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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/hongkong/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..16ffa56f --- /dev/null +++ b/ocr/hongkong/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,292 @@ +--- +category: general +date: 2026-01-10 +description: 學習如何使用 Aspose OCR 在 C# 中辨識圖像文字、擷取文字座標,並將收據轉換為 JSON。逐步教學。 +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: zh-hant +og_description: 使用 Aspose OCR 在 C# 中辨識圖像文字。本指南示範如何擷取文字、取得座標,並將收據轉換為 JSON。 +og_title: 從圖像辨識文字 – 完整 C# OCR 教學 +tags: +- OCR +- C# +- Aspose +title: 在 C# 中從圖像識別文字 – OCR 與 JSON 完全指南 +url: /zh-hant/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 從圖像辨識文字 – 完整 C# OCR 教學 + +是否曾需要從圖像辨識文字卻不確定該選擇哪個函式庫?你並不孤單。在許多實務應用——支出追蹤、收據掃描或文件歸檔——可靠地提取文字是第一道關卡。 + +在本教學中,我們將一步步說明 **如何提取文字**、取得其邊界框,最後使用 Aspose.OCR for .NET **將收據轉換為 JSON**。完成後,你將擁有一個獨立的 C# 專案,能將收據照片轉換為包含信心分數與座標的整齊 JSON 檔案。 + +## 需要的環境 + +- **.NET 6.0 SDK**(或任何更新的版本)。舊版框架亦可使用,但 .NET 6 是現代函式庫的最佳選擇。 +- **Visual Studio 2022** 或搭配 C# 擴充功能的 VS Code。 +- **Aspose.OCR for .NET** NuGet 套件(`Aspose.OCR` 與 `Aspose.OCR.Output`)。可透過套件管理員主控台安裝: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- 範例收據影像(例如 `receipt.jpg`),放置於稍後會參考的資料夾中。 + +就這樣——不需要額外的 SDK、也不需要原生二進位檔,僅使用純受管理的程式碼。 + +## 步驟 1:建立新 Console 專案 + +首先,建立一個 console 應用程式。這是測試 OCR 而不需 UI 負擔的最快方式。 + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **小技巧:** 保持專案資料夾整潔;建立名為 `Resources` 的子資料夾,並將 `receipt.jpg` 放入其中。這樣路徑處理就不會麻煩。 + +## 步驟 2:載入收據影像 + +現在我們真正開始 **從圖像辨識文字**。第一步是將 OCR 引擎指向該檔案。 + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +為什麼要把載入包在簡單的存在性檢查裡?因為在正式環境中,你常會處理可能遺失或損壞的使用者上傳檔案。提前捕捉問題可避免之後出現難以理解的例外。 + +## 步驟 3:執行 OCR – **從圖像辨識文字** + +將影像載入記憶體後,我們請 Aspose **從圖像辨識文字**。此操作為同步,並回傳豐富的結果集合。 + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +在幕後,Aspose 會執行一個已在數百萬字元上訓練的神經網路。引擎會填充 `ocrEngine.Text`、`ocrEngine.RecognitionResult`,以及包含座標的 `OcrRegion` 物件集合。這正是下一步所需的資訊。 + +## 步驟 4:**如何提取文字** – 取得原始字串 + +如果你只在乎純文字(例如快速搜尋),可以直接從引擎取得: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +你會看到 OCR 偵測到段落邊界的換行符號。在許多收據掃描情境下,原始字串已足以使用簡單的正規表達式抽取總金額、日期或商家名稱。 + +## 步驟 5:**提取文字座標** – 每個字詞的邊界框 + +通常你需要知道影像上文字的 *位置*——例如在 UI 中標示總金額。Aspose 透過 `OcrRegion` 物件提供此資訊。 + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +請注意,我們在每個已辨識的區段上迴圈 **提取文字座標**。座標是相對於原始影像的,因此可在圖形畫布或 HTML `` 元素上疊加顯示。 + +## 步驟 6:**將收據轉換為 JSON** – 儲存詳細結果 + +現在進入將所有結果結合的步驟:我們需要一個機器可讀的結構,包含文字、信心分數與邊界框。Aspose 提供的 `JsonSaveOptions` 讓此工作變得輕鬆。 + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +產生的檔案大致如下(為簡潔起見已裁剪): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +現在你已擁有一個 **將收據轉換為 JSON** 的產物,可供下游服務使用——例如費用報告 API、分析管線,或是簡易的 UI 來在每個字詞周圍繪製矩形。 + +## 完整範例程式 + +將所有步驟組合起來,以下是完整的 `Program.cs`,可直接複製貼上至你的專案: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +執行程式(`dotnet run`)並觀察主控台輸出。開啟 `Resources/receipt.json` 以驗證結構。 + +## 常見問題與邊緣情況 + +- **如果影像模糊怎麼辦?** + Aspose OCR 在 300 dpi 或以上的解析度下表現最佳。若信心分數偏低,可在送入引擎前先套用銳化濾鏡。 + +- **我可以辨識多種語言嗎?** + 可以。於呼叫 `Recognize()` 前設定 `ocrEngine.Language = Language.English | Language.Spanish;`。 + +- **如何只輸出數字(例如總金額)?** + 取得純文字後,可對 `ocrEngine.Text` 使用正規表達式如 `\d+\.\d{2}`。因為已擁有座標,能將匹配的字串映射回其區域以進行視覺標示。 + +- **JSON 格式可以自訂嗎?** + `JsonSaveOptions` 類別提供多個旗標可設定。若需完全自訂的結構,可遍歷 `ocrEngine.RecognitionResult.Regions`,並使用 `System.Text.Json` 自行序列化物件。 + +## 結論 + +我們剛剛示範了如何在 C# 中使用 Aspose.OCR **從圖像辨識文字**、**提取文字**、取得 **提取文字座標**,最後 **將收據轉換為 JSON**。整個流程皆在一個易於執行的 console 應用程式中完成,非常適合作為原型或大型系統的建構模組。 + +接下來的步驟?可將 JSON 輸入前端以繪製邊界框,或將輸出接入費用報告服務。你也可以嘗試不同的影像格式(PNG、TIFF)或批次處理整個收據資料夾。 + +對 OCR、Aspose 或 JSON 處理還有其他問題嗎?在下方留下評論,我們祝你編程愉快! + +![從圖像辨識文字的收據範例圖](receipt.jpg "收據圖示範例") + +{{< /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/net/ocr-configuration/_index.md b/ocr/hungarian/net/ocr-configuration/_index.md index 1c23339c..113339db 100644 --- a/ocr/hungarian/net/ocr-configuration/_index.md +++ b/ocr/hungarian/net/ocr-configuration/_index.md @@ -38,10 +38,12 @@ Az Aspose.OCR segítségével felszabadíthatja az OCR képfelismerés erejét a ### [OCR-művelet nyelvválasztással az OCR képfelismerésben](./ocr-operation-with-language-selection/) Fedezze fel a hatékony OCR-képességeket az Aspose.OCR for .NET segítségével. Zökkenőmentesen vonja ki a szöveget a képekből. ### [OCROművelet listával az OCR képfelismerésben](./ocr-operation-with-list/) -Engedje ki az Aspose.OCR-ben rejlő lehetőségeket a .NET számára. Könnyedén végrehajthatja az OCR képfelismerést listák segítségével. Növelje alkalmazásaiban a termelékenységet és az adatkinyerést. +Engedje ki az Aspose.OCR-ben rejlő lehetőségeket a .NET számára. Könnyen végrehajthatja az OCR képfelismerést listák segítségével. Növelje alkalmazásaiban a termelékenységet és az adatkinyerést. +### [Beágyazott erőforrás olvasása .NET-ben – Teljes útmutató az Aspose licenc beállításához](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Ismerje meg, hogyan olvassa be a beágyazott erőforrásokat .NET-ben, és állítsa be az Aspose licencet a projektben. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/hungarian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..750e80f5 --- /dev/null +++ b/ocr/hungarian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-01-10 +description: Olvasd be a beágyazott erőforrást és állítsd be az Aspose licencet C#-ban. + Tanuld meg, hogyan használjuk a GetManifestResourceStream-et, hogyan ágyazz be egy + licencfájlt, és hogyan szerezd meg a futó assembly-t .NET-ben egyetlen útmutatóban. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: hu +og_description: Olvassa be a beágyazott erőforrást .NET-ben, és gyorsan állítsa be + az Aspose licencet. Lépésről lépésre útmutató a GetManifestResourceStream használatáról, + a licenc beágyazásáról és a végrehajtó assembly használatáról. +og_title: Beágyazott erőforrás olvasása – Aspose licenc beállítása .NET‑ben +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Beágyazott erőforrás olvasása .NET-ben – Teljes útmutató az Aspose licenc beállításához +url: /hu/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Beágyazott erőforrás olvasása – Teljes útmutató az Aspose licenc beállításához + +Valaha szükséged volt **beágyazott erőforrás** futásidőben történő **olvasására**, és azon tűnődtél, hogyan licencelheted az Aspose OCR könyvtárat anélkül, hogy keménykódolt útvonalakat használnál? Nem vagy egyedül. Sok vállalati alkalmazásban a licencfájl az assembly-ben él, így nem kell extra fájlokat szállítanod vagy aggódnod a hiányzó jogosultságok miatt. Ez az útmutató pontosan megmutatja, hogyan olvass be egy beágyazott erőforrást, és állítsd be az Aspose licencet a .NET `GetManifestResourceStream` metódus segítségével. + +Végigvezetünk minden szükséges lépésen: a `.lic` fájl beágyazása, kinyerése a `GetExecutingAssembly` segítségével, és végül alkalmazása az Aspose OCR `License` osztályra. A végére egy önálló megoldást kapsz, amely bármely .NET projekten működik – külső fájlok nélkül. + +## Amit megtanulsz + +- **How to embed a license file** into a .NET project so it becomes part of the compiled DLL. +- The correct way to **use GetManifestResourceStream** to read that embedded resource. +- How to **set Aspose license** programmatically without touching the file system. +- Tips for handling common pitfalls like misspelled resource names or missing build actions. +- A complete, runnable code sample you can drop into your own solution. + +### Előfeltételek + +- .NET 6.0 vagy újabb (a kód .NET Framework 4.x-en is működik, csak a projektfájlt ennek megfelelően módosítsd). +- Aspose.OCR NuGet csomag telepítve (`dotnet add package Aspose.OCR`). +- Alapvető ismeretek C#-ban és Visual Studio-ban (vagy a kedvenc IDE-dben). + +Ha már megvannak ezek a komponensek, nagyszerű – merüljünk el. + +## 1. lépés: Az Aspose licencfájl beágyazása az assembly-be + +Az első dolog, amire szükséged van, a tényleges licencfájl (`Aspose.OCR.lic`). Ahelyett, hogy a végrehajtható mellé másolnád, **erőforrásként** ágyazod be. + +1. Add a `.lic` fájlt a projektedhez (például hozz létre egy `Resources` mappát, és helyezd oda a fájlt). +2. A fájl tulajdonságaiban állítsd a **Build Action** értékét `Embedded Resource`-ra. + *Pro tipp:* tartsd egyszerűnek a mappaszerkezetet; a teljesen kvalifikált erőforrás neve `YourNamespace.Resources.Aspose.OCR.lic` lesz. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Miért ágyazz be? Mert az assembly most magában hordozza a licencet, ezzel kiküszöbölve a hiányzó fájl kockázatát egy éles szerveren. + +## 2. lépés: A beágyazott erőforrás lekérése a GetExecutingAssembly segítségével + +Mivel a licenc most a DLL-ben él, szükséged van egy módra, hogy **beágyazott erőforrást** futásidőben **olvass**. A .NET `Assembly` osztály pontosan ezt biztosítja. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +A `GetExecutingAssembly` metódus visszaadja a jelenleg futó assembly-t – tökéletes a kódod mellé helyezkedő erőforrások megtalálásához. + +## 3. lépés: A licenc stream megnyitása a GetManifestResourceStream segítségével + +Az assembly hivatkozással a kezedben, meghívhatod a `GetManifestResourceStream`-et. Ez a metódus egy `Stream`-et ad vissza, amelyet közvetlenül átadhatsz az Aspose-nak. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Vedd észre, hogy **null‑conditional** `using` állítást (`using Stream?`) használunk, hogy a stream automatikusan felszabaduljon. Ha a név hibás, egy egyértelmű kivételt dobunk – ez megakadályozza a későbbi csendes hibákat. + +## 4. lépés: A licenc alkalmazása az Aspose OCR-re + +Az Aspose `License` osztály egy `Stream`-et vár. Már van egy, így az utolsó lépés egyszerű. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Ennyi! Az Aspose OCR motor most teljesen licencelt, és készen áll a képek feldolgozására a próba vízjel nélkül. + +## Teljes működő példa + +Az alábbiakban egy teljes, másolás‑beillesztésre kész program látható, amely bemutatja az egész folyamatot. Tartalmazza a szükséges `using` direktívákat, hibakezelést, és egy egyszerű OCR hívást, hogy bizonyítsa a licenc aktív állapotát. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Várt kimenet + +Ha a programot egy érvényes beágyazott licenccel rendelkező gépen futtatod, a következőt kell látnod: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Ha a licenc stream nem található, a konzol jelzi a hiányzó erőforrás nevét, és arra ösztönöz, hogy ellenőrizd a **Build Action**-t és a névtér helyességét. + +## Gyakori buktatók és hogyan kerüld el őket + +| Issue | Why It Happens | Fix | +|-------|----------------|-----| +| **Erőforrás név eltérés** | A .NET a resource nevet az alapértelmezett névtér + mappapath alapján építi fel. | Használd a `Assembly.GetManifestResourceNames()`-t a rendelkezésre álló nevek listázásához, és ellenőrizd a pontos karakterláncot. | +| **Licencfájl nincs beállítva beágyazott erőforrásként** | Az alapértelmezett Build Action a `Content`. | Állítsd `Embedded Resource`-ra a fájl tulajdonságaiban. | +| **Futtatás másik assembly-ből** | Ha a kódot egy osztálykönyvtárból hívod, a `GetExecutingAssembly()` a könyvtárat adhatja vissza a fő exe helyett. | Használd a `Assembly.GetEntryAssembly()`-t, vagy add át explicit módon a megfelelő assembly-t. | +| **Stream túl korán felszabadítva** | Véletlenül egy `using` blokkot használsz, amely túl korán lezárja a stream-et. | Tartsd a `using`-t a `SetLicense` hívás körül, ahogy fent látható. | +| **Aspose.OCR verzióeltérés** | Az újabb verziók más licencformátumot igényelhetnek. | Mindig töltsd le a legújabb licencet az Aspose fiókodból, és ágyazd be újra. | + +## Ugyanazon technika használata más beágyazott fájlokhoz + +A minta – **beágyazott erőforrás olvasása**, majd **GetManifestResourceStream használata** – bármilyen fájltípusra működik: JSON konfigurációk, képek, akár natív DLL-ek is. Csak állítsd be a `resourceName`-t és a stream felhasználásának módját. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Vizuális áttekintés + +![Diagram, amely bemutatja a beágyazott erőforrás olvasását és az Aspose licenc beállítását](read-embedded-resource-diagram.png) + +*Alt text:* beágyazott erőforrás – diagram, amely bemutatja a beágyazást, a GetManifestResourceStream használatával történő lekérést, és az Aspose licenc alkalmazását. + +## Összefoglalás + +Áttekintettük, hogyan **olvass beágyazott erőforrást** egy .NET assembly-ben, a pontos lépéseket a **GetManifestResourceStream** **használatához**, és a tiszta módot az **Aspose licenc beállításához** anélkül, hogy a fájlokat a lemezen felfednénk. A licenc beágyazásával megszünteted a telepítési nehézségeket, és hordozhatóvá teszed az alkalmazást. + +## Mi a következő lépés? + +- **Licenc frissítések automatizálása:** Írj egy kis build‑idő scriptet, amely a megújult Aspose előfizetéskor lecseréli a beágyazott `.lic` fájlt. +- **Az erőforrás védelme:** Fontold meg a licenc titkosítását a beágyazás előtt, és futásidőben történő visszafejtését a további védelem érdekében. +- **Fedezd fel az egyéb Aspose termékeket:** Ugyanez a megközelítés működik az Aspose.Words, Aspose.PDF stb. esetén, mindegyiknek saját `License` osztálya van. + +Nyugodtan kísérletezz – talán több licencet ágyazol be különböző modulokhoz, vagy konfiguráció‑alapú erőforrás nevet használsz. A lehetőségek végtelenek. + +*Boldog kódolást! Ha bármilyen problémába ütközöl, hagyj megjegyzést alább, vagy nézd meg az Aspose fórumokat további példákért.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/hungarian/net/skew-angle-calculation/_index.md index f323290e..8a28fba0 100644 --- a/ocr/hungarian/net/skew-angle-calculation/_index.md +++ b/ocr/hungarian/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ Fedezze fel az Aspose.OCR for .NET-et, amely egy hatékony OCR-megoldás a ponto Engedje szabadjára az Aspose.OCR for .NET erejét, amely egy robusztus megoldás a képfelismeréshez. Tanulja meg a ferde szögek egyszerű kiszámítását. ### [Számítsa ki a ferde szöget az URI-ből az OCR képfelismerésben](./calculate-skew-angle-from-uri/) Fedezze fel az Aspose.OCR for .NET alkalmazást, amellyel könnyedén kiszámíthatja a ferde szögeket az OCR képfelismerésben. Fokozza projektjeit pontossággal és hatékonysággal. +### [Képet kiegyenesíteni C#-ban – Teljes OCR előfeldolgozási útmutató](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Ismerje meg, hogyan lehet hatékonyan kiegyenesíteni a képeket C#-ban az OCR pontosságának javítása érdekében. {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/hungarian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..b7a5d969 --- /dev/null +++ b/ocr/hungarian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-01-10 +description: Hogyan korrigáljuk a kép dőlését és javítsuk az OCR eredményeket az Aspose.OCR-rel. + Tanulja meg, hogyan előfeldolgozza a képet OCR-hez, hogyan távolítsa el a zajt a + szkennelésből, és hogyan ismerje fel a szkennelésből származó szöveget. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: hu +og_description: Hogyan korrigáljuk a kép dőlését és növeljük az OCR pontosságát. Ez + az útmutató bemutatja, hogyan előfeldolgozzuk a képet OCR-hez, hogyan távolítsuk + el a zajt a szkennelésből, és hogyan ismerjük fel a szkennelésből származó szöveget + az Aspose.OCR használatával. +og_title: Hogyan kiegyenesítsük a képet C#‑ban – Teljes OCR előfeldolgozási útmutató +tags: +- OCR +- C# +- Image Processing +title: Hogyan korrigáljuk a kép dőlését C#‑ban – Teljes OCR előfeldolgozási útmutató +url: /hu/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan korrigáljuk a kép ferdeségét C#‑ban – Teljes OCR előfeldolgozási útmutató + +Gondoltad már, **hogyan korrigáljuk a kép ferdeségét** a fájloknál, mielőtt OCR motorba táplálnád őket? Nem vagy egyedül. A beolvasott dokumentumok gyakran ferde, zajos vagy alacsony kontrasztúak, ami megzavar minden szövegfelismerési kísérletet. + +Ebben az útmutatóban végigvezetünk egy teljes, futtatható példán, amely **preprocesses image for OCR**, eltávolítja a zajt a beolvasásból, és végül **recognize text from scan** az Aspose.OCR könyvtár segítségével. A végére világos képet kapsz arról, **how to use OCR** C#‑ban, miközben a kód rövid és egyszerű marad. + +> **Pro tipp:** Még egy kis elforgatás (5‑10°) is 30 % vagy annál nagyobb pontosságcsökkenést okozhat az OCR‑nél. A ferde kép korrigálása az első lépés, amit soha nem szabad kihagyni. + +## Amire szükséged lesz + +- **.NET 6+** (a kód .NET Framework‑ön is működik, de a .NET 6 a jelenlegi LTS) +- **Aspose.OCR for .NET** – letöltheted a NuGet‑ből (`Install-Package Aspose.OCR`) +- Egy minta TIFF/PNG/JPEG, amely el van forgatva vagy zajos (a példában a `noisy_rotated.tif`‑t használjuk) +- Bármely kedvenc IDE – a Visual Studio, Rider vagy a VS Code megfelel + +Ennyi. Nincs szükség extra könyvtárakra, külső szolgáltatásokra. + +## 1. lépés – A forráskép betöltése (Miért fontos) + +Mielőtt **deskew image**-t tudnánk végrehajtani, be kell olvasnunk egy Aspose `ImageStream`‑be. Ez az objektum elrejti a fájl I/O részleteit, és egységes felületet biztosít az OCR motor számára. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Miért először betöltés?* Mert az összes későbbi szűrő egy memóriában lévő képen dolgozik. Ha a fájlt nem lehet beolvasni, az egész folyamat összeomlik. + +## 2. lépés – Előfeldolgozó csővezeték felépítése (Deskew + Denoise + Contrast) + +Egy robusztus OCR munkafolyamat általában több szűrőt láncol össze. Itt történik a **preprocesses image for OCR**, és ami még fontosabb, a **how to deskew image** automatikus végrehajtása. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Miért ezek a három?** +- **DeskewFilter** automatikusan megoldja a “how to deskew image” problémát; nem kell kitalálni a szöget. +- **DenoiseFilter** kezeli a “remove noise from scan” igényt, amely egyébként fantom karaktereket hoz létre. +- **ContrastBoostFilter** segít az OCR motorának megkülönböztetni a sötét szöveget a világos háttértől, ami klasszikus probléma, amikor *preprocess image for OCR*. + +## 3. lépés – A csővezeték alkalmazása (A transzformáció megtekintése) + +Most ténylegesen futtatjuk a szűrőket. A visszakapott `processedImage` lesz, amit az OCR motorba táplálunk. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Ha megnyitod a `cleaned_output.tif` fájlt, észre fogod venni, hogy a szöveg egyenes, kevésbé szemcsés, és nagyobb kontrasztú. Ez a vizuális ellenőrzés hasznos, amikor *remove noise from scan* és szeretnéd megerősíteni, hogy a deskew működött. + +## 4. lépés – OCR motor létrehozása és konfigurálása (How to Use OCR) + +Rendezett képpel a kezünkben, példányosítjuk a `OcrEngine`‑t. Ez a **how to use OCR** központja az Aspose‑nél. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Miért állítjuk be a `AutoPageSegmentation`‑t?* Mivel sok beolvasás táblázatot vagy több oszlopot tartalmaz. Bekapcsolva a motor intelligensen felosztja az oldalt, javítva a végső **recognize text from scan** eredményt. + +## 5. lépés – A felismerési folyamat futtatása (Végül szöveg felismerése) + +Most jön a döntő pillanat: megkérjük a motort, hogy olvassa el a szöveget. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Ha minden zökkenőmentesen ment, egy tiszta szövegrészt látsz, amely megegyezik az eredeti dokumentummal. Ez a megfelelő **deskewing image**, **removing noise**, és **preprocesses image for OCR** eredménye. + +## 6. lépés – Teljes működő példa (Másolás‑Beillesztés kész) + +Az alábbiakban a teljes program, készen áll a fordításra. Csak cseréld ki a fájl útvonalát, és már indulhat is. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Várható kimenet** (rövidítve a tömörség kedvéért): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Ha a kimenet összezavarodottnak tűnik, ellenőrizd, hogy a forráskép nem fordult-e el 30°-nál többre, vagy növeld a `DeskewFilter.MaxAngle` értékét. + +## Gyakran Ismételt Kérdések (Szélsőséges esetek és variációk) + +| Kérdés | Válasz | +|----------|--------| +| **Mi van, ha a beolvasásom 45°-ra van elforgatva?** | `DeskewFilter` a `MaxAngle`‑nál korlátozódik. Emeld (pl. `MaxAngle = 60`) vagy előre forgasd el a képet egy grafikus könyvtárral, mielőtt a csővezetéknek adnád. | +| **Feldolgozhatom a PDF‑eket oldalanként?** | Igen. Konvertáld minden PDF oldalt képpé (pl. `Aspose.Pdf` használatával), és futtasd ugyanazt a csővezetéket minden bitmapen. | +| **A dokumentumom franciául van – kell valamit módosítanom?** | Állítsd be `ocrEngine.Language = Language.French;` vagy tölts be egy egyedi nyelvi csomagot. A csővezeték többi része változatlan marad. | +| **Van mód a eredeti felbontás megtartására?** | `PreprocessPipeline` az eredeti bitmapen dolgozik, megőrizve a DPI‑t. Kerüld el az `ImageStream.Resize` hívását, hacsak nem kell teljesítmény miatt lecsökkenteni a méretet. | +| **Hogyan befolyásolja a kontraszt növelése a színes beolvasásokat?** | `ContrastBoostFilter` minden csatornán működik; biztonságos szürkeárnyalatos vagy színes képeknél is, de előbb átalakíthatod szürkeárnyalatúvá a `new GrayscaleFilter()` használatával. | + +## Kép példa (Vizuális segédlet) + +![hogyan korrigáljuk a kép ferdeségét példa](/images/deskew-example.png) + +*A kép egy 12°-ra elforgatott, zajos beolvasás előtte/utána állapotát mutatja, amelyet korrigáltak és megtisztítottak.* + +## Következtetés + +Áttekintettük, **how to deskew image** az Aspose.OCR segítségével, bemutattuk a teljes **preprocess image for OCR** csővezetéket, megmutattuk, hogyan **remove noise from scan**, és végül **recognize text from scan** néhány C# sorral. A `DeskewFilter`, `DenoiseFilter` és `ContrastBoostFilter` láncolásával egy rendezett bitmapet kapsz, amely lehetővé teszi az OCR motor számára, hogy a feladatát anélkül végezze, hogy a hibák megakadályoznák. + +Következő lépések? Kísérletezz különböző szűrő erősségekkel, adj hozzá egy `BinarizationFilter`‑t a tiszta fekete‑fehér kimenethez, vagy tápláld a megtisztított képet egy későbbi NLP csővezetékbe. Ugyanez a minta működik nyugták, útlevelek és történelmi dokumentumok esetén is. + +További kérdéseid vannak a **how to use OCR** más nyelveken vagy keretrendszerekben? Írj egy megjegyzést, é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/net/text-recognition/_index.md b/ocr/hungarian/net/text-recognition/_index.md index 61ddd9f7..f210dba0 100644 --- a/ocr/hungarian/net/text-recognition/_index.md +++ b/ocr/hungarian/net/text-recognition/_index.md @@ -37,6 +37,9 @@ A hatékonyság kulcsfontosságú a .NET-alkalmazásokban, és az Aspose.OCR seg Az Aspose.OCR segítségével tárja fel az OCR-ben rejlő lehetőségeket a .NET-ben. Könnyedén bontsa ki a szöveget PDF-fájlokból, és zökkenőmentesen integrálja alkalmazásaiba. Ez az oktatóanyag átfogó útmutatót nyújt a PDF-fájlok szövegének felismeréséhez, biztosítva a zökkenőmentes és hatékony integrációs élményt. +### [Kereshető PDF létrehozása PNG-ből C#-ban – Teljes útmutató](./create-searchable-pdf-from-png-in-c-complete-guide/) +Ismerje meg, hogyan hozhat létre kereshető PDF-et PNG képekből C#-ban az Aspose OCR segítségével. + ## Táblázat felismerése az OCR képfelismerésben Az Aspose.OCR for .NET segítségével navigálhat a táblázatok felismerésének bonyolultságában az OCR képfelismerésben. Átfogó útmutatónk felhatalmazza Önt az Aspose.OCR teljes potenciáljának kiaknázására, biztosítva a pontos és hatékony táblázatfelismerést alkalmazásaiban. Emelje fel projektjeit az iparágvezető OCR megoldással. @@ -55,9 +58,19 @@ Bővítse .NET-alkalmazásait az Aspose.OCR segítségével a hatékony képszö Az Aspose.OCR segítségével tárja fel az OCR-ben rejlő lehetőségeket a .NET-ben. Könnyedén bontsa ki a szöveget a PDF-ekből. Töltse le most a zökkenőmentes integrációs élményért. ### [Táblázat felismerése az OCR képfelismerésben](./recognize-table/) A .NET-hez készült Aspose.OCR-ben rejlő lehetőségeket az OCR-képfelismerés tábláinak felismeréséről szóló átfogó útmutatónkkal tárja fel. +### [Hogyan futtassuk az OCR-t C#-ban – Teljes útmutató az Aspose OCR-rel](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Ismerje meg, hogyan használhatja az Aspose OCR-t C#-ban az OCR futtatásához lépésről lépésre útmutatóval. +### [Hogyan futtassuk az OCR-t C#-ban – Arab szöveg kinyerése PNG-ből](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Ismerje meg, hogyan használhatja az Aspose OCR-t C#-ban arab szöveg kinyerésére PNG képekből. +### [Kép szövegének kinyerése az Aspose OCR segítségével – Teljes C# útmutató](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Ismerje meg, hogyan nyerhet ki szöveget képekből C#-ban az Aspose OCR teljes körű útmutatójával. +### [Kép szövegének kinyerése C#-ban – Teljes Aspose OCR útmutató](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Fedezze fel, hogyan használhatja az Aspose OCR-t C#-ban a képek szövegének hatékony kinyeréséhez. +### [Szöveg felismerése képről C#-ban – Teljes útmutató az OCR-hez és JSON-hez](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/hungarian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..7e8a222a --- /dev/null +++ b/ocr/hungarian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Készíts kereshető PDF-et PNG-ből C#-val. Tanuld meg, hogyan konvertálj + képet PDF-be, hogyan nyerd ki a szöveget a PNG-ből, és hogyan végezz OCR-t a képen + C#-ban egy egyszerű útmutatóban. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: hu +og_description: Készíts kereshető PDF-et PNG-ből C#-val. Ez az útmutató bemutatja, + hogyan konvertálj képet PDF-be, hogyan nyerd ki a szöveget a PNG-ből, és hogyan + végezz OCR-t C#-ban az Aspose segítségével. +og_title: Kereshető PDF létrehozása PNG-ből C#-ban – Lépésről lépésre +tags: +- Aspose OCR +- C# +- PDF/A +title: Kereshető PDF létrehozása PNG-ből C#-ban – Teljes útmutató +url: /hu/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Kereshető PDF létrehozása PNG-ből C#‑ben – Teljes útmutató + +Szükséged van **kereshető PDF** létrehozására PNG fájlból C#‑ban? Nem vagy egyedül – sok fejlesztő ütközik ebbe a problémába, amikor a beolvasott képeket szeretnék **megtekinthető** és **szöveg‑kereshető** formában is elérni. Ebben a tutorialban végigvezetünk a teljes folyamaton: **kép konvertálása PDF‑be**, OCR futtatása a **szöveg kinyeréséhez PNG‑ból**, majd a végeredmény mentése **PDF/A‑2b** kompatibilis kereshető dokumentumként. + +A végére egyetlen, újrahasználható kódrészletet kapsz, amelyet bármely .NET projektbe beilleszthetsz, valamint néhány gyakorlati tippet, amelyek később megkímélnek a fejfájástól. Nincs külső szolgáltatás, csak az Aspose OCR könyvtár és néhány C# sor. + +> **Előfeltételek** +> * .NET 6+ (vagy .NET Framework 4.7.2+). +> * Visual Studio 2022 vagy bármely C#‑kompatibilis IDE. +> * Érvényes Aspose OCR licenc (vagy ingyenes próba). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Kereshető PDF létrehozása PNG-ből C# használatával"} + +## 1. lépés – Aspose OCR telepítése és hivatkozása C#‑hoz + +Először is szükséged van az Aspose OCR NuGet csomagra. Nyisd meg a terminált (vagy a Package Manager Console‑t) és futtasd: + +```bash +dotnet add package Aspose.OCR +``` + +Ha inkább a GUI‑t részesíted előnyben, jobb‑klikk a projekteden → **Manage NuGet Packages…** → keresd meg az *Aspose.OCR* csomagot és telepítsd a legújabb stabil verziót. + +Miért ezt a könyvtárat? Támogatja a **convert png to pdf** műveletet, kezeli a többoldalas képeket, és alapból képes PDF/A‑2b kimenetet előállítani – tökéletes a **searchable pdf** létrehozásához, amely megfelel az archiválási szabványoknak. + +> **Pro tipp:** Regisztráld a licencet már a `Program.cs`‑ben, hogy elkerüld az értékelő vízjelet. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## 2. lépés – PNG betöltése és OCR futtatása (szöveg kinyerése PNG‑ból) + +Most betöltjük a forrásképet. Az `ImageStream.FromFile` segédfüggvény elrejti a fájlrendszer részleteit, és bármely támogatott raszteres formátummal működik. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +Ekkor a motor **extracted text from png** és belsőleg tárolja azt. Sőt, a nyers szöveget megtekintheted a `ocrEngine.Text`‑en keresztül, ami hasznos hibakeresés vagy naplózás során. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **Mi van, ha a kép többoldalas?** +> Az Aspose OCR minden oldalt külön rétegként kezel. Csak hívd meg `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` és a motor automatikusan végigiterál. + +## 3. lépés – PDF/A‑2b beállítások konfigurálása (kereshető pdf létrehozása) + +Az OCR eredmény **searchable pdf**‑vé alakításához meg kell mondanunk az Aspose‑nak, hogyan csomagolja a kimenetet. A PDF/A‑2b a hosszú távú megőrzés ideális választása, és garantálja, hogy a szövegréteg kereshető legyen. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Miért ágyazzuk be az eredeti képet? Egyes megfelelőségi ellenőrzések megkövetelik, hogy a vizuális ábrázolás megegyezzen az eredeti beolvasással. Ez a jelző a **convert image to pdf** műveletet egy valódi, kereshető szövegréteggel ellátott fájlra változtatja. + +## 4. lépés – Eredmény mentése és ellenőrzése (convert png to pdf) + +Végül kiírjuk a kimeneti fájlt. Az ugyanaz a `Save` metódus bármely megadott útvonalra működik. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Nyisd meg a létrehozott `output.pdf`‑t az Adobe Readerben vagy bármely PDF‑olvasóban, és próbálj meg keresni egy olyan szót, amely az eredeti PNG‑ben is szerepel. Ha a szó kiemelésre kerül, gratulálok – sikeresen **create searchable pdf**‑t hoztál létre PNG‑ból! + +### Gyors ellenőrző szkript (opcionális) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Miért használjunk PDF/A‑2b‑t kereshető PDF‑ekhez? + +* **Archiválási biztonság:** A PDF/A‑2b garantálja, hogy a fájl évtizedek múlva is ugyanúgy jelenik meg. +* **Szabályozási megfelelés:** Sok iparág (jogi, egészségügyi, pénzügyi) megköveteli a PDF/A használatát a nyilvántartásokhoz. +* **Kereshetőség:** A beágyazott OCR szövegréteg lehetővé teszi, hogy az asztali keresőeszközök indexeljék a dokumentumot. + +Ha nincs szükséged a további megfelelőségi terhekre, elhagyhatod a `PdfAStandard` sort, és egyszerűen `new PdfSaveOptions()`‑t használhatsz – a kimenet továbbra is kereshető lesz, csak nem PDF/A‑2b. + +## Gyakori hibák és elkerülésük + +| Tünet | Valószínű ok | Megoldás | +|---------|--------------|-----| +| Nem jelenik meg kereshető szöveg | `ocrEngine.Recognize()` sosem lett meghívva vagy csendben hibázott | Győződj meg róla, hogy a kép útvonala helyes és a licenc regisztrálva van. | +| A PDF hatalmas (10 + MB) | Az eredeti PNG magas felbontású és az `EmbedOriginalImage` igaz | Méretezz le a képet OCR előtt, vagy állítsd `EmbedOriginalImage = false`. | +| A szöveg torz | A nyelv nem lett automatikusan felismerve | Állítsd be `ocrEngine.Language = "eng";` (vagy a kívánt nyelvet) a `Recognize()` előtt. | + +## Teljes működő példa (másolás‑beillesztés kész) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Futtasd a programot, nyisd meg a `output.pdf`‑t, és keress olyan szavakat, amelyek biztosan megtalálhatók az `input.png`‑ben. Ha minden rendben van, most már mester vagy a **convert image to pdf** munkafolyamatban, és megtanultad a **ocr image c#** stílusú megközelítést. + +## Következő lépések és kapcsolódó témák + +* **Kötegelt feldolgozás:** Ciklus egy mappában lévő PNG‑k felett, és az eredmények egyetlen PDF‑be egyesítése. +* **Alternatív kimeneti formátumok:** Az Aspose OCR képes DOCX, TXT vagy kereshető PDF/A‑1b kimenetre is. +* **Teljesítményoptimalizálás:** Használd a `ocrEngine.RecognitionMode = RecognitionMode.Fast`‑t nagy mennyiségű adat esetén, ha a maximális pontosság nem kritikus. +* **Más könyvtárak:** Ha szűk a költségvetés, nézd meg a Tesseract .NET‑et – bár elveszíted a beépített PDF/A támogatást. + +--- + +### TL;DR + +Megmutattuk, hogyan **create searchable pdf**-t hozhatsz létre PNG‑ból Aspose OCR használatával C#‑ban. A lépések: + +1. Telepítsd az Aspose OCR‑t (`dotnet add package Aspose.OCR`). +2. Töltsd be a PNG‑t és futtasd a `ocrEngine.Recognize()`‑t (**extract text from png**). +3. Állítsd be a `PdfSaveOptions`‑t PDF/A‑2b‑re (**convert image to pdf** & **convert png to pdf**). +4. Mentsd a fájlt és ellenőrizd a kereshető réteget. + +Próbáld ki, finomítsd a beállításokat, és hamarosan egy robusztus csővezetéked lesz bármely beolvasott kép archiválásra, kereshető PDF‑vé alakítására. 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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/hungarian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..312af804 --- /dev/null +++ b/ocr/hungarian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-01-10 +description: Képről szöveg kinyerése Aspose OCR segítségével C#-ban. Tanulja meg, + hogyan konvertálja a beolvasott dokumentum szövegét kötegelt feldolgozással, és + mentse az eredményeket. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: hu +og_description: Szöveg kinyerése képről az Aspose OCR-rel C#-ban. Ez az útmutató bemutatja, + hogyan lehet a beolvasott dokumentum szövegét kötegelt feldolgozással konvertálni. +og_title: Szöveg kinyerése képből C#-ban – Teljes Aspose OCR útmutató +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Szöveg kinyerése képből C#-ban – Teljes Aspose OCR útmutató +url: /hu/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Kép szövegének kinyerése – Teljes Aspose OCR útmutató + +Valaha is szükséged volt **kép szövegének kinyerésére**, de nem tudtad, hol kezdj? Nem vagy egyedül; sok fejlesztő szembesül ezzel a problémával, amikor beolvasott PDF-ekkel, többoldalas TIFF-ekkel vagy fényképalapú nyugtákkal dolgozik. A jó hír, hogy az Aspose OCR segítségével **beolvasott dokumentum szövegét konvertálhatod** néhány C# sorral. + +Ebben az útmutatóban egy valós példán keresztül vezetünk végig: egy többoldalas TIFF betöltése, batch OCR futtatása minden oldalra, majd egyetlen szövegfájlba írása, amely az összes oldal tartalmát tartalmazza. A végére egy kész, futtatható konzolos alkalmazásod lesz, megérted, miért fontos minden lépés, és tudni fogod, hogyan finomhangold a folyamatot olyan széljegyekhez, mint a jelszóval védett képek vagy egyedi nyelvi csomagok. + +## Előfeltételek + +- .NET 6.0 SDK vagy újabb (a kód .NET Core‑ral és .NET Framework‑kel is működik) +- Visual Studio 2022 (vagy bármely kedvelt szerkesztő) +- Aspose OCR licencfájl (vagy használhatod az ingyenes értékelő módot) +- Többoldalas kép fájl (például `multipage.tif`) egy hivatkozható mappában elhelyezve + +Nem szükséges további NuGet csomag a `Aspose.OCR`‑n kívül; ezt az első lépésben telepítjük. + +## 1. lépés – Aspose OCR telepítése és a projekt beállítása + +Kezdjük egy új konzolos projekt létrehozásával, és húzzuk be az Aspose OCR könyvtárat. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro tip:** Ha rendelkezel licencfájllal (`Aspose.OCR.lic`), másold a projekt gyökerébe. A könyvtár automatikusan betölti futásidőben. + +Miért ez a lépés? A csomag telepítése hozzáférést biztosít a `BatchProcessor`, `OcrEngine` és más hasznos osztályokhoz, amelyek elrejtik az alacsony szintű képfeldolgozást. Emellett garantálja, hogy a legújabb OCR algoritmusokat használod, amelyeket az Aspose biztosít. + +## 2. lépés – Többoldalas kép betöltése a BatchProcessor segítségével + +A `BatchProcessor` kifejezetten erre a forgatókönyvre készült: minden oldal iterálása egy többoldalas képen anélkül, hogy manuálisan kellene szétbontani a fájlokat. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +A `BatchProcessor` az összes oldalt a memóriába olvassa, a `batchProcessor.Pages`‑en keresztül teszi elérhetővé. Minden oldalobjektum ismeri a számát (`ocrPage.Number`), amelyet később a tiszta fejléchez használunk. + +## 3. lépés – StringBuilder előkészítése az eredmények összegyűjtéséhez + +Egyetlen szövegfájlt szeretnénk, amely minden oldal OCR kimenetét tartalmazza, fejlécelválasztókkal. A `StringBuilder` a leghatékonyabb módja a karakterláncok összefűzésének egy ciklusban. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Miért `StringBuilder`? A karakterláncok `+` operátorral történő összefűzése egy ciklusban minden iterációban új stringet allokál, ami teljesítménycsökkenést okoz – különösen nagy dokumentumok esetén. + +## 4. lépés – Minden oldal bejárása, OCR futtatása és az eredmények hozzáfűzése + +Most jön a tutorial középpontja: minden oldal bejárása, szövegfelismerés, és az oldaljelzővel való tárolása. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Miért új `OcrEngine` minden oldalhoz?** Néhány fejlesztő egyetlen motor újrahasználását választja, és módosítja annak `Image` tulajdonságát, de ez megtarthatja a nyelvi beállításokat vagy korábbi eredményeket, ami finom hibákhoz vezethet. Egy friss motor példányosítása tiszta állapotot garantál. + +### Gyakori széljegyek kezelése + +- **Üres oldalak:** Ha egy oldal nem tartalmaz felismerhető szöveget, az `ocrEngine.Text` egy üres string lesz. Érdemes helyettesítőt beilleszteni, például “(No text detected)”. +- **Nyelvválasztás:** Alapértelmezés szerint az Aspose OCR angolt használ. Német vagy francia feldolgozásához állítsd be `ocrEngine.Language = Language.German;` a `Recognize()` hívása előtt. +- **Teljesítmény tipp:** Nagy TIFF-ek esetén engedélyezheted az `ocrEngine.UseParallelProcessing = true;` beállítást a többmagos feldolgozáshoz. + +## 5. lépés – Kombinált kimenet írása szövegfájlba + +Végül a felhalmozott karakterláncot mentjük le a lemezre. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Az eredményül kapott `multipage_result.txt` nagyjából így fog kinézni: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Most már **kép szövegét kinyerted**, és hatékonyan **beolvasott dokumentum szövegét konvertáltad** kereshető, szerkeszthető formátumba. + +## Bónusz – Vizuális áttekintés (Kép alternatív szöveg) + +Alább egy egyszerű folyamatábra látható, amely szemlélteti a lépéseket. +*Alt text:* “Diagram showing how to extract text from image using Aspose OCR batch processing in C#”. + +![OCR folyamatábra](placeholder-image-url.png) + +*(Ha ezt az útmutatót statikus oldalon publikálod, cseréld le a helyőrzőt egy valódi SVG‑re vagy PNG‑re.)* + +## Gyakran Ismételt Kérdések + +**Működik ez PDF fájlokkal?** +Igen, az Aspose OCR képes PDF oldalakat képként olvasni. Először a PDF‑et képekké kell konvertálni, vagy használhatod az `Aspose.PDF`‑ből származó `PdfDocument`‑et, és minden oldal rasterizált képét átadhatod az `OcrEngine`‑nek. + +**Mi van, ha a TIFF jelszóval védett?** +A `BatchProcessor` közvetlenül nem kezeli a titkosítást. A fájlt előbb egy, például `Aspose.Imaging`‑et használó könyvtárral kell feloldani, mielőtt az OCR csővezetékhez adnád. + +**Kimenetet JSON‑ként is kaphatok a sima szöveg helyett?** +Természetesen. Cseréld le a `StringBuilder` logikát egy JSON sorosítóra (pl. `System.Text.Json`), és tárold minden oldal szövegét egy `pageNumber` kulcs alatt. + +## Teljes működő példa + +Itt a teljes program, amelyet egyszerűen beilleszthetsz a `Program.cs`‑be. Tartalmazza az összes `using` direktívát, hibakezelést és megjegyzéseket. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Futtasd a programot a következővel: + +```bash +dotnet run +``` + +A konzolon megjelenő üzenet megerősíti a sikeres futást, és a kimeneti fájl tartalmazni fogja az összefűzött OCR eredményeket. + +## Összegzés + +Most bemutattuk, hogyan **kép szövegét nyerheted ki** az Aspose OCR segítségével, átalakítva bármely többoldalas beolvasott fájlt egyszerű, kereshető szöveggé. A `BatchProcessor` és a tiszta per‑page `OcrEngine` használatával megbízhatóan **konvertálhatod a beolvasott dokumentum szövegét**, miközben a kód egyszerű és karbantartható marad. + +Nyugodtan kísérletezz: próbálj ki különböző nyelveket, válts JSON kimenetre, vagy integráld ezt a logikát egy web‑API‑ba, amely valós időben dolgozza fel a feltöltéseket. A fő minta változatlan – betöltés, felismerés, összegyűjtés és mentés. + +További kérdéseid vannak az OCR‑rel, az Aspose licenceléssel vagy a hatalmas dokumentumkötegek kezelésével kapcsolatban? Hagyj egy megjegyzést alább, vagy nézd meg az Aspose hivatalos dokumentációját a mélyebb részletekért. Boldog 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/hungarian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..15be46cd --- /dev/null +++ b/ocr/hungarian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-01-10 +description: Szöveg kinyerése képből az Aspose OCR használatával C#-ban. Tanulja meg, + hogyan töltsön be képet az OCR-hez, hogyan ismerje fel a hindi szöveget, és hogyan + hajtsa végre az OCR felismerést néhány egyszerű lépésben. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: hu +og_description: Szöveg kinyerése képből az Aspose OCR használatával C#-ban. Kövesse + ezt a lépésről‑lépésre útmutatót a kép betöltéséhez OCR-hez, a hindi szöveg felismeréséhez + és az OCR felismerés futtatásához. +og_title: Szöveg kinyerése képből az Aspose OCR segítségével – Teljes C# útmutató +tags: +- Aspose OCR +- C# +- Image Processing +title: Szöveg kinyerése képből az Aspose OCR segítségével – Teljes C# útmutató +url: /hu/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Kép szövegének kinyerése Aspose OCR‑vel – Teljes C# útmutató + +Valaha szükséged volt **kép szövegének kinyerésére**, de nem tudtad, melyik könyvtárat válaszd? Nem vagy egyedül – sok fejlesztő szembesül ezzel, amikor először foglalkozik az OCR‑rel a .NET‑ben. A jó hír, hogy az Aspose OCR a teljes folyamatot meglepően egyszerűvé teszi, még akkor is, ha összetett írásrendszerekkel, például hindivel dolgozol. + +Ebben az útmutatóban végigvezetünk mindenen, ami szükséges a **kép betöltéséhez OCR‑hez**, a **hindi szöveg felismeréséhez**, és az **OCR felismerés futtatásához** C#‑ban. A végére egy azonnal futtatható konzolalkalmazást kapsz, amely a kinyert szöveget közvetlenül a képernyőre írja. + +## Mit fogunk építeni + +Készítünk egy apró konzolalkalmazást, amely: + +1. Az OCR motorra mutat egy mappát, amely nyelvi modelleket tartalmaz. +2. Kikapcsolja az automatikus letöltéseket – hasznos lezárt környezetekben. +3. A hindit választja célnyelvként. +4. Betölt egy JPEG‑et (vagy PNG‑t), amely hindi szöveget tartalmaz. +5. Végrehajtja a felismerési folyamatot. +6. Kiírja az eredményül kapott sztringet a konzolra. + +Nincs külső szolgáltatás, nincs felhőkulcs, csak tiszta helyi OCR. + +## Előkövetelmények + +- **.NET 6.0** vagy újabb (a kód .NET Framework 4.7+‑on is működik). +- **Aspose.OCR for .NET** NuGet csomag telepítve. + ```bash + dotnet add package Aspose.OCR + ``` +- Egy `OcrResources` nevű mappa, amely a Hindi nyelvi modellt (`hin.traineddata`) tartalmazza. + Letöltheted az Aspose OCR letöltési oldaláról, és helyezd a `YOUR_DIRECTORY/OcrResources` könyvtárba. +- Egy képfájl (`input.jpg`) tiszta hindi szöveggel. + Illusztrációként képzeld el egy üzlet jelzős fotóját, amely a „स्वागत है” feliratot tartalmazza. + +> **Pro tipp:** Tartsd a kép felbontását 300 dpi felett; az alacsonyabb felbontás hiányzó karakterekhez vezethet. + +--- + +## 1. lépés: Az OCR motor mutatása a saját erőforrásaidra – *kép szövegének kinyerése* + +Az első dolog, amire az Aspose OCR‑nek szüksége van, a nyelvi modellek helye. Ha ezt kihagyod, a motor megpróbálja automatikusan letölteni a fájlokat – ami egy biztonságos hálózatban nem kívánatos. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Miért fontos:* A `ResourcesPath` beállításával biztosítod, hogy a motor a megfelelő betanított adatokat helyben töltse be, ami felgyorsítja az első futást és megszünteti a váratlan hálózati forgalmat. + +--- + +## 2. lépés: Automatikus erőforrás letöltés letiltása – *kép betöltése OCR‑hez* + +Sok vállalati környezetben a kimenő internetkapcsolat blokkolva van. Az Aspose OCR egy jelzőnek köszönhetően nem próbálja meg valós időben letölteni a hiányzó fájlokat. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Ha elfelejted ezt a sort, és a Hindi modell nincs jelen, a motor egy olyan kivételt dob, mint a „Unable to download required resource”. A `false` érték megtartása egy egyértelmű, determinisztikus hibát eredményez, amelyet saját magad kezelhetsz. + +--- + +## 3. lépés: Nyelv kiválasztása – *hindi szöveg felismerése* + +Az Aspose OCR tucatnyi nyelvet támogat, de meg kell mondanod, melyiket használja. A hindit a `OcrLanguage.Hindi` azonosítja. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Mi van, ha több nyelvre van szükséged?* Beállíthatod a `Language = OcrLanguage.AutoDetect` értéket, hogy a motor kitalálja, de az automatikus felismerés lassabb, és időnként hibásan működik kevert írásrendszerek esetén. Tiszta hindi esetén az explicit kiválasztás a legbiztonságosabb. + +--- + +## 4. lépés: Kép betöltése – *kép betöltése OCR‑hez* + +Most átadjuk a motor számára a beolvasni kívánt képet. Az Aspose egy kényelmes `ImageStream.FromFile` segédfüggvényt kínál, amely elrejti a mögöttes `System.Drawing` függőségeket. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Ha a fájl útvonala hibás, az Aspose `FileNotFoundException`‑t dob. Egy gyors `File.Exists` ellenőrzés a sor előtt megspórolhat egy hibakeresési szekciót. + +--- + +## 5. lépés: OCR motor futtatása – *OCR felismerés futtatása* + +Minden beállítva, végül elindítjuk a felismerési folyamatot. Ez a hívás szinkron, és blokkol, amíg a szöveg ki nem nyerésre kerül. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +A háttérben az Aspose több lépést hajt végre: előfeldolgozás (kiegyenesítés, zajeltávolítás), szegmentálás, karakter osztályozás, majd végül nyelvspecifikus utófeldolgozás. A nehéz munkát ez a egyetlen metódushívás végzi. + +--- + +## 6. lépés: Kinyert szöveg kiírása – *kép szövegének kinyerése* + +Az eredmény a motor `Text` tulajdonságában található. Egyszerűen kiírjuk a konzolra, de tárolhatod adatbázisban, elküldheted egy API‑nak, vagy továbbadhatod egy másik NLP csővezetéknek. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Várható kimenet** (feltételezve, hogy a kép a „स्वागत है” feliratot tartalmazza): + +``` +=== OCR RESULT === +स्वागत है +``` + +Ha torz karaktereket látsz, ellenőrizd újra, hogy a Hindi modell helyesen van-e elhelyezve, és hogy a kép nincs-e túlzottan tömörítve. + +--- + +## Teljes működő példa + +Az alábbiakban a teljes program látható, amelyet beilleszthetsz egy új konzolprojektbe (`dotnet new console`). Cseréld le a `YOUR_DIRECTORY`‑t a géped tényleges útvonalára. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tipp:** Ha sok képet szeretnél egy ciklusban feldolgozni, hozz létre egyetlen `OcrEngine` példányt és használd újra – ez csökkenti a inicializációs terhelést. + +--- + +## Gyakori problémák kezelése + +| **Üres kimenet** | **Helytelen nyelvi modell vagy alacsony minőségű kép.** | Ellenőrizd a `ResourcesPath`‑t, növeld a kép DPI‑jét, vagy próbáld meg a `ocrEngine.Image = ImageStream.FromFile(..., true)` beállítást az automatikus javítás engedélyezéséhez. | +| **Kivétel: Erőforrás nem található** | **Hiányzó Hindi `.traineddata`.** | Töltsd le a Hindi modellt az Aspose‑tól, helyezd az `OcrResources` mappába, és győződj meg róla, hogy a fájlnév `hin.traineddata`. | +| **Hibás karakterek** | **Kódolási eltérés a konzolra íráskor.** | Állítsd be a konzol kimeneti kódolását: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Teljesítménycsökkenés** | **Nagy képek feldolgozása méretezés nélkül.** | Méretezd át a képet legfeljebb 2000 px szélesség/magasság értékre, mielőtt az OCR‑nek adnád. | + +--- + +## Következő lépések és kapcsolódó témák + +- **Kötegelt feldolgozás:** Csomagold be a kódot egy `foreach` ciklusba, hogy egy mappában lévő képeket kezelje. +- **Különböző nyelvek:** Cseréld le a `OcrLanguage.Hindi`‑t `OcrLanguage.English`, `OcrLanguage.Arabic` stb. értékekre. +- **Kimeneti formátumok:** A `Console.WriteLine` helyett írj egy szövegfájlba (`File.WriteAllText(\"result.txt\", ocrEngine.Text);`). +- **Integráció ASP.NET Core‑val:** Hozz létre egy API végpontot, amely képfeltöltést fogad, és a kinyert szöveget JSON‑ként adja vissza. + +Mindezek a kiterjesztések ugyanazt a mintát követik – konfiguráld a motort, tölts be egy képet, ismerd fel, és használd fel az eredményt. + +--- + +## Összegzés + +Most bemutattuk, hogyan **kérjünk ki szöveget képből** az Aspose OCR segítségével C#‑ban. Az útmutató minden lépést lefedett, amelyre a **kép betöltéséhez OCR‑hez**, a **hindi szöveg felismeréséhez**, és az **OCR felismerés futtatásához** szükség van – mindezt egy önálló konzolalkalmazásban. + +Próbáld ki a saját képeiddel, kísérletezz különböző nyelvekkel, és nyugodtan adaptáld a kódrészletet webszolgáltatásokhoz vagy háttérfeladatokhoz. A lényeg ugyanaz marad: állítsd be az erőforrásokat, válaszd ki a nyelvet, adj meg egy képet, és olvasd a `Text` tulajdonságot. + +Ha bármilyen problémába ütközöl, nézd meg a fenti hibaelhárítási táblázatot vagy hagyj egy megjegyzést. Boldog kódolást, és legyen az OCR eredményed mindig kristálytiszta! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/hungarian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..d6c2d047 --- /dev/null +++ b/ocr/hungarian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Hogyan futtassunk OCR-t egy képen az Aspose OCR használatával C#-ban. + Tanulja meg, hogyan nyerjen ki szöveget a képből, hajtson végre OCR-t a képen, és + töltse be a képet OCR-hez GPU gyorsítással. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: hu +og_description: Hogyan futtassunk OCR-t egy képen az Aspose OCR segítségével. Ez az + útmutató bemutatja, hogyan lehet szöveget kinyerni a képből, OCR-t futtatni a képen, + és hatékonyan betölteni a képet OCR-hez. +og_title: Hogyan futtass OCR-t C#‑ban – Teljes lépésről lépésre útmutató +tags: +- OCR +- C# +- Aspose +title: Hogyan futtassunk OCR-t C#-ban – Teljes útmutató az Aspose OCR-rel +url: /hu/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan futtassunk OCR-t C#‑ban – Teljes útmutató az Aspose OCR-rel + +Gondolkodtál már azon, **hogyan futtassunk OCR-t** egy fényképen, és a szöveget kinyerjük anélkül, hogy a hajunkat húznánk ki? Nem vagy egyedül. Akár számlákat digitalizálsz, bizonylatokat szkennelsz, vagy csak egy kereshető PDF‑et akarsz létrehozni, a képről szöveg kinyerése mindennapi szükséglet sok fejlesztő számára. + +Ebben az útmutatóban egy gyakorlati, vég‑től‑végig példán keresztül mutatjuk be, hogyan **futtassunk OCR-t képfájlokon** az Aspose OCR könyvtár segítségével, GPU gyorsítással a sebesség érdekében. A végére pontosan tudni fogod, hogyan tölts be képet OCR‑hez, hogyan állítsd be a memóriahasználatot, és hogyan kapj tiszta egyszerű szöveget – mindezt néhány perc kóddal. + +## Mit fogsz megtanulni + +- Hogyan inicializáljuk az Aspose OCR motorját C#‑ban +- Hogyan **töltsünk be képet OCR‑hez** lemezről vagy stream‑ből +- Hogyan engedélyezzük a GPU gyorsítást és korlátozzuk a GPU memóriát +- Hogyan **nyerjünk ki szöveget a képből** és ellenőrizzük a kimenetet +- Gyakori buktatók (GPU modul hiányzik, memória korlátok) és gyors megoldások + +Az Aspose OCR‑rel kapcsolatos előzetes tapasztalat nem szükséges; elegendő egy működő .NET környezet és egy mintakép. + +--- + +## Hogyan futtassunk OCR-t egy képen az Aspose OCR-rel + +Az első dolog, amire szükséged van, egy tiszta, futtatható kódrészlet, amely elvégzi a teljes feladatot. Az alábbiakban a teljes programot találod, amelyet egyszerűen másolhatsz, beilleszthetsz és azonnal futtathatsz. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Várt kimenet** (feltételezve, hogy a mintakép a „Hello World” kifejezést tartalmazza): + +``` +=== OCR Result === +Hello World +``` + +> **Pro tipp:** Ha nem látsz szöveget, ellenőrizd, hogy a GPU modul telepítve van-e, és hogy a kép útvonala helyes-e. Az `ImageStream.FromFile` metódus egy egyértelmű kivételt dob, ha a fájl nem található. + +--- + +## Szöveg kinyerése a képből GPU gyorsítással + +Miért is foglalkozzunk a GPU-val? A csak CPU‑os OCR működik, de nagy vagy nagy felbontású képeknél fájdalmasan lassú lehet. A GPU gyorsítás engedélyezése (a fenti 2. lépés) a nehéz munkát a grafikus kártyádra bízza, amely másodpercenként több ezer pixelt képes feldolgozni. + +### Mikor használjuk a GPU‑t + +- **Kötegelt feldolgozás** – egyszerre több tucat számla szkennelése. +- **Nagy felbontású szkennelés** – bármi 300 dpi felett. +- **Valós‑idő alkalmazások** – például egy mobil szkenner, amely azonnali visszajelzést igényel. + +Ha a környezeted nem rendelkezik kompatibilis GPU-val, egyszerűen állítsd be a `EnableGpuAcceleration = false;` értéket, és a motor automatikusan visszatér a CPU módra. + +--- + +## OCR futtatása képen – a kép helyes betöltése + +A kép betöltése a **load image for OCR** lépés, amely gyakran elakadásokat okoz. Az Aspose OCR egy `ImageStream`‑et vár, amelyet fájlból, memória stream‑ből vagy akár URL‑ből is létre lehet hozni. Íme néhány változat: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Szélsőséges eset:** Egyes képek alfa csatornát (átlátszóságot) tartalmaznak, ami összezavarja az OCR motorját. Az alfa eltávolítása egyszerű: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Ezzel lefedtük a leggyakoribb módokat a **load image for OCR**‑hez, biztosítva, hogy a motor minden alkalommal tiszta, támogatott formátumot kapjon. + +--- + +## Tippek a kép OCR‑hez való hatékony betöltéséhez + +1. **Nagy képek átméretezése** – az OCR-nek nincs szüksége egy 4 K fényképre; a ~1500 px szélességre lecsökkentés felgyorsítja a folyamatot anélkül, hogy az pontosságot rontaná. +2. **Átalakítás szürkeárnyalatossá** – csökkenti a zajt, és javíthatja a felismerést alacsony kontrasztú szkenneléseknél. +3. **Előfeldolgozás kiegyenesítéssel** – ha a kép ferde, az Aspose OCR beépített kiegyenesítése engedélyezhető a `ocrEngine.Config.EnableDeskew = true;` beállítással. + +Ezek a finomhangolások különösen hasznosak, amikor **szöveget nyerünk ki a képből** tömegesen. + +--- + +## Gyakori buktatók és megoldások + +| Szimbólum | Valószínű ok | Javítás | +|-----------|--------------|---------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | A GPU modul nincs telepítve | Telepítsd az Aspose OCR GPU csomagot, vagy tiltsd le a GPU‑t (`EnableGpuAcceleration = false`). | +| Üres kimenet | Helytelen képútvonal vagy nem támogatott formátum | Ellenőrizd az `ImageStream.FromFile` útvonalát; próbáld meg bájtokból betölteni, hogy biztosan helyesen olvasódik be a fájl. | +| Memóriahiány hiba | A GPU memóriakorlát túl alacsony nagy köteghez | Növeld a `GpuMemoryLimit` értékét (pl. 2048), vagy dolgozd fel a képeket kisebb adagokban. | +| Torz karakterek | A kép erős zajt vagy alacsony kontrasztot tartalmaz | Előfeldolgozás: binarizálás, zajcsökkentés, vagy a DPI növelése OCR előtt. | + +--- + +## Teljes működő példa – mindent egy helyen + +Az alábbiakban egy kompakt konzolalkalmazás látható, amely tartalmazza a megbeszélt legjobb gyakorlatokat: GPU gyorsítás, memória korlátozás, kép előfeldolgozás és hibakezelés. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +A program futtatása kiírja a képről kinyert tiszta szöveget, bemutatva egy robusztus módot a **szöveg kinyerésére a képből**, még ha a forrás nem is tökéletes. + +--- + +## Következtetés + +Áttekintettük, **hogyan futtassunk OCR-t** egy képen az Aspose OCR használatával, a motor inicializálásától a kép betöltésig, a GPU gyorsítás engedélyezésig és a szélsőséges esetek kezeléséig. Most már egy szilárd, hivatkozásra érdemes referenciád van, amelyet bármely .NET projektbe beilleszthetsz, és azonnal **szöveget nyerhetsz ki a képből**. + +Következő lépések? Próbáld meg PDF oldalakat betáplálni, kísérletezz különböző nyelvekkel (állítsd be a `ocrEngine.Config.Language = "spa"`‑t spanyolhoz), vagy integráld ezt a folyamatot egy web‑API‑ba, amely a feltöltéseket valós időben dolgozza fel. A lehetőségek végtelenek, és a bemutatott eszközökkel jól fel vagy vértezve, hogy bármilyen OCR kihívást megoldj. + +Boldog kódolást, és legyen a szöveged mindig tiszta, az OCR‑ed pedig gyors! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/hungarian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..6c82f8bc --- /dev/null +++ b/ocr/hungarian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-01-10 +description: Hogyan futtassunk gyorsan OCR-t, és nyerjünk ki arab szöveget egy képből. + Tanulja meg, hogyan konvertáljon képet szöveggé, olvassa el a szöveget PNG-ből, + és lássa, hogyan lehet szöveget kinyerni az Aspose OCR-rel. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: hu +og_description: Hogyan futtassunk OCR-t C#-ban, és nyerjünk ki arab szöveget egy PNG + képből. Ez az útmutató lépésről lépésre megmutatja, hogyan konvertáljunk képet szöveggé, + és olvassuk el a szöveget PNG-ből. +og_title: Hogyan futtassunk OCR-t C#-ban – Arab szöveg kinyerése PNG-ből +tags: +- OCR +- C# +- Aspose +title: Hogyan futtassunk OCR-t C#-ban – Arab szöveg kinyerése PNG-ből +url: /hu/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan futtassunk OCR-t C#‑ban – Arab szöveg kinyerése PNG‑ből + +Gondoltad már valaha, **hogyan futtassunk OCR‑t** egy olyan képen, amely arab karaktereket tartalmaz? Nem vagy egyedül. Sok fejlesztő akad el, amikor **arab szöveget kell kinyerni** egy PNG‑ből, de nem tudja, melyik könyvtár kezeli a jobbról balra írást fejfájás nélkül. + +Ebben az útmutatóban végigvezetünk mindenen, amit tudnod kell a **kép‑szöveggé konvertáláshoz**, a **PNG‑ből történő szövegolvasáshoz**, és végül a **szöveg kinyeréséhez** az Aspose.OCR használatával egy tiszta C# konzolalkalmazásban. A végére egy kész‑futtatható programod lesz, amely kiírja az arab szöveget közvetlenül a terminálra. + +## Mit fogsz megtanulni + +- Az Aspose.OCR NuGet csomag telepítése és hivatkozása. +- Az OCR motor konfigurálása arab nyelvi támogatásra. +- PNG kép betöltése és a felismerési folyamat futtatása. +- A kinyert szöveg lekérése és megjelenítése. +- Beállítások finomhangolása a jobb pontosság érdekében és a gyakori buktatók kezelése. + +Nem szükséges előzetes OCR tapasztalat, csak egy alapvető C# ismeret és egy .NET fejlesztői környezet (Visual Studio, Rider vagy a `dotnet` CLI elegendő). + +--- + +## Hogyan futtassunk OCR‑t – Aspose OCR beállítása + +### 1. lépés: Add hozzá az Aspose.OCR NuGet csomagot + +Az első dolog, amire szükségünk van, maga az OCR könyvtár. Az Aspose.OCR egy kereskedelmi termék, de ingyenes próbaidőszakot kínál, amely tökéletesen működik tanulási célokra. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Alternatívaként nyisd meg a **NuGet Package Manager**‑t a Visual Studio‑ban, keress rá a **Aspose.OCR**‑ra, és kattints a **Install** gombra. + +> **Pro tipp:** Ha a könyvtárat CI pipeline‑ban szeretnéd használni, add hozzá a `-v` kapcsolót a verzió rögzítéséhez, pl. `dotnet add package Aspose.OCR -v 23.10`. + +### 2. lépés: Hozz létre egy új konzolprojektet (ha még nincs) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Most már van egy friss `Program.cs` fájlod, amely készen áll a kódunkra. + +--- + +## Arab szöveg kinyerése – OCR kód írása + +Az alábbiakban a teljes, kész‑futtatható programot találod. Mentsd el `Program.cs`‑ként (vagy cseréld le a automatikusan generált fájlt). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Miért fontos minden sor + +- **`OcrEngine`**: A központi osztály, amely koordinálja a kép betöltését, a nyelvválasztást és a felismerést. +- **`Language = OcrLanguage.Arabic`**: Az arab jobbról balra írt írásmódot és egyedi glifjeit használja; a nyelv beállítása azt mondja a motornak, hogy a megfelelő karaktermodelleket alkalmazza. +- **`ImageStream.FromFile`**: Kezeli a PNG, JPEG, BMP és sok más formátumot. Ha valaha `MemoryStream`‑ből (pl. feltöltött fájlból) kell olvasnod, cseréld le ezt a hívást ennek megfelelően. +- **`Recognize()`**: Elvégzi a nehéz munkát – pixel‑analízist, szegmentálást és karakter‑osztályozást. +- **`ocrEngine.Text`**: A végleges Unicode karakterlánc, készen áll a további feldolgozásra, tárolásra vagy megjelenítésre. + +### Várt kimenet + +Ha az `arabic_sample.png` a „مرحبا بالعالم” (Hello World) kifejezést tartalmazza, a konzol a következőt fogja kiírni: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Ha a kimenet torznak tűnik, ellenőrizd, hogy a kép tiszta‑e, a nyelv arabra van‑e állítva, és az OCR motor verziója megegyezik a dokumentációban leírtakkal. + +--- + +## Kép‑szöveggé konvertálás – Pontosság finomhangolása + +Miközben az alapbeállítások a legtöbb tiszta szkennel működnek, a valós képek gyakran igényelnek egy kis plusz gondoskodást. + +| Beállítás | Mit csinál | Mikor használjuk | +|-----------|------------|-------------------| +| `ocrEngine.Config.Preprocess = true` | Automatikus binarizálást és zajeltávolítást engedélyez. | Árnyékos szkennelt dokumentumok. | +| `ocrEngine.Config.Deskew = true` | Elforgatja a képet a kis dőlésszög korrigálásához. | Szögben készült fényképek. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Az egész képet egy szöveggel blokként kezeli. | Egyszerű feliratok vagy egy‑soros címkék. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Korlátozza a felismerést csak arab karakterekre. | Csökkenti a hamis pozitív találatokat vegyes nyelvű oldalakon. | + +Ezeket a sorokat a motor létrehozása után adhatod hozzá: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Szöveg olvasása PNG‑ből – Különböző képforrások kezelése + +Néha a PNG egy adatbázisban vagy egy webkérésből érkezik. Íme egy gyors változat, amely `byte[]`‑ből olvas: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +A folyamat többi része változatlan marad, ami azt jelenti, hogy a **szöveg kinyerése** konzisztens marad a forrástól függetlenül. + +--- + +## Szöveg kinyerése – Haladó beállítások és szélhelyzetek + +### 1. Többoldalas PDF‑ek vagy TIFF‑ek + +Ha többoldalas dokumentumot kell OCR‑ezned, iterálj minden oldalon: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Megjegyzés:** Ehhez a kódrészlethez szükséged lesz az `Aspose.PDF` csomagra. + +### 2. Nyelv automatikus felismerése + +Az Aspose.OCR automatikus felismerést is kínál, de ez lassabb. Ha nem vagy biztos benne, hogy a kép arab vagy más írásrendszert tartalmaz, engedélyezd: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +A motor minden nyelvi modellt kipróbál, és a legjobban illeszkedőt választja. + +### 3. Teljesítmény tippek + +- **Használd újra a `OcrEngine`** objektumot több képhez; minden alkalommal új példány létrehozása plusz terhet jelent. +- **Futtasd párhuzamosan** csak akkor, ha minden szálhoz külön motor‑példány tartozik – egyetlen példány megosztása versenyhelyzetekhez vezet. + +--- + +## Összegzés + +Áttekintettük, **hogyan futtassunk OCR‑t** C#‑ban a kezdetektől a befejezésig, bemutatva, hogyan **nyerjünk ki arab szöveget**, **konvertáljunk képet szöveggé**, **olvassunk szöveget PNG‑ből**, és hogyan válaszoljunk a **szöveg kinyerése** kérdésre különböző szituációkban. A minta kód teljes, önálló, és készen áll arra, hogy bármely .NET konzolprojektbe beilleszd. + +Mi a következő lépés? Próbáld ki a `OcrLanguage.Arabic` helyett a koreai vagy a szerb cirill betűkészletet, hogy lásd a könyvtár többnyelvű erejét. Kísérletezz a preprocesszálási flag‑ekkel a zajos szkennelés pontosságának növeléséhez, vagy integráld az OCR‑rutint egy web‑API‑ba, hogy a felhasználók képeket tölthessenek fel és azonnali szöveges eredményt kapjanak. + +Boldog kódolást, és legyen az OCR eredményed mindig kristálytiszta! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/hungarian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..ec7e6420 --- /dev/null +++ b/ocr/hungarian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-01-10 +description: Tanulja meg, hogyan ismerje fel a szöveget a képről, hogyan nyerje ki + a szöveg koordinátáit, és hogyan konvertálja a nyugtát JSON formátumba az Aspose + OCR használatával C#‑ban. Lépésről‑lépésre útmutató. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: hu +og_description: Szöveg felismerése képről C#-ban az Aspose OCR használatával. Ez az + útmutató bemutatja, hogyan lehet szöveget kinyerni, koordinátákat lekérni, és a + nyugtát JSON formátumba konvertálni. +og_title: szöveg felismerése képről – Teljes C# OCR útmutató +tags: +- OCR +- C# +- Aspose +title: Szöveg felismerése képről C#-ban – Teljes útmutató az OCR-hez és a JSON-hez +url: /hu/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Képről szöveg felismerése – Teljes C# OCR útmutató + +Valaha szükséged volt már arra, hogy képről szöveget ismerj fel, de nem tudtad, melyik könyvtárat válaszd? Nem vagy egyedül. Sok valós alkalmazásban – költségkövetők, nyugtabeolvasók vagy dokumentumarchívumok – a szöveg megbízható kinyerése az első akadály. + +Ebben az útmutatóban végigvezetünk a **szöveg kinyerésének** folyamatán, lekérjük a határoló dobozokat, és végül **átalakítjuk a nyugtát JSON formátumba** az Aspose.OCR for .NET segítségével. A végére egy önálló C# projekted lesz, amely egy nyugta fényképét veszi, és egy rendezett JSON fájlt ad ki a megbízhatósági pontszámokkal és koordinátákkal. + +## Amire szükséged lesz + +Mielőtt belevágnánk, győződj meg róla, hogy a következő elemek telepítve vannak a gépeden: + +- **.NET 6.0 SDK** (vagy bármely újabb verzió). Régebbi keretrendszerek is működnek, de a .NET 6 a legideálisabb a modern könyvtárakhoz. +- **Visual Studio 2022** vagy VS Code a C# kiegészítővel. +- **Aspose.OCR for .NET** NuGet csomag (`Aspose.OCR` és `Aspose.OCR.Output`). Telepítheted a Package Manager Console‑on keresztül: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Egy minta nyugta kép (például `receipt.jpg`), amelyet egy később hivatkozott mappában helyezel el. + +Ennyi—nincs extra SDK, nincs natív bináris, csak tiszta managed kód. + +## 1. lépés: Új konzolprojekt létrehozása + +Először is, indíts egy konzolalkalmazást. Ez a leggyorsabb módja az OCR tesztelésének UI terhelés nélkül. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Pro tipp:** Tartsd rendezettnek a projekt mappát; hozz létre egy `Resources` almappát, és helyezd bele a `receipt.jpg` fájlt. Így a útvonalkezelés egyszerű lesz. + +## 2. lépés: A nyugta kép betöltése + +Most már ténylegesen **szöveget ismerünk fel képről**. Az első lépés, hogy az OCR motorra mutassuk a fájlt. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Miért csomagoljuk a betöltést egy egyszerű létezés‑ellenőrzéssel? Mert éles környezetben gyakran felhasználói feltöltésekkel dolgozol, amelyek hiányozhatnak vagy sérültek lehetnek. A probléma korai elkapása megakadályozza a későbbi rejtélyes kivételeket. + +## 3. lépés: OCR végrehajtása – **szöveg felismerése képről** + +Miután a kép a memóriában van, megkérjük az Aspose‑t, hogy **szöveget ismerjen fel képről**. Ez a művelet szinkron, és gazdag eredményhalmazt ad vissza. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +A háttérben az Aspose egy több millió karakteren tanított neurális hálózatot futtat. A motor feltölti a `ocrEngine.Text`, `ocrEngine.RecognitionResult` és egy `OcrRegion` objektumok gyűjteményét, amelyek koordinátákat tartalmaznak. Pontosan ez kell a következő lépéshez. + +## 4. lépés: **Hogyan nyerjünk ki szöveget** – Nyers karakterlánc lekérése + +Ha csak a tiszta szöveg érdekel (például gyors kereséshez), közvetlenül a motorból is kinyerheted: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Észre fogod venni a sortöréseket, ahol az OCR bekezdés határokat észlelt. Sok nyugta‑olvasási esetben a nyers karakterlánc elegendő a végösszeg, dátum vagy kereskedő neve egyszerű reguláris kifejezésekkel történő kinyeréséhez. + +## 5. lépés: **szöveg koordináták kinyerése** – Határoló dobozok minden szóhoz + +Gyakran szükséges tudni, hogy a képen *hol* található egy adott szövegrész – például a teljes összeg kiemeléséhez a felhasználói felületen. Az Aspose ezt `OcrRegion` objektumokkal biztosítja. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Vedd észre, hogy minden felismert szegmenshez **szöveg koordinátákat nyerünk ki** egy ciklusban. A koordináták az eredeti képhez képest relatívak, így felülhelyezheted őket egy grafikus vásznon vagy egy HTML `` elemben. + +## 6. lépés: **nyugta átalakítása JSON‑ba** – Részletes eredmények mentése + +Most jön az a rész, amely mindent összekapcsol: egy gép‑olvasó struktúrát szeretnénk, amely tartalmazza a szöveget, a megbízhatósági pontszámokat és a határoló dobozokat. Az Aspose a `JsonSaveOptions`‑zal érkezik, ami ezt egyszerűvé teszi. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Az eredményül kapott fájl valahogy így néz ki (rövidítve a tömörség kedvéért): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Most már rendelkezel egy **nyugta átalakítása JSON‑ba** művelettel, amelyet továbbíthatsz downstream szolgáltatások felé – például költségjelentés API‑k, elemzési csővezetékek vagy akár egy egyszerű UI, amely téglalapokat rajzol minden szó köré. + +## Teljes működő példa + +Az összes elemet összeállítva, itt a teljes `Program.cs`, amelyet beilleszthetsz a projektedbe: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Futtasd a programot (`dotnet run`) és figyeld a konzol kimenetet. Nyisd meg a `Resources/receipt.json` fájlt a struktúra ellenőrzéséhez. + +## Gyakori kérdések és szélhelyzetek + +- **Mi van, ha a kép elmosódott?** + Az Aspose OCR a legjobban 300 dpi vagy annál magasabb felbontásnál működik. Ha alacsony megbízhatósági pontszámokat kapsz, fontold meg egy élesítő szűrő alkalmazását a kép motorba való betáplálása előtt. + +- **Több nyelvet is fel tudok ismerni?** + Igen. Állítsd be `ocrEngine.Language = Language.English | Language.Spanish;` a `Recognize()` hívása előtt. + +- **Hogyan korlátozhatom a kimenetet csak számokra (pl. összeg)?** + Miután megvan a tiszta szöveg, futtass egy reguláris kifejezést, például `\d+\.\d{2}` a `ocrEngine.Text`‑en. Mivel már rendelkezünk koordinátákkal, a megtalált karakterláncot visszafejtheted a megfelelő régióra a vizuális kiemeléshez. + +- **A JSON formátum testreszabható?** + A `JsonSaveOptions` osztály néhány flag‑et tesz elérhetővé. Ha teljesen egyedi sémára van szükséged, iterálhatsz a `ocrEngine.RecognitionResult.Regions` elemein, és saját magad sorosíthatod az objektumokat a `System.Text.Json`‑nal. + +## Összegzés + +Most bemutattuk, hogyan **ismerjünk fel szöveget képről** C#‑ban az Aspose.OCR használatával, **hogyan nyerjünk ki szöveget**, **szöveg koordinátákat nyerjünk ki**, és végül **nyugtát alakítsunk át JSON‑ba**. Az egész folyamat egyetlen, könnyen futtatható konzolalkalmazásban él, ami tökéletes prototípusokhoz vagy nagyobb rendszerek építőelemeként. + +Következő lépések? Próbáld meg a JSON‑t egy front‑endbe betáplálni, amely kirajzolja a határoló dobozokat, vagy csatlakoztasd a kimenetet egy költségjelentő szolgáltatáshoz. Kísérletezhetsz különböző képformátumokkal (PNG, TIFF) vagy kötegelt feldolgozással egy nyugták mappáját. + +További kérdéseid vannak az OCR‑rel, az Aspose‑szal vagy a JSON kezelésével kapcsolatban? Írj egy megjegyzést alább, és jó kódolást! + +![Nyugta kép példa a szöveg felismeréséhez képről](receipt.jpg "Nyugta kép példa") + +{{< /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/net/ocr-configuration/_index.md b/ocr/indonesian/net/ocr-configuration/_index.md index 1cc534ea..409b34ab 100644 --- a/ocr/indonesian/net/ocr-configuration/_index.md +++ b/ocr/indonesian/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Buka kekuatan pengenalan gambar OCR di .NET dengan Aspose.OCR. Ekstrak teks deng Buka kemampuan OCR yang kuat dengan Aspose.OCR untuk .NET. Ekstrak teks dari gambar dengan mulus. ### [Operasi OCRO dengan Daftar dalam Pengenalan Gambar OCR](./ocr-operation-with-list/) Buka potensi Aspose.OCR untuk .NET. Lakukan pengenalan gambar OCR dengan mudah menggunakan daftar. Tingkatkan produktivitas dan ekstraksi data dalam aplikasi Anda. +### [Membaca Embedded Resource di .NET – Panduan Lengkap Menetapkan Lisensi Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Pelajari cara membaca embedded resource di .NET dan mengatur lisensi Aspose secara lengkap. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/indonesian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..513e883c --- /dev/null +++ b/ocr/indonesian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-01-10 +description: Baca sumber daya yang disematkan dan atur lisensi Aspose di C#. Pelajari + cara menggunakan GetManifestResourceStream, menyematkan file lisensi, dan mendapatkan + assembly yang sedang dieksekusi .NET dalam satu tutorial. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: id +og_description: Baca sumber daya yang disematkan di .NET dan atur lisensi Aspose dengan + cepat. Panduan langkah demi langkah yang mencakup GetManifestResourceStream, menyematkan + lisensi, dan menggunakan assembly yang sedang dijalankan. +og_title: Baca Sumber Daya Tersemat – Atur Lisensi Aspose di .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Membaca Sumber Daya Tersemat di .NET – Panduan Lengkap untuk Mengatur Lisensi + Aspose +url: /id/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Baca Sumber Daya Tersemat – Panduan Lengkap untuk Menetapkan Lisensi Aspose + +Pernahkah Anda perlu **read embedded resource** pada runtime dan bertanya-tanya bagaimana cara melisensikan perpustakaan Aspose OCR Anda tanpa menuliskan jalur secara keras? Anda bukan satu-satunya. Dalam banyak aplikasi perusahaan, file lisensi berada di dalam assembly sehingga Anda tidak perlu mengirim file tambahan atau khawatir tentang izin yang hilang. Tutorial ini menunjukkan secara tepat cara membaca sumber daya tersemat dan menetapkan lisensi Aspose menggunakan metode .NET `GetManifestResourceStream`. + +Kami akan membahas semua yang Anda perlukan: menyematkan file `.lic`, mengambilnya dengan `GetExecutingAssembly`, dan akhirnya menerapkannya ke kelas `License` Aspose OCR. Pada akhir tutorial, Anda akan memiliki solusi mandiri yang berfungsi pada proyek .NET apa pun—tanpa file eksternal. + +## Apa yang Akan Anda Pelajari + +- **How to embed a license file** ke dalam proyek .NET sehingga menjadi bagian dari DLL yang dikompilasi. +- Cara yang tepat untuk **use GetManifestResourceStream** untuk membaca sumber daya tersemat tersebut. +- Cara **set Aspose license** secara programatis tanpa menyentuh sistem file. +- Tips untuk menangani jebakan umum seperti nama sumber daya yang salah eja atau aksi build yang hilang. +- Contoh kode lengkap yang dapat dijalankan yang dapat Anda masukkan ke dalam solusi Anda. + +### Prasyarat + +- .NET 6.0 atau yang lebih baru (kode ini juga berfungsi pada .NET Framework 4.x, cukup sesuaikan file proyeknya). +- Paket NuGet Aspose.OCR terpasang (`dotnet add package Aspose.OCR`). +- Familiaritas dasar dengan C# dan Visual Studio (atau IDE favorit Anda). + +Jika Anda sudah memiliki semua itu, bagus—mari kita mulai. + +## Langkah 1: Sematkan File Lisensi Aspose ke dalam Assembly Anda + +Hal pertama yang Anda butuhkan adalah file lisensi yang sebenarnya (`Aspose.OCR.lic`). Alih-alih menyalinnya di samping executable Anda, Anda akan menyematkannya sebagai **resource**. + +1. Tambahkan file `.lic` ke proyek Anda (misalnya, buat folder `Resources` dan letakkan file di sana). +2. Di properti file, atur **Build Action** menjadi `Embedded Resource`. + *Pro tip:* pertahankan struktur folder sederhana; nama sumber daya yang sepenuhnya memenuhi syarat akan menjadi `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Mengapa menyematkan? Karena assembly kini membawa lisensi di dalamnya, menghilangkan risiko file yang hilang pada server produksi. + +## Langkah 2: Ambil Sumber Daya Tersemat Menggunakan GetExecutingAssembly + +Sekarang lisensi berada di dalam DLL, Anda memerlukan cara untuk **read embedded resource** pada runtime. Kelas .NET `Assembly` memberikan hal itu secara tepat. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +Metode `GetExecutingAssembly` mengembalikan assembly yang sedang berjalan—sempurna untuk menemukan sumber daya yang berada berdampingan dengan kode Anda. + +## Langkah 3: Buka Stream Lisensi dengan GetManifestResourceStream + +Dengan referensi assembly di tangan, Anda dapat memanggil `GetManifestResourceStream`. Metode ini mengembalikan `Stream` yang dapat Anda berikan langsung ke Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Perhatikan kami menggunakan pernyataan `using` **null‑conditional** (`using Stream?`) untuk memastikan stream dibuang secara otomatis. Jika nama salah, kami melempar pengecualian yang jelas—ini menyelamatkan Anda dari kegagalan diam-diam di kemudian hari. + +## Langkah 4: Terapkan Lisensi ke Aspose OCR + +Kelas `License` Aspose mengharapkan sebuah `Stream`. Kita sudah memilikinya, jadi langkah akhir menjadi sederhana. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Itu saja! Mesin Aspose OCR kini sepenuhnya berlisensi dan siap memproses gambar tanpa watermark percobaan. + +## Contoh Kerja Lengkap + +Berikut adalah program lengkap yang siap disalin‑tempel yang menunjukkan seluruh proses. Program ini mencakup direktif `using` yang diperlukan, penanganan error, dan panggilan OCR sederhana untuk membuktikan lisensi aktif. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Output yang Diharapkan + +Saat Anda menjalankan program pada mesin dengan lisensi yang valid tersemat, Anda akan melihat: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Jika stream lisensi tidak dapat ditemukan, konsol akan melaporkan nama sumber daya yang hilang, mengarahkan Anda untuk memeriksa kembali **Build Action** dan namespace. + +## Kesalahan Umum & Cara Menghindarinya + +| Issue | Why It Happens | Fix | +|-------|----------------|-----| +| **Resource name mismatch** | .NET membangun nama resource dari namespace default + jalur folder. | Gunakan `Assembly.GetManifestResourceNames()` untuk menampilkan nama yang tersedia dan memverifikasi string yang tepat. | +| **License file not set as Embedded Resource** | Aksi Build default adalah `Content`. | Ubah menjadi `Embedded Resource` di properti file. | +| **Running from a different assembly** | Jika Anda memanggil kode dari pustaka kelas, `GetExecutingAssembly()` mungkin mengembalikan pustaka alih-alih exe utama. | Gunakan `Assembly.GetEntryAssembly()` atau berikan assembly yang tepat secara eksplisit. | +| **Stream disposed before use** | Tidak sengaja menggunakan blok `using` yang menutup stream terlalu cepat. | Pertahankan `using` di sekitar pemanggilan `SetLicense`, seperti yang ditunjukkan di atas. | +| **Aspose.OCR version mismatch** | Versi yang lebih baru mungkin memerlukan format lisensi yang berbeda. | Selalu unduh lisensi terbaru dari akun Aspose Anda dan sematkan kembali. | + +## Menggunakan Teknik yang Sama untuk File Tersemat Lainnya + +Pola—**read embedded resource**, kemudian **use GetManifestResourceStream**—bekerja untuk jenis file apa pun: konfigurasi JSON, gambar, bahkan DLL native. Cukup sesuaikan `resourceName` dan cara Anda menggunakan stream. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Gambaran Visual + +![Diagram yang menggambarkan cara membaca sumber daya tersemat dan menetapkan lisensi Aspose](read-embedded-resource-diagram.png) + +*Alt text:* read embedded resource – diagram yang menunjukkan proses penyematan, pengambilan dengan GetManifestResourceStream, dan penerapan lisensi Aspose. + +## Ringkasan + +Kami telah membahas cara **read embedded resource** dalam assembly .NET, langkah tepat untuk **use GetManifestResourceStream**, dan cara bersih untuk **set Aspose license** tanpa mengekspos file di disk. Dengan menyematkan lisensi, Anda menghilangkan masalah deployment dan menjaga aplikasi tetap portabel. + +## Apa Selanjutnya? + +- **Automate license updates:** Tulis skrip build‑time kecil yang menggantikan file `.lic` tersemat ketika Anda memperbarui langganan Aspose. +- **Secure the resource:** Pertimbangkan untuk mengenkripsi lisensi sebelum menyematkan dan mendekripsinya pada runtime untuk perlindungan tambahan. +- **Explore other Aspose products:** Pendekatan yang sama bekerja untuk Aspose.Words, Aspose.PDF, dll., masing‑masing dengan kelas `License`nya sendiri. + +Silakan bereksperimen—mungkin Anda akan menyematkan beberapa lisensi untuk modul yang berbeda, atau beralih ke nama sumber daya yang dikendalikan oleh konfigurasi. Tidak ada batasnya. + +--- + +*Selamat coding! Jika Anda mengalami kendala, tinggalkan komentar di bawah atau periksa forum Aspose untuk contoh lebih lanjut.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/indonesian/net/skew-angle-calculation/_index.md index c65ca917..945c5c4d 100644 --- a/ocr/indonesian/net/skew-angle-calculation/_index.md +++ b/ocr/indonesian/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ Jelajahi Aspose.OCR untuk .NET, solusi OCR canggih untuk pengenalan teks akurat Bebaskan kecanggihan Aspose.OCR untuk .NET, solusi tangguh untuk pengenalan gambar. Pelajari cara menghitung sudut kemiringan dengan mudah. ### [Hitung Sudut Kemiringan dari URI dalam Pengenalan Gambar OCR](./calculate-skew-angle-from-uri/) Jelajahi Aspose.OCR untuk .NET untuk menghitung sudut kemiringan dengan mudah dalam pengenalan gambar OCR. Tingkatkan proyek Anda dengan presisi dan efisiensi. +### [Cara Mengoreksi Kemiringan Gambar di C# – Panduan Lengkap Pra‑Pemrosesan OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Pelajari cara mengoreksi kemiringan gambar di C# dengan langkah‑langkah pra‑pemrosesan OCR yang lengkap dan mudah diikuti. {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/indonesian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..b8284a48 --- /dev/null +++ b/ocr/indonesian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,266 @@ +--- +category: general +date: 2026-01-10 +description: Cara mengoreksi kemiringan gambar dan meningkatkan hasil OCR dengan Aspose.OCR. + Pelajari cara memproses gambar untuk OCR, menghilangkan noise dari pemindaian, dan + mengenali teks dari pemindaian. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: id +og_description: Cara mengoreksi kemiringan gambar dan meningkatkan akurasi OCR. Panduan + ini menunjukkan cara memproses gambar untuk OCR, menghilangkan noise dari pemindaian, + dan mengenali teks dari pemindaian menggunakan Aspose.OCR. +og_title: Cara Mengoreksi Kemiringan Gambar di C# – Panduan Lengkap Pra‑Pemrosesan + OCR +tags: +- OCR +- C# +- Image Processing +title: Cara Mengoreksi Kemiringan Gambar di C# – Panduan Lengkap Pra‑Pemrosesan OCR +url: /id/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Mengoreksi Kemiringan Gambar di C# – Panduan Lengkap Pra‑Pemrosesan OCR + +Pernah bertanya-tanya **bagaimana cara mengoreksi kemiringan gambar** sebelum memasukkannya ke mesin OCR? Anda bukan satu-satunya. Dokumen yang dipindai sering miring, berisik, atau kontras rendah, dan itu mengganggu setiap upaya pengenalan teks. + +Dalam tutorial ini kami akan membahas contoh lengkap yang dapat dijalankan yang **memproses gambar untuk OCR**, menghapus noise dari pemindaian, dan akhirnya **mengenali teks dari pemindaian** menggunakan pustaka Aspose.OCR. Pada akhir tutorial Anda akan memiliki gambaran jelas tentang **cara menggunakan OCR** di C# sambil menjaga kode tetap singkat dan sederhana. + +> **Pro tip:** Bahkan rotasi kecil (5‑10°) dapat menurunkan akurasi OCR hingga 30 % atau lebih. Mengoreksi kemiringan adalah langkah pertama yang tidak boleh Anda lewati. + +--- + +## Apa yang Anda Butuhkan + +- **.NET 6+** (kode ini juga berfungsi di .NET Framework, tetapi .NET 6 adalah LTS saat ini) +- **Aspose.OCR untuk .NET** – Anda dapat mengunduhnya dari NuGet (`Install-Package Aspose.OCR`) +- Contoh file TIFF/PNG/JPEG yang diputar atau berisik (kami akan menggunakan `noisy_rotated.tif` dalam contoh) +- IDE apa pun yang Anda suka – Visual Studio, Rider, atau VS Code sudah cukup + +Itu saja. Tidak ada pustaka tambahan, tidak ada layanan eksternal. + +--- + +## Langkah 1 – Memuat Gambar Sumber (Mengapa Ini Penting) + +Sebelum kita dapat **mengoreksi kemiringan gambar**, kita perlu membacanya ke dalam `ImageStream` Aspose. Objek ini mengabstraksi I/O file dan memberikan antarmuka yang konsisten kepada mesin OCR. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Mengapa harus memuat dulu?* Karena semua filter berikutnya beroperasi pada gambar di memori. Jika file tidak dapat dibaca, seluruh pipeline akan gagal. + +--- + +## Langkah 2 – Membangun Pipeline Pra‑Pemrosesan (Deskew + Denoise + Contrast) + +Alur kerja OCR yang kuat biasanya menghubungkan beberapa filter. Di sinilah kami **memproses gambar untuk OCR** dan, yang lebih penting, **cara mengoreksi kemiringan gambar** secara otomatis. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Mengapa ketiga ini?** +- **DeskewFilter** menyelesaikan masalah “cara mengoreksi kemiringan gambar” secara otomatis; Anda tidak perlu menebak sudutnya. +- **DenoiseFilter** menangani kebutuhan “menghapus noise dari pemindaian”, yang jika tidak akan menghasilkan karakter phantom. +- **ContrastBoostFilter** membantu mesin OCR membedakan teks gelap dari latar belakang terang, masalah klasik ketika Anda *memproses gambar untuk OCR*. + +--- + +## Langkah 3 – Menerapkan Pipeline (Melihat Transformasi) + +Sekarang kami benar‑benar menjalankan filter. `processedImage` yang dikembalikan adalah apa yang akan kami berikan ke mesin OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Jika Anda membuka `cleaned_output.tif`, Anda akan melihat teks menjadi lurus, kurang berbutir, dan dengan kontras lebih tinggi. Pemeriksaan visual ini berguna ketika Anda *menghapus noise dari pemindaian* dan ingin memastikan proses koreksi kemiringan berhasil. + +--- + +## Langkah 4 – Membuat dan Mengonfigurasi Mesin OCR (Cara Menggunakan OCR) + +Dengan gambar yang rapi, kami menginstansiasi `OcrEngine`. Ini adalah inti dari **cara menggunakan OCR** dengan Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Mengapa mengatur `AutoPageSegmentation`?* Karena banyak pemindaian berisi tabel atau beberapa kolom. Mengaktifkannya memungkinkan mesin membagi halaman secara cerdas, meningkatkan hasil akhir **mengenali teks dari pemindaian**. + +--- + +## Langkah 5 – Menjalankan Proses Pengenalan (Akhirnya Mengenali Teks) + +Sekarang saatnya menguji: kami meminta mesin membaca teks. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Jika semuanya berjalan lancar, Anda akan melihat blok teks bersih yang cocok dengan dokumen asli. Itulah hasil dari **mengoreksi kemiringan gambar**, **menghapus noise**, dan **memproses gambar untuk OCR** secara tepat. + +--- + +## Langkah 6 – Contoh Lengkap yang Dapat Dijalankan (Siap Salin‑Tempel) + +Berikut adalah program lengkap, siap untuk dikompilasi. Cukup ganti jalur file dan Anda siap melanjutkan. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Output yang diharapkan** (dipotong untuk singkat): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Jika output terlihat berantakan, periksa kembali bahwa gambar sumber tidak diputar lebih dari 30°, atau tingkatkan `DeskewFilter.MaxAngle`. + +--- + +## Pertanyaan yang Sering Diajukan (Kasus Tepi & Variasi) + +| Question | Answer | +|----------|--------| +| **Bagaimana jika pemindaian saya diputar 45°?** | `DeskewFilter` dibatasi pada `MaxAngle`. Tingkatkan nilai tersebut (mis., `MaxAngle = 60`) atau pra‑putar gambar dengan perpustakaan grafis sebelum memasukkannya ke pipeline. | +| **Bisakah saya memproses PDF halaman‑per‑halaman?** | Ya. Konversi setiap halaman PDF menjadi gambar (mis., menggunakan `Aspose.Pdf`) dan jalankan pipeline yang sama pada setiap bitmap. | +| **Dokumen saya berbahasa Prancis – apakah saya perlu mengubah apa pun?** | Setel `ocrEngine.Language = Language.French;` atau muat paket bahasa khusus. Sisanya pipeline tetap sama. | +| **Apakah ada cara untuk mempertahankan resolusi asli?** | `PreprocessPipeline` bekerja pada bitmap asli, mempertahankan DPI. Hindari memanggil `ImageStream.Resize` kecuali Anda perlu memperkecil ukuran untuk kinerja. | +| **Bagaimana peningkatan kontras memengaruhi pemindaian berwarna?** | `ContrastBoostFilter` bekerja pada setiap saluran; aman untuk gambar grayscale atau berwarna, tetapi Anda juga dapat mengonversi ke grayscale terlebih dahulu dengan `new GrayscaleFilter()`. | + +--- + +## Contoh Gambar (Bantuan Visual) + +![how to deskew image example](/images/deskew-example.png) + +*Gambar ini menunjukkan sebelum/dan sesudah pemindaian berisik yang diputar 12° yang telah dikoreksi kemiringannya dan dibersihkan.* + +--- + +## Kesimpulan + +Kami telah membahas **cara mengoreksi kemiringan gambar** menggunakan Aspose.OCR, mendemonstrasikan pipeline lengkap **memproses gambar untuk OCR**, menunjukkan cara **menghapus noise dari pemindaian**, dan akhirnya **mengenali teks dari pemindaian** dengan beberapa baris kode C#. Dengan menghubungkan `DeskewFilter`, `DenoiseFilter`, dan `ContrastBoostFilter` Anda mendapatkan bitmap rapi yang memungkinkan mesin OCR melakukan tugasnya tanpa terhambat oleh artefak. + +Langkah selanjutnya? Cobalah bereksperimen dengan kekuatan filter yang berbeda, tambahkan `BinarizationFilter` untuk output hitam‑putih murni, atau masukkan gambar yang telah dibersihkan ke dalam pipeline NLP selanjutnya. Pola yang sama berlaku untuk kwitansi, paspor, dan dokumen bersejarah. + +Ada pertanyaan lebih lanjut tentang **cara menggunakan OCR** dalam bahasa atau kerangka kerja lain? Tinggalkan komentar, 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/net/text-recognition/_index.md b/ocr/indonesian/net/text-recognition/_index.md index 7aee7bb8..a97357f2 100644 --- a/ocr/indonesian/net/text-recognition/_index.md +++ b/ocr/indonesian/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Tingkatkan aplikasi .NET Anda dengan Aspose.OCR untuk pengenalan teks gambar yan Buka potensi OCR di .NET dengan Aspose.OCR. Ekstrak teks dari PDF dengan mudah. Unduh sekarang untuk pengalaman integrasi yang lancar. ### [Kenali Tabel dalam Pengenalan Gambar OCR](./recognize-table/) Buka potensi Aspose.OCR untuk .NET dengan panduan komprehensif kami tentang mengenali tabel dalam pengenalan gambar OCR. +### [Cara Menjalankan OCR di C# – Panduan Lengkap dengan Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Pelajari cara mengimplementasikan OCR di C# menggunakan Aspose OCR dengan panduan langkah demi langkah yang lengkap. +### [Cara Menjalankan OCR di C# – Ekstrak Teks Arab dari PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Pelajari cara menggunakan Aspose.OCR di C# untuk mengekstrak teks Arab dari gambar PNG dengan langkah mudah. +### [Ekstrak Teks dari Gambar dengan Aspose OCR – Panduan Lengkap C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Pelajari cara mengekstrak teks dari gambar menggunakan Aspose OCR dalam panduan lengkap C#. +### [Buat PDF yang Dapat Dicari dari PNG di C# – Panduan Lengkap](./create-searchable-pdf-from-png-in-c-complete-guide/) +Pelajari cara mengubah gambar PNG menjadi PDF yang dapat dicari menggunakan Aspose.OCR di C# dengan panduan lengkap langkah demi langkah. +### [Ekstrak Teks dari Gambar dalam C# – Panduan Lengkap Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Pelajari cara mengekstrak teks dari gambar menggunakan Aspose OCR dalam panduan lengkap C#. +### [Mengenali Teks dari Gambar di C# – Panduan Lengkap OCR dan JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Pelajari cara mengenali teks dari gambar menggunakan Aspose.OCR di C# dan mengonversinya ke format JSON dengan panduan langkah demi langkah. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/indonesian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..8d9213fc --- /dev/null +++ b/ocr/indonesian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Buat PDF yang dapat dicari dari PNG menggunakan C#. Pelajari cara mengonversi + gambar ke PDF, mengekstrak teks dari PNG, dan melakukan OCR pada gambar dengan C# + dalam satu tutorial mudah. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: id +og_description: Buat PDF yang dapat dicari dari PNG menggunakan C#. Panduan ini menunjukkan + cara mengonversi gambar ke PDF, mengekstrak teks dari PNG, dan melakukan OCR pada + gambar dengan C# menggunakan Aspose. +og_title: Buat PDF yang Dapat Dicari dari PNG di C# – Langkah demi Langkah +tags: +- Aspose OCR +- C# +- PDF/A +title: Buat PDF yang Dapat Dicari dari PNG di C# – Panduan Lengkap +url: /id/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Buat PDF yang Dapat Dicari dari PNG di C# – Panduan Lengkap + +Perlu **membuat PDF yang dapat dicari** dari file PNG di C#? Anda tidak sendirian—banyak pengembang mengalami kendala ini ketika ingin gambar yang dipindai dapat **ditampilkan** **dan** dapat dicari teksnya. Pada tutorial ini kami akan membahas seluruh alur: **mengonversi gambar ke PDF**, menjalankan OCR untuk **mengekstrak teks dari png**, dan akhirnya menyimpan semuanya sebagai dokumen **PDF/A‑2b** yang dapat dicari. + +Pada akhir tutorial Anda akan memiliki potongan kode tunggal yang dapat digunakan kembali dan dapat disisipkan ke proyek .NET mana pun, serta beberapa tips praktis yang akan menghemat waktu Anda di kemudian hari. Tanpa layanan eksternal, hanya menggunakan pustaka Aspose OCR dan beberapa baris C#. + +> **Prasyarat** +> * .NET 6+ (atau .NET Framework 4.7.2+). +> * Visual Studio 2022 atau IDE lain yang mendukung C#. +> * Lisensi Aspose OCR yang valid (atau percobaan gratis). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Buat PDF yang dapat dicari dari PNG menggunakan C#"} + +## Langkah 1 – Instal dan Referensikan Aspose OCR untuk C# + +Hal pertama yang harus dilakukan: Anda memerlukan paket NuGet Aspose OCR. Buka terminal Anda (atau Package Manager Console) dan jalankan: + +```bash +dotnet add package Aspose.OCR +``` + +Jika Anda lebih suka GUI, klik kanan proyek → **Manage NuGet Packages…** → cari *Aspose.OCR* dan instal versi stabil terbaru. + +Mengapa pustaka ini? Ia mendukung **convert png to pdf**, menangani gambar multi‑halaman, dan dapat menghasilkan PDF/A‑2b secara langsung—sempurna untuk membuat **searchable pdf** yang mematuhi standar arsip. + +> **Tips pro:** Daftarkan lisensi Anda di awal di `Program.cs` untuk menghindari watermark evaluasi. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Langkah 2 – Muat PNG dan Jalankan OCR (ekstrak teks dari png) + +Sekarang kita akan memuat gambar sumber. Helper `ImageStream.FromFile` menyembunyikan detail sistem file dan bekerja dengan format raster yang didukung. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +Pada titik ini mesin telah **extracted text from png** dan menyimpannya secara internal. Anda bahkan dapat memeriksa teks mentah melalui `ocrEngine.Text`, yang berguna untuk debugging atau pencatatan. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **Bagaimana jika gambar memiliki banyak halaman?** +> Aspose OCR memperlakukan setiap halaman sebagai lapisan terpisah. Cukup panggil `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` dan mesin akan mengiterasi secara otomatis. + +## Langkah 3 – Konfigurasikan Opsi PDF/A‑2b (buat searchable pdf) + +Untuk mengubah hasil OCR menjadi **searchable pdf**, kita perlu memberi tahu Aspose cara mengemas output. PDF/A‑2b adalah pilihan tepat untuk preservasi jangka panjang dan menjamin lapisan teks dapat dicari. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Mengapa menyematkan gambar asli? Beberapa pemeriksaan kepatuhan mengharuskan representasi visual cocok dengan pemindaian asli. Flag ini menjadikan file operasi **convert image to pdf** yang sesungguhnya sambil mempertahankan teks yang dapat dicari. + +## Langkah 4 – Simpan Hasil dan Verifikasi (convert png to pdf) + +Akhirnya, kita menulis file output. Metode `Save` yang sama bekerja untuk jalur apa pun yang Anda berikan. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Buka `output.pdf` yang dihasilkan di Adobe Reader atau penampil PDF apa pun dan coba cari kata yang muncul di PNG asli. Jika kata tersebut disorot, selamat—Anda berhasil **create searchable pdf** dari PNG! + +### Skrip verifikasi cepat (opsional) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Mengapa Menggunakan PDF/A‑2b untuk PDF yang Dapat Dicari? + +* **Keamanan arsip:** PDF/A‑2b menjamin file dapat ditampilkan dengan cara yang sama puluhan tahun ke depan. +* **Kepatuhan regulasi:** Banyak industri (hukum, medis, keuangan) memerlukan PDF/A untuk penyimpanan catatan. +* **Ketercarian:** Lapisan teks OCR yang disematkan membuat dokumen dapat diindeks oleh alat pencarian desktop. + +Jika Anda tidak memerlukan kepatuhan tambahan tersebut, Anda dapat menghapus baris `PdfAStandard` dan cukup menggunakan `new PdfSaveOptions()`—output tetap dapat dicari, hanya tidak dalam format PDF/A‑2b. + +## Kesalahan Umum & Cara Menghindarinya + +| Gejala | Penyebab Kemungkinan | Solusi | +|---------|----------------------|--------| +| Tidak ada teks yang dapat dicari muncul | `ocrEngine.Recognize()` tidak dipanggil atau gagal secara diam-diam | Pastikan jalur gambar benar dan lisensi telah didaftarkan. | +| PDF berukuran besar (10 + MB) | PNG asli beresolusi tinggi dan `EmbedOriginalImage` bernilai true | Turunkan resolusi gambar sebelum OCR atau set `EmbedOriginalImage = false`. | +| Teks menjadi kacau | Bahasa tidak terdeteksi otomatis | Set `ocrEngine.Language = "eng";` (atau bahasa target Anda) sebelum `Recognize()`. | + +## Contoh Lengkap yang Siap Pakai (Copy‑Paste) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Jalankan program, buka `output.pdf`, dan coba cari kata yang Anda ketahui ada di `input.png`. Jika semuanya cocok, Anda baru saja menguasai alur kerja **convert image to pdf** dan belajar cara **ocr image c#**. + +## Langkah Selanjutnya & Topik Terkait + +* **Pemrosesan batch:** Loop melalui folder PNG dan gabungkan hasilnya menjadi satu PDF. +* **Format output alternatif:** Aspose OCR juga dapat menghasilkan DOCX, TXT, atau searchable PDF/A‑1b. +* **Optimasi performa:** Gunakan `ocrEngine.RecognitionMode = RecognitionMode.Fast` untuk volume besar dimana akurasi mutlak tidak kritis. +* **Pustaka lain:** Jika Anda memiliki anggaran terbatas, jelajahi Tesseract .NET—meskipun Anda akan kehilangan dukungan PDF/A bawaan. + +--- + +### TL;DR + +Kami menunjukkan cara **create searchable pdf** dari PNG menggunakan Aspose OCR di C#. Langkah‑langkahnya: + +1. Instal Aspose OCR (`dotnet add package Aspose.OCR`). +2. Muat PNG dan jalankan `ocrEngine.Recognize()` (**extract text from png**). +3. Konfigurasikan `PdfSaveOptions` untuk PDF/A‑2b (**convert image to pdf** & **convert png to pdf**). +4. Simpan file dan verifikasi lapisan yang dapat dicari. + +Cobalah, sesuaikan opsi-opsinya, dan Anda akan memiliki pipeline yang kuat untuk mengubah gambar yang dipindai menjadi PDF yang siap arsip dan dapat dicari. 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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/indonesian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..2977bd14 --- /dev/null +++ b/ocr/indonesian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: Ekstrak teks dari gambar menggunakan Aspose OCR di C#. Pelajari cara + mengonversi teks dokumen yang dipindai dengan pemrosesan batch dan menyimpan hasilnya. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: id +og_description: Ekstrak teks dari gambar dengan Aspose OCR di C#. Tutorial ini menunjukkan + cara mengonversi teks dokumen yang dipindai menggunakan pemrosesan batch. +og_title: Ekstrak Teks dari Gambar di C# – Panduan Lengkap Aspose OCR +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Ekstrak Teks dari Gambar di C# – Panduan Lengkap Aspose OCR +url: /id/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ekstrak Teks dari Gambar – Panduan Lengkap Aspose OCR + +Pernah perlu **mengekstrak teks dari gambar** tetapi tidak tahu harus mulai dari mana? Anda tidak sendirian; banyak pengembang mengalami kebingungan saat menangani PDF yang dipindai, TIFF multi‑halaman, atau kwitansi berbasis foto. Kabar baiknya, dengan Aspose OCR Anda dapat **mengonversi teks dokumen yang dipindai** hanya dengan beberapa baris kode C#. + +Dalam tutorial ini kita akan membahas skenario dunia nyata: mengambil TIFF multi‑halaman, menjalankan OCR batch pada setiap halaman, dan menulis satu file teks yang berisi konten semua halaman. Pada akhir tutorial Anda akan memiliki aplikasi konsol yang siap dijalankan, memahami mengapa setiap langkah penting, dan tahu cara menyesuaikan alur untuk kasus khusus seperti gambar yang dilindungi kata sandi atau paket bahasa khusus. + +## Prasyarat + +- .NET 6.0 SDK atau yang lebih baru (kode ini juga bekerja dengan .NET Core dan .NET Framework) +- Visual Studio 2022 (atau editor lain pilihan Anda) +- File lisensi Aspose OCR (atau Anda dapat menggunakan mode evaluasi gratis) +- File gambar multi‑halaman (misalnya `multipage.tif`) yang ditempatkan di folder yang dapat Anda referensikan + +Tidak ada paket NuGet tambahan yang diperlukan selain `Aspose.OCR`; kami akan menginstalnya pada langkah pertama. + +## Langkah 1 – Instal Aspose OCR dan Siapkan Proyek + +Untuk memulai, buat proyek konsol baru dan tambahkan pustaka Aspose OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Tips pro:** Jika Anda memiliki file lisensi (`Aspose.OCR.lic`), salin ke root proyek. Pustaka akan otomatis mendeteksinya saat runtime. + +Mengapa langkah ini? Menginstal paket memberi Anda akses ke `BatchProcessor`, `OcrEngine`, dan kelas berguna lainnya yang menyederhanakan penanganan gambar tingkat rendah. Ini juga memastikan Anda menggunakan algoritma OCR terbaru yang disediakan Aspose. + +## Langkah 2 – Muat Gambar Multi‑Halaman dengan BatchProcessor + +`BatchProcessor` dirancang khusus untuk skenario ini: mengiterasi setiap halaman gambar multi‑halaman tanpa harus memisahkan file secara manual. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` membaca semua halaman ke memori, menampilkannya melalui `batchProcessor.Pages`. Setiap objek halaman mengetahui nomor halamannya (`ocrPage.Number`) yang akan kita gunakan nanti untuk judul yang jelas. + +## Langkah 3 – Siapkan StringBuilder untuk Mengakumulasi Hasil + +Kita menginginkan satu file teks yang berisi output OCR semua halaman, dipisahkan oleh header. `StringBuilder` adalah cara paling efisien untuk menggabungkan string dalam loop. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Mengapa `StringBuilder`? Menggabungkan string dengan `+` di dalam loop akan membuat alokasi string baru pada setiap iterasi, yang menurunkan kinerja—terutama pada dokumen besar. + +## Langkah 4 – Iterasi Setiap Halaman, Jalankan OCR, dan Tambahkan Hasil + +Sekarang inti tutorial: melakukan loop pada setiap halaman, mengenali teks, dan menyimpannya dengan penanda halaman. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Mengapa membuat `OcrEngine` baru untuk setiap halaman?** Beberapa pengembang menggunakan satu engine dan mengubah properti `Image`‑nya, tetapi hal itu dapat mempertahankan pengaturan bahasa atau hasil sebelumnya, yang menyebabkan bug halus. Membuat engine baru menjamin kondisi bersih. + +### Menangani Kasus Edge Umum + +- **Halaman kosong:** Jika sebuah halaman tidak mengandung teks yang dapat dikenali, `ocrEngine.Text` akan menjadi string kosong. Anda mungkin ingin menyisipkan placeholder seperti “(Tidak ada teks terdeteksi)”. +- **Pemilihan bahasa:** Secara default Aspose OCR menggunakan bahasa Inggris. Untuk memproses bahasa Jerman atau Prancis, setel `ocrEngine.Language = Language.German;` sebelum memanggil `Recognize()`. +- **Tips kinerja:** Untuk TIFF yang sangat besar, Anda dapat mengaktifkan `ocrEngine.UseParallelProcessing = true;` untuk memanfaatkan beberapa core. + +## Langkah 5 – Tulis Output Gabungan ke File Teks + +Akhirnya, simpan string yang telah terakumulasi ke disk. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +File `multipage_result.txt` yang dihasilkan akan terlihat kira‑kira seperti ini: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Sekarang Anda telah **mengekstrak teks dari gambar** dan secara efektif **mengonversi teks dokumen yang dipindai** menjadi format yang dapat dicari dan diedit. + +## Bonus – Gambaran Visual (Teks Alt) + +Berikut adalah diagram alur sederhana yang menggambarkan proses. +*Alt text:* “Diagram yang menunjukkan cara mengekstrak teks dari gambar menggunakan pemrosesan batch Aspose OCR di C#”. + +![Diagram alur OCR](placeholder-image-url.png) + +*(Jika Anda mempublikasikan tutorial ini di situs statis, ganti placeholder dengan SVG atau PNG yang sebenarnya.)* + +## Pertanyaan yang Sering Diajukan + +**Apakah ini bekerja dengan file PDF?** +Ya, Aspose OCR dapat membaca halaman PDF sebagai gambar. Anda hanya perlu mengonversi PDF ke gambar terlebih dahulu, atau menggunakan `PdfDocument` dari `Aspose.PDF` dan memberikan setiap gambar rasterisasi halaman ke `OcrEngine`. + +**Bagaimana jika TIFF saya dilindungi kata sandi?** +`BatchProcessor` tidak menangani enkripsi secara langsung. Dekripsi file menggunakan pustaka seperti `Aspose.Imaging` sebelum mengirimkannya ke pipeline OCR. + +**Bisakah saya menghasilkan JSON alih-alih teks biasa?** +Tentu saja. Ganti logika `StringBuilder` dengan serializer JSON (misalnya `System.Text.Json`) dan simpan teks setiap halaman di bawah kunci `pageNumber`. + +## Contoh Lengkap yang Berfungsi + +Berikut program lengkap yang dapat Anda salin‑tempel ke `Program.cs`. Termasuk semua directive `using`, penanganan error, dan komentar. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Jalankan program dengan: + +```bash +dotnet run +``` + +Anda akan melihat pesan konsol yang mengonfirmasi keberhasilan, dan file output akan berisi hasil OCR yang digabungkan. + +## Kesimpulan + +Kami baru saja mendemonstrasikan cara praktis **mengekstrak teks dari gambar** menggunakan Aspose OCR, mengubah file hasil pindai multi‑halaman menjadi teks biasa yang dapat dicari. Dengan memanfaatkan `BatchProcessor` dan setup `OcrEngine` per halaman yang bersih, Anda dapat secara andal **mengonversi teks dokumen yang dipindai** sambil menjaga kode tetap sederhana dan mudah dipelihara. + +Silakan bereksperimen: coba bahasa yang berbeda, ubah output menjadi JSON, atau integrasikan logika ini ke dalam API web yang memproses unggahan secara real‑time. Pola intinya tetap sama—muat, kenali, akumulasi, dan simpan. + +Masih ada pertanyaan tentang OCR, lisensi Aspose, atau menangani batch dokumen besar? Tinggalkan komentar di bawah atau lihat dokumentasi resmi Aspose untuk penjelasan lebih mendalam. 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/indonesian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..dd9e5859 --- /dev/null +++ b/ocr/indonesian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Ekstrak teks dari gambar menggunakan Aspose OCR di C#. Pelajari cara + memuat gambar untuk OCR, mengenali teks Hindi, dan menjalankan pengenalan OCR dalam + beberapa langkah sederhana. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: id +og_description: Ekstrak teks dari gambar menggunakan Aspose OCR di C#. Ikuti panduan + langkah demi langkah ini untuk memuat gambar untuk OCR, mengenali teks Hindi, dan + menjalankan pengenalan OCR. +og_title: Ekstrak Teks dari Gambar dengan Aspose OCR – Panduan Lengkap C# +tags: +- Aspose OCR +- C# +- Image Processing +title: Ekstrak Teks dari Gambar dengan Aspose OCR – Panduan Lengkap C# +url: /id/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ekstrak Teks dari Gambar dengan Aspose OCR – Panduan Lengkap C# + +Pernah perlu **mengekstrak teks dari gambar** tetapi tidak yakin pustaka mana yang dipilih? Anda tidak sendirian—banyak pengembang mengalami hal yang sama saat pertama kali menangani OCR di .NET. Kabar baiknya, Aspose OCR membuat seluruh proses terasa sangat mudah, bahkan ketika Anda berurusan dengan skrip kompleks seperti Hindi. + +Dalam tutorial ini kami akan membahas semua yang Anda perlukan untuk **memuat gambar untuk OCR**, **mengenali teks Hindi**, dan **menjalankan pengenalan OCR** dalam C#. Pada akhir tutorial, Anda akan memiliki aplikasi konsol siap‑jalankan yang mencetak teks yang diekstrak langsung ke layar. + +## Apa yang Akan Anda Bangun + +Kami akan membuat aplikasi konsol kecil yang: + +1. Menunjuk mesin OCR ke folder yang berisi model bahasa. +2. Menonaktifkan unduhan otomatis—berguna untuk lingkungan yang terkunci. +3. Memilih Hindi sebagai bahasa target. +4. Memuat JPEG (atau PNG) yang berisi teks Hindi. +5. Menjalankan pipeline pengenalan. +6. Menulis string hasil ke konsol. + +Tidak ada layanan eksternal, tidak ada kunci cloud, hanya OCR on‑premise murni. + +## Prasyarat + +- **.NET 6.0** atau yang lebih baru (kode juga berfungsi pada .NET Framework 4.7+). +- **Aspose.OCR for .NET** paket NuGet terpasang. + ```bash + dotnet add package Aspose.OCR + ``` +- Sebuah folder bernama `OcrResources` yang berisi model bahasa Hindi (`hin.traineddata`). + Anda dapat mengunduhnya dari halaman unduhan Aspose OCR dan menaruhnya ke `YOUR_DIRECTORY/OcrResources`. +- File gambar (`input.jpg`) dengan teks Hindi yang jelas. + Untuk ilustrasi, bayangkan foto tanda toko yang berisi “स्वागत है”. + +> **Pro tip:** Jaga resolusi gambar di atas 300 dpi; resolusi yang lebih rendah dapat menyebabkan karakter terlewat. + +--- + +## Langkah 1: Arahkan Mesin OCR ke Sumber Daya Anda – *ekstrak teks dari gambar* + +Hal pertama yang dibutuhkan Aspose OCR adalah lokasi model bahasa-nya. Jika Anda melewatkannya, mesin akan mencoba mengunduh file secara otomatis—sesuatu yang mungkin tidak Anda inginkan di jaringan yang aman. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Mengapa ini penting:* Dengan mengatur `ResourcesPath` Anda memastikan mesin memuat data terlatih yang tepat secara lokal, yang mempercepat eksekusi pertama dan menghilangkan lalu lintas jaringan yang tidak terduga. + +--- + +## Langkah 2: Nonaktifkan Unduhan Sumber Daya Otomatis – *muat gambar untuk OCR* + +Di banyak lingkungan perusahaan, akses internet keluar diblokir. Aspose OCR menghormati sebuah flag yang menghentikannya mencoba mengambil file yang hilang secara langsung. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Jika Anda lupa menambahkan baris ini dan model Hindi tidak ada, mesin akan melempar pengecualian yang berbunyi “Unable to download required resource”. Menetapkan flag `false` memberi Anda kegagalan yang jelas dan deterministik yang dapat Anda tangani sendiri. + +--- + +## Langkah 3: Pilih Bahasa – *mengenali teks hindi* + +Aspose OCR mendukung puluhan bahasa, tetapi Anda harus memberi tahu bahasa mana yang akan digunakan. Hindi diidentifikasi dengan `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Bagaimana jika Anda membutuhkan beberapa bahasa?* Anda dapat mengatur `Language = OcrLanguage.AutoDetect` agar mesin menebak, tetapi auto‑detect lebih lambat dan kadang‑kadang salah pada skrip campuran. Untuk Hindi murni, pemilihan eksplisit adalah pilihan paling aman. + +--- + +## Langkah 4: Muat Gambar Anda – *muat gambar untuk OCR* + +Sekarang kami memberikan gambar yang ingin dibaca ke mesin. Aspose menyediakan helper `ImageStream.FromFile` yang praktis yang menyembunyikan ketergantungan `System.Drawing` di baliknya. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Jika jalur file salah, Aspose akan mengeluarkan `FileNotFoundException`. Pemeriksaan cepat `File.Exists` sebelum baris ini dapat menyelamatkan Anda dari sesi debugging. + +--- + +## Langkah 5: Jalankan Mesin OCR – *jalankan pengenalan OCR* + +Dengan semua konfigurasi selesai, kami akhirnya memulai proses pengenalan. Panggilan ini bersifat sinkron dan memblokir hingga teks diekstrak. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Di balik layar, Aspose melakukan beberapa tahap: pra‑pemrosesan (deskew, penghilangan noise), segmentasi, klasifikasi karakter, dan akhirnya pasca‑pemrosesan spesifik bahasa. Beban berat terjadi di dalam satu panggilan metode ini. + +--- + +## Langkah 6: Keluarkan Teks yang Diekstrak – *ekstrak teks dari gambar* + +Hasilnya berada di properti `Text` mesin. Kami cukup menuliskannya ke konsol, tetapi Anda juga dapat menyimpannya di basis data, mengirimnya melalui API, atau memasukkannya ke pipeline NLP lain. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Output yang diharapkan** (asumsi gambar berisi “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +Jika Anda melihat karakter yang kacau, periksa kembali bahwa model Hindi ditempatkan dengan benar dan gambar tidak terlalu terkompresi. + +--- + +## Contoh Lengkap yang Berfungsi + +Berikut adalah program lengkap yang dapat Anda salin‑tempel ke proyek konsol baru (`dotnet new console`). Ganti `YOUR_DIRECTORY` dengan jalur sebenarnya di mesin Anda. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** Jika Anda berencana memproses banyak gambar dalam loop, buat satu instance `OcrEngine` dan gunakan kembali—ini mengurangi beban inisialisasi. + +--- + +## Menangani Kendala Umum + +| Masalah | Mengapa Terjadi | Perbaikan Cepat | +|-------|----------------|-----------| +| **Output kosong** | Model bahasa salah atau gambar ber kualitas rendah. | Verifikasi `ResourcesPath`, tingkatkan DPI gambar, atau coba `ocrEngine.Image = ImageStream.FromFile(..., true)` untuk mengaktifkan peningkatan otomatis. | +| **Pengecualian: Sumber daya tidak ditemukan** | Model Hindi `.traineddata` hilang. | Unduh model Hindi dari Aspose, letakkan di `OcrResources`, dan pastikan nama file cocok dengan `hin.traineddata`. | +| **Karakter sampah** | Ketidaksesuaian encoding saat mencetak ke konsol. | Atur encoding output konsol: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Keterlambatan kinerja** | Gambar besar diproses tanpa skala. | Pra‑skala gambar ke lebar/tinggi maksimum 2000 px sebelum memberi ke OCR. | + +--- + +## Langkah Selanjutnya & Topik Terkait + +- **Pemrosesan batch:** Bungkus kode dalam loop `foreach` untuk menangani folder berisi gambar. +- **Bahasa berbeda:** Ganti `OcrLanguage.Hindi` dengan `OcrLanguage.English`, `OcrLanguage.Arabic`, dll. +- **Format output:** Alih-alih `Console.WriteLine`, tulis ke file teks (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integrasi dengan ASP.NET Core:** Ekspos endpoint API yang menerima unggahan gambar dan mengembalikan teks yang diekstrak sebagai JSON. + +Semua ekstensi ini mengikuti pola yang sama—konfigurasikan mesin, muat gambar, lakukan pengenalan, dan gunakan hasilnya. + +--- + +## Kesimpulan + +Kami baru saja menunjukkan cara **mengekstrak teks dari gambar** menggunakan Aspose OCR dalam C#. Panduan ini mencakup setiap langkah yang Anda perlukan untuk **memuat gambar untuk OCR**, **mengenali teks Hindi**, dan **menjalankan pengenalan OCR**—semua dalam aplikasi konsol yang berdiri sendiri. + +Cobalah dengan gambar Anda sendiri, bereksperimen dengan bahasa lain, dan silakan sesuaikan potongan kode untuk layanan web atau pekerjaan latar belakang. Ide dasarnya tetap sama: atur sumber daya, pilih bahasa, beri gambar, dan baca properti `Text`. + +Jika Anda menemui masalah, periksa tabel pemecahan masalah di atas atau tinggalkan komentar. Selamat coding, semoga hasil OCR Anda selalu jernih! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/indonesian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..808b071d --- /dev/null +++ b/ocr/indonesian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Cara menjalankan OCR pada gambar menggunakan Aspose OCR di C#. Pelajari + cara mengekstrak teks dari gambar, menjalankan OCR pada gambar, dan memuat gambar + untuk OCR dengan percepatan GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: id +og_description: Cara menjalankan OCR pada gambar menggunakan Aspose OCR. Tutorial + ini menunjukkan cara mengekstrak teks dari gambar, menjalankan OCR pada gambar, + dan memuat gambar untuk OCR secara efisien. +og_title: Cara Menjalankan OCR di C# – Panduan Langkah demi Langkah Lengkap +tags: +- OCR +- C# +- Aspose +title: Cara Menjalankan OCR di C# – Panduan Lengkap dengan Aspose OCR +url: /id/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menjalankan OCR di C# – Panduan Lengkap dengan Aspose OCR + +Pernah bertanya-tanya **bagaimana cara menjalankan OCR** pada foto dan mengambil teksnya tanpa membuat Anda stres? Anda bukan satu-satunya. Baik Anda mendigitalkan faktur, memindai kwitansi, atau hanya mencoba membuat PDF yang dapat dicari, kemampuan mengekstrak teks dari gambar adalah kebutuhan harian bagi banyak pengembang. + +Dalam tutorial ini kami akan membahas contoh praktis, end‑to‑end yang menunjukkan **cara menjalankan OCR pada gambar** menggunakan pustaka Aspose OCR, lengkap dengan akselerasi GPU untuk kecepatan. Pada akhir tutorial Anda akan tahu persis cara memuat gambar untuk OCR, menyesuaikan penggunaan memori, dan mendapatkan hasil teks bersih—semua dalam beberapa menit kode. + +## Apa yang Akan Anda Pelajari + +- Cara menginisialisasi mesin Aspose OCR di C# +- Cara **memuat gambar untuk OCR** dari disk atau stream +- Cara mengaktifkan akselerasi GPU dan membatasi memori GPU +- Cara **mengekstrak teks dari gambar** dan memverifikasi outputnya +- Kesulitan umum (modul GPU tidak ada, batas memori) dan solusi cepat + +Tidak diperlukan pengalaman sebelumnya dengan Aspose OCR; cukup dengan lingkungan .NET yang berfungsi dan sebuah gambar contoh. + +--- + +## Cara Menjalankan OCR pada Gambar dengan Aspose OCR + +Hal pertama yang Anda butuhkan adalah cuplikan kode yang jelas dan dapat dijalankan yang melakukan seluruh pekerjaan. Di bawah ini adalah program lengkap yang dapat Anda salin, tempel, dan jalankan segera. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Output yang diharapkan** (asumsi gambar contoh berisi frasa “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Pro tip:** Jika Anda tidak melihat teks apa pun, periksa kembali apakah modul GPU terpasang dan jalur gambar sudah benar. Metode `ImageStream.FromFile` akan melempar pengecualian yang jelas jika file tidak dapat ditemukan. + +--- + +## Ekstrak Teks dari Gambar Menggunakan Akselerasi GPU + +Mengapa repot-repot menggunakan GPU? OCR hanya CPU berfungsi, tetapi dapat sangat lambat pada gambar berukuran besar atau beresolusi tinggi. Mengaktifkan akselerasi GPU (langkah 2 di atas) menyerahkan beban berat ke kartu grafis Anda, yang dapat memproses ribuan piksel per detik. + +### Kapan Menggunakan GPU + +- **Pemrosesan batch** – memindai puluhan faktur sekaligus. +- **Pemindaian resolusi tinggi** – apa pun di atas 300 dpi. +- **Aplikasi real‑time** – seperti pemindai seluler yang membutuhkan umpan balik instan. + +Jika lingkungan Anda tidak memiliki GPU yang kompatibel, cukup setel `EnableGpuAcceleration = false;` dan mesin akan otomatis beralih ke mode CPU. + +--- + +## Jalankan OCR pada Gambar – Memuat Gambar dengan Benar + +Memuat gambar adalah langkah **memuat gambar untuk OCR** yang sering membuat orang kebingungan. Aspose OCR mengharapkan sebuah `ImageStream`, yang dapat dibuat dari file, memory stream, atau bahkan URL. Berikut beberapa variasinya: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Kasus khusus:** Beberapa gambar mengandung saluran alfa (transparansi) yang membingungkan mesin OCR. Menghapus alfa sangat mudah: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Sekarang Anda telah mencakup cara paling umum untuk **memuat gambar untuk OCR**, memastikan mesin menerima format yang bersih dan didukung setiap saat. + +--- + +## Tips Memuat Gambar untuk OCR Secara Efisien + +1. **Ubah ukuran gambar besar** – OCR tidak memerlukan foto 4 K; memperkecil hingga lebar ~1500 px mempercepat proses tanpa mengurangi akurasi. +2. **Konversi ke skala abu‑abu** – mengurangi noise dan dapat meningkatkan pengenalan pada pemindaian kontras rendah. +3. **Pra‑proses dengan deskew** – jika gambar Anda miring, deskew bawaan Aspose OCR dapat diaktifkan melalui `ocrEngine.Config.EnableDeskew = true;`. + +Penyesuaian ini sangat berguna ketika Anda **mengekstrak teks dari gambar** secara massal. + +--- + +## Kesulitan Umum & Cara Memperbaikinya + +| Gejala | Penyebab Kemungkinan | Solusi | +|---------|----------------------|--------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | Modul GPU tidak terpasang | Instal paket Aspose OCR GPU atau nonaktifkan GPU (`EnableGpuAcceleration = false`). | +| Output kosong | Jalur gambar salah atau format tidak didukung | Verifikasi jalur `ImageStream.FromFile`; coba muat dari byte untuk memastikan file dibaca dengan benar. | +| Kesalahan kehabisan memori | Batas memori GPU terlalu rendah untuk batch besar | Tingkatkan `GpuMemoryLimit` (mis., 2048) atau proses gambar dalam potongan lebih kecil. | +| Karakter kacau | Gambar memiliki noise berat atau kontras rendah | Pra‑proses: binarisasi, despeckle, atau tingkatkan DPI sebelum OCR. | + +--- + +## Contoh Lengkap yang Berfungsi – Gabungkan Semua + +Di bawah ini adalah aplikasi konsol ringkas yang menggabungkan praktik terbaik yang kami bahas: akselerasi GPU, pembatasan memori, pra‑proses gambar, dan penanganan error. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Menjalankan program ini akan mencetak teks bersih yang diekstrak dari gambar Anda, menunjukkan cara yang kuat untuk **mengekstrak teks dari gambar** bahkan ketika sumbernya tidak sempurna. + +--- + +## Kesimpulan + +Kami telah membahas **cara menjalankan OCR** pada gambar menggunakan Aspose OCR, mulai dari menginisialisasi mesin hingga memuat gambar, mengaktifkan akselerasi GPU, dan menangani kasus khusus. Anda kini memiliki referensi yang kuat dan dapat dijadikan acuan yang dapat Anda salin‑tempel ke proyek .NET apa pun dan mulai **mengekstrak teks dari gambar** segera. + +Langkah selanjutnya? Coba proses halaman PDF, bereksperimen dengan bahasa berbeda (set `ocrEngine.Config.Language = "spa"` untuk bahasa Spanyol), atau integrasikan alur ini ke dalam API web yang memproses unggahan secara langsung. Langit adalah batasnya, dan dengan alat yang kami bahas, Anda siap menghadapi tantangan OCR apa pun. + +Selamat coding, semoga teks Anda selalu bersih dan OCR Anda cepat! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/indonesian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..6f56fe18 --- /dev/null +++ b/ocr/indonesian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-01-10 +description: Cara menjalankan OCR dengan cepat dan mengekstrak teks Arab dari gambar. + Pelajari cara mengonversi gambar menjadi teks, membaca teks dari PNG, dan lihat + cara mengekstrak teks dengan Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: id +og_description: Cara menjalankan OCR di C# dan mengekstrak teks Arab dari gambar PNG. + Panduan ini menunjukkan cara mengubah gambar menjadi teks dan membaca teks dari + PNG langkah demi langkah. +og_title: Cara Menjalankan OCR di C# – Ekstrak Teks Arab dari PNG +tags: +- OCR +- C# +- Aspose +title: Cara Menjalankan OCR di C# – Mengekstrak Teks Arab dari PNG +url: /id/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menjalankan OCR di C# – Ekstrak Teks Arab dari PNG + +Pernah bertanya-tanya **bagaimana menjalankan OCR** pada gambar yang berisi karakter Arab? Anda tidak sendirian. Banyak pengembang mengalami kebuntuan ketika mereka perlu **mengekstrak teks Arab** dari PNG tetapi tidak tahu perpustakaan mana yang dapat menangani skrip kanan‑ke‑kiri tanpa masalah. + +Dalam tutorial ini kami akan membahas semua yang perlu Anda ketahui untuk **mengonversi gambar menjadi teks**, **membaca teks dari PNG**, dan akhirnya **cara mengekstrak teks** menggunakan Aspose.OCR dalam aplikasi konsol C# yang bersih. Pada akhir tutorial Anda akan memiliki program siap‑jalankan yang mencetak string Arab langsung ke terminal Anda. + +## Apa yang Akan Anda Pelajari + +- Menginstal dan mereferensikan paket NuGet Aspose.OCR. +- Mengonfigurasi mesin OCR untuk dukungan bahasa Arab. +- Memuat gambar PNG dan menjalankan proses pengenalan. +- Mengambil dan menampilkan teks yang diekstrak. +- Menyesuaikan pengaturan untuk akurasi yang lebih baik dan menangani jebakan umum. + +Tidak diperlukan pengalaman sebelumnya dengan OCR, cukup pemahaman dasar tentang C# dan lingkungan pengembangan .NET (Visual Studio, Rider, atau `dotnet` CLI sudah cukup). + +--- + +## Cara Menjalankan OCR – Menyiapkan Aspose OCR + +### Langkah 1: Tambahkan Paket NuGet Aspose.OCR + +Hal pertama yang kita butuhkan adalah perpustakaan OCR itu sendiri. Aspose.OCR adalah produk komersial, tetapi menawarkan percobaan gratis yang berfungsi sempurna untuk tujuan pembelajaran. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Sebagai alternatif, buka **NuGet Package Manager** di Visual Studio, cari **Aspose.OCR**, dan klik **Install**. + +> **Pro tip:** Jika Anda berencana menggunakan perpustakaan ini dalam pipeline CI, tambahkan flag `-v` untuk mengunci versi, misalnya, `dotnet add package Aspose.OCR -v 23.10`. + +### Langkah 2: Buat Proyek Konsol Baru (jika Anda belum memilikinya) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Sekarang Anda memiliki file `Program.cs` baru yang siap untuk kode kami. + +--- + +## Ekstrak Teks Arab – Menulis Kode OCR + +Berikut adalah program lengkap yang siap‑jalankan. Simpan sebagai `Program.cs` (atau ganti file yang dihasilkan secara otomatis). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Mengapa Setiap Baris Penting + +- **`OcrEngine`**: Kelas pusat yang mengkoordinasikan pemuatan gambar, pemilihan bahasa, dan pengenalan. +- **`Language = OcrLanguage.Arabic`**: Bahasa Arab menggunakan skrip kanan‑ke‑kiri dan glyph unik; mengatur bahasa memberi tahu mesin untuk menerapkan model karakter yang tepat. +- **`ImageStream.FromFile`**: Menangani PNG, JPEG, BMP, dan banyak format lainnya. Jika Anda perlu membaca dari `MemoryStream` (misalnya, file yang diunggah), ganti pemanggilan ini sesuai kebutuhan. +- **`Recognize()`**: Melakukan pekerjaan berat—analisis piksel, segmentasi, dan klasifikasi karakter. +- **`ocrEngine.Text`**: String Unicode akhir, siap untuk pemrosesan lebih lanjut, penyimpanan, atau tampilan. + +### Output yang Diharapkan + +Jika `arabic_sample.png` berisi frasa “مرحبا بالعالم” (Hello World), konsol akan mencetak: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Jika output terlihat berantakan, periksa kembali bahwa gambar jelas, bahasa sudah diatur ke Arab, dan versi mesin OCR cocok dengan dokumentasi. + +--- + +## Mengonversi Gambar ke Teks – Menyesuaikan Akurasi + +Meskipun pengaturan default bekerja untuk sebagian besar pemindaian bersih, gambar dunia nyata sering membutuhkan sedikit penyesuaian tambahan. + +| Pengaturan | Apa yang Dilakukan | Kapan Digunakan | +|------------|--------------------|-----------------| +| `ocrEngine.Config.Preprocess = true` | Mengaktifkan binarisasi otomatis dan penghilangan noise. | Dokumen yang dipindai dengan bayangan. | +| `ocrEngine.Config.Deskew = true` | Memutar gambar untuk memperbaiki kemiringan ringan. | Foto yang diambil dengan sudut. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Menganggap seluruh gambar sebagai satu blok teks. | Keterangan sederhana atau label satu baris. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Membatasi pengenalan hanya pada karakter Arab. | Mengurangi hasil positif palsu pada halaman berbahasa campuran. | + +Anda dapat menambahkan baris-baris ini tepat setelah membuat mesin: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Membaca Teks dari PNG – Menangani Berbagai Sumber Gambar + +Kadang PNG berada di dalam basis data atau datang dari permintaan web. Berikut varian cepat yang membaca dari `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Sisa alur tetap identik, yang berarti **cara mengekstrak teks** tetap konsisten terlepas dari sumbernya. + +--- + +## Cara Mengekstrak Teks – Opsi Lanjutan & Kasus Tepi + +### 1. PDF atau TIFF Multi‑Halaman + +Jika Anda perlu melakukan OCR pada dokumen multi‑halaman, lakukan loop pada setiap halaman: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Catatan:** Anda akan membutuhkan paket `Aspose.PDF` untuk potongan kode ini. + +### 2. Mendeteksi Bahasa Secara Otomatis + +Aspose.OCR juga menawarkan deteksi otomatis, tetapi lebih lambat. Jika Anda tidak yakin apakah gambar berisi bahasa Arab atau skrip lain, aktifkan fitur ini: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +### 3. Tips Kinerja + +- **Gunakan kembali objek `OcrEngine`** untuk beberapa gambar; membuat instance baru setiap kali menambah beban. +- **Jalankan secara paralel** hanya jika Anda memiliki instance mesin terpisah per thread—berbagi satu instance menyebabkan kondisi balapan. + +--- + +## Kesimpulan + +Kami telah membahas **cara menjalankan OCR** di C# dari awal hingga akhir, menunjukkan cara **mengekstrak teks Arab**, **mengonversi gambar ke teks**, **membaca teks dari PNG**, dan menjawab **cara mengekstrak teks** dalam berbagai skenario. Kode contoh lengkap, mandiri, dan siap Anda tempel ke proyek konsol .NET mana pun. + +Langkah selanjutnya? Coba ganti `OcrLanguage.Arabic` dengan bahasa Korea atau Cyrillic Serbia untuk melihat kemampuan multibahasa perpustakaan. Bereksperimenlah dengan flag preprocessing untuk meningkatkan akurasi pada pemindaian berisik, atau integrasikan rutin OCR ke dalam API web sehingga pengguna dapat mengunggah gambar dan mendapatkan hasil teks secara instan. + +Selamat coding, semoga hasil OCR Anda selalu jernih seperti kristal! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/indonesian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..7954b895 --- /dev/null +++ b/ocr/indonesian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-01-10 +description: Pelajari cara mengenali teks dari gambar, mengekstrak koordinat teks, + dan mengonversi struk menjadi JSON menggunakan Aspose OCR di C#. Tutorial langkah + demi langkah. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: id +og_description: Mengenali teks dari gambar di C# menggunakan Aspose OCR. Panduan ini + menunjukkan cara mengekstrak teks, mendapatkan koordinat, dan mengonversi struk + ke JSON. +og_title: Mengenali teks dari gambar – Tutorial OCR C# Lengkap +tags: +- OCR +- C# +- Aspose +title: Mengenali teks dari gambar di C# – Panduan Lengkap OCR dan JSON +url: /id/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Mengenali teks dari gambar – Tutorial C# OCR Lengkap + +Pernah membutuhkan untuk mengenali teks dari gambar tetapi tidak yakin pustaka mana yang harus dipilih? Anda tidak sendirian. Dalam banyak aplikasi dunia nyata—pelacak pengeluaran, pemindai struk, atau pengarsip dokumen—mengekstrak teks secara andal adalah rintangan pertama. + +Dalam tutorial ini kami akan menjelaskan **cara mengekstrak teks**, mengambil kotak pembatasnya, dan akhirnya **mengonversi struk ke JSON** menggunakan Aspose.OCR untuk .NET. Pada akhir tutorial Anda akan memiliki proyek C# yang berdiri sendiri yang mengambil foto struk dan menghasilkan file JSON rapi dengan skor kepercayaan dan koordinat. + +## Apa yang Anda Butuhkan + +Sebelum kita mulai, pastikan Anda memiliki hal‑hal berikut di mesin Anda: + +- **.NET 6.0 SDK** (atau versi yang lebih baru). Kerangka kerja yang lebih lama juga dapat bekerja, tetapi .NET 6 adalah pilihan tepat untuk pustaka modern. +- **Visual Studio 2022** atau VS Code dengan ekstensi C#. +- Paket NuGet **Aspose.OCR for .NET** (`Aspose.OCR` dan `Aspose.OCR.Output`). Anda dapat menginstalnya melalui Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Contoh gambar struk (misalnya `receipt.jpg`) yang ditempatkan di folder yang akan Anda referensikan nanti. + +Itu saja—tidak ada SDK tambahan, tidak ada binary native, hanya kode terkelola murni. + +## Langkah 1: Buat Proyek Konsol Baru + +Pertama-tama, buat aplikasi konsol. Ini cara tercepat untuk menguji OCR tanpa beban UI. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Tips pro:** Jaga folder proyek tetap rapi; buat sub‑folder bernama `Resources` dan letakkan `receipt.jpg` di sana. Ini memudahkan penanganan path. + +## Langkah 2: Muat Gambar Struk + +Sekarang kita benar‑benarnya **mengenali teks dari gambar**. Langkah pertama adalah mengarahkan mesin OCR ke file. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Mengapa kita membungkus pemuatan dengan pemeriksaan keberadaan sederhana? Karena dalam produksi Anda sering berurusan dengan unggahan pengguna yang mungkin hilang atau rusak. Menangkap masalah lebih awal menyelamatkan Anda dari pengecualian yang membingungkan kemudian. + +## Langkah 3: Lakukan OCR – **mengenali teks dari gambar** + +Dengan gambar berada di memori, kami meminta Aspose untuk **mengenali teks dari gambar**. Operasi ini bersifat sinkron dan mengembalikan set hasil yang kaya. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Di balik layar, Aspose menjalankan jaringan saraf yang dilatih pada jutaan karakter. Mesin mengisi `ocrEngine.Text`, `ocrEngine.RecognitionResult`, dan koleksi objek `OcrRegion` yang menyimpan koordinat. Itulah yang tepat kita butuhkan untuk langkah berikutnya. + +## Langkah 4: **Cara mengekstrak teks** – Mendapatkan string mentah + +Jika Anda hanya membutuhkan teks polos (mungkin untuk pencarian cepat), Anda dapat mengambilnya langsung dari mesin: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Anda akan melihat pemisah baris di mana OCR mendeteksi batas paragraf. Dalam banyak skenario pemindaian struk, string mentah sudah cukup untuk mengekstrak total, tanggal, atau nama vendor menggunakan regex sederhana. + +## Langkah 5: **ekstrak koordinat teks** – Kotak pembatas untuk setiap kata + +Seringkali Anda perlu mengetahui *di mana* pada gambar sebuah potongan teks berada—misalnya, untuk menyorot jumlah total di UI. Aspose memberikan itu melalui objek `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Perhatikan bahwa kami melakukan loop pada **ekstrak koordinat teks** untuk setiap segmen yang dikenali. Koordinat tersebut relatif terhadap gambar asli, sehingga Anda dapat menimpanya pada kanvas grafis atau elemen HTML ``. + +## Langkah 6: **konversi struk ke JSON** – Menyimpan hasil detail + +Sekarang datang bagian yang mengikat semuanya: kami menginginkan struktur yang dapat dibaca mesin yang mencakup teks, skor kepercayaan, dan kotak pembatas. Aspose menyediakan `JsonSaveOptions` yang mempermudah hal ini. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +File yang dihasilkan terlihat seperti ini (dipangkas untuk singkat): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Anda sekarang memiliki artefak **konversi struk ke JSON** yang dapat diberikan ke layanan hilir—misalnya API laporan pengeluaran, pipeline analitik, atau bahkan UI sederhana yang menggambar persegi panjang di sekitar setiap kata. + +## Contoh Kerja Lengkap + +Menggabungkan semua bagian, berikut `Program.cs` lengkap yang dapat Anda salin‑tempel ke proyek Anda: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Jalankan program (`dotnet run`) dan perhatikan output konsol. Buka `Resources/receipt.json` untuk memverifikasi struktur. + +## Pertanyaan Umum & Kasus Tepi + +- **Bagaimana jika gambar buram?** + Aspose OCR bekerja paling baik dengan 300 dpi atau lebih tinggi. Jika Anda mendapatkan skor kepercayaan rendah, pertimbangkan untuk menerapkan filter penajaman sebelum memberi gambar ke mesin. + +- **Apakah saya dapat mengenali banyak bahasa?** + Ya. Atur `ocrEngine.Language = Language.English | Language.Spanish;` sebelum memanggil `Recognize()`. + +- **Bagaimana cara membatasi output hanya pada angka (mis., total)?** + Setelah Anda memiliki teks polos, jalankan regex seperti `\d+\.\d{2}` pada `ocrEngine.Text`. Karena kami sudah memiliki koordinat, Anda dapat memetakan string yang cocok kembali ke wilayahnya untuk penyorotan visual. + +- **Apakah format JSON dapat disesuaikan?** + Kelas `JsonSaveOptions` menyediakan beberapa flag. Jika Anda memerlukan skema yang sepenuhnya khusus, Anda dapat mengiterasi `ocrEngine.RecognitionResult.Regions` dan menyerialisasi objek sendiri dengan `System.Text.Json`. + +## Kesimpulan + +Kami baru saja mendemonstrasikan cara **mengenali teks dari gambar** dalam C# menggunakan Aspose.OCR, **cara mengekstrak teks**, mengambil **ekstrak koordinat teks**, dan akhirnya **mengonversi struk ke JSON**. Seluruh alur berada dalam satu aplikasi konsol yang mudah dijalankan, menjadikannya sempurna untuk prototipe atau sebagai blok bangunan dalam sistem yang lebih besar. + +Langkah selanjutnya? Cobalah mengirim JSON ke front‑end yang menggambar kotak pembatas, atau sambungkan output ke layanan laporan pengeluaran. Anda juga dapat bereksperimen dengan format gambar berbeda (PNG, TIFF) atau memproses batch folder berisi struk. + +Ada pertanyaan lebih lanjut tentang OCR, Aspose, atau penanganan JSON? Tinggalkan komentar di bawah, dan selamat coding! + +![Contoh gambar struk untuk mengenali teks dari gambar](receipt.jpg "Contoh gambar struk") + +{{< /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/net/ocr-configuration/_index.md b/ocr/italian/net/ocr-configuration/_index.md index 661c8d64..acbe1eb6 100644 --- a/ocr/italian/net/ocr-configuration/_index.md +++ b/ocr/italian/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Sblocca la potenza del riconoscimento delle immagini OCR in .NET con Aspose.OCR. Sblocca potenti funzionalità OCR con Aspose.OCR per .NET. Estrai testo dalle immagini senza problemi. ### [Operazione OCR con elenco nel riconoscimento immagini OCR](./ocr-operation-with-list/) Sblocca il potenziale di Aspose.OCR per .NET. Esegui senza sforzo il riconoscimento delle immagini OCR con gli elenchi. Aumenta la produttività e l'estrazione dei dati nelle tue applicazioni. +### [Leggi risorsa incorporata in .NET – Guida completa per impostare la licenza Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Scopri come leggere una risorsa incorporata in .NET e configurare correttamente la licenza Aspose per le tue applicazioni. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/italian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..5918e7df --- /dev/null +++ b/ocr/italian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-01-10 +description: Leggi una risorsa incorporata e imposta la licenza Aspose in C#. Scopri + come utilizzare GetManifestResourceStream, incorporare un file di licenza e ottenere + l'assembly in esecuzione .NET in un unico tutorial. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: it +og_description: Leggi una risorsa incorporata in .NET e imposta rapidamente la licenza + Aspose. Guida passo‑passo che copre GetManifestResourceStream, l’incorporamento + della licenza e l’uso dell’assembly in esecuzione. +og_title: Leggi risorsa incorporata – Imposta licenza Aspose in .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Leggere la risorsa incorporata in .NET – Guida completa per impostare la licenza + Aspose +url: /it/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Leggere Risorsa Incorporata – Guida Completa per Impostare la Licenza Aspose + +Hai mai dovuto **leggere una risorsa incorporata** a runtime e ti sei chiesto come ottenere la licenza della tua libreria Aspose OCR senza codificare percorsi? Non sei l'unico. In molte applicazioni aziendali il file di licenza vive all'interno dell'assembly, così non devi distribuire file aggiuntivi né preoccuparti di permessi mancanti. Questo tutorial ti mostra esattamente come leggere una risorsa incorporata e impostare la licenza Aspose usando il metodo .NET `GetManifestResourceStream`. + +Passeremo in rassegna tutto ciò di cui hai bisogno: incorporare il file `.lic`, estrarlo con `GetExecutingAssembly` e, infine, applicarlo alla classe `License` di Aspose OCR. Alla fine avrai una soluzione autonoma che funziona in qualsiasi progetto .NET—senza file esterni richiesti. + +## Cosa Imparerai + +- **Come incorporare un file di licenza** in un progetto .NET affinché diventi parte del DLL compilato. +- Il modo corretto di **usare GetManifestResourceStream** per leggere quella risorsa incorporata. +- Come **impostare la licenza Aspose** programmaticamente senza toccare il file system. +- Suggerimenti per gestire le difficoltà comuni, come nomi di risorsa errati o azioni di build mancanti. +- Un esempio di codice completo e funzionante che puoi inserire nella tua soluzione. + +### Prerequisiti + +- .NET 6.0 o successivo (il codice funziona anche su .NET Framework 4.x, basta adeguare il file di progetto di conseguenza). +- Pacchetto NuGet Aspose.OCR installato (`dotnet add package Aspose.OCR`). +- Familiarità di base con C# e Visual Studio (o il tuo IDE preferito). + +Se hai già questi elementi a disposizione, ottimo—tuffiamoci. + +## Passo 1: Incorporare il File di Licenza Aspose nella Tua Assembly + +La prima cosa di cui hai bisogno è il file di licenza reale (`Aspose.OCR.lic`). Invece di copiarlo accanto all'eseguibile, lo incorporerai come **risorsa**. + +1. Aggiungi il file `.lic` al tuo progetto (ad esempio, crea una cartella `Resources` e inserisci il file lì). +2. Nelle proprietà del file, imposta **Build Action** su `Embedded Resource`. + *Consiglio:* mantieni la struttura delle cartelle semplice; il nome della risorsa completamente qualificato sarà `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Perché incorporare? Perché l'assembly ora trasporta la licenza al suo interno, eliminando il rischio di un file mancante su un server di produzione. + +## Passo 2: Recuperare la Risorsa Incorporata Usando GetExecutingAssembly + +Ora che la licenza vive dentro il DLL, devi un modo per **leggere la risorsa incorporata** a runtime. La classe .NET `Assembly` ti fornisce esattamente questo. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +Il metodo `GetExecutingAssembly` restituisce l'assembly che è attualmente in esecuzione—perfetto per individuare le risorse che vivono accanto al tuo codice. + +## Passo 3: Aprire lo Stream della Licenza con GetManifestResourceStream + +Con il riferimento all'assembly in mano, puoi chiamare `GetManifestResourceStream`. Questo metodo restituisce uno `Stream` che puoi passare direttamente ad Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Nota che usiamo una dichiarazione **null‑conditional** `using` (`using Stream?`) per garantire che lo stream venga eliminato automaticamente. Se il nome è errato, lanciamo un'eccezione chiara—questo ti salva da fallimenti silenziosi in seguito. + +## Passo 4: Applicare la Licenza ad Aspose OCR + +La classe `License` di Aspose si aspetta uno `Stream`. Ce l'abbiamo già, quindi l'ultimo passo è diretto. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Fatto! Il motore Aspose OCR è ora completamente licenziato e pronto a elaborare immagini senza la filigrana di prova. + +## Esempio Completo Funzionante + +Di seguito trovi un programma completo, pronto per il copia‑incolla, che dimostra l'intero processo. Include le direttive `using` necessarie, la gestione degli errori e una semplice chiamata OCR per dimostrare che la licenza è attiva. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Output Atteso + +Quando esegui il programma su una macchina con una licenza valida incorporata, dovresti vedere: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Se lo stream della licenza non può essere trovato, la console segnalerà il nome della risorsa mancante, guidandoti a ricontrollare **Build Action** e lo spazio dei nomi. + +## Problemi Comuni & Come Evitarli + +| Problema | Perché Accade | Soluzione | +|----------|----------------|-----------| +| **Mancata corrispondenza del nome della risorsa** | .NET costruisce il nome della risorsa dallo spazio dei nomi predefinito + percorso della cartella. | Usa `Assembly.GetManifestResourceNames()` per elencare i nomi disponibili e verificare la stringa esatta. | +| **File di licenza non impostato come Embedded Resource** | L'azione di build predefinita è `Content`. | Cambialo in `Embedded Resource` nelle proprietà del file. | +| **Esecuzione da un assembly diverso** | Se chiami il codice da una libreria di classi, `GetExecutingAssembly()` potrebbe restituire la libreria invece dell'eseguibile principale. | Usa `Assembly.GetEntryAssembly()` o passa esplicitamente l'assembly corretto. | +| **Stream eliminato prima dell'uso** | Uso accidentale di un blocco `using` che chiude lo stream troppo presto. | Mantieni il `using` intorno alla chiamata `SetLicense`, come mostrato sopra. | +| **Versione di Aspose.OCR non corrispondente** | Versioni più recenti potrebbero richiedere un formato di licenza diverso. | Scarica sempre l'ultima licenza dal tuo account Aspose e reinseriscila. | + +## Usare la Stessa Tecnica per Altri File Incorporati + +Il modello—**leggere risorsa incorporata**, poi **usare GetManifestResourceStream**—funziona per qualsiasi tipo di file: configurazioni JSON, immagini, anche DLL native. Basta adeguare `resourceName` e il modo in cui consumi lo stream. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Panoramica Visiva + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Testo alternativo:* leggere risorsa incorporata – diagramma che mostra l'incorporamento, il recupero con GetManifestResourceStream e l'applicazione della licenza Aspose. + +## Riepilogo + +Abbiamo coperto come **leggere una risorsa incorporata** in un'assembly .NET, i passaggi esatti per **usare GetManifestResourceStream**, e il modo pulito per **impostare la licenza Aspose** senza esporre file su disco. Incorporando la licenza, elimini le difficoltà di distribuzione e mantieni la tua applicazione portabile. + +## Cosa Viene Dopo? + +- **Automatizzare gli aggiornamenti della licenza:** Scrivi un piccolo script di build che sostituisca il file `.lic` incorporato quando rinnovi l'abbonamento Aspose. +- **Proteggere la risorsa:** Considera di criptare la licenza prima dell'incorporamento e decrittarla a runtime per una protezione aggiuntiva. +- **Esplorare altri prodotti Aspose:** Lo stesso approccio funziona per Aspose.Words, Aspose.PDF, ecc., ognuno con la propria classe `License`. + +Sentiti libero di sperimentare—potresti incorporare più licenze per moduli diversi, o passare a un nome di risorsa guidato da configurazione. Il cielo è il limite. + +--- + +*Buon coding! Se incontri difficoltà, lascia un commento qui sotto o controlla i forum Aspose per altri esempi.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/italian/net/skew-angle-calculation/_index.md index 93078265..6383a0a3 100644 --- a/ocr/italian/net/skew-angle-calculation/_index.md +++ b/ocr/italian/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ Esplora Aspose.OCR per .NET, una potente soluzione OCR per il riconoscimento acc Scatena la potenza di Aspose.OCR per .NET, una soluzione solida per il riconoscimento delle immagini. Scopri come calcolare gli angoli di inclinazione senza sforzo. ### [Calcola l'angolo di inclinazione dall'URI nel riconoscimento delle immagini OCR](./calculate-skew-angle-from-uri/) Esplora Aspose.OCR per .NET per calcolare facilmente gli angoli di inclinazione nel riconoscimento delle immagini OCR. Migliora i tuoi progetti con precisione ed efficienza. +### [Come raddrizzare un'immagine in C# – Guida completa alla pre‑elaborazione OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Scopri come raddrizzare le immagini in C# per migliorare il riconoscimento OCR con una guida passo‑passo completa. {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/italian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..90ec7603 --- /dev/null +++ b/ocr/italian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-01-10 +description: Come correggere l'inclinazione dell'immagine e migliorare i risultati + OCR con Aspose.OCR. Impara a pre‑elaborare l'immagine per l'OCR, rimuovere il rumore + dalla scansione e riconoscere il testo dalla scansione. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: it +og_description: Come correggere l'inclinazione dell'immagine e migliorare l'accuratezza + dell'OCR. Questa guida mostra come pre-elaborare l'immagine per l'OCR, rimuovere + il rumore dalla scansione e riconoscere il testo dalla scansione utilizzando Aspose.OCR. +og_title: Come raddrizzare un'immagine in C# – Guida completa alla pre‑elaborazione + OCR +tags: +- OCR +- C# +- Image Processing +title: Come correggere l'inclinazione di un'immagine in C# – Guida completa alla pre‑elaborazione + OCR +url: /it/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come deskeware un'immagine in C# – Guida completa al pre‑processing OCR + +Ti sei mai chiesto **come deskeware un'immagine** prima di inviarla a un motore OCR? Non sei l'unico. I documenti scansionati sono spesso inclinati, rumorosi o a basso contrasto, e questo compromette qualsiasi tentativo di riconoscimento del testo. + +In questo tutorial vedremo un esempio completo e eseguibile che **preprocessa l'immagine per OCR**, rimuove il rumore dalla scansione e infine **riconosce il testo dalla scansione** usando la libreria Aspose.OCR. Alla fine avrai un'idea chiara di **come usare OCR** in C# mantenendo il codice breve e conciso. + +> **Consiglio professionale:** Anche una piccola rotazione (5‑10°) può ridurre l'accuratezza OCR del 30 % o più. Il deskew è il primo passo che non dovresti mai saltare. + +## Cosa ti servirà + +- **.NET 6+** (il codice funziona anche su .NET Framework, ma .NET 6 è l'LTS attuale) +- **Aspose.OCR for .NET** – puoi ottenerlo da NuGet (`Install-Package Aspose.OCR`) +- Un file di esempio TIFF/PNG/JPEG ruotato o rumoroso (useremo `noisy_rotated.tif` nell'esempio) +- Qualsiasi IDE ti piaccia – Visual Studio, Rider o VS Code vanno bene + +È tutto. Nessuna libreria aggiuntiva, nessun servizio esterno. + +## Passo 1 – Carica l'immagine sorgente (Perché è importante) + +Prima di poter **deskeware l'immagine**, dobbiamo leggerla in un `ImageStream` di Aspose. Questo oggetto astrae l'I/O del file e fornisce al motore OCR un'interfaccia coerente. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Perché caricare prima?* Perché tutti i filtri successivi operano su un'immagine in memoria. Se il file non può essere letto, l'intera pipeline collassa. + +## Passo 2 – Costruisci una pipeline di pre‑processing (Deskew + Denoise + Contrast) + +Un flusso di lavoro OCR robusto di solito concatena diversi filtri. Qui è dove **preprocessiamo l'immagine per OCR** e, cosa più importante, **come deskeware l'immagine** automaticamente. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Perché questi tre?** +- **DeskewFilter** risolve automaticamente il problema del “come deskeware l'immagine”; non è necessario indovinare l'angolo. +- **DenoiseFilter** affronta la necessità di “rimuovere il rumore dalla scansione”, che altrimenti crea caratteri fantasma. +- **ContrastBoostFilter** aiuta il motore OCR a distinguere il testo scuro dallo sfondo chiaro, un problema classico quando *preprocessi l'immagine per OCR*. + +## Passo 3 – Applica la pipeline (vedere la trasformazione) + +Ora eseguiamo effettivamente i filtri. L'`processedImage` restituito è quello che forniremo al motore OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Se apri `cleaned_output.tif`, dovresti notare che il testo è dritto, meno granuloso e con contrasto più elevato. Questo controllo visivo è utile quando *rimuovi il rumore dalla scansione* e vuoi confermare che il deskew abbia funzionato. + +## Passo 4 – Crea e configura il motore OCR (Come usare OCR) + +Con un'immagine pulita a disposizione, istanziamo `OcrEngine`. Questo è il cuore di **come usare OCR** con Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Perché impostare `AutoPageSegmentation`?* Perché molte scansioni contengono tabelle o più colonne. Attivarlo permette al motore di suddividere la pagina in modo intelligente, migliorando il risultato finale di **riconoscere il testo dalla scansione**. + +## Passo 5 – Esegui il processo di riconoscimento (Riconosci finalmente il testo) + +Ora il momento della verità: chiediamo al motore di leggere il testo. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Se tutto è andato liscio, vedrai un blocco di testo pulito che corrisponde al documento originale. Questo è il risultato di un corretto **deskew dell'immagine**, **rimozione del rumore** e **preprocessing dell'immagine per OCR**. + +## Passo 6 – Esempio completo funzionante (pronto per copia‑incolla) + +Di seguito il programma completo, pronto per la compilazione. Basta sostituire il percorso del file e sei pronto. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Output previsto** (troncato per brevità): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Se l'output appare illeggibile, verifica che l'immagine sorgente non sia ruotata oltre 30°, o aumenta `DeskewFilter.MaxAngle`. + +## Domande frequenti (casi limite e variazioni) + +| Domanda | Risposta | +|----------|--------| +| **E se la mia scansione è ruotata di 45°?** | `DeskewFilter` è limitato a `MaxAngle`. Aumentalo (es., `MaxAngle = 60`) o pre‑ruota l'immagine con una libreria grafica prima di passarla alla pipeline. | +| **Posso elaborare i PDF pagina per pagina?** | Sì. Converti ogni pagina PDF in un'immagine (es., usando `Aspose.Pdf`) ed esegui la stessa pipeline su ogni bitmap. | +| **Il mio documento è in francese – devo cambiare qualcosa?** | Imposta `ocrEngine.Language = Language.French;` o carica un pacchetto linguistico personalizzato. Il resto della pipeline rimane invariato. | +| **C'è un modo per mantenere la risoluzione originale?** | `PreprocessPipeline` lavora sul bitmap originale, preservando i DPI. Basta evitare di chiamare `ImageStream.Resize` a meno che non sia necessario ridurre la scala per le prestazioni. | +| **Come influisce il potenziamento del contrasto sulle scansioni a colori?** | `ContrastBoostFilter` agisce su ogni canale; è sicuro per immagini in scala di grigi o a colori, ma puoi anche convertire in scala di grigi prima con `new GrayscaleFilter()`. | + +## Esempio immagine (ausilio visivo) + +![esempio di come deskeware un'immagine](/images/deskew-example.png) + +*L'immagine mostra un prima/dopo di una scansione ruotata di 12°, rumorosa, che è stata deskewata e pulita.* + +## Conclusione + +Abbiamo coperto **come deskeware un'immagine** usando Aspose.OCR, dimostrato una pipeline completa di **preprocessare l'immagine per OCR**, mostrato come **rimuovere il rumore dalla scansione**, e infine **riconoscere il testo dalla scansione** con poche righe di C#. Concatenando `DeskewFilter`, `DenoiseFilter` e `ContrastBoostFilter` ottieni un bitmap pulito che permette al motore OCR di svolgere il suo lavoro senza incepparsi sugli artefatti. + +Prossimi passi? Prova a sperimentare con diverse intensità dei filtri, aggiungi un `BinarizationFilter` per un output in puro bianco‑e‑nero, o invia l'immagine pulita a una pipeline NLP successiva. Lo stesso schema funziona per ricevute, passaporti e documenti storici. + +Hai altre domande su **come usare OCR** in altri linguaggi o framework? Lascia un commento, 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/net/text-recognition/_index.md b/ocr/italian/net/text-recognition/_index.md index 346402ba..ff882a55 100644 --- a/ocr/italian/net/text-recognition/_index.md +++ b/ocr/italian/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Migliora le tue applicazioni .NET con Aspose.OCR per un efficiente riconosciment Sblocca il potenziale dell'OCR in .NET con Aspose.OCR. Estrai testo dai PDF senza sforzo. Scaricalo ora per un'esperienza di integrazione perfetta. ### [Riconosci tabella nel riconoscimento immagini OCR](./recognize-table/) Sblocca il potenziale di Aspose.OCR per .NET con la nostra guida completa sul riconoscimento delle tabelle nel riconoscimento delle immagini OCR. +### [Come eseguire OCR in C# – Guida completa con Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Scopri come avviare l'OCR in C# usando Aspose OCR, con esempi passo passo per integrare il riconoscimento del testo nelle tue applicazioni. +### [Come eseguire OCR in C# – Estrarre testo arabo da PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Impara a estrarre testo arabo da immagini PNG usando Aspose.OCR in C#, con esempi passo passo. +### [Estrai testo da immagine con Aspose OCR – Guida completa C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Scopri come estrarre testo da immagini usando Aspose OCR in C#, con esempi passo passo per integrare l'OCR nelle tue applicazioni. +### [Crea PDF Ricercabile da PNG in C# – Guida Completa](./create-searchable-pdf-from-png-in-c-complete-guide/) +Impara a trasformare file PNG in PDF ricercabili usando Aspose.OCR in C#, con esempi passo passo. +### [Estrai testo da immagine in C# – Guida completa Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Scopri come estrarre testo da immagini in C# con Aspose OCR, passo passo, per integrare facilmente l'OCR nelle tue applicazioni. +### [Riconosci testo da immagine in C# – Guida completa a OCR e JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Scopri come riconoscere testo da immagini in C# con Aspose OCR, ottenendo risultati in JSON. Guida passo passo per integrare l'OCR nella tua app. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/italian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..c07a6884 --- /dev/null +++ b/ocr/italian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-01-10 +description: Crea PDF ricercabile da PNG usando C#. Scopri come convertire un'immagine + in PDF, estrarre il testo da PNG e fare OCR su un'immagine in C# in un unico tutorial + facile. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: it +og_description: Crea PDF ricercabile da PNG usando C#. Questa guida mostra come convertire + un'immagine in PDF, estrarre testo da PNG e fare OCR su un'immagine in C# con Aspose. +og_title: Crea PDF ricercabile da PNG in C# – Passo‑passo +tags: +- Aspose OCR +- C# +- PDF/A +title: Crea PDF ricercabile da PNG in C# – Guida completa +url: /it/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crea PDF Ricercabile da PNG in C# – Guida Completa + +Hai bisogno di **creare PDF ricercabile** da un file PNG in C#? Non sei solo—molti sviluppatori incontrano questo ostacolo quando vogliono che le loro immagini scansionate siano sia visualizzabili **e** ricercabili come testo. In questo tutorial percorreremo l'intera pipeline: **convertire immagine in pdf**, eseguire OCR per **estrarre testo da png**, e infine salvare tutto come documento ricercabile conforme a **PDF/A‑2b**. + +Alla fine avrai un singolo frammento di codice riutilizzabile da inserire in qualsiasi progetto .NET, più una serie di consigli pratici che ti faranno risparmiare mal di testa in futuro. Nessun servizio esterno, solo la libreria Aspose OCR e qualche riga di C#. + +> **Prerequisiti** +> * .NET 6+ (o .NET Framework 4.7.2+). +> * Visual Studio 2022 o qualsiasi IDE compatibile con C#. +> * Una licenza valida di Aspose OCR (o una prova gratuita). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Create searchable PDF from PNG using C#"} + +## Passo 1 – Installa e Referenzia Aspose OCR per C# + +Prima di tutto: hai bisogno del pacchetto NuGet Aspose OCR. Apri il terminale (o la Console di Gestione Pacchetti) ed esegui: + +```bash +dotnet add package Aspose.OCR +``` + +Se preferisci l'interfaccia grafica, fai clic con il tasto destro sul tuo progetto → **Gestisci Pacchetti NuGet…** → cerca *Aspose.OCR* e installa l'ultima versione stabile. + +Perché questa libreria? Supporta **convertire png in pdf**, gestisce immagini multi‑pagina e può generare PDF/A‑2b subito pronto all'uso—perfetta per creare un **PDF ricercabile** conforme agli standard di archiviazione. + +> **Consiglio Pro:** Registra la tua licenza subito in `Program.cs` per evitare la filigrana di valutazione. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Passo 2 – Carica il PNG ed Esegui OCR (estrarre testo da png) + +Ora caricheremo l'immagine di origine. L'helper `ImageStream.FromFile` astrae i dettagli del file system e funziona con qualsiasi formato raster supportato. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +A questo punto il motore ha **estratto testo da png** e lo ha memorizzato internamente. Puoi anche ispezionare il testo grezzo tramite `ocrEngine.Text`, utile per il debug o il logging. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **E se l'immagine è multi‑pagina?** +> Aspose OCR tratta ogni pagina come un livello separato. Basta chiamare `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` e il motore itererà automaticamente. + +## Passo 3 – Configura le Opzioni PDF/A‑2b (creare PDF ricercabile) + +Per trasformare il risultato OCR in un **PDF ricercabile**, dobbiamo indicare ad Aspose come impacchettare l'output. PDF/A‑2b è la soluzione ideale per la conservazione a lungo termine e garantisce che il livello di testo sia ricercabile. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Perché incorporare l'immagine originale? Alcuni controlli di conformità richiedono che la rappresentazione visiva corrisponda alla scansione originale. Questa opzione rende il file una vera operazione di **convertire immagine in pdf** mantenendo il testo ricercabile. + +## Passo 4 – Salva il Risultato e Verifica (convertire png in pdf) + +Infine, scriviamo il file di output. Lo stesso metodo `Save` funziona per qualsiasi percorso tu fornisca. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Apri il `output.pdf` risultante in Adobe Reader o in qualsiasi visualizzatore PDF e prova a cercare una parola che appare nel PNG originale. Se la parola è evidenziata, congratulazioni—hai creato con successo **PDF ricercabile** da un PNG! + +### Script di verifica rapida (opzionale) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Perché Usare PDF/A‑2b per PDF Ricercabili? + +* **Sicurezza di archiviazione:** PDF/A‑2b garantisce che il file possa essere renderizzato allo stesso modo decenni dopo. +* **Conformità normativa:** Molti settori (legale, medico, finanziario) richiedono PDF/A per la conservazione dei record. +* **Ricercabilità:** Il livello di testo OCR incorporato rende il documento indicizzabile dagli strumenti di ricerca desktop. + +Se non ti serve il carico aggiuntivo di conformità, puoi rimuovere la riga `PdfAStandard` e usare semplicemente `new PdfSaveOptions()`—l'output sarà comunque ricercabile, ma non PDF/A‑2b. + +## Problemi Comuni & Come Evitarli + +| Sintomo | Causa Probabile | Soluzione | +|---------|-----------------|-----------| +| Nessun testo ricercabile appare | `ocrEngine.Recognize()` non è mai stato chiamato o è fallito silenziosamente | Assicurati che il percorso dell'immagine sia corretto e che la licenza sia registrata. | +| Il PDF è enorme (10 + MB) | Il PNG originale è ad alta risoluzione e `EmbedOriginalImage` è true | Ridimensiona l'immagine prima dell'OCR o imposta `EmbedOriginalImage = false`. | +| Il testo è illeggibile | Lingua non rilevata automaticamente | Imposta `ocrEngine.Language = "eng";` (o la lingua desiderata) prima di `Recognize()`. | + +## Esempio Completo Funzionante (Pronto per Copia‑Incolla) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Esegui il programma, apri `output.pdf` e prova a cercare parole che sai esistono in `input.png`. Se tutto corrisponde, hai appena padroneggiato il flusso di lavoro **convertire immagine in pdf** e imparato come **ocr immagine c#**. + +## Prossimi Passi & Argomenti Correlati + +* **Elaborazione batch:** Scorri una cartella di PNG e unisci i risultati in un unico PDF. +* **Formati di output alternativi:** Aspose OCR può anche generare DOCX, TXT o PDF/A‑1b ricercabile. +* **Ottimizzazione delle prestazioni:** Usa `ocrEngine.RecognitionMode = RecognitionMode.Fast` per grandi volumi dove la precisione assoluta non è critica. +* **Altre librerie:** Se hai un budget limitato, esplora Tesseract .NET—anche se perderai il supporto PDF/A integrato. + +--- + +### TL;DR + +Ti abbiamo mostrato come **creare PDF ricercabile** da un PNG usando Aspose OCR in C#. I passaggi sono: + +1. Installa Aspose OCR (`dotnet add package Aspose.OCR`). +2. Carica il PNG ed esegui `ocrEngine.Recognize()` (**estrarre testo da png**). +3. Configura `PdfSaveOptions` per PDF/A‑2b (**convertire immagine in pdf** & **convertire png in pdf**). +4. Salva il file e verifica il livello ricercabile. + +Provalo, modifica le opzioni, e avrai presto una pipeline robusta per trasformare qualsiasi immagine scansionata in un PDF pronto per l'archiviazione e ricercabile. Buon 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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/italian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..b0030d3c --- /dev/null +++ b/ocr/italian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,253 @@ +--- +category: general +date: 2026-01-10 +description: Estrai il testo dall'immagine usando Aspose OCR in C#. Scopri come convertire + il testo di documenti scansionati con l'elaborazione batch e salvare i risultati. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: it +og_description: Estrai il testo da un'immagine con Aspose OCR in C#. Questo tutorial + mostra come convertire il testo di documenti scansionati utilizzando l'elaborazione + batch. +og_title: Estrai testo da immagine in C# – Guida completa Aspose OCR +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Estrai il testo da un'immagine in C# – Guida completa a Aspose OCR +url: /it/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Estrai testo da immagine – Guida completa a Aspose OCR + +Hai mai dovuto **estrarre testo da immagine** ma non sapevi da dove cominciare? Non sei solo; molti sviluppatori si trovano di fronte a questo ostacolo quando lavorano con PDF scansionati, TIFF a più pagine o ricevute basate su foto. La buona notizia è che con Aspose OCR puoi **convertire il testo di documenti scansionati** in poche righe di C#. + +In questo tutorial percorreremo uno scenario reale: prendere un TIFF a più pagine, eseguire OCR batch su ogni pagina e scrivere un unico file di testo che contenga il contenuto di tutte le pagine. Alla fine avrai un’app console pronta all’uso, comprenderai perché ogni passaggio è importante e saprai come modificare il flusso per casi particolari come immagini protette da password o pacchetti linguistici personalizzati. + +## Prerequisiti + +- .NET 6.0 SDK o successivo (il codice funziona anche con .NET Core e .NET Framework) +- Visual Studio 2022 (o qualsiasi editor tu preferisca) +- Un file di licenza Aspose OCR (oppure puoi usare la modalità di valutazione gratuita) +- Un file immagine a più pagine (ad es., `multipage.tif`) collocato in una cartella a cui puoi fare riferimento + +Non sono richiesti pacchetti NuGet aggiuntivi oltre a `Aspose.OCR`; lo installeremo nel primo passaggio. + +## Passo 1 – Installa Aspose OCR e configura il progetto + +Per iniziare, crea un nuovo progetto console e aggiungi la libreria Aspose OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Suggerimento:** Se disponi di un file di licenza (`Aspose.OCR.lic`), copialo nella radice del progetto. La libreria lo rileverà automaticamente a runtime. + +Perché questo passo? L’installazione del pacchetto ti dà accesso a `BatchProcessor`, `OcrEngine` e altre classi utili che astraggono la gestione a basso livello delle immagini. Garantisce inoltre che tu stia usando gli ultimi algoritmi OCR forniti da Aspose. + +## Passo 2 – Carica l’immagine a più pagine con BatchProcessor + +`BatchProcessor` è progettato proprio per questo scenario: iterare su ogni pagina di un’immagine a più pagine senza dover suddividere manualmente i file. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +Il `BatchProcessor` legge tutte le pagine in memoria, esponendole tramite `batchProcessor.Pages`. Ogni oggetto pagina conosce il proprio numero (`ocrPage.Number`) che utilizzeremo più avanti per intestazioni chiare. + +## Passo 3 – Prepara un StringBuilder per accumulare i risultati + +Vogliamo un unico file di testo che contenga l’output OCR di tutte le pagine, separato da intestazioni. `StringBuilder` è il modo più efficiente per concatenare stringhe in un ciclo. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Perché un `StringBuilder`? Concatenare stringhe con `+` all’interno di un ciclo creerebbe una nuova stringa ad ogni iterazione, penalizzando le prestazioni—soprattutto con documenti di grandi dimensioni. + +## Passo 4 – Itera su ogni pagina, esegui OCR e aggiungi i risultati + +Ora il cuore del tutorial: scorrere ogni pagina, riconoscere il testo e memorizzarlo con un marcatore di pagina. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Perché un nuovo `OcrEngine` per pagina?** Alcuni sviluppatori riutilizzano lo stesso engine cambiandone la proprietà `Image`, ma questo può mantenere impostazioni linguistiche o risultati precedenti, generando bug sottili. Creare un nuovo engine garantisce una base pulita. + +### Gestione dei casi limite più comuni + +- **Pagine vuote:** Se una pagina non contiene testo riconoscibile, `ocrEngine.Text` sarà una stringa vuota. Potresti inserire un segnaposto come “(Nessun testo rilevato)”. +- **Selezione della lingua:** Per impostazione predefinita Aspose OCR usa l’inglese. Per elaborare tedesco o francese, imposta `ocrEngine.Language = Language.German;` prima di chiamare `Recognize()`. +- **Suggerimento di performance:** Per TIFF molto grandi, puoi abilitare `ocrEngine.UseParallelProcessing = true;` per sfruttare più core. + +## Passo 5 – Scrivi l’output combinato in un file di testo + +Infine, persisti la stringa accumulata su disco. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Il file risultante `multipage_result.txt` avrà un aspetto simile a questo: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Ora hai **estratto testo da immagine** e hai effettivamente **convertito il testo di documenti scansionati** in un formato ricercabile e modificabile. + +## Bonus – Panoramica visiva (Testo alternativo) + +Di seguito trovi un semplice diagramma di flusso che illustra il processo. +*Testo alternativo:* “Diagramma che mostra come estrarre testo da immagine usando il batch processing di Aspose OCR in C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Se pubblichi questo tutorial su un sito statico, sostituisci il segnaposto con un SVG o PNG reale.)* + +## Domande frequenti + +**Funziona con file PDF?** +Sì, Aspose OCR può leggere le pagine PDF come immagini. Devi solo convertire il PDF in immagini prima, oppure usare `PdfDocument` da `Aspose.PDF` e fornire l’immagine rasterizzata di ogni pagina a `OcrEngine`. + +**E se il mio TIFF è protetto da password?** +`BatchProcessor` non gestisce direttamente la crittografia. Decrittografa il file usando una libreria come `Aspose.Imaging` prima di passarlo al pipeline OCR. + +**Posso generare JSON invece del testo semplice?** +Assolutamente. Sostituisci la logica di `StringBuilder` con un serializzatore JSON (ad es., `System.Text.Json`) e memorizza il testo di ogni pagina sotto una chiave `pageNumber`. + +## Esempio completo funzionante + +Ecco il programma completo che puoi copiare‑incollare in `Program.cs`. Include tutti i `using`, la gestione degli errori e i commenti. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Esegui il programma con: + +```bash +dotnet run +``` + +Dovresti vedere il messaggio nella console che conferma il successo, e il file di output conterrà i risultati OCR concatenati. + +## Conclusione + +Abbiamo appena dimostrato un modo pratico per **estrarre testo da immagine** usando Aspose OCR, trasformando qualsiasi file scansionato a più pagine in testo semplice e ricercabile. Sfruttando `BatchProcessor` e una configurazione pulita di `OcrEngine` per pagina, puoi convertire in modo affidabile il **testo di documenti scansionati** mantenendo il codice semplice e manutenibile. + +Sentiti libero di sperimentare: prova lingue diverse, passa a output JSON, o integra questa logica in un’API web che elabora upload al volo. Il modello di base rimane lo stesso—carica, riconosci, accumula e persisti. + +Hai altre domande su OCR, licenze Aspose o sulla gestione di grandi batch di documenti? Lascia un commento qui sotto o consulta la documentazione ufficiale di Aspose per approfondimenti. Buon 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/italian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..1a175a33 --- /dev/null +++ b/ocr/italian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Estrai il testo dall'immagine usando Aspose OCR in C#. Scopri come caricare + l'immagine per l'OCR, riconoscere il testo in hindi e eseguire il riconoscimento + OCR in pochi semplici passaggi. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: it +og_description: Estrai il testo da un'immagine usando Aspose OCR in C#. Segui questa + guida passo‑passo per caricare l'immagine per l'OCR, riconoscere il testo in hindi + e avviare il riconoscimento OCR. +og_title: Estrai testo da immagine con Aspose OCR – Guida completa C# +tags: +- Aspose OCR +- C# +- Image Processing +title: Estrai il testo da un'immagine con Aspose OCR – Guida completa in C# +url: /it/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Estrai testo da immagine con Aspose OCR – Guida completa C# + +Hai mai avuto bisogno di **estrarre testo da immagine** ma non eri sicuro di quale libreria scegliere? Non sei solo—molti sviluppatori si trovano di fronte a questo ostacolo quando affrontano per la prima volta l'OCR in .NET. La buona notizia è che Aspose OCR rende l'intero processo sorprendentemente semplice, anche quando si tratta di script complessi come l'Hindi. + +In questo tutorial ti guideremo attraverso tutto ciò di cui hai bisogno per **caricare un'immagine per OCR**, **riconoscere testo Hindi** e **eseguire il riconoscimento OCR** in C#. Alla fine, avrai un'app console pronta‑da‑eseguire che stampa il testo estratto direttamente sullo schermo. + +## Cosa costruirai + +Creeremo una piccola applicazione console che: + +1. Indica al motore OCR una cartella contenente i modelli linguistici. +2. Disattiva i download automatici—utile per ambienti chiusi. +3. Seleziona l'Hindi come lingua di destinazione. +4. Carica un JPEG (o PNG) che contiene testo Hindi. +5. Esegue la pipeline di riconoscimento. +6. Scrive la stringa risultante nella console. + +Nessun servizio esterno, nessuna chiave cloud, solo OCR puro on‑premise. + +## Prerequisiti + +- **.NET 6.0** o successivo (il codice funziona anche su .NET Framework 4.7+). +- **Aspose.OCR for .NET** pacchetto NuGet installato. + ```bash + dotnet add package Aspose.OCR + ``` +- Una cartella chiamata `OcrResources` che contiene il modello linguistico Hindi (`hin.traineddata`). + Puoi scaricarlo dalla pagina di download di Aspose OCR e inserirlo in `YOUR_DIRECTORY/OcrResources`. +- Un file immagine (`input.jpg`) con testo Hindi chiaro. + Per illustrazione, immagina una foto di un'insegna di negozio che recita “स्वागत है”. + +> **Consiglio professionale:** Mantieni la risoluzione dell'immagine sopra i 300 dpi; risoluzioni più basse possono causare caratteri mancanti. + +--- + +## Passo 1: Indicare al motore OCR le tue risorse – *estrarre testo da immagine* + +La prima cosa di cui Aspose OCR ha bisogno è la posizione dei suoi modelli linguistici. Se la ometti, il motore cercherà di scaricare i file automaticamente—qualcosa che potresti non desiderare in una rete sicura. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Perché è importante:* Impostando `ResourcesPath` garantisci che il motore carichi localmente i dati di addestramento corretti, il che velocizza la prima esecuzione ed elimina eventuali traffici di rete inattesi. + +--- + +## Passo 2: Disabilitare il download automatico delle risorse – *caricare immagine per OCR* + +In molti ambienti aziendali, l'accesso a Internet in uscita è bloccato. Aspose OCR rispetta un flag che impedisce di tentare di scaricare i file mancanti al volo. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Se dimentichi questa riga e il modello Hindi non è presente, il motore lancerà un'eccezione simile a “Unable to download required resource”. Mantenere il flag a `false` ti fornisce un errore chiaro e deterministico che puoi gestire autonomamente. + +--- + +## Passo 3: Scegliere la lingua – *riconoscere testo hindi* + +Aspose OCR supporta decine di lingue, ma devi indicargli quale usare. L'Hindi è identificato da `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*E se ti servono più lingue?* Puoi impostare `Language = OcrLanguage.AutoDetect` per far indovinare al motore, ma l'auto‑rilevamento è più lento e occasionalmente fallisce su script misti. Per puro Hindi, la selezione esplicita è la scelta più sicura. + +--- + +## Passo 4: Caricare l'immagine – *caricare immagine per OCR* + +Ora consegniamo al motore l'immagine che vogliamo leggere. Aspose offre un comodo helper `ImageStream.FromFile` che astrae le dipendenze sottostanti di `System.Drawing`. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Se il percorso del file è errato, Aspose solleverà una `FileNotFoundException`. Un rapido controllo `File.Exists` prima di questa riga può salvarti da una sessione di debug. + +--- + +## Passo 5: Eseguire il motore OCR – *eseguire riconoscimento OCR* + +Con tutto configurato, avviamo finalmente il processo di riconoscimento. Questa chiamata è sincrona e blocca fino a quando il testo non viene estratto. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Dietro le quinte, Aspose esegue diverse fasi: pre‑elaborazione (raddrizzamento, rimozione del rumore), segmentazione, classificazione dei caratteri e infine post‑elaborazione specifica per la lingua. Il lavoro pesante avviene all'interno di questa singola chiamata di metodo. + +--- + +## Passo 6: Restituire il testo estratto – *estrarre testo da immagine* + +Il risultato risiede nella proprietà `Text` del motore. Lo scriviamo semplicemente nella console, ma potresti anche salvarlo in un database, inviarlo tramite un'API o alimentarlo in un altro pipeline NLP. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Output previsto** (supponendo che l'immagine contenga “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +Se vedi caratteri illeggibili, ricontrolla che il modello Hindi sia posizionato correttamente e che l'immagine non sia eccessivamente compressa. + +--- + +## Esempio completo funzionante + +Di seguito trovi il programma completo che puoi copiare‑incollare in un nuovo progetto console (`dotnet new console`). Sostituisci `YOUR_DIRECTORY` con il percorso reale sul tuo computer. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Suggerimento:** Se prevedi di elaborare molte immagini in un ciclo, istanzia un unico `OcrEngine` e riutilizzalo—questo riduce il sovraccarico di inizializzazione. + +--- + +## Gestione dei problemi comuni + +| Problema | Perché succede | Soluzione rapida | +|----------|----------------|------------------| +| **Output vuoto** | Modello linguistico errato o immagine di bassa qualità. | Verifica `ResourcesPath`, aumenta DPI dell'immagine, o prova `ocrEngine.Image = ImageStream.FromFile(..., true)` per abilitare il miglioramento automatico. | +| **Eccezione: Risorsa non trovata** | Manca il file `.traineddata` per l'Hindi. | Scarica il modello Hindi da Aspose, posizionalo in `OcrResources` e assicurati che il nome del file corrisponda a `hin.traineddata`. | +| **Caratteri spazzatura** | Mancata corrispondenza di codifica durante la stampa sulla console. | Imposta la codifica dell'output della console: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Ritardo delle prestazioni** | Immagini grandi elaborate senza ridimensionamento. | Ridimensiona l'immagine a una larghezza/altezza massima di 2000 px prima di passarla a OCR. | + +--- + +## Prossimi passi e argomenti correlati + +- **Elaborazione batch:** Avvolgi il codice in un ciclo `foreach` per gestire una cartella di immagini. +- **Lingue diverse:** Sostituisci `OcrLanguage.Hindi` con `OcrLanguage.English`, `OcrLanguage.Arabic`, ecc. +- **Formati di output:** Invece di `Console.WriteLine`, scrivi su un file di testo (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integrazione con ASP.NET Core:** Esporre un endpoint API che accetta il caricamento di un'immagine e restituisce il testo estratto come JSON. + +Tutte queste estensioni seguono lo stesso schema—configurare il motore, caricare un'immagine, riconoscere e utilizzare il risultato. + +--- + +## Conclusione + +Abbiamo appena mostrato come **estrarre testo da immagine** usando Aspose OCR in C#. La guida ha coperto ogni passaggio necessario per **caricare immagine per OCR**, **riconoscere testo Hindi** e **eseguire il riconoscimento OCR**—tutto in un'app console autonoma. + +Provalo con le tue foto, sperimenta con lingue diverse e sentiti libero di adattare lo snippet per servizi web o processi in background. L'idea di base rimane la stessa: impostare le risorse, scegliere una lingua, fornire un'immagine e leggere la proprietà `Text`. + +Se incontri problemi, controlla la tabella di risoluzione dei problemi sopra o lascia un commento. Buon coding, e che i risultati del tuo OCR siano sempre cristallini! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/italian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..cbcdd2aa --- /dev/null +++ b/ocr/italian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Come eseguire l'OCR su un'immagine usando Aspose OCR in C#. Impara a + estrarre il testo dall'immagine, eseguire l'OCR sull'immagine e caricare l'immagine + per l'OCR con accelerazione GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: it +og_description: Come eseguire l'OCR su un'immagine usando Aspose OCR. Questo tutorial + mostra come estrarre il testo dall'immagine, eseguire l'OCR sull'immagine e caricare + l'immagine per l'OCR in modo efficiente. +og_title: Come eseguire OCR in C# – Guida completa passo passo +tags: +- OCR +- C# +- Aspose +title: Come eseguire OCR in C# – Guida completa con Aspose OCR +url: /it/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come eseguire OCR in C# – Guida completa con Aspose OCR + +Ti sei mai chiesto **come eseguire OCR** su una foto e estrarre il testo senza impazzire? Non sei l'unico. Che tu stia digitalizzando fatture, scannerizzando ricevute o semplicemente cercando di creare un PDF ricercabile, la capacità di estrarre testo da un'immagine è una necessità quotidiana per molti sviluppatori. + +In questo tutorial percorreremo un esempio pratico, end‑to‑end, che mostra **come eseguire OCR su file immagine** utilizzando la libreria Aspose OCR, completa di accelerazione GPU per la velocità. Alla fine saprai esattamente come caricare un'immagine per OCR, regolare l'uso della memoria e ottenere risultati di testo semplice puliti—tutto in pochi minuti di codice. + +## Cosa imparerai + +- Come inizializzare il motore Aspose OCR in C# +- Come **caricare immagine per OCR** da disco o da uno stream +- Come abilitare l'accelerazione GPU e limitare la memoria GPU +- Come **estrarre testo da immagine** e verificare l'output +- Problemi comuni (modulo GPU mancante, limiti di memoria) e soluzioni rapide + +Non è necessaria alcuna esperienza pregressa con Aspose OCR; basta un ambiente .NET funzionante e un'immagine di esempio. + +--- + +## Come eseguire OCR su un'immagine con Aspose OCR + +La prima cosa di cui hai bisogno è uno snippet chiaro e eseguibile che faccia tutto il lavoro. Di seguito trovi il programma completo che puoi copiare, incollare ed eseguire subito. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Output previsto** (supponendo che l'immagine di esempio contenga la frase “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Consiglio professionale:** Se non vedi alcun testo, verifica che il modulo GPU sia installato e che il percorso dell'immagine sia corretto. Il metodo `ImageStream.FromFile` genera un'eccezione chiara se il file non viene trovato. + +--- + +## Estrarre testo da immagine usando l'accelerazione GPU + +Perché preoccuparsi della GPU? L'OCR solo CPU funziona, ma può essere dolorosamente lento su immagini grandi o ad alta risoluzione. Abilitare l'accelerazione GPU (passo 2 sopra) affida il lavoro pesante alla tua scheda grafica, che può elaborare migliaia di pixel al secondo. + +### Quando usare la GPU + +- **Elaborazione batch** – scansione di decine di fatture in una sola volta. +- **Scansioni ad alta risoluzione** – qualsiasi cosa sopra i 300 dpi. +- **App in tempo reale** – come uno scanner mobile che richiede feedback istantaneo. + +Se il tuo ambiente non dispone di una GPU compatibile, imposta semplicemente `EnableGpuAcceleration = false;` e il motore tornerà automaticamente alla modalità CPU. + +--- + +## Eseguire OCR su immagine – Caricare correttamente l'immagine + +Caricare l'immagine è il passo **caricare immagine per OCR** che spesso mette in difficoltà le persone. Aspose OCR si aspetta un `ImageStream`, che può essere creato da un file, da uno stream di memoria o anche da un URL. Ecco alcune variazioni: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Caso limite:** Alcune immagini contengono un canale alfa (trasparenza) che confonde il motore OCR. Rimuovere l'alfa è semplice: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Ora hai coperto i modi più comuni per **caricare immagine per OCR**, garantendo che il motore riceva un formato pulito e supportato ogni volta. + +--- + +## Consigli per caricare immagine per OCR in modo efficiente + +1. **Ridimensiona le immagini grandi** – l'OCR non ha bisogno di una foto 4 K; ridimensionare a circa 1500 px di larghezza velocizza le cose senza compromettere l'accuratezza. +2. **Converti in scala di grigi** – riduce il rumore e può migliorare il riconoscimento su scansioni a basso contrasto. +3. **Pre‑processa con deskew** – se la tua immagine è inclinata, il deskew integrato di Aspose OCR può essere abilitato tramite `ocrEngine.Config.EnableDeskew = true;`. + +Queste modifiche sono particolarmente utili quando **estrai testo da immagine** in blocco. + +--- + +## Problemi comuni e come risolverli + +| Sintomo | Probabile causa | Soluzione | +|---------|-----------------|-----------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | Modulo GPU non installato | Installa il pacchetto Aspose OCR GPU o disabilita la GPU (`EnableGpuAcceleration = false`). | +| Output vuoto | Percorso immagine errato o formato non supportato | Verifica il percorso di `ImageStream.FromFile`; prova a caricare da byte per assicurarti che il file sia letto correttamente. | +| Errore di out‑of‑memory | Limite di memoria GPU troppo basso per un batch grande | Aumenta `GpuMemoryLimit` (es., 2048) o elabora le immagini in blocchi più piccoli. | +| Caratteri illeggibili | L'immagine ha molto rumore o basso contrasto | Pre‑processa: binarizza, rimuovi i punti, o aumenta DPI prima dell'OCR. | + +--- + +## Esempio completo funzionante – Metti tutto insieme + +Di seguito trovi una compatta app console che incorpora le migliori pratiche discusse: accelerazione GPU, limitazione della memoria, pre‑processamento dell'immagine e gestione degli errori. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Eseguendo questo programma stampa il testo pulito estratto dalla tua immagine, dimostrando un modo robusto per **estrarre testo da immagine** anche quando la sorgente non è perfetta. + +--- + +## Conclusione + +Abbiamo coperto **come eseguire OCR** su un'immagine usando Aspose OCR, dall'inizializzazione del motore al caricamento dell'immagine, all'abilitazione dell'accelerazione GPU e alla gestione dei casi limite. Ora disponi di un riferimento solido e degno di citazione che puoi copiare‑incollare in qualsiasi progetto .NET e iniziare subito a **estrarre testo da immagine**. + +Prossimi passi? Prova a fornire pagine PDF, sperimenta con lingue diverse (imposta `ocrEngine.Config.Language = "spa"` per lo spagnolo), o integra questo flusso in un'API web che elabora caricamenti al volo. Il cielo è il limite, e con gli strumenti di cui abbiamo parlato sei ben attrezzato per affrontare qualsiasi sfida OCR. + +Buona programmazione, e che il tuo testo sia sempre pulito e il tuo OCR veloce! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/italian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..75e00339 --- /dev/null +++ b/ocr/italian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-01-10 +description: Come eseguire rapidamente l'OCR e estrarre testo arabo da un'immagine. + Impara a convertire l'immagine in testo, leggere il testo da PNG e scopri come estrarre + il testo con Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: it +og_description: Come eseguire l'OCR in C# ed estrarre testo arabo da un'immagine PNG. + Questa guida ti mostra come convertire l'immagine in testo e leggere il testo da + PNG passo passo. +og_title: Come eseguire OCR in C# – Estrarre testo arabo da PNG +tags: +- OCR +- C# +- Aspose +title: Come eseguire OCR in C# – Estrarre testo arabo da PNG +url: /it/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come eseguire OCR in C# – Estrarre testo arabo da PNG + +Ti sei mai chiesto **come eseguire OCR** su un'immagine che contiene caratteri arabi? Non sei solo. Molti sviluppatori si trovano in difficoltà quando devono **estrarre testo arabo** da un PNG ma non sanno quale libreria gestisca gli script da destra a sinistra senza problemi. + +In questo tutorial ti guideremo passo passo su tutto ciò che devi sapere per **convertire immagine in testo**, **leggere testo da PNG**, e infine **come estrarre testo** usando Aspose.OCR in una pulita app console C#. Alla fine avrai un programma pronto all'uso che stampa la stringa araba direttamente nel terminale. + +## Cosa imparerai + +- Installare e referenziare il pacchetto NuGet Aspose.OCR. +- Configurare il motore OCR per il supporto della lingua araba. +- Caricare un'immagine PNG ed eseguire il processo di riconoscimento. +- Recuperare e visualizzare il testo estratto. +- Regolare le impostazioni per una migliore accuratezza e gestire le difficoltà più comuni. + +Non è necessaria alcuna esperienza pregressa con OCR, basta una conoscenza di base di C# e un ambiente di sviluppo .NET (Visual Studio, Rider o la CLI `dotnet` vanno bene). + +--- + +## Come eseguire OCR – Configurare Aspose OCR + +### Step 1: Add the Aspose.OCR NuGet Package + +La prima cosa di cui abbiamo bisogno è la libreria OCR stessa. Aspose.OCR è un prodotto commerciale, ma offre una versione di prova gratuita che funziona perfettamente per scopi didattici. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +In alternativa, apri il **NuGet Package Manager** in Visual Studio, cerca **Aspose.OCR** e fai clic su **Install**. + +> **Pro tip:** Se prevedi di usare la libreria in una pipeline CI, aggiungi il flag `-v` per bloccare la versione, ad esempio `dotnet add package Aspose.OCR -v 23.10`. + +### Step 2: Create a New Console Project (if you don’t have one) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Ora hai un file `Program.cs` fresco pronto per il nostro codice. + +--- + +## Estrarre testo arabo – Scrivere il codice OCR + +Di seguito trovi il programma completo, pronto all'uso. Salvalo come `Program.cs` (oppure sostituisci il file auto‑generato). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Perché ogni riga è importante + +- **`OcrEngine`**: La classe centrale che coordina il caricamento dell'immagine, la selezione della lingua e il riconoscimento. +- **`Language = OcrLanguage.Arabic`**: L'arabo utilizza uno script da destra a sinistra e glifi unici; impostare la lingua indica al motore di applicare i modelli di caratteri corretti. +- **`ImageStream.FromFile`**: Gestisce PNG, JPEG, BMP e molti altri formati. Se devi leggere da un `MemoryStream` (ad esempio, un file caricato), sostituisci questa chiamata di conseguenza. +- **`Recognize()`**: Esegue il lavoro pesante—analisi dei pixel, segmentazione e classificazione dei caratteri. +- **`ocrEngine.Text`**: La stringa Unicode finale, pronta per ulteriori elaborazioni, archiviazione o visualizzazione. + +### Output previsto + +Se `arabic_sample.png` contiene la frase “مرحبا بالعالم” (Hello World), la console stamperà: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Se l'output appare illeggibile, verifica che l'immagine sia chiara, che la lingua sia impostata su Arabo e che la versione del motore OCR corrisponda alla documentazione. + +--- + +## Convertire immagine in testo – Ottimizzare l'accuratezza + +Mentre le impostazioni predefinite funzionano per la maggior parte delle scansioni pulite, le immagini del mondo reale spesso richiedono un po' di attenzione in più. + +| Impostazione | Cosa fa | Quando usarla | +|--------------|---------|---------------| +| `ocrEngine.Config.Preprocess = true` | Abilita la binarizzazione automatica e la rimozione del rumore. | Documenti scansionati con ombre. | +| `ocrEngine.Config.Deskew = true` | Ruota l'immagine per correggere una leggera inclinazione. | Foto scattate con angolo. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Tratta l'intera immagine come un unico blocco di testo. | Didascalie semplici o etichette a riga singola. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Limita il riconoscimento solo ai caratteri arabi. | Riduce i falsi positivi su pagine multilingue. | + +Puoi aggiungere queste righe subito dopo aver creato il motore: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Leggere testo da PNG – Gestire diverse fonti di immagine + +A volte il PNG si trova in un database o proviene da una richiesta web. Ecco una variante rapida che legge da un `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Il resto del flusso rimane identico, il che significa che **come estrarre testo** resta coerente indipendentemente dalla fonte. + +--- + +## Come estrarre testo – Opzioni avanzate e casi particolari + +### 1. PDF o TIFF multi‑pagina + +Se devi fare OCR su un documento multi‑pagina, itera su ogni pagina: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Nota:** Per questo snippet avrai bisogno del pacchetto `Aspose.PDF`. + +### 2. Rilevamento automatico della lingua + +Aspose.OCR offre anche l'auto‑rilevamento, ma è più lento. Se non sei sicuro se l'immagine contenga arabo o un altro script, abilitalo: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +Il motore proverà ogni modello linguistico e sceglierà quello più adatto. + +### 3. Consigli sulle prestazioni + +- **Riutilizza l'oggetto `OcrEngine`** per più immagini; creare una nuova istanza ogni volta aggiunge overhead. +- **Esegui in parallelo** solo se hai istanze separate del motore per thread—condividere un'unica istanza causa condizioni di gara. + +--- + +## Conclusione + +Abbiamo coperto **come eseguire OCR** in C# dall'inizio alla fine, mostrandoti come **estrarre testo arabo**, **convertire immagine in testo**, **leggere testo da PNG**, e rispondere a **come estrarre testo** in una varietà di scenari. Il codice di esempio è completo, autonomo e pronto per essere incollato in qualsiasi progetto console .NET. + +Passi successivi? Prova a sostituire `OcrLanguage.Arabic` con il coreano o il cirilico serbo per vedere la potenza multilingue della libreria. Sperimenta con i flag di pre‑elaborazione per migliorare l'accuratezza su scansioni rumorose, o integra la routine OCR in una API web così gli utenti possono caricare immagini e ottenere risultati testuali istantanei. + +Buon coding, e che i tuoi risultati OCR siano sempre cristallini! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/italian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..de2d8e3c --- /dev/null +++ b/ocr/italian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-01-10 +description: Scopri come riconoscere il testo da un'immagine, estrarre le coordinate + del testo e convertire la ricevuta in JSON usando Aspose OCR in C#. Tutorial passo‑passo. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: it +og_description: Riconosci il testo da un'immagine in C# usando Aspose OCR. Questa + guida mostra come estrarre il testo, ottenere le coordinate e convertire lo scontrino + in JSON. +og_title: Riconosci il testo da un'immagine – Tutorial completo OCR in C# +tags: +- OCR +- C# +- Aspose +title: Riconoscere il testo da un'immagine in C# – Guida completa a OCR e JSON +url: /it/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# riconoscere testo da immagine – Tutorial completo C# OCR + +Hai mai avuto bisogno di riconoscere testo da un’immagine ma non sapevi quale libreria scegliere? Non sei solo. In molte app del mondo reale—tracker di spese, scanner di ricevute o archiviatori di documenti—estrarre testo in modo affidabile è il primo ostacolo. + +In questo tutorial vedremo **come estrarre testo**, otterremo i relativi bounding box e infine **convertire la ricevuta in JSON** usando Aspose.OCR per .NET. Alla fine avrai un progetto C# autonomo che prende una foto di una ricevuta e genera un file JSON ordinato con punteggi di confidenza e coordinate. + +## Cosa ti servirà + +Prima di immergerci, assicurati di avere quanto segue sulla tua macchina: + +- **.NET 6.0 SDK** (o qualsiasi versione successiva). Anche i framework più vecchi funzionano, ma .NET 6 è il punto di equilibrio per le librerie moderne. +- **Visual Studio 2022** o VS Code con l’estensione C#. +- **Aspose.OCR for .NET** pacchetto NuGet (`Aspose.OCR` e `Aspose.OCR.Output`). Puoi installarlo tramite la Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Un’immagine di esempio di ricevuta (ad es. `receipt.jpg`) collocata in una cartella che farai riferimento più tardi. + +Tutto qui—nessun SDK aggiuntivo, nessun binario nativo, solo codice gestito puro. + +## Passo 1: Crea un nuovo progetto console + +Prima di tutto, avvia un’app console. È il modo più rapido per testare l’OCR senza overhead dell’interfaccia utente. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Suggerimento:** Mantieni ordinata la cartella del progetto; crea una sottocartella chiamata `Resources` e inserisci `receipt.jpg` lì. Renderà la gestione dei percorsi indolore. + +## Passo 2: Carica l’immagine della ricevuta + +Ora riconosciamo effettivamente **testo da immagine**. Il primo passo è puntare il motore OCR al file. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Perché avvolgiamo il caricamento in un semplice controllo di esistenza? Perché in produzione spesso si gestiscono upload di utenti che potrebbero mancare o essere corrotti. Catturare il problema subito ti salva da eccezioni criptiche più tardi. + +## Passo 3: Esegui OCR – **testo da immagine** + +Con l’immagine in memoria, chiediamo ad Aspose di **riconoscere testo da immagine**. Questa operazione è sincrona e restituisce un ricco set di risultati. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Dietro le quinte Aspose esegue una rete neurale addestrata su milioni di caratteri. Il motore popola `ocrEngine.Text`, `ocrEngine.RecognitionResult` e una collezione di oggetti `OcrRegion` che contengono le coordinate. È esattamente ciò che ci serve per il passo successivo. + +## Passo 4: **come estrarre testo** – Ottenere la stringa grezza + +Se ti interessa solo il testo semplice (magari per una ricerca veloce), puoi prelevarlo direttamente dal motore: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Noterai interruzioni di riga dove l’OCR ha rilevato i confini dei paragrafi. In molti scenari di scansione di ricevute la stringa grezza è sufficiente per estrarre totali, date o nomi dei fornitori usando semplici regex. + +## Passo 5: **estrarre coordinate del testo** – Bounding box per ogni parola + +Spesso è necessario sapere *dove* sull’immagine si trova un determinato pezzo di testo—ad esempio per evidenziare l’importo totale in una UI. Aspose ci fornisce queste informazioni tramite gli oggetti `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Nota che stiamo iterando su **estrarre coordinate del testo** per ogni segmento riconosciuto. Le coordinate sono relative all’immagine originale, così puoi sovrapporle su una canvas grafica o su un elemento HTML ``. + +## Passo 6: **convertire la ricevuta in JSON** – Salvataggio dei risultati dettagliati + +Ora arriva la parte che lega tutto insieme: vogliamo una struttura leggibile da macchine che includa testo, punteggi di confidenza e i bounding box. Aspose fornisce `JsonSaveOptions` che rendono tutto questo un gioco da ragazzi. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Il file risultante appare più o meno così (troncato per brevità): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Ora disponi di un artefatto **convertire la ricevuta in JSON** che può essere inviato a servizi downstream—pensa a API di report spese, pipeline di analisi o anche a una semplice UI che disegna rettangoli attorno a ogni parola. + +## Esempio completo funzionante + +Riunendo tutti i pezzi, ecco il `Program.cs` completo che puoi copiare‑incollare nel tuo progetto: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Esegui il programma (`dotnet run`) e osserva l’output della console. Apri `Resources/receipt.json` per verificare la struttura. + +## Domande comuni e casi particolari + +- **E se l’immagine è sfocata?** + Aspose OCR funziona al meglio con 300 dpi o più. Se ottieni punteggi di confidenza bassi, considera di applicare un filtro di nitidezza prima di passare l’immagine al motore. + +- **Posso riconoscere più lingue?** + Sì. Imposta `ocrEngine.Language = Language.English | Language.Spanish;` prima di chiamare `Recognize()`. + +- **Come limitare l’output solo ai numeri (ad es. totali)?** + Dopo aver ottenuto il testo semplice, esegui una regex come `\d+\.\d{2}` su `ocrEngine.Text`. Poiché abbiamo già le coordinate, puoi mappare la stringa trovata alla sua regione per evidenziare visivamente. + +- **Il formato JSON è personalizzabile?** + La classe `JsonSaveOptions` espone diverse opzioni. Se ti serve uno schema completamente personalizzato, puoi iterare su `ocrEngine.RecognitionResult.Regions` e serializzare gli oggetti manualmente con `System.Text.Json`. + +## Conclusione + +Abbiamo appena dimostrato come **riconoscere testo da immagine** in C# usando Aspose.OCR, **come estrarre testo**, ottenere **estrarre coordinate del testo**, e infine **convertire la ricevuta in JSON**. L’intero flusso vive in una singola app console facile da eseguire, perfetta per prototipi o come blocco costruttivo in sistemi più grandi. + +Prossimi passi? Prova a inviare il JSON a un front‑end che disegna i bounding box, oppure collega l’output a un servizio di report spese. Puoi anche sperimentare con formati immagine diversi (PNG, TIFF) o processare in batch una cartella di ricevute. + +Hai altre domande su OCR, Aspose o la gestione del JSON? Lascia un commento qui sotto, e buona programmazione! + +![Esempio di immagine di ricevuta per riconoscere testo da immagine](receipt.jpg "Esempio di immagine di ricevuta") + +{{< /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/net/ocr-configuration/_index.md b/ocr/japanese/net/ocr-configuration/_index.md index e7f1a8b1..1ded18b5 100644 --- a/ocr/japanese/net/ocr-configuration/_index.md +++ b/ocr/japanese/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Aspose.OCR を使用して、.NET での OCR 画像認識の能力を解放し Aspose.OCR for .NET を使用して強力な OCR 機能を利用しましょう。画像からテキストをシームレスに抽出します。 ### [OCR画像認識におけるリストによるOCRO操作](./ocr-operation-with-list/) Aspose.OCR for .NET の可能性を解き放ちます。リストを使用して OCR 画像認識を簡単に実行します。アプリケーションの生産性とデータ抽出を向上させます。 +### [.NET の埋め込みリソースの読み取り – Aspose ライセンス設定 完全ガイド](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Aspose ライセンスを設定するために、.NET アプリケーションで埋め込みリソースを読み取る方法をステップバイステップで解説します。 {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/japanese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..c2649729 --- /dev/null +++ b/ocr/japanese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-01-10 +description: C#で埋め込みリソースを読み取り、Asposeのライセンスを設定します。GetManifestResourceStream の使い方、ライセンスファイルの埋め込み、実行中のアセンブリの取得方法を1つのチュートリアルで学びましょう。 +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: ja +og_description: .NETで埋め込みリソースを読み取り、Asposeのライセンスをすばやく設定する。GetManifestResourceStream、ライセンスの埋め込み、実行アセンブリの使用についてのステップバイステップガイド。 +og_title: 埋め込みリソースの読み取り – .NETでAsposeライセンスを設定 +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: .NETで埋め込みリソースを読む – Asposeライセンス設定完全ガイド +url: /ja/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 埋め込みリソースの読み取り – Aspose ライセンス設定 完全ガイド + +実行時に **read embedded resource** が必要で、Aspose OCR ライブラリのライセンスをパスをハードコーディングせずに取得する方法に悩んだことはありませんか? あなただけではありません。多くの企業アプリでは、ライセンスファイルがアセンブリ内に存在するため、余分なファイルを配布したり、権限不足を心配したりする必要がありません。このチュートリアルでは、埋め込みリソースを読み取り、.NET の `GetManifestResourceStream` メソッドを使用して Aspose ライセンスを設定する方法を詳しく解説します。 + +ここでは、`.lic` ファイルの埋め込み、`GetExecutingAssembly` での取得、そして最終的に Aspose OCR の `License` クラスに適用するまでの手順をすべて紹介します。最後まで読めば、外部ファイル不要で任意の .NET プロジェクトで動作する自己完結型のソリューションが手に入ります。 + +## 学べること + +- **ライセンスファイルを .NET プロジェクトに埋め込む** 方法(コンパイルされた DLL の一部になるように)。 +- 埋め込みリソースを読み取るための **GetManifestResourceStream の正しい使い方**。 +- ファイルシステムに触れずに **プログラムから Aspose ライセンスを設定** する方法。 +- リソース名のスペルミスやビルドアクションの設定ミスなど、よくある落とし穴への対処法。 +- 自分のソリューションにそのまま貼り付けられる **完全な実行可能コードサンプル**。 + +### 前提条件 + +- .NET 6.0 以降(コードは .NET Framework 4.x でも動作しますが、プロジェクトファイルを適宜調整してください)。 +- Aspose.OCR NuGet パッケージがインストール済み(`dotnet add package Aspose.OCR`)。 +- C# と Visual Studio(またはお好みの IDE)に関する基本的な知識。 + +これらが揃っていれば、さっそく始めましょう。 + +## 手順 1: Aspose ライセンスファイルをアセンブリに埋め込む + +最初に必要なのは実際のライセンスファイル(`Aspose.OCR.lic`)です。実行ファイルの隣にコピーする代わりに、**リソース** として埋め込みます。 + +1. `.lic` ファイルをプロジェクトに追加します(例: `Resources` フォルダーを作成し、その中に配置)。 +2. ファイルのプロパティで **Build Action** を `Embedded Resource` に設定します。 + *プロのコツ:* フォルダー構造はシンプルに保ちましょう。完全修飾リソース名は `YourNamespace.Resources.Aspose.OCR.lic` になります。 + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +なぜ埋め込むのか? アセンブリ自体にライセンスが含まれるため、本番サーバーでファイルが欠落するリスクがなくなります。 + +## 手順 2: GetExecutingAssembly で埋め込みリソースを取得する + +ライセンスが DLL 内にあるので、実行時に **read embedded resource** できる方法が必要です。.NET の `Assembly` クラスがその手段を提供します。 + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +`GetExecutingAssembly` メソッドは現在実行中のアセンブリを返すため、コードと同じ場所にあるリソースを簡単に見つけられます。 + +## 手順 3: GetManifestResourceStream でライセンスストリームを開く + +アセンブリ参照が手に入ったら、`GetManifestResourceStream` を呼び出します。このメソッドは Aspose に直接渡せる `Stream` を返します。 + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +`using Stream?` の **null 条件** `using` 文を使って、ストリームが自動的に破棄されるようにしています。名前が間違っている場合は明確な例外をスローし、後でのサイレント失敗を防ぎます。 + +## 手順 4: Aspose OCR にライセンスを適用する + +Aspose の `License` クラスは `Stream` を受け取ります。すでにストリームを取得しているので、最終ステップはシンプルです。 + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +これで完了です! Aspose OCR エンジンは完全にライセンス認証され、トライアルの透かしなしで画像を処理できるようになります。 + +## 完全動作サンプル + +以下は、上記手順をすべて実装した、コピー&ペースト可能なプログラムです。必要な `using` ディレクティブ、エラーハンドリング、そしてライセンスが有効であることを確認する簡単な OCR 呼び出しが含まれています。 + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### 期待される出力 + +有効な埋め込みライセンスがある環境でプログラムを実行すると、次のように表示されます。 + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +ライセンスストリームが見つからない場合、コンソールにリソース名が欠落している旨が報告され、**Build Action** と名前空間を再確認する手がかりが得られます。 + +## よくある落とし穴と回避策 + +| 問題 | 発生理由 | 対策 | +|------|----------|------| +| **リソース名の不一致** | .NET はデフォルト名前空間 + フォルダー パスからリソース名を生成します。 | `Assembly.GetManifestResourceNames()` で利用可能な名前を一覧表示し、正確な文字列を確認してください。 | +| **ライセンスファイルが Embedded Resource に設定されていない** | デフォルトの Build Action は `Content` です。 | ファイルのプロパティで `Embedded Resource` に変更します。 | +| **別アセンブリから実行している** | クラスライブラリから呼び出すと `GetExecutingAssembly()` がライブラリ本体を返すことがあります。 | `Assembly.GetEntryAssembly()` を使用するか、正しいアセンブリを明示的に渡してください。 | +| **ストリームが使用前に破棄される** | `using` ブロックでストリームを早すぎるタイミングで閉じてしまう。 | 上記コードのように `using` を `SetLicense` 呼び出し全体で囲みます。 | +| **Aspose.OCR のバージョン不一致** | 新しいバージョンではライセンス形式が変わることがあります。 | Aspose アカウントから最新のライセンスをダウンロードし、再度埋め込み直してください。 | + +## 他の埋め込みファイルにも同様の手法を適用 + +このパターン—**read embedded resource** → **GetManifestResourceStream**—は、JSON 設定ファイル、画像、ネイティブ DLL など、あらゆるファイルタイプに使えます。`resourceName` とストリームの利用方法を適宜変更するだけです。 + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## ビジュアル概要 + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt text:* 埋め込みリソースの読み取りと Aspose ライセンス設定の流れを示す図(埋め込み、GetManifestResourceStream で取得、ライセンス適用)。 + +## まとめ + +.NET アセンブリ内で **read embedded resource** する方法、`GetManifestResourceStream` の正確な使い方、そしてファイルをディスクに残さずに **set Aspose license** するクリーンな手順を解説しました。ライセンスを埋め込むことでデプロイ時の煩わしさが解消され、アプリケーションのポータビリティが向上します。 + +## 次のステップ + +- **ライセンス更新の自動化:** Aspose サブスクリプション更新時に、ビルド時スクリプトで埋め込み `.lic` ファイルを差し替える。 +- **リソースの保護:** 埋め込む前にライセンスを暗号化し、実行時に復号して使用することでセキュリティを強化。 +- **他の Aspose 製品を試す:** 同様の手法は Aspose.Words、Aspose.PDF などでも有効で、各製品の `License` クラスに適用できます。 + +ぜひ色々試してみてください。複数のモジュールでライセンスを埋め込んだり、設定ファイルでリソース名を動的に切り替えたりすれば、さらに柔軟な構成が可能です。 + +--- + +*Happy coding! 何か問題があればコメントを残すか、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/japanese/net/skew-angle-calculation/_index.md b/ocr/japanese/net/skew-angle-calculation/_index.md index 0a9b798e..46b450c2 100644 --- a/ocr/japanese/net/skew-angle-calculation/_index.md +++ b/ocr/japanese/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ C# アプリケーションで正確なテキスト認識を実現する強力 画像認識のための堅牢なソリューションである Aspose.OCR for .NET のパワーを解き放ちます。スキュー角度を簡単に計算する方法を学びましょう。 ### [OCR画像認識でURIからスキュー角度を計算](./calculate-skew-angle-from-uri/) Aspose.OCR for .NET を探索して、OCR 画像認識でスキュー角度を簡単に計算します。プロジェクトを正確かつ効率的に強化します。 +### [C# で画像のデスクューする方法 – 完全な OCR 前処理ガイド](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +C# で画像をデスクューし、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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/japanese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..42115be1 --- /dev/null +++ b/ocr/japanese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,261 @@ +--- +category: general +date: 2026-01-10 +description: Aspose.OCRで画像の傾きを補正し、OCR結果を向上させる方法。OCR用に画像を前処理し、スキャンのノイズを除去し、スキャンからテキストを認識する方法を学びます。 +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: ja +og_description: 画像の傾きを補正し、OCR精度を向上させる方法。このガイドでは、OCR用に画像を前処理し、スキャンからノイズを除去し、Aspose.OCRを使用してスキャンからテキストを認識する方法を示します。 +og_title: C#で画像の傾き補正を行う方法 – 完全なOCR前処理ガイド +tags: +- OCR +- C# +- Image Processing +title: C#で画像の傾き補正を行う方法 – 完全なOCR前処理ガイド +url: /ja/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# で画像の傾きを補正する方法 – 完全な OCR 前処理ガイド + +スキャンした文書を OCR エンジンに渡す前に **how to deskew image** したいと思ったことはありませんか? あなただけではありません。スキャンされた文書はしばしば傾いていたり、ノイズが多かったり、コントラストが低かったりし、テキスト認識の精度を大きく下げてしまいます。 + +このチュートリアルでは、**preprocess image for OCR** を行い、スキャンからノイズを除去し、最終的に Aspose.OCR ライブラリを使って **recognize text from scan** する完全な実行可能サンプルを段階的に解説します。最後まで読むと、C# で **how to use OCR** する方法がシンプルに理解でき、コードもコンパクトに保てます。 + +> **Pro tip:** たった 5‑10° の小さな回転でも OCR の精度が 30 % 以上低下することがあります。**Deskewing** は決して省いてはいけない最初のステップです。 + +--- + +## 必要なもの + +- **.NET 6+**(コードは .NET Framework でも動作しますが、現在の LTS は .NET 6 です) +- **Aspose.OCR for .NET** – NuGet から取得できます(`Install-Package Aspose.OCR`) +- 回転またはノイズが入ったサンプル TIFF/PNG/JPEG(例では `noisy_rotated.tif` を使用) +- お好みの IDE – Visual Studio、Rider、または VS Code で構いません + +以上です。追加のライブラリや外部サービスは不要です。 + +--- + +## Step 1 – Load the Source Image (Why It Matters) + +**deskew image** を行う前に、画像を Aspose の `ImageStream` に読み込む必要があります。このオブジェクトはファイル I/O を抽象化し、OCR エンジンに一貫したインターフェイスを提供します。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*なぜ最初に読み込むのか?* すべてのフィルタはメモリ上の画像に対して動作します。ファイルが読み込めなければ、パイプライン全体が機能しません。 + +--- + +## Step 2 – Build a Pre‑Processing Pipeline (Deskew + Denoise + Contrast) + +堅牢な OCR ワークフローは通常、複数のフィルタをチェーンします。ここで **preprocess image for OCR** を行い、特に **how to deskew image** を自動的に実行します。 + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**なぜこの 3 つか?** +- **DeskewFilter** は「**how to deskew image**」の問題を自動で解決し、角度を推測する必要がありません。 +- **DenoiseFilter** は「**remove noise from scan**」の要件に対応し、幻の文字が出るのを防ぎます。 +- **ContrastBoostFilter** は OCR エンジンが暗い文字と明るい背景を区別しやすくするため、**preprocess image for OCR** の典型的な課題を解決します。 + +--- + +## Step 3 – Apply the Pipeline (Seeing the Transformation) + +実際にフィルタを実行します。返される `processedImage` が OCR エンジンに渡す画像です。 + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +`cleaned_output.tif` を開くと、テキストがまっすぐになり、粒子が減り、コントラストが向上していることが確認できます。これは **remove noise from scan** を行った後に **deskew** が正しく機能したかを視覚的にチェックするのに便利です。 + +--- + +## Step 4 – Create and Configure the OCR Engine (How to Use OCR) + +整った画像が手に入ったら、`OcrEngine` をインスタンス化します。これが **how to use OCR** のコアです。 + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*なぜ `AutoPageSegmentation` を設定するのか?* 多くのスキャンは表や複数列を含むため、これを有効にするとエンジンがページを賢く分割し、最終的な **recognize text from scan** の結果が向上します。 + +--- + +## Step 5 – Run the Recognition Process (Finally Recognize Text) + +いよいよ本番です。エンジンにテキストの読み取りを指示します。 + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +すべてが順調に進めば、元の文書と一致するクリーンなテキストブロックが得られます。これは **deskewing image**、**remove noise**、そして **preprocess image for OCR** を正しく行った成果です。 + +--- + +## Step 6 – Full Working Example (Copy‑Paste Ready) + +以下はコンパイル可能な完全プログラムです。ファイルパスを置き換えるだけで実行できます。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**期待される出力**(抜粋): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +出力が乱れている場合は、元画像が 30° 以上回転していないか確認するか、`DeskewFilter.MaxAngle` を増やしてください。 + +--- + +## Frequently Asked Questions (Edge Cases & Variations) + +| Question | Answer | +|----------|--------| +| **What if my scan is rotated 45°?** | `DeskewFilter` は `MaxAngle` で上限を設定しています。`MaxAngle = 60` のように上げるか、パイプラインに渡す前に別のグラフィックライブラリで事前に回転させてください。 | +| **Can I process PDFs page‑by‑page?** | はい。各 PDF ページを画像に変換(例: `Aspose.Pdf` を使用)し、同じパイプラインを各ビットマップに適用します。 | +| **My document is in French – do I need to change anything?** | `ocrEngine.Language = Language.French;` またはカスタム言語パックをロードしてください。パイプライン自体は同じです。 | +| **Is there a way to keep the original resolution?** | `PreprocessPipeline` は元のビットマップ上で動作し、DPI を保持します。パフォーマンス上の理由でダウンスケールが必要な場合を除き、`ImageStream.Resize` は呼び出さないでください。 | +| **How does contrast boosting affect colored scans?** | `ContrastBoostFilter` は各チャンネルに対して動作するため、グレースケールでもカラーでも安全に使用できます。必要に応じて `new GrayscaleFilter()` で先にグレースケール変換しても構いません。 | + +--- + +## Image Example (Visual Aid) + +![画像の傾きを補正する例](/images/deskew-example.png) + +*この画像は 12° 回転し、ノイズが入ったスキャンを **deskew** と **clean** したビフォー/アフターを示しています。* + +--- + +## Conclusion + +Aspose.OCR を使った **how to deskew image** の方法を解説し、完全な **preprocess image for OCR** パイプラインを実演し、**remove noise from scan** と **recognize text from scan** を数行の C# で実現しました。`DeskewFilter`、`DenoiseFilter`、`ContrastBoostFilter` を組み合わせることで、OCR エンジンがアーティファクトに悩まされずに済む整ったビットマップが得られます。 + +次のステップは、フィルタ強度を調整したり、純粋な白黒出力のために `BinarizationFilter` を追加したり、クリーン画像を下流の NLP パイプラインに渡すことです。同じパターンは領収書、パスポート、歴史的文書などでも有効です。 + +**how to use OCR** に関して他の言語やフレームワークでの質問があればコメントを残してください。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/net/text-recognition/_index.md b/ocr/japanese/net/text-recognition/_index.md index 5738b2ec..de068597 100644 --- a/ocr/japanese/net/text-recognition/_index.md +++ b/ocr/japanese/net/text-recognition/_index.md @@ -49,15 +49,27 @@ Aspose.OCR を使用して .NET アプリケーションを強化し、正確な 画像内のシームレスなテキスト認識のための強力な OCR ソリューションである Aspose.OCR for .NET を探索してください。 ### [OCR画像認識で結果をJSONとして取得](./get-result-as-json/) Aspose.OCR for .NET のパワーを解放します。 OCR 結果を JSON 形式で簡単に取得する方法を学びます。このステップバイステップのガイドを使用して、画像認識を強化します。 +### [C# で画像からテキストを認識する – OCR と JSON の完全ガイド](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Aspose.OCR を使用して C# で画像からテキストを抽出し、結果を JSON 形式で取得する手順をステップバイステップで解説します。 ### [OCR画像認識のOCR検出領域モード](./ocr-detect-areas-mode/) Aspose.OCR を使用して .NET アプリケーションを強化し、画像テキストを効率的に認識します。正確な結果を得るには、OCR 領域検出モードを調べてください。 ### [OCR画像認識でPDFを認識する](./recognize-pdf/) Aspose.OCR を使用して、.NET での OCR の可能性を解き放ちます。 PDF からテキストを簡単に抽出します。今すぐダウンロードして、シームレスな統合エクスペリエンスを体験してください。 ### [OCR画像認識でのテーブルの認識](./recognize-table/) -OCR 画像認識におけるテーブルの認識に関する包括的なガイドを使用して、Aspose.OCR for .NET の可能性を解き放ちます。 +OCR 画像認識におけるテーブルの認識に関する包括的なガイドを使用して、Aspose.OCR for .NET の可能性を解放します。 +### [C# で OCR を実行する方法 – Aspose OCR 完全ガイド](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Aspose OCR を使用して C# で OCR を実行する手順をステップバイステップで解説します。 +### [C# で OCR を実行する方法 – PNG からアラビア語テキストを抽出](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Aspose.OCR を使用して C# で PNG 画像からアラビア語テキストを抽出する手順をステップバイステップで解説します。 +### [Aspose OCR を使用した画像からのテキスト抽出 – 完全 C# ガイド](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Aspose OCR を使用して C# で画像からテキストを抽出する手順をステップバイステップで解説します。 +### [C# で PNG から検索可能な PDF を作成する – 完全ガイド](./create-searchable-pdf-from-png-in-c-complete-guide/) +Aspose.OCR を使用して C# で PNG 画像から検索可能な PDF を作成する手順をステップバイステップで解説します。 +### [C# で画像からテキストを抽出する – 完全 Aspose OCR ガイド](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Aspose OCR を使用して C# で画像からテキストを抽出する手順をステップバイステップで解説します。 {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/japanese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..a558cbe3 --- /dev/null +++ b/ocr/japanese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-01-10 +description: C# を使用して PNG から検索可能な PDF を作成する。画像を PDF に変換し、PNG からテキストを抽出し、C# で画像 OCR + を行う方法を簡単なチュートリアルで学びましょう。 +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: ja +og_description: C# を使用して PNG から検索可能な PDF を作成します。このガイドでは、画像を PDF に変換し、PNG からテキストを抽出し、Aspose + を使った C# での画像 OCR 方法を示します。 +og_title: C#でPNGから検索可能なPDFを作成 – ステップバイステップ +tags: +- Aspose OCR +- C# +- PDF/A +title: C#でPNGから検索可能なPDFを作成する – 完全ガイド +url: /ja/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C# で PNG から検索可能な PDF を作成する – 完全ガイド + +PNG ファイルから **検索可能な PDF** を作成したいですか?同じ問題に直面している開発者は多いです。スキャンした画像を **閲覧可能** であり **テキスト検索可能** にしたいときに壁にぶつかります。このチュートリアルでは、パイプライン全体を解説します:**画像を PDF に変換**、OCR で **PNG からテキストを抽出**、そして最終的に **PDF/A‑2b** 準拠の検索可能ドキュメントとして保存します。 + +最後まで読むと、任意の .NET プロジェクトに貼り付けられる再利用可能なコードスニペットと、後々のトラブルを防ぐ実用的なヒントが手に入ります。外部サービスは不要、Aspose OCR ライブラリと数行の C# だけです。 + +> **前提条件** +> * .NET 6+(または .NET Framework 4.7.2+)。 +> * Visual Studio 2022 または任意の C# 対応 IDE。 +> * 有効な Aspose OCR ライセンス(または無料トライアル)。 + +--- + +![Create searchable PDF example](image-placeholder.png){alt="C# を使用して PNG から検索可能な PDF を作成"} + +## 手順 1 – Aspose OCR for C# をインストールして参照設定 + +まずは Aspose OCR の NuGet パッケージが必要です。ターミナル(またはパッケージ マネージャ コンソール)で次を実行します: + +```bash +dotnet add package Aspose.OCR +``` + +GUI が好きな方は、プロジェクトを右クリック → **Manage NuGet Packages…** → *Aspose.OCR* を検索して最新の安定版をインストールしてください。 + +なぜこのライブラリかというと、**png を pdf に変換** をサポートし、マルチページ画像にも対応、さらに PDF/A‑2b をデフォルトで出力できるため、アーカイブ標準に準拠した **検索可能な pdf** を簡単に作成できるからです。 + +> **プロのコツ:** 評価版の透かしを回避するため、`Program.cs` で早めにライセンスを登録しましょう。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## 手順 2 – PNG を読み込み OCR を実行(png からテキストを抽出) + +次にソース画像を読み込みます。`ImageStream.FromFile` ヘルパーはファイルシステムの詳細を抽象化し、サポートされているラスタ形式なら何でも扱えます。 + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +この時点でエンジンは **png からテキストを抽出** し、内部に保持しています。デバッグやログ出力に便利な `ocrEngine.Text` で生テキストを確認できます。 + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **画像がマルチページの場合は?** +> Aspose OCR は各ページを別レイヤーとして扱います。`ocrEngine.Image = ImageStream.FromFile("multipage.tif");` とすれば、エンジンが自動的にページを走査します。 + +## 手順 3 – PDF/A‑2b オプションを設定(検索可能な pdf を作成) + +OCR 結果を **検索可能な pdf** に変換するには、Aspose に出力方法を指示する必要があります。PDF/A‑2b は長期保存に最適で、テキストレイヤーが検索可能であることを保証します。 + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +なぜ元画像を埋め込むのか? 一部のコンプライアンスチェックでは、視覚的表現が元のスキャンと一致していることが求められます。このフラグにより、**画像を pdf に変換** しつつ検索可能テキストを保持した真の変換が実現します。 + +## 手順 4 – 結果を保存して検証(png を pdf に変換) + +最後に出力ファイルを書き込みます。`Save` メソッドは指定した任意のパスで機能します。 + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +生成された `output.pdf` を Adobe Reader などの PDF ビューアで開き、元の PNG に含まれる単語を検索してみてください。ハイライトが表示されれば、**PNG から検索可能な pdf を作成** に成功です! + +### 簡易検証スクリプト(任意) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## なぜ PDF/A‑2b を検索可能 PDF に使うのか? + +* **アーカイブ安全性:** PDF/A‑2b は数十年後でも同じ表示が保証されます。 +* **規制遵守:** 法務、医療、金融など多くの業界で記録保存に PDF/A が必須です。 +* **検索性:** 埋め込まれた OCR テキストレイヤーにより、デスクトップ検索ツールでインデックス化可能です。 + +コンプライアンスが不要な場合は、`PdfAStandard` 行を削除し `new PdfSaveOptions()` を使用すれば、PDF/A‑2b ではなくても検索可能な PDF が生成されます。 + +## よくある落とし穴と回避策 + +| 症状 | 考えられる原因 | 対処法 | +|------|----------------|--------| +| 検索可能なテキストが表示されない | `ocrEngine.Recognize()` が呼び出されていない、またはサイレント失敗 | 画像パスが正しいか、ライセンスが登録されているか確認 | +| PDF が巨大(10 MB 超) | 元 PNG が高解像度で `EmbedOriginalImage` が true | OCR 前に画像を縮小するか、`EmbedOriginalImage = false` に設定 | +| テキストが文字化け | 言語が自動検出されなかった | `ocrEngine.Language = "eng";`(または対象言語)を `Recognize()` 前に設定 | + +## 完全動作サンプル(コピー&ペースト可) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +プログラムを実行し、`output.pdf` を開いて `input.png` に存在する単語を検索してみてください。すべてが合致すれば、**画像を pdf に変換** ワークフローをマスターし、**ocr image c#** スタイルを習得したことになります。 + +## 次のステップと関連トピック + +* **バッチ処理:** フォルダー内の PNG をループ処理し、結果を単一 PDF にマージ。 +* **代替出力形式:** Aspose OCR は DOCX、TXT、または検索可能 PDF/A‑1b も出力可能。 +* **パフォーマンス調整:** 大量処理で精度より速度が重要な場合は `ocrEngine.RecognitionMode = RecognitionMode.Fast` を使用。 +* **他のライブラリ:** 予算が限られる場合は Tesseract .NET を検討。ただし組み込みの PDF/A サポートは失われます。 + +--- + +### TL;DR + +Aspose OCR と C# を使って **PNG から検索可能な pdf を作成** する手順をまとめました。 + +1. Aspose OCR をインストール(`dotnet add package Aspose.OCR`)。 +2. PNG を読み込み `ocrEngine.Recognize()` を実行(**png からテキストを抽出**)。 +3. PDF/A‑2b 用に `PdfSaveOptions` を設定(**画像を pdf に変換** & **png を pdf に変換**)。 +4. ファイルを保存し、検索レイヤーを確認。 + +ぜひ試してオプションを調整し、スキャン画像をアーカイブ対応の検索可能 PDF に変換する堅牢なパイプラインを構築してください。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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/japanese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..cb875534 --- /dev/null +++ b/ocr/japanese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: C#でAspose OCRを使用して画像からテキストを抽出します。バッチ処理でスキャンした文書のテキストを変換し、結果を保存する方法を学びましょう。 +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: ja +og_description: C#でAspose OCRを使用して画像からテキストを抽出します。このチュートリアルでは、バッチ処理を利用してスキャンされた文書のテキストを変換する方法を示します。 +og_title: C#で画像からテキストを抽出 – 完全なAspose OCRガイド +tags: +- OCR +- C# +- Aspose +- Image Processing +title: C#で画像からテキストを抽出 – 完全なAspose OCRガイド +url: /ja/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 画像からテキストを抽出 – 完全な Aspose OCR ガイド + +**extract text from image** が必要だったことはありますか?でも、どこから始めればいいか分からない…という方は多いです。スキャンした PDF、マルチページ TIFF、写真ベースのレシートを扱うときに、同じ壁にぶつかる開発者はたくさんいます。良いニュースは、Aspose OCR を使えば、C# の数行で **convert scanned document text** が可能になることです。 + +このチュートリアルでは、実際のシナリオとして、マルチページ TIFF を取得し、各ページにバッチ OCR を実行し、すべてのページの内容を含む単一のテキストファイルを書き出す手順を解説します。最後まで読むと、すぐに実行できるコンソールアプリが手に入り、各ステップの重要性が理解でき、パスワード保護された画像やカスタム言語パックといったエッジケースへの対応方法も把握できます。 + +## 前提条件 + +- .NET 6.0 SDK 以降(コードは .NET Core や .NET Framework でも動作します) +- Visual Studio 2022(またはお好みのエディタ) +- Aspose OCR ライセンスファイル(または無料評価モード) +- フォルダー内に配置したマルチページ画像ファイル(例: `multipage.tif`) + +`Aspose.OCR` 以外の NuGet パッケージは不要です。最初の手順でインストールします。 + +## Step 1 – Install Aspose OCR and Set Up the Project + +まず、新しいコンソールプロジェクトを作成し、Aspose OCR ライブラリを導入します。 + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro tip:** ライセンスファイル(`Aspose.OCR.lic`)がある場合は、プロジェクトのルートにコピーしてください。実行時にライブラリが自動的に検出します。 + +この手順の目的は何かというと、`BatchProcessor`、`OcrEngine` など、低レベルの画像処理を抽象化した便利なクラスにアクセスできるようになることです。また、Aspose が提供する最新の OCR アルゴリズムを利用できるようになります。 + +## Step 2 – Load the Multi‑Page Image with BatchProcessor + +`BatchProcessor` は、マルチページ画像の各ページを手動で分割することなく反復処理できるよう設計されています。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` はすべてのページをメモリに読み込み、`batchProcessor.Pages` で取得できます。各ページオブジェクトはページ番号(`ocrPage.Number`)を保持しており、後で見出しとして利用します。 + +## Step 3 – Prepare a StringBuilder to Accumulate Results + +すべてのページの OCR 出力をヘッダーで区切って単一のテキストファイルにしたいので、ループ内で文字列を結合する最も効率的な方法は `StringBuilder` です。 + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +なぜ `StringBuilder` かというと、ループ内で `+` 演算子で文字列を結合すると、イテレーションごとに新しい文字列が割り当てられ、特に大きな文書ではパフォーマンスが低下します。 + +## Step 4 – Iterate Over Each Page, Run OCR, and Append Results + +チュートリアルの核心部分です。各ページをループし、テキストを認識し、ページマーカーと共に保存します。 + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**なぜページごとに新しい `OcrEngine` を作成するのか?** +一部の開発者は単一のエンジンを再利用して `Image` プロパティを差し替えますが、言語設定や前回の結果が残り、微妙なバグの原因になることがあります。新しいエンジンをインスタンス化することで、常にクリーンな状態から開始できます。 + +### Handling Common Edge Cases + +- **空ページ:** ページに認識可能なテキストがない場合、`ocrEngine.Text` は空文字列になります。`"(No text detected)"` のようなプレースホルダーを挿入すると良いでしょう。 +- **言語選択:** デフォルトでは Aspose OCR は英語を使用します。ドイツ語やフランス語を処理したい場合は、`ocrEngine.Language = Language.German;` のように `Recognize()` 前に設定してください。 +- **パフォーマンスのヒント:** 巨大な TIFF の場合、`ocrEngine.UseParallelProcessing = true;` を有効にするとマルチコアを活用できます。 + +## Step 5 – Write the Combined Output to a Text File + +最後に、蓄積した文字列をディスクに保存します。 + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +生成される `multipage_result.txt` の例は次のようになります。 + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +これで **extract text from image** が完了し、**convert scanned document text** を検索可能で編集可能な形式に変換できました。 + +## Bonus – Visual Overview (Image Alt Text) + +以下はプロセスを示すシンプルなフローダイアグラムです。 +*Alt text:* “Aspose OCR のバッチ処理を使用して画像からテキストを抽出する方法を示す図”。 + +![OCR Flow Diagram](placeholder-image-url.png) + +*(静的サイトにこのチュートリアルを公開する場合は、プレースホルダーを実際の SVG または PNG に置き換えてください。)* + +## Frequently Asked Questions + +**Does this work with PDF files?** +はい、Aspose OCR は PDF ページを画像として読み取れます。まず PDF を画像に変換するか、`Aspose.PDF` の `PdfDocument` を使用して各ページのラスタライズ画像を `OcrEngine` に渡してください。 + +**What if my TIFF is password‑protected?** +`BatchProcessor` は暗号化を直接扱いません。`Aspose.Imaging` などのライブラリでファイルを復号化してから OCR パイプラインに渡す必要があります。 + +**Can I output JSON instead of plain text?** +もちろん可能です。`StringBuilder` のロジックを JSON シリアライザー(例: `System.Text.Json`)に置き換え、各ページのテキストを `pageNumber` キーの下に格納してください。 + +## Full Working Example + +以下は `Program.cs` にそのまま貼り付けられる完全なプログラムです。すべての using ディレクティブ、エラーハンドリング、コメントを含みます。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Run the program with: + +```bash +dotnet run +``` + +コンソールに成功メッセージが表示され、出力ファイルには結合された OCR 結果が格納されます。 + +## Conclusion + +今回、Aspose OCR を使用して **extract text from image** を実現し、マルチページのスキャンファイルをプレーンテキストの検索可能な形式に変換する実用的な方法を示しました。`BatchProcessor` とページごとのクリーンな `OcrEngine` 設定を活用することで、コードベースをシンプルかつ保守しやすく保ちつつ、**convert scanned document text** を確実に行えます。 + +ぜひ色々試してみてください。別の言語に切り替えたり、JSON 出力に変更したり、アップロードをリアルタイムで処理する Web API に組み込んだりすることも可能です。基本パターンは変わりません—ロード、認識、蓄積、永続化です。 + +OCR、Aspose のライセンス、または大量ドキュメントバッチの取り扱いについてさらに質問があれば、コメントを残すか、Aspose の公式ドキュメントで詳細を確認してください。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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/japanese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..28f8d86e --- /dev/null +++ b/ocr/japanese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-01-10 +description: C#でAspose OCRを使用して画像からテキストを抽出します。OCR用に画像を読み込む方法、ヒンディー語テキストを認識する方法、そして数ステップでOCR認識を実行する方法を学びましょう。 +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: ja +og_description: C#でAspose OCRを使用して画像からテキストを抽出します。このステップバイステップガイドに従って、OCR用に画像を読み込み、ヒンディー語テキストを認識し、OCR認識を実行してください。 +og_title: Aspose OCRで画像からテキストを抽出する – 完全C#ガイド +tags: +- Aspose OCR +- C# +- Image Processing +title: Aspose OCRで画像からテキストを抽出する – 完全なC#ガイド +url: /ja/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR を使用した画像からのテキスト抽出 – 完全な C# ガイド + +画像から **テキストを抽出** したいけど、どのライブラリを選べばいいか分からないことはありませんか?同じ壁にぶつかる開発者は多いです。良いニュースは、Aspose OCR を使えば、ヒンディー語のような複雑なスクリプトでも、プロセスが驚くほどシンプルになることです。 + +このチュートリアルでは、**OCR 用に画像をロード** し、**ヒンディー語テキストを認識** し、**OCR 認識を実行** するために必要な手順をすべて解説します。最後には、抽出したテキストをコンソールに直接表示する、実行可能なコンソールアプリが完成します。 + +## 作成するもの + +以下の機能を持つ小さなコンソールアプリを作ります。 + +1. OCR エンジンに言語モデルが格納されたフォルダーを指定する。 +2. 自動ダウンロードをオフにする(ロックダウンされた環境で便利)。 +3. ヒンディー語を対象言語として選択する。 +4. ヒンディー語テキストを含む JPEG(または PNG)をロードする。 +5. 認識パイプラインを実行する。 +6. 結果の文字列をコンソールに出力する。 + +外部サービスやクラウドキーは不要で、完全にオンプレミスの OCR です。 + +## 前提条件 + +- **.NET 6.0** 以上(コードは .NET Framework 4.7+ でも動作します)。 +- **Aspose.OCR for .NET** NuGet パッケージがインストール済み。 + ```bash + dotnet add package Aspose.OCR + ``` +- `OcrResources` フォルダーがあり、その中にヒンディー語モデル(`hin.traineddata`)が入っていること。 + Aspose OCR のダウンロードページから取得し、`YOUR_DIRECTORY/OcrResources` に配置してください。 +- 明瞭なヒンディー語テキストが含まれる画像ファイル(`input.jpg`)。 + 例として、店頭サインに「स्वागत है」と書かれた写真を想像してください。 + +> **プロのコツ:** 画像解像度は 300 dpi 以上に保ちましょう。解像度が低いと文字が抜け落ちやすくなります。 + +--- + +## 手順 1: OCR エンジンにリソースフォルダーを指定 – *extract text from image* + +Aspose OCR が最初に必要とするのは、言語モデルの場所です。これを設定しないと、エンジンは自動的にファイルをダウンロードしようとしますが、セキュアなネットワークでは望ましくありません。 + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*重要ポイント:* `ResourcesPath` を設定することで、エンジンはローカルの学習データを正しく読み込み、初回実行が高速化され、予期せぬネットワークトラフィックが発生しません。 + +--- + +## 手順 2: 自動リソースダウンロードを無効化 – *load image for OCR* + +多くの企業環境では外部インターネットへのアクセスがブロックされています。Aspose OCR は、欠損ファイルをその場で取得しようとするフラグを尊重します。 + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +この行を忘れると、ヒンディー語モデルが存在しない場合に「Unable to download required resource」という例外がスローされます。`false` に設定しておくことで、明確で決定的な失敗を自前でハンドリングできます。 + +--- + +## 手順 3: 言語を選択 – *recognize hindi text* + +Aspose OCR は多数の言語をサポートしていますが、使用する言語は明示的に指定する必要があります。ヒンディー語は `OcrLanguage.Hindi` で指定します。 + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*複数言語が必要な場合は?* `Language = OcrLanguage.AutoDetect` に設定するとエンジンが自動判別しますが、速度が遅く、混在スクリプトで誤検出することがあります。純粋なヒンディー語の場合は明示的な指定が最も安全です。 + +--- + +## 手順 4: 画像をロード – *load image for OCR* + +ここでエンジンに読み取らせたい画像を渡します。Aspose は `ImageStream.FromFile` ヘルパーを提供しており、`System.Drawing` への依存を抽象化しています。 + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +ファイルパスが間違っていると、Aspose は `FileNotFoundException` をスローします。事前に `File.Exists` でチェックするとデバッグ時間を短縮できます。 + +--- + +## 手順 5: OCR エンジンを実行 – *run OCR recognition* + +すべての設定が完了したら、認識プロセスを開始します。この呼び出しは同期的で、テキストが抽出されるまでブロックします。 + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +内部では、前処理(デスキュー、ノイズ除去)、セグメンテーション、文字分類、そして言語固有の後処理が順に行われます。重い処理はこの単一メソッド呼び出しの中で完結します。 + +--- + +## 手順 6: 抽出テキストを出力 – *extract text from image* + +結果はエンジンの `Text` プロパティに格納されます。ここではコンソールに書き出しますが、データベース保存や API 送信、別の NLP パイプラインへの入力など、用途は自由です。 + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**期待される出力**(画像に「स्वागत है」が含まれている場合): + +``` +=== OCR RESULT === +स्वागत है +``` + +文字化けが発生したら、ヒンディー語モデルの配置と画像の圧縮率を再確認してください。 + +--- + +## 完全動作サンプル + +以下は新しいコンソールプロジェクト(`dotnet new console`)にそのまま貼り付けられる完全プログラムです。`YOUR_DIRECTORY` を実際のパスに置き換えてください。 + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **ヒント:** 多数の画像をループ処理する場合は、`OcrEngine` のインスタンスを 1 つだけ作成して再利用すると、初期化オーバーヘッドが削減されます。 + +--- + +## よくある落とし穴と対処法 + +| 問題 | 発生原因 | 簡単な対処 | +|------|----------|------------| +| **出力が空** | 言語モデルが間違っている、または画像品質が低い | `ResourcesPath` を確認、画像 DPI を上げる、または `ocrEngine.Image = ImageStream.FromFile(..., true)` で自動補正を有効化 | +| **例外: Resource not found** | ヒンディー語の `.traineddata` が欠如 | Aspose からヒンディーモデルをダウンロードし、`OcrResources` に配置、ファイル名が `hin.traineddata` と一致しているか確認 | +| **文字化け** | コンソールのエンコーディング不一致 | コンソール出力エンコーディングを設定: `Console.OutputEncoding = System.Text.Encoding.UTF8;` | +| **パフォーマンス低下** | 大サイズ画像をスケーリングせずに処理 | OCR に渡す前に画像を最大幅/高さ 2000 px にリサイズ | + +--- + +## 次のステップと関連トピック + +- **バッチ処理:** `foreach` ループでフォルダー内の画像を一括処理。 +- **他言語:** `OcrLanguage.Hindi` を `OcrLanguage.English`、`OcrLanguage.Arabic` などに置き換える。 +- **出力形式:** `Console.WriteLine` の代わりにテキストファイルへ書き出す (`File.WriteAllText("result.txt", ocrEngine.Text);`)。 +- **ASP.NET Core との統合:** 画像アップロードを受け取り、抽出テキストを JSON で返す API エンドポイントを実装。 + +これらの拡張も同じパターンに従います—エンジンを設定し、画像をロードし、認識し、結果を利用する。 + +--- + +## 結論 + +本稿では、Aspose OCR を使用して C# で **画像からテキストを抽出** する方法を示しました。**画像を OCR 用にロード**、**ヒンディー語テキストを認識**、**OCR 認識を実行** するすべての手順を、自己完結型のコンソールアプリとしてまとめました。 + +ぜひ自分の画像で試し、他言語や Web サービス、バックグラウンドジョブへの応用も検討してください。基本的な流れは変わりません—リソースを設定し、言語を選び、画像を供給し、`Text` プロパティを読むだけです。 + +問題が発生したら上記のトラブルシューティング表を参照するか、コメントを残してください。コーディングを楽しみながら、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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/japanese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..50055b8a --- /dev/null +++ b/ocr/japanese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-01-10 +description: C#でAspose OCRを使用して画像に対してOCRを実行する方法。画像からテキストを抽出し、画像にOCRを適用し、GPUアクセラレーションでOCR用に画像を読み込む方法を学びます。 +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: ja +og_description: Aspose OCR を使用して画像で OCR を実行する方法。このチュートリアルでは、画像からテキストを抽出し、画像で OCR を実行し、OCR + 用に画像を効率的に読み込む方法を示します。 +og_title: C#でOCRを実行する方法 – 完全ステップバイステップガイド +tags: +- OCR +- C# +- Aspose +title: C#でOCRを実行する方法 – Aspose OCRによる完全ガイド +url: /ja/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でOCRを実行する方法 – Aspose OCR完全ガイド + +写真からテキストを抽出したいとき、**OCRの実行方法**で悩んだことはありませんか? あなた一人だけではありません。請求書のデジタル化、レシートのスキャン、検索可能なPDFの作成など、画像からテキストを抽出する必要は多くの開発者にとって日常的な課題です。 + +このチュートリアルでは、Aspose OCR ライブラリを使用して **画像ファイルでOCRを実行する方法** を実践的にエンドツーエンドで解説します。GPU 加速による高速化も組み込んでいます。最後まで読めば、画像の読み込み、メモリ使用量の調整、クリーンなプレーンテキストの取得方法を数分のコードでマスターできます。 + +## 学べること + +- C# で Aspose OCR エンジンを初期化する方法 +- ディスクまたはストリームから **OCR用に画像をロード** する方法 +- GPU 加速を有効にし、GPU メモリを制限する方法 +- **画像からテキストを抽出** し、出力を検証する方法 +- よくある落とし穴(GPU モジュールがない、メモリ制限)とその対処法 + +Aspose OCR の事前知識は不要です。.NET 環境とサンプル画像があればすぐに始められます。 + +--- + +## Aspose OCR で画像に対して OCR を実行する方法 + +まずは、すべての処理を行うシンプルで実行可能なコードスニペットを用意します。以下のプログラムをコピーして貼り付け、すぐに実行できます。 + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**期待される出力**(サンプル画像に “Hello World” が含まれていると仮定): + +``` +=== OCR Result === +Hello World +``` + +> **プロのコツ:** テキストが表示されない場合は、GPU モジュールがインストールされているか、画像パスが正しいかを再確認してください。`ImageStream.FromFile` メソッドは、ファイルが見つからない場合に明確な例外をスローします。 + +--- + +## GPU 加速を使用して画像からテキストを抽出する + +GPU を使う理由は何でしょうか? CPU のみでも OCR は可能ですが、大きな画像や高解像度の画像では非常に遅くなります。GPU 加速(上記ステップ 2)を有効にすると、重い処理をグラフィックカードに任せられ、秒単位で何千ピクセルもの処理が可能になります。 + +### GPU を使用すべきシーン + +- **バッチ処理** – 一度に多数の請求書をスキャンする場合。 +- **高解像度スキャン** – 300 dpi 以上の画像。 +- **リアルタイムアプリ** – モバイルスキャナなど、即時フィードバックが必要な場合。 + +互換性のある GPU が無い環境では、`EnableGpuAcceleration = false;` と設定すれば自動的に CPU モードにフォールバックします。 + +--- + +## 画像を正しくロードして OCR を実行する + +画像のロードは **OCR用に画像をロード** するステップで、ここでつまずく人が多いです。Aspose OCR は `ImageStream` を期待しており、ファイル、メモリストリーム、URL から作成できます。以下にいくつかのバリエーションを示します。 + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**エッジケース:** 画像にアルファチャンネル(透過)が含まれていると OCR エンジンが混乱します。アルファチャンネルの除去は簡単です。 + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +これで **OCR用に画像をロード** する最も一般的な方法を網羅し、エンジンが常にクリーンでサポートされた形式を受け取れるようになりました。 + +--- + +## OCR 用画像ロードの効率的なヒント + +1. **大きな画像をリサイズ** – OCR には 4 K 写真は不要です。幅約 1500 px に縮小すれば、精度を損なわずに速度が向上します。 +2. **グレースケールに変換** – ノイズが減り、低コントラストのスキャンでも認識率が上がります。 +3. **デスキュー前処理** – 画像が傾いている場合、`ocrEngine.Config.EnableDeskew = true;` で Aspose OCR の組み込みデスキュー機能を有効にできます。 + +これらの調整は、**画像からテキストを抽出** する際に大量処理を行うときに特に有用です。 + +--- + +## よくある落とし穴と対処法 + +| 症状 | 考えられる原因 | 対処法 | +|------|----------------|--------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU モジュールが未インストール | Aspose OCR GPU パッケージをインストールするか、GPU を無効化 (`EnableGpuAcceleration = false`) | +| 出力が空 | 画像パスが間違っている、または未対応フォーマット | `ImageStream.FromFile` のパスを確認。バイト配列からロードしてファイルが正しく読めているか検証 | +| メモリ不足エラー | 大バッチに対して GPU メモリ上限が低すぎる | `GpuMemoryLimit` を増やす(例: 2048)か、画像を小分けに処理 | +| 文字化け | 画像に大量のノイズや低コントラストがある | 前処理で二値化、デスペックル、または DPI を上げてから OCR を実行 | + +--- + +## 完全動作サンプル – すべてをまとめる + +以下は、これまで説明したベストプラクティス(GPU 加速、メモリ制限、画像前処理、エラーハンドリング)を組み込んだコンパクトなコンソールアプリです。 + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +このプログラムを実行すると、画像から抽出されたクリーンなテキストが出力されます。ソースが完璧でなくても **画像からテキストを抽出** できる堅牢な方法を示しています。 + +--- + +## まとめ + +Aspose OCR を使って画像上で **OCRを実行する方法** を、エンジンの初期化から画像ロード、GPU 加速の有効化、エッジケースの処理まで網羅しました。これで、任意の .NET プロジェクトにコピー&ペーストしてすぐに **画像からテキストを抽出** できる、信頼できるリファレンスが手に入りました。 + +次のステップは? PDF ページを入力にしたり、`ocrEngine.Config.Language = "spa"` でスペイン語など別言語に挑戦したり、アップロードをリアルタイムで処理する Web API に統合したりしてみてください。可能性は無限大です。今回紹介したツールがあれば、どんな OCR の課題にも自信を持って取り組めます。 + +Happy coding, and may your text always be clean and your OCR fast! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/japanese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..fbf18dc6 --- /dev/null +++ b/ocr/japanese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-01-10 +description: 画像からアラビア語テキストを素早くOCRで抽出する方法。画像をテキストに変換し、PNGからテキストを読み取り、Aspose OCRでテキストを抽出する手順を学びましょう。 +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: ja +og_description: C#でOCRを実行し、PNG画像からアラビア語テキストを抽出する方法。このガイドでは、画像をテキストに変換し、PNGからテキストをステップバイステップで読み取る方法を示します。 +og_title: C#でOCRを実行する方法 – PNGからアラビア語テキストを抽出 +tags: +- OCR +- C# +- Aspose +title: C#でOCRを実行する方法 – PNGからアラビア語テキストを抽出 +url: /ja/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#でOCRを実行する方法 – PNGからアラビア語テキストを抽出する + +アラビア文字が含まれる画像で **OCRを実行する方法** を考えたことはありますか? あなたは一人ではありません。多くの開発者は、PNGから **アラビア語テキストを抽出** したいときに、右から左へのスクリプトを問題なく処理できるライブラリがどれか分からず壁にぶつかります。 + +このチュートリアルでは、**画像をテキストに変換**し、**PNGからテキストを読み取り**、最後に Aspose.OCR を使用して **テキストを抽出する方法** をクリーンな C# コンソールアプリで実行するために必要なすべてを解説します。最後までに、ターミナルにアラビア語文字列を直接出力する実行可能なプログラムが手に入ります。 + +## 学習できること + +- Aspose.OCR NuGet パッケージをインストールし、参照する。 +- アラビア語サポートのために OCR エンジンを構成する。 +- PNG 画像をロードし、認識プロセスを実行する。 +- 抽出されたテキストを取得して表示する。 +- 設定を調整して精度を向上させ、一般的な落とし穴に対処する。 + +OCR の事前経験は不要です。C# の基本的な理解と .NET 開発環境(Visual Studio、Rider、または `dotnet` CLI があれば十分)さえあれば始められます。 + +--- + +## OCR の実行方法 – Aspose OCR のセットアップ + +### 手順 1: Aspose.OCR NuGet パッケージを追加する + +最初に必要なのは OCR ライブラリそのものです。Aspose.OCR は商用製品ですが、学習目的で完全に機能する無料トライアルが提供されています。 + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +あるいは、Visual Studio の **NuGet パッケージ マネージャー** を開き、**Aspose.OCR** を検索して **インストール** をクリックします。 + +> **プロのコツ:** ライブラリを CI パイプラインで使用する予定がある場合、バージョンを固定するために `-v` フラグを追加してください。例: `dotnet add package Aspose.OCR -v 23.10`. + +### 手順 2: 新しいコンソールプロジェクトを作成する(まだ持っていない場合) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +これで、コードを書き込むための新しい `Program.cs` ファイルが用意できました。 + +--- + +## アラビア語テキストの抽出 – OCR コードの作成 + +以下は完全な実行可能プログラムです。`Program.cs` として保存するか(または自動生成されたファイルを置き換えて)使用してください。 + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### 各行が重要な理由 + +- **`OcrEngine`**: 画像の読み込み、言語選択、認識を調整する中心クラスです。 +- **`Language = OcrLanguage.Arabic`**: アラビア語は右から左へのスクリプトと固有の字形を持つため、言語を設定することでエンジンは正しい文字モデルを適用します。 +- **`ImageStream.FromFile`**: PNG、JPEG、BMP など多数のフォーマットを処理します。`MemoryStream`(例: アップロードされたファイル)から読み込む必要がある場合は、この呼び出しを置き換えてください。 +- **`Recognize()`**: ピクセル解析、セグメンテーション、文字分類といった重い処理を実行します。 +- **`ocrEngine.Text`**: 最終的な Unicode 文字列で、さらに処理したり保存したり表示したりする準備ができています。 + +### 期待される出力 + +`arabic_sample.png` にフレーズ “مرحبا بالعالم”(Hello World)が含まれている場合、コンソールは次のように出力します: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +出力が文字化けしている場合は、画像が鮮明か、言語がアラビア語に設定されているか、OCR エンジンのバージョンがドキュメントと一致しているかを再確認してください。 + +--- + +## 画像をテキストに変換 – 精度の調整 + +デフォルト設定はほとんどのクリーンなスキャンで機能しますが、実際の画像では追加の調整が必要になることが多いです。 + +| 設定 | 機能 | 使用タイミング | +|---------|--------------|-------------| +| `ocrEngine.Config.Preprocess = true` | 自動二値化とノイズ除去を有効にします。 | 影のあるスキャン文書。 | +| `ocrEngine.Config.Deskew = true` | 画像を回転させてわずかな傾きを補正します。 | 斜めに撮影された写真。 | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | 画像全体を1つのテキストブロックとして扱います。 | シンプルなキャプションや1行ラベル。 | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | アラビア文字のみの認識に制限します。 | 混在言語ページでの誤認識を減らす。 | + +エンジンを作成した直後に、これらの行を追加できます: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## PNG からテキストを読む – 異なる画像ソースの取り扱い + +PNG がデータベースに保存されていたり、Web リクエストから来ることがあります。以下は `byte[]` から読み込む簡易バージョンです: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +残りのフローは同一なので、**テキストを抽出する方法** はソースに関係なく一貫しています。 + +--- + +## テキスト抽出方法 – 高度なオプションとエッジケース + +### 1. マルチページ PDF または TIFF + +マルチページ文書を OCR する必要がある場合、各ページをループ処理します: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **注:** このスニペットには `Aspose.PDF` パッケージが必要です。 + +### 2. 言語の自動検出 + +Aspose.OCR は自動検出も提供していますが、処理は遅くなります。画像がアラビア語か他のスクリプトか不明な場合は、これを有効にしてください: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +エンジンは各言語モデルを試し、最適なものを選択します。 + +### 3. パフォーマンスのヒント + +- **`OcrEngine`** オブジェクトを複数の画像で再利用する;毎回新しいインスタンスを作成するとオーバーヘッドが増えます。 +- **並列実行** は、スレッドごとに別々のエンジンインスタンスがある場合にのみ行ってください。1つのインスタンスを共有すると競合状態が発生します。 + +--- + +## 結論 + +C# で **OCR を実行する方法** を最初から最後までカバーし、**アラビア語テキストの抽出**、**画像をテキストに変換**、**PNG からテキストを読む**、そして様々なシナリオで **テキストを抽出する方法** を示しました。サンプルコードは完全で自己完結しており、任意の .NET コンソールプロジェクトに貼り付けてすぐに使用できます。 + +次のステップは? `OcrLanguage.Arabic` を韓国語やセルビア語キリル文字に置き換えて、ライブラリの多言語対応力を体験してみてください。前処理フラグを試してノイズが多いスキャンの精度を向上させるか、OCR 処理を Web API に統合してユーザーが画像をアップロードし即座にテキスト結果を取得できるようにしましょう。 + +コーディングを楽しんで、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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/japanese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..9e76f3a1 --- /dev/null +++ b/ocr/japanese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,295 @@ +--- +category: general +date: 2026-01-10 +description: C#でAspose OCRを使用して画像からテキストを認識し、テキスト座標を抽出し、領収書をJSONに変換する方法を学びましょう。ステップバイステップのチュートリアルです。 +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: ja +og_description: Aspose OCR を使用して C# で画像からテキストを認識します。このガイドでは、テキストの抽出方法、座標の取得方法、領収書を + JSON に変換する方法を示します。 +og_title: 画像からテキストを認識する – 完全なC# OCRチュートリアル +tags: +- OCR +- C# +- Aspose +title: C#で画像からテキストを認識する – OCRとJSONの完全ガイド +url: /ja/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 画像からテキストを認識する – 完全な C# OCR チュートリアル + +画像からテキストを認識したいが、どのライブラリを選べばよいか分からなかったことはありませんか? あなたは一人ではありません。実際のアプリ(費用トラッカー、レシートスキャナー、ドキュメントアーカイバーなど)では、テキストを確実に抽出することが最初のハードルです。 + +このチュートリアルでは、**テキストの抽出方法**、バウンディングボックスの取得、そして最終的に Aspose.OCR for .NET を使用して **レシートを JSON に変換** する手順を解説します。最後まで実行すれば、レシートの写真を入力として、信頼度スコアと座標を含む整然とした JSON ファイルを出力する、自己完結型の C# プロジェクトが手に入ります。 + +## 必要なもの + +始める前に、以下がマシンにインストールされていることを確認してください: + +- **.NET 6.0 SDK**(またはそれ以降のバージョン)。古いフレームワークでも動作しますが、.NET 6 は最新ライブラリに最適です。 +- **Visual Studio 2022** または C# 拡張機能がインストールされた VS Code。 +- **Aspose.OCR for .NET** NuGet パッケージ(`Aspose.OCR` と `Aspose.OCR.Output`)。Package Manager Console からインストールできます: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- サンプルのレシート画像(例:`receipt.jpg`)を、後で参照するフォルダーに配置します。 + +以上です—追加の SDK やネイティブバイナリは不要で、純粋なマネージドコードだけです。 + +## 手順 1: 新しいコンソールプロジェクトを作成する + +まずはコンソールアプリを作成します。UI のオーバーヘッドがなく、OCR をテストする最速の方法です。 + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **プロのコツ:** プロジェクトフォルダーを整理整頓しましょう。`Resources` というサブフォルダーを作成し、そこに `receipt.jpg` を置きます。パス処理が楽になります。 + +## 手順 2: レシート画像を読み込む + +ここで実際に **画像からテキストを認識** します。最初のステップは OCR エンジンにファイルを指定することです。 + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +なぜロード時に簡単な存在チェックを行うのでしょうか? 本番環境では、ユーザーがアップロードしたファイルが欠損や破損していることがよくあります。早期に問題を検出することで、後で意味不明な例外に悩まされることを防げます。 + +## 手順 3: OCR を実行する – **画像からテキストを認識** + +画像がメモリ上にある状態で、Aspose に **画像からテキストを認識** させます。この操作は同期的で、豊富な結果セットが返されます。 + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +内部では、Aspose が何百万もの文字で学習したニューラルネットワークを実行しています。エンジンは `ocrEngine.Text`、`ocrEngine.RecognitionResult`、そして座標を保持する `OcrRegion` オブジェクトのコレクションを生成します。これが次のステップで必要になる情報です。 + +## 手順 4: **テキストの抽出方法** – 生文字列の取得 + +プレーンテキストだけが必要な場合(例えば簡易検索用)、エンジンから直接取得できます: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +OCR が段落の境界を検出した場所で改行が入っていることに気付くでしょう。レシートスキャンの多くのシナリオでは、生文字列だけで合計金額や日付、ベンダー名をシンプルな正規表現で抽出できます。 + +## 手順 5: **テキスト座標の抽出** – 各単語のバウンディングボックス + +画像上で特定のテキストがどこにあるか(例:UI で合計金額をハイライトする)を知りたくなることがよくあります。Aspose は `OcrRegion` オブジェクトを通じてその情報を提供します。 + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +ここでは認識されたすべてのセグメントに対して **テキスト座標の抽出** をループしています。座標は元画像に対して相対的なので、グラフィックキャンバスや HTML の `` 要素に重ねて表示できます。 + +## 手順 6: **レシートを JSON に変換** – 詳細結果の保存 + +ここで全体を結びつけるパートです。テキスト、信頼度スコア、バウンディングボックスを含む機械可読な構造が欲しいです。Aspose には `JsonSaveOptions` が用意されており、これを簡単に実現できます。 + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +生成されたファイルは以下のようになります(簡略化しています): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +これで **レシートを JSON に変換** した成果物ができました。これを下流のサービス(例:経費レポート API、分析パイプライン、あるいは各単語に矩形を描画するシンプルな UI)に渡すことができます。 + +## 完全な動作例 + +すべてのパーツを組み合わせた完全な `Program.cs` を以下に示します。プロジェクトにコピー&ペーストして使用できます: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +プログラムを実行(`dotnet run`)し、コンソール出力を確認してください。`Resources/receipt.json` を開いて構造を検証しましょう。 + +## よくある質問とエッジケース + +- **画像がぼやけている場合は?** + Aspose OCR は 300 dpi 以上で最適に動作します。信頼度スコアが低い場合は、エンジンに画像を渡す前にシャープ化フィルタを適用することを検討してください。 + +- **複数言語を認識できますか?** + はい。`Recognize()` を呼び出す前に `ocrEngine.Language = Language.English | Language.Spanish;` と設定します。 + +- **出力を数字(例:合計金額)のみに限定するには?** + プレーンテキストを取得した後、`ocrEngine.Text` に対して `\d+\.\d{2}` のような正規表現を実行します。座標情報が既にあるので、マッチした文字列を対応する領域にマッピングして視覚的にハイライトできます。 + +- **JSON フォーマットはカスタマイズ可能ですか?** + `JsonSaveOptions` クラスは複数のフラグを提供しています。完全に独自のスキーマが必要な場合は、`ocrEngine.RecognitionResult.Regions` を走査し、`System.Text.Json` を使って自分でオブジェクトをシリアライズできます。 + +## 結論 + +ここでは、C# で Aspose.OCR を使用して **画像からテキストを認識** し、**テキストを抽出**、**テキスト座標を取得**、そして最終的に **レシートを JSON に変換** する方法を示しました。全体のフローは単一の実行しやすいコンソールアプリに収められており、プロトタイプや大規模システムの構成要素として最適です。 + +次のステップは? JSON をバウンディングボックスを描画するフロントエンドに渡す、あるいは経費レポートサービスに組み込んでみてください。また、異なる画像フォーマット(PNG、TIFF)を試したり、レシートフォルダーをバッチ処理したりすることもできます。 + +OCR、Aspose、JSON の取り扱いについてさらに質問がありますか?以下にコメントを残してください。コーディングを楽しんで! + +![画像からテキストを認識するためのレシート画像例](receipt.jpg "レシート画像例") + +{{< /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/net/ocr-configuration/_index.md b/ocr/korean/net/ocr-configuration/_index.md index e00d1286..e4185737 100644 --- a/ocr/korean/net/ocr-configuration/_index.md +++ b/ocr/korean/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Aspose.OCR을 사용하여 .NET에서 OCR 이미지 인식 기능을 활용하 .NET용 Aspose.OCR로 강력한 OCR 기능을 잠금 해제하세요. 이미지에서 텍스트를 원활하게 추출합니다. ### [OCR 이미지 인식에서 목록을 사용한 OCOperation](./ocr-operation-with-list/) .NET용 Aspose.OCR의 잠재력을 활용해 보세요. 목록을 사용하여 OCR 이미지 인식을 손쉽게 수행하세요. 애플리케이션의 생산성과 데이터 추출을 향상하십시오. +### [.NET에서 임베디드 리소스 읽기 – Aspose 라이선스 설정 완전 가이드](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Aspose 라이선스를 설정하기 위해 .NET에서 임베디드 리소스를 읽는 방법을 단계별로 안내합니다. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/korean/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..08818034 --- /dev/null +++ b/ocr/korean/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-01-10 +description: C#에서 임베디드 리소스를 읽고 Aspose 라이선스를 설정합니다. GetManifestResourceStream 사용법, + 라이선스 파일 임베드, 실행 어셈블리 가져오기 등을 한 번에 배울 수 있는 튜토리얼입니다. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: ko +og_description: .NET에서 임베디드 리소스를 읽고 Aspose 라이선스를 빠르게 설정하세요. GetManifestResourceStream, + 라이선스 임베드, 실행 어셈블리 사용을 다루는 단계별 가이드. +og_title: 임베디드 리소스 읽기 – .NET에서 Aspose 라이선스 설정 +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: .NET에서 임베디드 리소스 읽기 – Aspose 라이선스 설정 완전 가이드 +url: /ko/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 임베디드 리소스 읽기 – Aspose 라이선스 설정 완전 가이드 + +런타임에 **임베디드 리소스 읽기**가 필요했으며, 경로를 하드코딩하지 않고 Aspose OCR 라이브러리 라이선스를 적용하는 방법을 궁금해 본 적이 있나요? 당신만 그런 것이 아닙니다. 많은 기업 애플리케이션에서 라이선스 파일은 어셈블리 내부에 존재하므로 별도의 파일을 배포하거나 권한 문제를 걱정할 필요가 없습니다. 이 튜토리얼에서는 .NET `GetManifestResourceStream` 메서드를 사용하여 임베디드 리소스를 읽고 Aspose 라이선스를 설정하는 정확한 방법을 보여드립니다. + +우리는 필요한 모든 과정을 단계별로 안내합니다: `.lic` 파일을 임베드하고, `GetExecutingAssembly` 로 추출한 뒤, 마지막으로 Aspose OCR `License` 클래스에 적용합니다. 최종적으로 외부 파일 없이 모든 .NET 프로젝트에서 동작하는 자체 포함 솔루션을 얻게 됩니다. + +## 배울 내용 + +- **라이선스 파일을 임베드하는 방법**을 .NET 프로젝트에 적용하여 컴파일된 DLL의 일부가 되게 합니다. +- 임베디드 리소스를 읽기 위해 **GetManifestResourceStream 사용 방법**을 정확히 설명합니다. +- 파일 시스템을 건드리지 않고 프로그래밍 방식으로 **Aspose 라이선스 설정**하는 방법. +- 리소스 이름 오타나 빌드 액션 누락과 같은 일반적인 함정 처리 팁. +- 자신의 솔루션에 바로 넣어 사용할 수 있는 완전한 실행 가능한 코드 샘플. + +### 사전 요구 사항 + +- .NET 6.0 이상 (코드는 .NET Framework 4.x에서도 동작하지만 프로젝트 파일을 적절히 조정하면 됩니다). +- Aspose.OCR NuGet 패키지 설치 (`dotnet add package Aspose.OCR`). +- C# 및 Visual Studio(또는 선호하는 IDE)에 대한 기본 지식. + +이미 준비가 되었다면, 좋습니다—시작해 봅시다. + +## 단계 1: Aspose 라이선스 파일을 어셈블리에 임베드하기 + +먼저 필요한 것은 실제 라이선스 파일(`Aspose.OCR.lic`)입니다. 실행 파일 옆에 복사하는 대신 **리소스**로 임베드합니다. + +1. 프로젝트에 `.lic` 파일을 추가합니다(예: `Resources` 폴더를 만들고 파일을 넣음). +2. 파일 속성에서 **Build Action**을 `Embedded Resource` 로 설정합니다. + *Pro tip:* 폴더 구조를 단순하게 유지하세요; 전체 자격 리소스 이름은 `YourNamespace.Resources.Aspose.OCR.lic` 가 됩니다. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +왜 임베드하나요? 어셈블리 자체에 라이선스를 포함하게 되므로 프로덕션 서버에서 파일이 누락될 위험을 없앨 수 있습니다. + +## 단계 2: GetExecutingAssembly 로 임베디드 리소스 가져오기 + +이제 라이선스가 DLL 내부에 존재하므로 런타임에 **임베디드 리소스 읽기**가 필요합니다. .NET `Assembly` 클래스가 바로 그 방법을 제공합니다. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +`GetExecutingAssembly` 메서드는 현재 실행 중인 어셈블리를 반환합니다—코드와 함께 존재하는 리소스를 찾기에 완벽합니다. + +## 단계 3: GetManifestResourceStream 으로 라이선스 스트림 열기 + +어셈블리 참조를 확보했으니 `GetManifestResourceStream` 를 호출할 수 있습니다. 이 메서드는 Aspose에 직접 전달할 수 있는 `Stream` 을 반환합니다. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +우리는 **null‑conditional** `using` 문(`using Stream?`)을 사용하여 스트림이 자동으로 해제되도록 합니다. 이름이 잘못되면 명확한 예외를 발생시켜 나중에 발생할 수 있는 무음 실패를 방지합니다. + +## 단계 4: Aspose OCR에 라이선스 적용 + +Aspose의 `License` 클래스는 `Stream` 을 기대합니다. 이미 스트림을 가지고 있으므로 마지막 단계는 간단합니다. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +이것으로 끝! Aspose OCR 엔진이 이제 완전히 라이선스가 적용되어 워터마크 없이 이미지를 처리할 준비가 되었습니다. + +## 전체 작동 예제 + +아래는 전체 과정을 보여주는 완전한 복사‑붙여넣기‑가능 프로그램입니다. 필요한 `using` 지시문, 오류 처리, 그리고 라이선스가 활성화되었음을 증명하는 간단한 OCR 호출이 포함되어 있습니다. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### 예상 출력 + +유효한 라이선스가 임베드된 머신에서 프로그램을 실행하면 다음과 같은 출력이 표시됩니다: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +라이선스 스트림을 찾을 수 없으면 콘솔에 누락된 리소스 이름이 보고되어 **Build Action** 및 네임스페이스를 다시 확인하도록 안내합니다. + +## 일반적인 함정 및 회피 방법 + +| 문제 | 발생 원인 | 해결 방법 | +|-------|----------------|-----| +| **리소스 이름 불일치** | .NET는 기본 네임스페이스와 폴더 경로를 조합하여 리소스 이름을 생성합니다. | `Assembly.GetManifestResourceNames()` 를 사용하여 가능한 이름을 나열하고 정확한 문자열을 확인합니다. | +| **라이선스 파일이 임베디드 리소스로 설정되지 않음** | 기본 Build Action은 `Content` 입니다. | 파일 속성에서 `Embedded Resource` 로 변경합니다. | +| **다른 어셈블리에서 실행** | 클래스 라이브러리에서 코드를 호출하면 `GetExecutingAssembly()` 가 메인 exe 대신 라이브러리를 반환할 수 있습니다. | `Assembly.GetEntryAssembly()` 를 사용하거나 올바른 어셈블리를 명시적으로 전달합니다. | +| **사용 전에 스트림이 해제됨** | `using` 블록을 실수로 사용해 스트림이 너무 일찍 닫히는 경우. | 위와 같이 `SetLicense` 호출 주변에 `using` 을 유지합니다. | +| **Aspose.OCR 버전 불일치** | 새 버전에서는 다른 라이선스 형식이 필요할 수 있습니다. | 항상 Aspose 계정에서 최신 라이선스를 다운로드하고 다시 임베드하세요. | + +## 다른 임베디드 파일에도 동일한 기법 사용하기 + +이 패턴—**임베디드 리소스 읽기**, 그 다음 **GetManifestResourceStream 사용**—은 JSON 설정, 이미지, 심지어 네이티브 DLL과 같은 모든 파일 유형에 적용됩니다. `resourceName` 과 스트림 사용 방식을 조정하면 됩니다. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## 시각적 개요 + +![임베디드 리소스를 읽고 Aspose 라이선스를 설정하는 과정을 보여주는 다이어그램](read-embedded-resource-diagram.png) + +*Alt text:* 임베디드 리소스 – 임베드, GetManifestResourceStream 로 가져오기, 그리고 Aspose 라이선스 적용을 보여주는 다이어그램. + +## 요약 + +.NET 어셈블리에서 **임베디드 리소스 읽기**, **GetManifestResourceStream 사용** 정확한 단계, 그리고 디스크에 파일을 노출하지 않고 **Aspose 라이선스 설정** 하는 깔끔한 방법을 다루었습니다. 라이선스를 임베드함으로써 배포 문제를 없애고 애플리케이션을 휴대 가능하게 유지합니다. + +## 다음 단계 + +- **라이선스 업데이트 자동화:** Aspose 구독을 갱신할 때 임베드된 `.lic` 파일을 교체하는 작은 빌드‑시간 스크립트를 작성합니다. +- **리소스 보안 강화:** 임베드하기 전에 라이선스를 암호화하고 런타임에 복호화하여 추가 보호를 고려합니다. +- **다른 Aspose 제품 탐색:** 동일한 방법이 Aspose.Words, Aspose.PDF 등에도 적용되며, 각각 고유한 `License` 클래스를 가집니다. + +자유롭게 실험해 보세요—아마도 여러 모듈에 대해 여러 라이선스를 임베드하거나 설정 기반 리소스 이름으로 전환할 수도 있습니다. 가능성은 무한합니다. + +--- + +*코딩 즐겁게! 문제가 발생하면 아래에 댓글을 남기거나 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/net/skew-angle-calculation/_index.md b/ocr/korean/net/skew-angle-calculation/_index.md index 28e7eaca..45c55b05 100644 --- a/ocr/korean/net/skew-angle-calculation/_index.md +++ b/ocr/korean/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ C# 애플리케이션에서 정확한 텍스트 인식을 위한 강력한 OCR 이미지 인식을 위한 강력한 솔루션인 .NET용 Aspose.OCR의 강력한 기능을 활용해 보세요. 경사각을 쉽게 계산하는 방법을 알아보세요. ### [OCR 이미지 인식의 URI에서 기울기 각도 계산](./calculate-skew-angle-from-uri/) .NET용 Aspose.OCR을 탐색하여 OCR 이미지 인식의 기울어짐 각도를 쉽게 계산하세요. 정확성과 효율성으로 프로젝트를 향상시키세요. +### [C#에서 이미지 기울기 보정 방법 – 완전한 OCR 전처리 가이드](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +C#과 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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/korean/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..a038d5db --- /dev/null +++ b/ocr/korean/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,263 @@ +--- +category: general +date: 2026-01-10 +description: Aspose.OCR을 사용하여 이미지의 기울기를 보정하고 OCR 결과를 향상시키는 방법. OCR을 위한 이미지 전처리, 스캔에서 + 노이즈 제거, 스캔된 텍스트 인식을 배웁니다. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: ko +og_description: 이미지의 기울기를 보정하고 OCR 정확도를 높이는 방법. 이 가이드는 OCR을 위한 이미지 전처리, 스캔에서 노이즈 제거, + 그리고 Aspose.OCR을 사용하여 스캔에서 텍스트를 인식하는 방법을 보여줍니다. +og_title: C#에서 이미지 기울기 보정 방법 – 완전한 OCR 전처리 가이드 +tags: +- OCR +- C# +- Image Processing +title: C#에서 이미지 기울기 보정 방법 – 완벽한 OCR 전처리 가이드 +url: /ko/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 이미지 기울기 보정하기 – 완전한 OCR 전처리 가이드 + +OCR 엔진에 넣기 전에 **이미지 기울기 보정** 방법이 궁금하셨나요? 당신만 그런 것이 아닙니다. 스캔한 문서는 종종 기울어져 있거나, 잡음이 있거나, 대비가 낮아 텍스트 인식에 방해가 됩니다. + +이 튜토리얼에서는 **OCR용 이미지 전처리**를 수행하고, 스캔 잡음을 제거하며, 마지막으로 Aspose.OCR 라이브러리를 사용해 **스캔에서 텍스트 인식**까지 하는 전체 실행 가능한 예제를 단계별로 살펴보겠습니다. 끝까지 읽으면 **C#에서 OCR을 사용하는 방법**을 짧고 간결하게 이해할 수 있습니다. + +> **프로 팁:** 작은 회전(5‑10°)만 있어도 OCR 정확도가 30 % 이상 떨어질 수 있습니다. 기울기 보정은 절대 건너뛰면 안 되는 첫 번째 단계입니다. + +--- + +## 준비물 + +- **.NET 6+** (코드는 .NET Framework에서도 동작하지만 현재 LTS는 .NET 6) +- **Aspose.OCR for .NET** – NuGet에서 가져올 수 있습니다 (`Install-Package Aspose.OCR`) +- 회전되었거나 잡음이 있는 샘플 TIFF/PNG/JPEG 파일 (`noisy_rotated.tif`를 예제로 사용) +- 원하는 IDE – Visual Studio, Rider, VS Code 등 + +그게 전부입니다. 추가 라이브러리나 외부 서비스는 필요 없습니다. + +--- + +## Step 1 – 원본 이미지 로드 (왜 중요한가) + +**이미지 기울기 보정**을 하기 전에 먼저 Aspose `ImageStream`으로 읽어야 합니다. 이 객체는 파일 I/O를 추상화하고 OCR 엔진에 일관된 인터페이스를 제공합니다. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*왜 먼저 로드해야 할까요?* 모든 후속 필터는 메모리 상의 이미지에 적용되기 때문입니다. 파일을 읽지 못하면 파이프라인 전체가 무너집니다. + +--- + +## Step 2 – 전처리 파이프라인 구축 (기울기 보정 + 잡음 제거 + 대비 향상) + +견고한 OCR 워크플로는 일반적으로 여러 필터를 체인합니다. 여기서 **OCR용 이미지 전처리**와 더 중요한 **이미지 기울기 보정**을 자동으로 수행합니다. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**왜 이 세 가지인가요?** +- **DeskewFilter**는 “이미지 기울기 보정 방법” 문제를 자동으로 해결해 주며 각도를 직접 추정할 필요가 없습니다. +- **DenoiseFilter**는 **스캔에서 잡음 제거** 요구사항을 처리합니다. 잡음이 있으면 유령 문자처럼 보일 수 있습니다. +- **ContrastBoostFilter**는 OCR 엔진이 어두운 텍스트와 밝은 배경을 구분하도록 도와줍니다. 이는 **OCR용 이미지 전처리** 시 흔히 겪는 문제입니다. + +--- + +## Step 3 – 파이프라인 적용 (변환 결과 확인) + +이제 실제로 필터를 실행합니다. 반환된 `processedImage`가 OCR 엔진에 전달될 이미지입니다. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +`cleaned_output.tif`를 열어 보면 텍스트가 똑바르고, 입자가 적으며, 대비가 높아진 것을 확인할 수 있습니다. 이는 **스캔에서 잡음 제거** 후 기울기 보정이 제대로 되었는지 시각적으로 확인하는 좋은 방법입니다. + +--- + +## Step 4 – OCR 엔진 생성 및 설정 (OCR 사용 방법) + +정리된 이미지를 가지고 `OcrEngine`을 인스턴스화합니다. 이것이 **OCR 사용 방법**의 핵심입니다. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*왜 `AutoPageSegmentation`을 설정하나요?* 많은 스캔 문서에 표나 다중 컬럼이 포함되어 있기 때문입니다. 이를 켜면 엔진이 페이지를 지능적으로 분할해 최종 **스캔에서 텍스트 인식** 결과를 개선합니다. + +--- + +## Step 5 – 인식 프로세스 실행 (드디어 텍스트 인식) + +이제 진짜 순간입니다: 엔진에게 텍스트를 읽어 달라고 요청합니다. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +모든 것이 정상적으로 진행되었다면 원본 문서와 일치하는 깔끔한 텍스트 블록을 확인할 수 있습니다. 이는 **이미지 기울기 보정**, **잡음 제거**, **OCR용 이미지 전처리**를 제대로 수행했을 때 얻는 결과입니다. + +--- + +## Step 6 – 전체 작업 예제 (복사‑붙여넣기 가능) + +아래는 바로 컴파일할 수 있는 전체 프로그램입니다. 파일 경로만 바꾸면 바로 실행됩니다. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**예상 출력** (간략히): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +출력이 깨져 보인다면 원본 이미지가 30° 이상 회전되지 않았는지 확인하거나 `DeskewFilter.MaxAngle` 값을 늘려 보세요. + +--- + +## 자주 묻는 질문 (예외 상황 및 변형) + +| Question | Answer | +|----------|--------| +| **스캔이 45° 회전된 경우는 어떻게 하나요?** | `DeskewFilter`는 `MaxAngle`으로 제한됩니다. 값을 높이세요(예: `MaxAngle = 60`). 또는 그래픽 라이브러리로 미리 회전시킨 뒤 파이프라인에 전달합니다. | +| **PDF를 페이지별로 처리할 수 있나요?** | 가능합니다. 각 PDF 페이지를 이미지로 변환(`Aspose.Pdf` 사용)한 뒤 동일한 파이프라인을 적용하면 됩니다. | +| **문서가 프랑스어인 경우 별도 설정이 필요할까요?** | `ocrEngine.Language = Language.French;` 혹은 커스텀 언어 팩을 로드하면 됩니다. 나머지 파이프라인은 동일하게 사용합니다. | +| **원본 해상도를 유지하려면 어떻게 해야 하나요?** | `PreprocessPipeline`은 원본 비트맵에서 작업하므로 DPI가 보존됩니다. 성능을 위해 다운스케일이 필요하지 않은 한 `ImageStream.Resize`를 호출하지 마세요. | +| **컬러 스캔에 대비 향상이 미치는 영향은?** | `ContrastBoostFilter`는 각 채널에 적용되므로 흑백·컬러 모두 안전합니다. 필요하면 `new GrayscaleFilter()`로 먼저 그레이스케일 변환 후 적용할 수도 있습니다. | + +--- + +## 이미지 예시 (시각 자료) + +![how to deskew image example](/images/deskew-example.png) + +*12° 회전되고 잡음이 섞인 스캔을 기울기 보정하고 정리한 전·후 이미지입니다.* + +--- + +## 결론 + +우리는 Aspose.OCR을 사용해 **이미지 기울기 보정** 방법을 살펴보고, 전체 **OCR용 이미지 전처리** 파이프라인을 구현했으며, **스캔에서 잡음 제거**와 **스캔에서 텍스트 인식**까지 몇 줄의 C# 코드로 수행했습니다. `DeskewFilter`, `DenoiseFilter`, `ContrastBoostFilter`를 순차적으로 적용하면 OCR 엔진이 잡음에 방해받지 않고 텍스트를 정확히 읽을 수 있는 깔끔한 비트맵을 얻을 수 있습니다. + +다음 단계는 필터 강도를 조정해 보거나, 순수 흑백 출력을 위해 `BinarizationFilter`를 추가하거나, 정리된 이미지를 downstream NLP 파이프라인에 연결해 보는 것입니다. 영수증, 여권, 역사 문서 등 다양한 경우에 동일한 패턴을 적용할 수 있습니다. + +**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/net/text-recognition/_index.md b/ocr/korean/net/text-recognition/_index.md index 1a906a77..2afa1d20 100644 --- a/ocr/korean/net/text-recognition/_index.md +++ b/ocr/korean/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Aspose.OCR을 사용하여 .NET에서 OCR의 잠재력을 활용해 보세요. P Aspose.OCR을 사용하여 .NET에서 OCR의 잠재력을 활용해 보세요. PDF에서 텍스트를 쉽게 추출할 수 있습니다. 원활한 통합 경험을 위해 지금 다운로드하세요. ### [OCR 이미지 인식에서 테이블 인식](./recognize-table/) OCR 이미지 인식의 테이블 인식에 대한 포괄적인 가이드를 통해 .NET용 Aspose.OCR의 잠재력을 활용해 보세요. +### [C#에서 OCR 실행하기 – Aspose OCR 완전 가이드](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Aspose OCR을 사용해 C#에서 OCR을 실행하고 이미지 텍스트를 추출하는 전체 과정을 단계별로 안내합니다. +### [C#에서 OCR 실행하기 – PNG에서 아랍어 텍스트 추출](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +C#와 Aspose OCR을 사용해 PNG 이미지에서 아랍어 텍스트를 추출하는 단계별 가이드. +### [Aspose OCR로 이미지에서 텍스트 추출 – C# 완전 가이드](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Aspose OCR을 활용해 C#에서 이미지 텍스트를 추출하는 전체 과정을 단계별로 안내합니다. +### [C#에서 이미지에서 텍스트 추출 – Aspose OCR 완전 가이드](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Aspose OCR을 활용해 C#에서 이미지 텍스트를 추출하는 전체 과정을 단계별로 안내합니다. +### [C#에서 PNG를 사용해 검색 가능한 PDF 만들기 – 완전 가이드](./create-searchable-pdf-from-png-in-c-complete-guide/) +Aspose OCR을 활용해 PNG 이미지를 검색 가능한 PDF로 변환하는 전체 과정을 단계별로 안내합니다. +### [C#에서 이미지 텍스트 인식 – OCR 및 JSON 완전 가이드](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Aspose OCR을 사용해 C#에서 이미지 텍스트를 인식하고 결과를 JSON 형식으로 얻는 전체 과정을 단계별로 안내합니다. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/korean/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..278bdc3b --- /dev/null +++ b/ocr/korean/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-01-10 +description: C#를 사용해 PNG에서 검색 가능한 PDF 만들기. 이미지 를 PDF로 변환하고, PNG에서 텍스트를 추출하며, C#로 이미지 + OCR을 수행하는 방법을 한 번에 배워보세요. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: ko +og_description: C#를 사용하여 PNG에서 검색 가능한 PDF 만들기. 이 가이드는 이미지를 PDF로 변환하고, PNG에서 텍스트를 추출하며, + Aspose를 사용한 C# OCR 이미지 방법을 보여줍니다. +og_title: C#에서 PNG로 검색 가능한 PDF 만들기 – 단계별 +tags: +- Aspose OCR +- C# +- PDF/A +title: C#에서 PNG로 검색 가능한 PDF 만들기 – 완전 가이드 +url: /ko/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 PNG를 사용하여 검색 가능한 PDF 만들기 – 완전 가이드 + +C#에서 PNG 파일로 **검색 가능한 PDF**를 만들어야 하나요? 혼자가 아닙니다—많은 개발자들이 스캔한 이미지를 **볼 수 있을 뿐만 아니라** 텍스트 검색도 가능하도록 만들고 싶을 때 이 문제에 부딪힙니다. 이 튜토리얼에서는 전체 파이프라인을 단계별로 살펴봅니다: **이미지를 PDF로 변환**, OCR을 실행하여 **png에서 텍스트 추출**, 그리고 최종적으로 **PDF/A‑2b** 규격을 준수하는 검색 가능한 문서로 저장합니다. + +끝까지 진행하면 .NET 프로젝트 어디에든 삽입할 수 있는 단일 재사용 가능한 코드 스니펫과, 나중에 문제를 줄여줄 실용적인 팁 몇 가지를 얻게 됩니다. 외부 서비스 없이 Aspose OCR 라이브러리와 몇 줄의 C# 코드만으로 가능합니다. + +> **Prerequisites** +> * .NET 6+ (or .NET Framework 4.7.2+). +> * Visual Studio 2022 or any C#‑compatible IDE. +> * A valid Aspose OCR license (or a free trial). + +--- + +![검색 가능한 PDF 예시](image-placeholder.png){alt="C#를 사용하여 PNG에서 검색 가능한 PDF 만들기"} + +## 1단계 – Aspose OCR for C# 설치 및 참조 + +우선 먼저 해야 할 일은 Aspose OCR NuGet 패키지를 설치하는 것입니다. 터미널(또는 패키지 관리자 콘솔)을 열고 다음을 실행하세요: + +```bash +dotnet add package Aspose.OCR +``` + +GUI를 선호한다면 프로젝트를 오른쪽 클릭 → **Manage NuGet Packages…** → *Aspose.OCR*을 검색하고 최신 안정 버전을 설치하세요. + +이 라이브러리를 선택하는 이유는 **png를 pdf로 변환**을 지원하고, 다중 페이지 이미지를 처리하며, 기본적으로 PDF/A‑2b를 출력할 수 있기 때문입니다—아카이브 표준을 준수하는 **검색 가능한 PDF**를 만들기에 최적입니다. + +> **Pro tip:** Register your license early in `Program.cs` to avoid the evaluation watermark. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## 2단계 – PNG 로드 및 OCR 실행 (png에서 텍스트 추출) + +이제 원본 이미지를 로드합니다. `ImageStream.FromFile` 헬퍼는 파일 시스템 세부 사항을 추상화하고 지원되는 모든 래스터 형식에서 작동합니다. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +이 시점에서 엔진은 **png에서 텍스트를 추출**했으며 내부에 저장했습니다. `ocrEngine.Text`를 통해 원시 텍스트를 확인할 수 있어 디버깅이나 로깅에 유용합니다. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **What if the image is multi‑page?** +> Aspose OCR treats each page as a separate layer. Just call `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` and the engine will iterate automatically. + +## 3단계 – PDF/A‑2b 옵션 구성 (검색 가능한 PDF 만들기) + +OCR 결과를 **검색 가능한 PDF**로 만들려면 Aspose에 출력 방식을 지정해야 합니다. PDF/A‑2b는 장기 보존에 최적이며 텍스트 레이어가 검색 가능함을 보장합니다. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +원본 이미지를 포함하는 이유는 무엇일까요? 일부 규정 준수 검사에서는 시각적 표현이 원본 스캔과 일치해야 합니다. 이 플래그는 파일을 실제 **이미지를 PDF로 변환** 작업으로 만들면서 검색 가능한 텍스트를 보존합니다. + +## 4단계 – 결과 저장 및 검증 (png를 pdf로 변환) + +마지막으로 출력 파일을 저장합니다. 동일한 `Save` 메서드는 제공한 경로 어디든 작동합니다. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +생성된 `output.pdf`를 Adobe Reader 또는 다른 PDF 뷰어에서 열고 원본 PNG에 포함된 단어를 검색해 보세요. 단어가 강조 표시되면 축하합니다—PNG에서 **검색 가능한 PDF 만들기**에 성공한 것입니다! + +### Quick verification script (optional) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## 왜 검색 가능한 PDF에 PDF/A‑2b를 사용하나요? + +* **아카이브 안전성:** PDF/A‑2b는 수십 년 후에도 파일이 동일하게 렌더링될 수 있음을 보장합니다. +* **규제 준수:** 많은 산업(법률, 의료, 금융)에서 기록 보관을 위해 PDF/A를 요구합니다. +* **검색 가능성:** 포함된 OCR 텍스트 레이어 덕분에 데스크톱 검색 도구로 문서를 색인할 수 있습니다. + +추가적인 규정 준수가 필요 없으면 `PdfAStandard` 라인을 제거하고 간단히 `new PdfSaveOptions()`를 사용하면 됩니다—출력 파일은 여전히 검색 가능하지만 PDF/A‑2b는 아닙니다. + +## 흔히 발생하는 문제와 해결 방법 + +| 증상 | 가능한 원인 | 해결 방법 | +|---------|--------------|-----| +| 검색 가능한 텍스트가 나타나지 않음 | `ocrEngine.Recognize()`가 호출되지 않았거나 조용히 실패함 | 이미지 경로가 올바른지, 라이선스가 등록되었는지 확인하세요. | +| PDF 파일이 너무 큼 (10 + MB) | 원본 PNG 해상도가 높고 `EmbedOriginalImage`가 true | OCR 전에 이미지를 축소하거나 `EmbedOriginalImage = false`로 설정하세요. | +| 텍스트가 깨짐 | 언어가 자동으로 감지되지 않음 | `Recognize()` 호출 전에 `ocrEngine.Language = "eng";` (또는 대상 언어)로 설정하세요. | + +## 전체 작업 예제 (복사‑붙여넣기 가능) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +프로그램을 실행하고 `output.pdf`를 열어 `input.png`에 존재하는 단어를 검색해 보세요. 모든 것이 정상이라면 **이미지를 PDF로 변환** 워크플로를 마스터하고 **ocr image c#** 방식을 익힌 것입니다. + +## 다음 단계 및 관련 주제 + +* **배치 처리:** PNG 폴더를 순회하며 결과를 하나의 PDF로 병합합니다. +* **대체 출력 형식:** Aspose OCR은 DOCX, TXT 또는 검색 가능한 PDF/A‑1b도 생성할 수 있습니다. +* **성능 튜닝:** 절대적인 정확도가 중요하지 않은 대량 처리에서는 `ocrEngine.RecognitionMode = RecognitionMode.Fast`를 사용하세요. +* **다른 라이브러리:** 예산이 제한적이라면 Tesseract .NET을 살펴보세요—하지만 내장된 PDF/A 지원은 없습니다. + +--- + +### 요약 + +우리는 Aspose OCR을 사용해 C#에서 PNG로부터 **검색 가능한 PDF 만들기** 방법을 보여드렸습니다. 단계는 다음과 같습니다: + +1. Aspose OCR 설치 (`dotnet add package Aspose.OCR`). +2. PNG를 로드하고 `ocrEngine.Recognize()` 실행 (**png에서 텍스트 추출**). +3. PDF/A‑2b용 `PdfSaveOptions` 구성 (**이미지를 PDF로 변환** 및 **png를 PDF로 변환**). +4. 파일을 저장하고 검색 가능한 레이어를 확인합니다. + +한 번 실행해 보고 옵션을 조정하면 스캔한 이미지를 아카이브 준비가 된 검색 가능한 PDF로 변환하는 견고한 파이프라인을 곧 구축할 수 있습니다. 즐거운 코딩 되세요! + +{{< /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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/korean/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..060a3b39 --- /dev/null +++ b/ocr/korean/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: C#에서 Aspose OCR을 사용하여 이미지에서 텍스트를 추출합니다. 배치 처리를 통해 스캔한 문서 텍스트를 변환하고 결과를 + 저장하는 방법을 배워보세요. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: ko +og_description: C#에서 Aspose OCR을 사용하여 이미지에서 텍스트를 추출합니다. 이 튜토리얼은 배치 처리를 통해 스캔한 문서 텍스트를 + 변환하는 방법을 보여줍니다. +og_title: C#에서 이미지에서 텍스트 추출 – 완전한 Aspose OCR 가이드 +tags: +- OCR +- C# +- Aspose +- Image Processing +title: C#에서 이미지 텍스트 추출 – 완전한 Aspose OCR 가이드 +url: /ko/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 이미지에서 텍스트 추출 – 완전한 Aspose OCR 가이드 + +이미 **extract text from image**가 필요했지만 어디서 시작해야 할지 몰랐던 적이 있나요? 여러분만 그런 것이 아닙니다. 많은 개발자들이 스캔된 PDF, 다중 페이지 TIFF, 사진 기반 영수증을 다룰 때 같은 장벽에 부딪힙니다. 좋은 소식은 Aspose OCR을 사용하면 C# 몇 줄만으로 **scanned document text**를 변환할 수 있다는 것입니다. + +이 튜토리얼에서는 실제 시나리오를 따라가 보겠습니다: 다중 페이지 TIFF를 가져와 각 페이지에 배치 OCR을 실행하고, 모든 페이지의 내용을 하나의 텍스트 파일에 기록합니다. 끝까지 진행하면 바로 실행 가능한 콘솔 앱을 얻고, 각 단계가 왜 중요한지 이해하며, 암호로 보호된 이미지나 사용자 정의 언어 팩과 같은 특수 경우에 흐름을 조정하는 방법도 알게 됩니다. + +## Prerequisites + +- .NET 6.0 SDK 이상 (코드는 .NET Core 및 .NET Framework에서도 동작합니다) +- Visual Studio 2022 (또는 선호하는 편집기) +- Aspose OCR 라이선스 파일 (무료 평가 모드도 사용 가능) +- 다중 페이지 이미지 파일 (예: `multipage.tif`)을 참조 가능한 폴더에 배치 + +추가 NuGet 패키지는 `Aspose.OCR` 외에 필요하지 않으며, 첫 단계에서 설치합니다. + +## Step 1 – Install Aspose OCR and Set Up the Project + +먼저 새 콘솔 프로젝트를 만들고 Aspose OCR 라이브러리를 가져옵니다. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro tip:** 라이선스 파일(`Aspose.OCR.lic`)이 있다면 프로젝트 루트에 복사하세요. 라이브러리가 런타임에 자동으로 인식합니다. + +왜 이 단계가 필요할까요? 패키지를 설치하면 `BatchProcessor`, `OcrEngine` 등 저수준 이미지 처리를 추상화한 유용한 클래스를 사용할 수 있습니다. 또한 Aspose가 제공하는 최신 OCR 알고리즘을 활용하게 됩니다. + +## Step 2 – Load the Multi‑Page Image with BatchProcessor + +`BatchProcessor`는 바로 이 시나리오를 위해 설계되었습니다: 파일을 수동으로 분할하지 않아도 다중 페이지 이미지의 각 페이지를 순회합니다. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor`는 모든 페이지를 메모리로 읽어 `batchProcessor.Pages`를 통해 제공합니다. 각 페이지 객체는 번호(`ocrPage.Number`)를 가지고 있어 이후에 명확한 헤딩을 붙이는 데 사용할 수 있습니다. + +## Step 3 – Prepare a StringBuilder to Accumulate Results + +각 페이지의 OCR 결과를 헤더로 구분하여 하나의 텍스트 파일에 담고자 합니다. 루프 안에서 문자열을 연결할 때 가장 효율적인 방법이 `StringBuilder`입니다. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +왜 `StringBuilder`일까요? 루프 내에서 `+` 연산자로 문자열을 연결하면 매번 새로운 문자열이 할당되어 성능이 저하됩니다—특히 대용량 문서에서는 더욱 그렇습니다. + +## Step 4 – Iterate Over Each Page, Run OCR, and Append Results + +이제 튜토리얼의 핵심: 각 페이지를 순회하면서 텍스트를 인식하고 페이지 마커와 함께 저장합니다. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**왜 페이지마다 새로운 `OcrEngine`을 생성할까요?** 일부 개발자는 하나의 엔진을 재사용하고 `Image` 속성을 교체하지만, 이렇게 하면 언어 설정이나 이전 결과가 남아 미묘한 버그가 발생할 수 있습니다. 새 엔진을 인스턴스화하면 항상 깨끗한 상태를 보장합니다. + +### Handling Common Edge Cases + +- **Empty pages:** 페이지에 인식 가능한 텍스트가 없으면 `ocrEngine.Text`는 빈 문자열이 됩니다. “(No text detected)”와 같은 플레이스홀더를 삽입할 수 있습니다. +- **Language selection:** 기본적으로 Aspose OCR은 영어를 사용합니다. 독일어나 프랑스어를 처리하려면 `ocrEngine.Language = Language.German;`과 같이 `Recognize()` 호출 전에 설정하세요. +- **Performance tip:** 매우 큰 TIFF 파일의 경우 `ocrEngine.UseParallelProcessing = true;`를 활성화해 다중 코어를 활용할 수 있습니다. + +## Step 5 – Write the Combined Output to a Text File + +마지막으로 누적된 문자열을 디스크에 저장합니다. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +생성된 `multipage_result.txt`는 다음과 같은 형태가 됩니다: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +이제 **extract text from image**를 수행했고, **scanned document text**를 검색 가능하고 편집 가능한 형식으로 변환했습니다. + +## Bonus – Visual Overview (Image Alt Text) + +아래는 프로세스를 간단히 나타낸 흐름도입니다. +*Alt text:* “Aspose OCR 배치 처리(C#)를 사용해 이미지에서 텍스트를 추출하는 과정을 보여주는 다이어그램”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(정적 사이트에 이 튜토리얼을 게시한다면, placeholder를 실제 SVG 또는 PNG 파일로 교체하세요.)* + +## Frequently Asked Questions + +**Does this work with PDF files?** +네, Aspose OCR은 PDF 페이지를 이미지로 읽을 수 있습니다. 먼저 PDF를 이미지로 변환하거나 `Aspose.PDF`의 `PdfDocument`를 사용해 각 페이지를 래스터화한 뒤 `OcrEngine`에 전달하면 됩니다. + +**What if my TIFF is password‑protected?** +`BatchProcessor`는 암호화를 직접 처리하지 않습니다. `Aspose.Imaging` 같은 라이브러리를 사용해 파일을 해제한 뒤 OCR 파이프라인에 전달하세요. + +**Can I output JSON instead of plain text?** +물론 가능합니다. `StringBuilder` 로직을 JSON 직렬화(`System.Text.Json` 등)로 교체하고 각 페이지 텍스트를 `pageNumber` 키 아래에 저장하면 됩니다. + +## Full Working Example + +아래는 `Program.cs`에 그대로 복사해 넣을 수 있는 전체 프로그램 예시입니다. 모든 `using` 지시문, 오류 처리, 주석이 포함되어 있습니다. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +프로그램을 실행하려면: + +```bash +dotnet run +``` + +콘솔에 성공 메시지가 표시되고, 출력 파일에 결합된 OCR 결과가 들어 있습니다. + +## Conclusion + +우리는 Aspose OCR을 사용해 **extract text from image**를 실현하고, 다중 페이지 스캔 파일을 평문 검색 가능 텍스트로 변환하는 실용적인 방법을 보여주었습니다. `BatchProcessor`와 페이지당 `OcrEngine` 설정을 활용하면 코드를 간결하고 유지 보수하기 쉬운 상태로 **scanned document text**를 안정적으로 변환할 수 있습니다. + +다양한 언어를 시도해 보거나, JSON 출력으로 전환하거나, 업로드를 실시간으로 처리하는 웹 API에 이 로직을 통합해 보세요. 핵심 패턴은 동일합니다—로드, 인식, 누적, 저장. + +OCR, Aspose 라이선스, 대용량 문서 배치 처리 등에 대해 더 궁금한 점이 있으면 아래에 댓글을 남기거나 Aspose 공식 문서를 참고하세요. 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/korean/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/korean/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..3d3d0e1c --- /dev/null +++ b/ocr/korean/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-01-10 +description: C#에서 Aspose OCR을 사용하여 이미지에서 텍스트를 추출합니다. OCR을 위해 이미지를 로드하고, 힌디어 텍스트를 인식하며, + 몇 단계만으로 OCR 인식을 실행하는 방법을 배워보세요. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: ko +og_description: C#에서 Aspose OCR을 사용하여 이미지에서 텍스트를 추출합니다. OCR을 위해 이미지를 로드하고, 힌디어 텍스트를 + 인식하며, OCR 인식을 실행하는 단계별 가이드를 따라보세요. +og_title: Aspose OCR을 사용하여 이미지에서 텍스트 추출 – 완전 C# 가이드 +tags: +- Aspose OCR +- C# +- Image Processing +title: Aspose OCR을 사용하여 이미지에서 텍스트 추출 – 완전한 C# 가이드 +url: /ko/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 이미지에서 텍스트 추출하기 Aspose OCR – 완전 C# 가이드 + +이미지에서 **텍스트를 추출**해야 할 때, 어떤 라이브러리를 선택해야 할지 고민한 적이 있나요? 혼자가 아닙니다—많은 개발자들이 .NET에서 OCR을 처음 다룰 때 이 장벽에 부딪힙니다. 좋은 소식은 Aspose OCR이 복잡한 스크립트(예: 힌디어)도 쉽게 처리하도록 전체 과정을 놀라울 정도로 간단하게 만들어 준다는 점입니다. + +이 튜토리얼에서는 **OCR용 이미지 로드**, **힌디어 텍스트 인식**, 그리고 **OCR 인식 실행**에 필요한 모든 과정을 단계별로 살펴보겠습니다. 마지막에는 추출된 텍스트를 화면에 바로 출력하는 실행 가능한 콘솔 앱을 얻게 됩니다. + +## What You'll Build + +다음과 같은 작은 콘솔 애플리케이션을 만들 것입니다: + +1. OCR 엔진에 언어 모델이 들어 있는 폴더를 지정합니다. +2. 자동 다운로드를 비활성화합니다—잠금된 환경에 유용합니다. +3. 목표 언어로 힌디어를 선택합니다. +4. 힌디어 텍스트가 포함된 JPEG(또는 PNG)를 로드합니다. +5. 인식 파이프라인을 실행합니다. +6. 결과 문자열을 콘솔에 출력합니다. + +외부 서비스도, 클라우드 키도 없이 순수 온‑프레미스 OCR만 사용합니다. + +## Prerequisites + +- **.NET 6.0** 이상 (코드는 .NET Framework 4.7+에서도 동작합니다). +- **Aspose.OCR for .NET** NuGet 패키지가 설치되어 있어야 합니다. + ```bash + dotnet add package Aspose.OCR + ``` +- `OcrResources` 라는 폴더에 힌디어 언어 모델(`hin.traineddata`)이 들어 있어야 합니다. + Aspose OCR 다운로드 페이지에서 해당 파일을 받아 `YOUR_DIRECTORY/OcrResources`에 넣으세요. +- 힌디어 텍스트가 선명하게 보이는 이미지 파일(`input.jpg`). + 예시로 “स्वागत है” 라는 문구가 적힌 가게 간판 사진을 생각해 보세요. + +> **Pro tip:** 이미지 해상도를 300 dpi 이상으로 유지하세요; 낮은 해상도는 문자 누락을 초래할 수 있습니다. + +--- + +## Step 1: Point the OCR Engine to Your Resources – *extract text from image* + +Aspose OCR이 필요로 하는 첫 번째 요소는 언어 모델이 저장된 위치입니다. 이를 지정하지 않으면 엔진이 파일을 자동으로 다운로드하려 시도하게 되는데, 보안된 네트워크에서는 원치 않을 수 있습니다. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Why this matters:* `ResourcesPath`를 설정하면 엔진이 로컬에 있는 올바른 학습 데이터를 로드하게 되어 첫 실행 속도가 빨라지고, 예기치 않은 네트워크 트래픽을 방지할 수 있습니다. + +--- + +## Step 2: Disable Automatic Resource Download – *load image for OCR* + +많은 기업 환경에서 외부 인터넷 접근이 차단됩니다. Aspose OCR은 누락된 파일을 즉시 가져오려는 시도를 중단시키는 플래그를 지원합니다. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +이 줄을 빼먹고 힌디어 모델이 없으면 엔진은 “Unable to download required resource”와 같은 예외를 발생시킵니다. `false`로 설정하면 명확하고 결정적인 실패를 직접 처리할 수 있습니다. + +--- + +## Step 3: Choose the Language – *recognize hindi text* + +Aspose OCR은 수십 개 언어를 지원하지만, 사용할 언어를 명시해야 합니다. 힌디어는 `OcrLanguage.Hindi` 로 지정합니다. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*What if you need multiple languages?* `Language = OcrLanguage.AutoDetect` 로 설정하면 엔진이 자동으로 언어를 추측하지만, 자동 감지는 속도가 느리고 혼합 스크립트에서 오작동할 수 있습니다. 순수 힌디어의 경우 명시적 선택이 가장 안전합니다. + +--- + +## Step 4: Load Your Image – *load image for OCR* + +이제 엔진에 읽을 사진을 전달합니다. Aspose는 `System.Drawing` 의존성을 추상화한 `ImageStream.FromFile` 헬퍼를 제공합니다. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +파일 경로가 잘못되면 Aspose는 `FileNotFoundException` 을 발생시킵니다. 이 줄 앞에 `File.Exists` 검사를 추가하면 디버깅 시간을 크게 줄일 수 있습니다. + +--- + +## Step 5: Run the OCR Engine – *run OCR recognition* + +모든 설정이 완료되면 인식 프로세스를 시작합니다. 이 호출은 동기식이며 텍스트가 추출될 때까지 블록됩니다. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +내부적으로 Aspose는 전처리(기울기 보정, 노이즈 제거), 세그멘테이션, 문자 분류, 그리고 언어별 후처리 등 여러 단계를 수행합니다. 무거운 작업은 이 하나의 메서드 호출 안에서 이루어집니다. + +--- + +## Step 6: Output the Extracted Text – *extract text from image* + +결과는 엔진의 `Text` 속성에 저장됩니다. 이를 콘솔에 출력하면 되지만, 데이터베이스에 저장하거나 API로 전송하거나 다른 NLP 파이프라인에 전달할 수도 있습니다. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Expected output** (이미지에 “स्वागत है” 가 포함된 경우): + +``` +=== OCR RESULT === +स्वागत है +``` + +문자가 깨져 보이면 힌디어 모델이 올바르게 배치됐는지, 이미지가 과도하게 압축되지 않았는지 다시 확인하세요. + +--- + +## Full Working Example + +아래는 새 콘솔 프로젝트(`dotnet new console`)에 복사‑붙여넣기 할 수 있는 전체 프로그램입니다. `YOUR_DIRECTORY` 를 실제 경로로 바꾸세요. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** 여러 이미지를 루프 처리할 계획이라면 `OcrEngine` 인스턴스를 한 번만 생성하고 재사용하세요—초기화 오버헤드를 크게 줄일 수 있습니다. + +--- + +## Handling Common Pitfalls + +| Issue | Why it Happens | Quick Fix | +|-------|----------------|-----------| +| **Empty output** | Wrong language model or low‑quality image. | Verify `ResourcesPath`, increase image DPI, or try `ocrEngine.Image = ImageStream.FromFile(..., true)` to enable auto‑enhancement. | +| **Exception: Resource not found** | Missing Hindi `.traineddata`. | Download the Hindi model from Aspose, place it in `OcrResources`, and ensure the file name matches `hin.traineddata`. | +| **Garbage characters** | Encoding mismatch when printing to console. | Set console output encoding: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Performance lag** | Large images processed without scaling. | Pre‑scale the image to a max width/height of 2000 px before feeding it to OCR. | + +--- + +## Next Steps & Related Topics + +- **Batch processing:** Wrap the code in a `foreach` loop to handle a folder of images. +- **Different languages:** Swap `OcrLanguage.Hindi` for `OcrLanguage.English`, `OcrLanguage.Arabic`, etc. +- **Output formats:** Instead of `Console.WriteLine`, write to a text file (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integration with ASP.NET Core:** Expose an API endpoint that accepts an image upload and returns the extracted text as JSON. + +All of these extensions follow the same pattern—configure the engine, load an image, recognize, and consume the result. + +--- + +## Conclusion + +우리는 Aspose OCR을 사용해 C#에서 **이미지에서 텍스트를 추출**하는 방법을 보여주었습니다. 이 가이드는 **OCR용 이미지 로드**, **힌디어 텍스트 인식**, 그리고 **OCR 인식 실행**에 필요한 모든 단계를 포함한 자체 실행 콘솔 앱을 만드는 과정을 다룹니다. + +직접 사진을 가지고 시도해 보고, 다른 언어도 실험해 보며, 웹 서비스나 백그라운드 작업에 맞게 코드를 확장해 보세요. 핵심 아이디어는 동일합니다: 리소스를 설정하고, 언어를 선택하고, 이미지를 제공하고, `Text` 속성을 읽는 것. + +문제가 발생하면 위의 트러블슈팅 표를 참고하거나 댓글을 남겨 주세요. 즐거운 코딩 되시고, 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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/korean/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..340e7401 --- /dev/null +++ b/ocr/korean/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-01-10 +description: C#에서 Aspose OCR을 사용하여 이미지에 OCR을 실행하는 방법. 이미지에서 텍스트를 추출하고, 이미지에 OCR을 적용하며, + GPU 가속을 이용해 OCR용 이미지를 로드하는 방법을 배웁니다. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: ko +og_description: Aspose OCR을 사용하여 이미지에서 OCR을 실행하는 방법. 이 튜토리얼에서는 이미지에서 텍스트를 추출하고, 이미지에 + OCR을 실행하며, OCR을 위해 이미지를 효율적으로 로드하는 방법을 보여줍니다. +og_title: C#에서 OCR 실행 방법 – 전체 단계별 가이드 +tags: +- OCR +- C# +- Aspose +title: C#에서 OCR 실행 방법 – Aspose OCR을 활용한 완벽 가이드 +url: /ko/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 OCR 실행 방법 – Aspose OCR 완전 가이드 + +사진에서 OCR을 실행하고 텍스트를 추출하는 것이 머리카락을 뽑게 만들 정도로 어려운 일이라고 생각한 적 있나요? 당신만 그런 것이 아닙니다. 청구서를 디지털화하거나 영수증을 스캔하거나 검색 가능한 PDF를 만들고자 할 때, 이미지에서 텍스트를 추출하는 것은 많은 개발자에게 일상적인 필요입니다. + +이 튜토리얼에서는 Aspose OCR 라이브러리를 사용해 **이미지에서 OCR을 실행하는 방법**을 실전 예제로 단계별로 살펴봅니다. GPU 가속을 활용해 속도를 높이는 방법도 포함됩니다. 끝까지 읽으면 이미지 로드, 메모리 사용량 조정, 깨끗한 평문 결과 얻는 방법을 몇 분 안에 구현할 수 있습니다. + +## 배울 내용 + +- C#에서 Aspose OCR 엔진 초기화 방법 +- 디스크 또는 스트림에서 **OCR용 이미지 로드** 방법 +- GPU 가속 활성화 및 GPU 메모리 제한 설정 방법 +- **이미지에서 텍스트 추출** 및 출력 확인 방법 +- 흔히 발생하는 문제점(GPU 모듈 누락, 메모리 제한)과 빠른 해결책 + +Aspose OCR에 대한 사전 경험은 필요 없으며, .NET 환경과 샘플 이미지만 있으면 됩니다. + +--- + +## Aspose OCR으로 이미지에서 OCR 실행하기 + +먼저 전체 작업을 수행하는 명확하고 실행 가능한 코드 조각이 필요합니다. 아래는 바로 복사·붙여넣기·실행할 수 있는 전체 프로그램입니다. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**예상 출력**(샘플 이미지에 “Hello World”라는 문구가 포함된 경우): + +``` +=== OCR Result === +Hello World +``` + +> **팁:** 텍스트가 보이지 않으면 GPU 모듈이 설치되어 있는지, 이미지 경로가 올바른지 다시 확인하세요. `ImageStream.FromFile` 메서드는 파일을 찾지 못하면 명확한 예외를 발생시킵니다. + +--- + +## GPU 가속을 이용한 이미지 텍스트 추출 + +GPU를 왜 써야 할까요? CPU 전용 OCR도 동작하지만 대용량·고해상도 이미지에서는 매우 느릴 수 있습니다. 위 단계 2에서 GPU 가속을 활성화하면 무거운 연산을 그래픽 카드가 담당해 초당 수천 픽셀을 처리합니다. + +### GPU를 사용해야 할 상황 + +- **배치 처리** – 한 번에 수십 개의 청구서를 스캔할 때. +- **고해상도 스캔** – 300 dpi 이상인 경우. +- **실시간 앱** – 즉각적인 피드백이 필요한 모바일 스캐너 등. + +호환 가능한 GPU가 없는 환경에서는 `EnableGpuAcceleration = false;` 로 설정하면 엔진이 자동으로 CPU 모드로 전환됩니다. + +--- + +## 이미지에서 OCR 실행 – 올바른 이미지 로드 + +이미지 로드는 **OCR용 이미지 로드** 단계에서 가장 많이 걸리는 부분입니다. Aspose OCR은 `ImageStream`을 기대하며, 이는 파일, 메모리 스트림, URL 등에서 생성할 수 있습니다. 몇 가지 예시를 소개합니다. + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**예외 상황:** 일부 이미지에는 알파 채널(투명도)이 포함되어 OCR 엔진을 혼란스럽게 할 수 있습니다. 알파 채널 제거는 간단합니다. + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +이제 가장 일반적인 **OCR용 이미지 로드** 방법을 모두 다루었으며, 엔진이 매번 깨끗하고 지원되는 포맷을 받도록 할 수 있습니다. + +--- + +## OCR용 이미지 로드 효율화 팁 + +1. **큰 이미지 리사이즈** – OCR은 4K 사진이 필요하지 않으며, 가로 ≈ 1500 px 정도로 축소하면 정확도에 큰 영향을 주지 않으면서 속도가 빨라집니다. +2. **그레이스케일 변환** – 노이즈를 줄이고 저대비 스캔에서 인식률을 높일 수 있습니다. +3. **디스큐 적용** – 이미지가 기울어졌다면 `ocrEngine.Config.EnableDeskew = true;` 로 Aspose OCR 내장 디스큐 기능을 활성화하세요. + +이러한 조정은 **이미지에서 텍스트 추출**을 대량으로 수행할 때 특히 유용합니다. + +--- + +## 흔히 발생하는 문제와 해결 방법 + +| 증상 | 예상 원인 | 해결 방법 | +|------|----------|----------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU 모듈이 설치되지 않음 | Aspose OCR GPU 패키지를 설치하거나 GPU를 비활성화(`EnableGpuAcceleration = false`) | +| 빈 출력 | 이미지 경로 오류 또는 지원되지 않는 포맷 | `ImageStream.FromFile` 경로를 확인하고, 바이트 스트림 로드로 파일 읽기를 검증 | +| 메모리 부족 오류 | 대용량 배치에 비해 GPU 메모리 제한이 낮음 | `GpuMemoryLimit`을 늘리기(예: 2048) 혹은 이미지를 작은 청크로 나누어 처리 | +| 깨진 문자 | 이미지에 심한 노이즈 또는 저대비 | 전처리: 이진화, 디스펙클, DPI 상승 등을 수행 후 OCR 적용 | + +--- + +## 전체 작업 예제 – 모든 것을 합치기 + +아래는 앞서 논의한 최적 실천 방안을 모두 포함한 간결한 콘솔 앱 예제입니다. GPU 가속, 메모리 제한, 이미지 전처리, 오류 처리를 모두 구현했습니다. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +이 프로그램을 실행하면 이미지에서 추출된 깨끗한 텍스트가 출력되며, **이미지에서 텍스트 추출**이 소스가 완벽하지 않더라도 견고하게 동작함을 보여줍니다. + +--- + +## 결론 + +우리는 Aspose OCR을 사용해 **이미지에서 OCR을 실행하는 방법**을 엔진 초기화, 이미지 로드, GPU 가속 활성화, 예외 상황 처리까지 단계별로 살펴보았습니다. 이제 복사·붙여넣기만으로도 어떤 .NET 프로젝트에서든 **이미지에서 텍스트 추출**을 바로 시작할 수 있는 확실한 레퍼런스를 확보했습니다. + +다음 단계는? PDF 페이지를 입력으로 사용해 보거나, `ocrEngine.Config.Language = "spa"` 로 스페인어 등 다른 언어를 실험해 보세요. 혹은 업로드된 파일을 실시간으로 처리하는 웹 API에 이 흐름을 통합해 보세요. 가능성은 무한하며, 오늘 배운 도구들로 어떤 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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/korean/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..d378ddf0 --- /dev/null +++ b/ocr/korean/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-01-10 +description: 이미지에서 OCR을 빠르게 실행하고 아랍어 텍스트를 추출하는 방법. 이미지를 텍스트로 변환하고 PNG에서 텍스트를 읽는 방법을 + 배우며, Aspose OCR을 사용해 텍스트를 추출하는 방법을 확인하세요. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: ko +og_description: C#에서 OCR을 실행하고 PNG 이미지에서 아랍어 텍스트를 추출하는 방법. 이 가이드는 이미지를 텍스트로 변환하고 PNG에서 + 텍스트를 단계별로 읽는 방법을 보여줍니다. +og_title: C#에서 OCR 실행하기 – PNG에서 아랍어 텍스트 추출 +tags: +- OCR +- C# +- Aspose +title: C#에서 OCR 실행하기 – PNG에서 아랍어 텍스트 추출 +url: /ko/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#에서 OCR 실행하기 – PNG에서 아랍어 텍스트 추출 + +아랍어 문자가 포함된 사진에서 **OCR을 실행하는 방법**을 궁금해 본 적 있나요? 당신만 그런 것이 아닙니다. 많은 개발자들이 PNG에서 **아랍어 텍스트를 추출**해야 할 때, 오른쪽에서 왼쪽으로 쓰는 스크립트를 문제 없이 처리할 라이브러리를 몰라 난관에 부딪히곤 합니다. + +이 튜토리얼에서는 **이미지를 텍스트로 변환**, **PNG에서 텍스트 읽기**, 그리고 최종적으로 Aspose.OCR을 사용해 **텍스트를 추출하는 방법**을 깔끔한 C# 콘솔 앱에서 단계별로 안내합니다. 끝까지 따라오면 아랍어 문자열을 터미널에 바로 출력하는 실행 준비가 된 프로그램을 얻게 됩니다. + +## 배울 내용 + +- Aspose.OCR NuGet 패키지를 설치하고 참조하기. +- 아랍어 지원을 위해 OCR 엔진을 구성하기. +- PNG 이미지를 로드하고 인식 프로세스를 실행하기. +- 추출된 텍스트를 가져와 표시하기. +- 정확도를 높이기 위해 설정을 조정하고 일반적인 함정을 처리하기. + +OCR에 대한 사전 경험은 필요 없으며, C#에 대한 기본 이해와 .NET 개발 환경(Visual Studio, Rider, 혹은 `dotnet` CLI)만 있으면 됩니다. + +--- + +## OCR 실행하기 – Aspose OCR 설정 + +### 단계 1: Aspose.OCR NuGet 패키지 추가 + +우선 필요한 것은 OCR 라이브러리 자체입니다. Aspose.OCR은 상용 제품이지만, 학습 목적에 완벽히 사용할 수 있는 무료 체험판을 제공합니다. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +또는 Visual Studio에서 **NuGet 패키지 관리자**를 열고 **Aspose.OCR**을 검색한 뒤 **설치**를 클릭합니다. + +> **Pro tip:** 라이브러리를 CI 파이프라인에서 사용할 계획이라면 버전을 고정하기 위해 `-v` 플래그를 추가하세요. 예: `dotnet add package Aspose.OCR -v 23.10`. + +### 단계 2: 새 콘솔 프로젝트 만들기 (프로젝트가 없을 경우) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +이제 코드를 넣을 새 `Program.cs` 파일이 준비되었습니다. + +--- + +## 아랍어 텍스트 추출 – OCR 코드 작성 + +아래는 완전한 실행 가능한 프로그램입니다. `Program.cs`로 저장하거나 자동 생성된 파일을 교체하세요. + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### 각 라인이 중요한 이유 + +- **`OcrEngine`**: 이미지 로드, 언어 선택, 인식을 조정하는 핵심 클래스입니다. +- **`Language = OcrLanguage.Arabic`**: 아랍어는 오른쪽에서 왼쪽으로 쓰이며 고유한 글리프를 사용합니다; 언어를 설정하면 엔진이 올바른 문자 모델을 적용합니다. +- **`ImageStream.FromFile`**: PNG, JPEG, BMP 등 다양한 포맷을 처리합니다. `MemoryStream`(예: 업로드된 파일)에서 읽어야 할 경우 이 호출을 교체하면 됩니다. +- **`Recognize()`**: 픽셀 분석, 분할, 문자 분류 등 무거운 작업을 수행합니다. +- **`ocrEngine.Text`**: 최종 Unicode 문자열로, 추가 처리, 저장 또는 표시가 가능합니다. + +### 예상 출력 + +`arabic_sample.png`에 “مرحبا بالعالم”(Hello World) 문구가 포함되어 있으면, 콘솔에 다음과 같이 출력됩니다: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +출력이 깨져 보이면, 이미지가 선명한지, 언어가 아랍어로 설정되었는지, OCR 엔진 버전이 문서와 일치하는지 다시 확인하세요. + +--- + +## 이미지에서 텍스트로 변환 – 정확도 조정 + +기본 설정은 대부분의 깨끗한 스캔에 잘 작동하지만, 실제 이미지에서는 추가적인 조정이 필요할 때가 많습니다. + +| Setting | What It Does | When to Use | +|---------|--------------|-------------| +| `ocrEngine.Config.Preprocess = true` | 자동 이진화와 노이즈 제거를 활성화합니다. | 그림자 있는 스캔 문서. | +| `ocrEngine.Config.Deskew = true` | 약간 기울어진 이미지를 회전시켜 교정합니다. | 각도 잡힌 사진. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | 전체 이미지를 하나의 텍스트 블록으로 처리합니다. | 간단한 캡션이나 한 줄 라벨. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | 아랍어 문자만 인식하도록 제한합니다. | 혼합 언어 페이지에서 오탐을 줄일 때. | + +엔진을 만든 직후에 다음 라인을 추가할 수 있습니다: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## PNG에서 텍스트 읽기 – 다양한 이미지 소스 처리 + +때때로 PNG가 데이터베이스에 저장되어 있거나 웹 요청으로 들어올 수 있습니다. `byte[]`에서 읽는 간단한 예시는 다음과 같습니다: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +나머지 흐름은 동일하게 유지되므로, **텍스트를 추출하는 방법**은 소스에 관계없이 일관됩니다. + +--- + +## 텍스트 추출 방법 – 고급 옵션 및 엣지 케이스 + +### 1. 다중 페이지 PDF 또는 TIFF + +다중 페이지 문서를 OCR해야 한다면, 각 페이지를 반복하면 됩니다: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Note:** 이 스니펫을 사용하려면 `Aspose.PDF` 패키지가 필요합니다. + +### 2. 언어 자동 감지 + +Aspose.OCR은 자동 감지도 제공하지만 속도가 느립니다. 이미지에 아랍어 또는 다른 스크립트가 포함되어 있는지 확신이 서지 않을 경우 이를 활성화하세요: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +엔진은 각 언어 모델을 시도해 가장 적합한 것을 선택합니다. + +### 3. 성능 팁 + +- **`OcrEngine`** 객체를 여러 이미지에 재사용하세요; 매번 새 인스턴스를 만들면 오버헤드가 발생합니다. +- **병렬 실행**은 스레드당 별도의 엔진 인스턴스가 있을 때만 수행하세요—하나의 인스턴스를 공유하면 레이스 컨디션이 발생합니다. + +--- + +## 결론 + +우리는 C#에서 **OCR을 실행하는 방법**을 처음부터 끝까지 다루었으며, **아랍어 텍스트 추출**, **이미지를 텍스트로 변환**, **PNG에서 텍스트 읽기**, 그리고 다양한 상황에서 **텍스트를 추출하는 방법**을 보여주었습니다. 샘플 코드는 완전하고 독립적이며, 어떤 .NET 콘솔 프로젝트에든 붙여넣을 준비가 되어 있습니다. + +다음 단계는? `OcrLanguage.Arabic`을 한국어나 세르비아어 키릴 문자 등으로 바꿔서 라이브러리의 다국어 기능을 확인해 보세요. 전처리 플래그를 실험해 노이즈가 많은 스캔의 정확도를 높이거나, OCR 루틴을 웹 API에 통합해 사용자가 이미지를 업로드하고 즉시 텍스트 결과를 받을 수 있도록 해보세요. + +코딩을 즐기세요, 그리고 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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/korean/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..e4d2e16e --- /dev/null +++ b/ocr/korean/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,296 @@ +--- +category: general +date: 2026-01-10 +description: Aspose OCR을 C#에서 사용하여 이미지에서 텍스트를 인식하고, 텍스트 좌표를 추출하며, 영수증을 JSON으로 변환하는 + 방법을 배웁니다. 단계별 튜토리얼. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: ko +og_description: C#에서 Aspose OCR을 사용하여 이미지에서 텍스트를 인식합니다. 이 가이드는 텍스트를 추출하고 좌표를 얻으며 영수증을 + JSON으로 변환하는 방법을 보여줍니다. +og_title: 이미지에서 텍스트 인식 – 전체 C# OCR 튜토리얼 +tags: +- OCR +- C# +- Aspose +title: C#에서 이미지 텍스트 인식 – OCR 및 JSON 완전 가이드 +url: /ko/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 이미지에서 텍스트 인식 – 전체 C# OCR 튜토리얼 + +이미지에서 텍스트를 인식해야 했지만 어떤 라이브러리를 선택해야 할지 몰랐던 적이 있나요? 당신만 그런 것이 아닙니다. 실제 애플리케이션—경비 추적기, 영수증 스캐너, 문서 보관소—에서 텍스트를 신뢰성 있게 추출하는 것이 첫 번째 장벽입니다. + +이 튜토리얼에서는 **how to extract text**를 단계별로 살펴보고, 경계 상자를 추출한 뒤, 마지막으로 Aspose.OCR for .NET을 사용해 **convert receipt to JSON**하는 과정을 보여드립니다. 끝까지 진행하면 영수증 사진을 받아 신뢰도 점수와 좌표가 포함된 깔끔한 JSON 파일을 출력하는 독립형 C# 프로젝트를 얻게 됩니다. + +## 필요한 준비물 + +시작하기 전에, 다음이 머신에 설치되어 있는지 확인하세요: + +- **.NET 6.0 SDK** (또는 이후 버전). 이전 프레임워크도 동작하지만, .NET 6이 최신 라이브러리에 가장 적합합니다. +- **Visual Studio 2022** 또는 C# 확장 기능이 포함된 VS Code. +- **Aspose.OCR for .NET** NuGet 패키지(`Aspose.OCR` 및 `Aspose.OCR.Output`). 패키지 관리자 콘솔을 통해 설치할 수 있습니다: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- 예시 영수증 이미지(예: `receipt.jpg`)를 나중에 참조할 폴더에 배치합니다. + +이것으로 끝입니다—추가 SDK나 네이티브 바이너리 없이 순수 관리 코드만 사용합니다. + +## Step 1: 새 콘솔 프로젝트 만들기 + +먼저, 콘솔 앱을 생성합니다. UI 오버헤드 없이 OCR을 테스트하기 가장 빠른 방법입니다. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Pro tip:** 프로젝트 폴더를 깔끔하게 유지하세요; `Resources`라는 하위 폴더를 만들고 그 안에 `receipt.jpg`를 넣으세요. 경로 처리가 훨씬 쉬워집니다. + +## Step 2: 영수증 이미지 로드 + +이제 실제로 **recognize text from image**를 수행합니다. 첫 번째 단계는 OCR 엔진에 파일을 지정하는 것입니다. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +로드를 간단한 존재 확인으로 감싸는 이유는 무엇일까요? 실제 운영 환경에서는 누락되었거나 손상된 사용자 업로드 파일을 자주 다루기 때문입니다. 문제를 일찍 포착하면 나중에 발생할 수 있는 모호한 예외를 방지할 수 있습니다. + +## Step 3: OCR 수행 – **recognize text from image** + +이미지를 메모리에 로드한 상태에서 Aspose에 **recognize text from image**를 요청합니다. 이 작업은 동기식이며 풍부한 결과 집합을 반환합니다. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +내부적으로 Aspose는 수백만 글자에 대해 학습된 신경망을 실행합니다. 엔진은 `ocrEngine.Text`, `ocrEngine.RecognitionResult` 및 좌표를 보유한 `OcrRegion` 객체 컬렉션을 채웁니다. 이것이 바로 다음 단계에 필요한 내용입니다. + +## Step 4: **How to extract text** – 원시 문자열 가져오기 + +순수 텍스트만 필요하다면(예: 빠른 검색), 엔진에서 바로 가져올 수 있습니다: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +OCR이 단락 경계를 감지한 위치에 줄 바꿈이 포함된 것을 볼 수 있습니다. 많은 영수증 스캔 상황에서 원시 문자열만으로도 간단한 정규식을 사용해 총액, 날짜, 상점 이름 등을 추출하기에 충분합니다. + +## Step 5: **extract text coordinates** – 각 단어의 경계 상자 + +이미지에서 특정 텍스트가 위치한 *곳*을 알아야 할 때가 많습니다—예를 들어 UI에서 총액을 강조 표시하려는 경우. Aspose는 `OcrRegion` 객체를 통해 이를 제공합니다. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +우리는 인식된 각 세그먼트에 대해 **extract text coordinates**를 반복하고 있습니다. 좌표는 원본 이미지에 상대적이므로 그래픽 캔버스나 HTML `` 요소에 겹쳐 표시할 수 있습니다. + +## Step 6: **convert receipt to JSON** – 상세 결과 저장 + +이제 모든 것을 연결하는 단계가 왔습니다: 텍스트, 신뢰도 점수 및 경계 상자를 포함하는 기계가 읽을 수 있는 구조가 필요합니다. Aspose는 이를 손쉽게 구현할 수 있는 `JsonSaveOptions`를 제공합니다. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +생성된 파일은 다음과 같은 형태이며(간결하게 표시): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +이제 **convert receipt to JSON** 아티팩트를 얻었으며, 이를 비용 보고 API, 분석 파이프라인, 혹은 각 단어 주위에 사각형을 그리는 간단한 UI와 같은 하위 서비스에 전달할 수 있습니다. + +## 전체 작업 예제 + +모든 요소를 합치면, 프로젝트에 복사‑붙여넣기 할 수 있는 완전한 `Program.cs`는 다음과 같습니다: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +프로그램을 실행(`dotnet run`)하고 콘솔 출력을 확인하세요. `Resources/receipt.json`를 열어 구조를 검증합니다. + +## 자주 묻는 질문 및 엣지 케이스 + +- **What if the image is blurry?** + Aspose OCR은 300 dpi 이상에서 가장 잘 작동합니다. 신뢰도 점수가 낮게 나오면 엔진에 이미지를 전달하기 전에 선명도 필터를 적용해 보세요. + +- **Can I recognize multiple languages?** + 가능합니다. `Recognize()`를 호출하기 전에 `ocrEngine.Language = Language.English | Language.Spanish;`와 같이 설정하세요. + +- **How do I limit output to only numbers (e.g., totals)?** + 순수 텍스트를 얻은 뒤 `ocrEngine.Text`에 `\\d+\\.\\d{2}`와 같은 정규식을 적용하세요. 이미 좌표가 있으므로 매치된 문자열을 해당 영역에 매핑해 시각적으로 강조할 수 있습니다. + +- **Is the JSON format customizable?** + `JsonSaveOptions` 클래스는 여러 플래그를 제공합니다. 완전히 커스텀 스키마가 필요하면 `ocrEngine.RecognitionResult.Regions`를 순회하고 `System.Text.Json`을 사용해 직접 직렬화하면 됩니다. + +## 결론 + +우리는 C#에서 Aspose.OCR을 사용해 **recognize text from image**를 수행하고, **how to extract text**를 보여주며, **extract text coordinates**를 추출하고, 마지막으로 **convert receipt to JSON**을 구현했습니다. 전체 흐름은 단일 콘솔 앱에 담겨 있어 프로토타입이나 대규모 시스템의 구성 요소로 사용하기에 적합합니다. + +다음 단계는? JSON을 경계 상자를 그리는 프론트엔드에 전달하거나, 비용 보고 서비스에 연결해 보세요. 또한 다양한 이미지 포맷(PNG, TIFF)이나 영수증 폴더를 일괄 처리하는 실험도 가능합니다. + +OCR, Aspose, JSON 처리에 대해 더 궁금한 점이 있나요? 아래에 댓글을 남겨 주세요. 즐거운 코딩 되세요! + +![Receipt image example for recognize text from image](receipt.jpg "Receipt image example") + +{{< /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/net/ocr-configuration/_index.md b/ocr/polish/net/ocr-configuration/_index.md index 2851cb0c..9d7a9d64 100644 --- a/ocr/polish/net/ocr-configuration/_index.md +++ b/ocr/polish/net/ocr-configuration/_index.md @@ -39,9 +39,12 @@ Odblokuj moc rozpoznawania obrazów OCR w .NET dzięki Aspose.OCR. Wyodrębnij t Odblokuj potężne możliwości OCR dzięki Aspose.OCR dla .NET. Płynnie wyodrębniaj tekst z obrazów. ### [OCROoperacja z listą w rozpoznawaniu obrazu OCR](./ocr-operation-with-list/) Odblokuj potencjał Aspose.OCR dla .NET. Bez wysiłku rozpoznaj obrazy OCR za pomocą list. Zwiększ produktywność i ekstrakcję danych w swoich aplikacjach. +### [Odczyt zasobu osadzonego w .NET – Kompletny przewodnik po ustawianiu licencji Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Dowiedz się, jak odczytać zasób osadzony w .NET i skonfigurować licencję Aspose w aplikacji. + {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/polish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..a742b745 --- /dev/null +++ b/ocr/polish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-01-10 +description: Odczytaj zasób osadzony i ustaw licencję Aspose w C#. Dowiedz się, jak + używać GetManifestResourceStream, osadzić plik licencji i uzyskać wykonywany zestaw + .NET w jednym samouczku. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: pl +og_description: Odczytaj zasób osadzony w .NET i szybko ustaw licencję Aspose. Przewodnik + krok po kroku obejmujący GetManifestResourceStream, osadzanie licencji oraz użycie + bieżącego zestawu. +og_title: Odczytaj zasób osadzony – ustaw licencję Aspose w .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Odczyt zasobu osadzonego w .NET – Kompletny przewodnik po ustawianiu licencji + Aspose +url: /pl/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Odczyt Zasobu Osadzonego – Kompletny Przewodnik po Ustawianiu Licencji Aspose + +Czy kiedykolwiek potrzebowałeś **odczytać zasób osadzony** w czasie działania i zastanawiałeś się, jak licencjonować bibliotekę Aspose OCR bez twardego kodowania ścieżek? Nie jesteś sam. W wielu aplikacjach korporacyjnych plik licencji znajduje się wewnątrz zestawu, więc nie musisz dostarczać dodatkowych plików ani martwić się brakującymi uprawnieniami. Ten samouczek pokaże Ci dokładnie, jak odczytać osadzony zasób i ustawić licencję Aspose przy użyciu metody .NET `GetManifestResourceStream`. + +Przejdziemy przez wszystko, co potrzebne: osadzenie pliku `.lic`, pobranie go przy pomocy `GetExecutingAssembly` oraz ostateczne zastosowanie go w klasie `License` Aspose OCR. Po zakończeniu będziesz mieć samodzielne rozwiązanie działające w każdym projekcie .NET — bez plików zewnętrznych. + +## Co się nauczysz + +- **Jak osadzić plik licencji** w projekcie .NET, aby stał się częścią skompilowanego DLL. +- Prawidłowy sposób **użycia GetManifestResourceStream** do odczytu tego osadzonego zasobu. +- Jak **ustawić licencję Aspose** programowo, nie dotykając systemu plików. +- Wskazówki dotyczące typowych pułapek, takich jak literówki w nazwach zasobów czy nieprawidłowe akcje kompilacji. +- Kompletny, gotowy do uruchomienia przykład kodu, który możesz wkleić do własnego rozwiązania. + +### Wymagania wstępne + +- .NET 6.0 lub nowszy (kod działa także na .NET Framework 4.x, wystarczy odpowiednio dostosować plik projektu). +- Pakiet NuGet Aspose.OCR zainstalowany (`dotnet add package Aspose.OCR`). +- Podstawowa znajomość C# i Visual Studio (lub ulubionego IDE). + +Jeśli masz już te elementy, świetnie — zanurzmy się. + +## Krok 1: Osadź plik licencji Aspose w swoim zestawie + +Pierwszą rzeczą, której potrzebujesz, jest rzeczywisty plik licencji (`Aspose.OCR.lic`). Zamiast kopiować go obok pliku wykonywalnego, osadzisz go jako **zasób**. + +1. Dodaj plik `.lic` do projektu (np. utwórz folder `Resources` i umieść w nim plik). +2. W właściwościach pliku ustaw **Build Action** na `Embedded Resource`. + *Pro tip:* utrzymuj prostą strukturę folderów; w pełni kwalifikowana nazwa zasobu będzie `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Dlaczego warto osadzać? Ponieważ zestaw teraz przenosi licencję wewnątrz siebie, eliminując ryzyko brakującego pliku na serwerze produkcyjnym. + +## Krok 2: Pobierz osadzony zasób przy użyciu GetExecutingAssembly + +Teraz, gdy licencja znajduje się wewnątrz DLL, potrzebujesz sposobu na **odczytanie zasobu osadzonego** w czasie działania. Klasa .NET `Assembly` zapewnia dokładnie to. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +Metoda `GetExecutingAssembly` zwraca zestaw, który jest aktualnie uruchomiony — idealny do lokalizowania zasobów znajdujących się obok Twojego kodu. + +## Krok 3: Otwórz strumień licencji przy pomocy GetManifestResourceStream + +Mając referencję do zestawu, możesz wywołać `GetManifestResourceStream`. Metoda ta zwraca `Stream`, który możesz bezpośrednio przekazać do Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Zauważ, że używamy **null‑conditional** w instrukcji `using` (`using Stream?`), aby strumień został automatycznie zwolniony. Jeśli nazwa jest niepoprawna, wyrzucamy wyraźny wyjątek — to chroni przed cichymi awariami później. + +## Krok 4: Zastosuj licencję w Aspose OCR + +Klasa `License` Aspose oczekuje `Stream`. Mamy już taki strumień, więc ostatni krok jest prosty. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Gotowe! Silnik Aspose OCR jest teraz w pełni licencjonowany i gotowy do przetwarzania obrazów bez znaku wodnego wersji próbnej. + +## Pełny działający przykład + +Poniżej znajduje się kompletny, gotowy do skopiowania i wklejenia program, który demonstruje cały proces. Zawiera niezbędne dyrektywy `using`, obsługę błędów oraz prostą wywołanie OCR, aby udowodnić, że licencja jest aktywna. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Oczekiwany wynik + +Po uruchomieniu programu na maszynie z prawidłowo osadzoną licencją powinieneś zobaczyć: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Jeśli strumień licencji nie zostanie znaleziony, konsola zgłosi brakującą nazwę zasobu, kierując Cię do ponownego sprawdzenia **Build Action** oraz przestrzeni nazw. + +## Typowe pułapki i jak ich unikać + +| Problem | Dlaczego się pojawia | Rozwiązanie | +|-------|----------------|-----| +| **Niezgodność nazwy zasobu** | .NET buduje nazwę zasobu z domyślnej przestrzeni nazw + ścieżki folderu. | Użyj `Assembly.GetManifestResourceNames()` aby wyświetlić dostępne nazwy i zweryfikować dokładny ciąg. | +| **Plik licencji nie jest ustawiony jako Embedded Resource** | Domyślna akcja kompilacji to `Content`. | Zmień ją na `Embedded Resource` w właściwościach pliku. | +| **Uruchamianie z innego zestawu** | Jeśli wywołujesz kod z biblioteki klas, `GetExecutingAssembly()` może zwrócić tę bibliotekę zamiast głównego exe. | Użyj `Assembly.GetEntryAssembly()` lub przekaż właściwy zestaw explicite. | +| **Strumień zwolniony przed użyciem** | Przypadkowe użycie bloku `using`, który zamyka strumień zbyt wcześnie. | Trzymaj `using` wokół wywołania `SetLicense`, jak pokazano powyżej. | +| **Niezgodność wersji Aspose.OCR** | Nowsze wersje mogą wymagać innego formatu licencji. | Zawsze pobieraj najnowszą licencję ze swojego konta Aspose i ponownie ją osadzaj. | + +## Zastosowanie tej samej techniki dla innych osadzonych plików + +Wzorzec — **odczyt osadzonego zasobu**, a następnie **użycie GetManifestResourceStream** — działa dla każdego typu pliku: konfiguracji JSON, obrazów, a nawet natywnych DLL‑ów. Wystarczy dostosować `resourceName` i sposób konsumowania strumienia. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Przegląd wizualny + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt text:* odczyt zasobu osadzonego – diagram pokazujący osadzanie, pobieranie przy pomocy GetManifestResourceStream oraz zastosowanie licencji Aspose. + +## Podsumowanie + +Omówiliśmy, jak **odczytać zasób osadzony** w zestawie .NET, dokładne kroki **użycia GetManifestResourceStream** oraz czysty sposób **ustawienia licencji Aspose** bez wystawiania plików na dysku. Dzięki osadzeniu licencji eliminujesz problemy z wdrożeniem i utrzymujesz aplikację przenośną. + +## Co dalej? + +- **Automatyzacja aktualizacji licencji:** Napisz mały skrypt uruchamiany w czasie budowania, który podmieni osadzony plik `.lic` przy odnowieniu subskrypcji Aspose. +- **Zabezpieczenie zasobu:** Rozważ zaszyfrowanie licencji przed osadzeniem i odszyfrowanie jej w czasie działania dla dodatkowej ochrony. +- **Eksploracja innych produktów Aspose:** Ten sam sposób działa dla Aspose.Words, Aspose.PDF itp., każdy z własną klasą `License`. + +Śmiało eksperymentuj — możesz osadzić wiele licencji dla różnych modułów lub przejść na nazwę zasobu sterowaną konfiguracją. Nie ma granic. + +--- + +*Miłego kodowania! Jeśli napotkasz problemy, zostaw komentarz poniżej lub zajrzyj na fora Aspose po więcej przykł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/net/skew-angle-calculation/_index.md b/ocr/polish/net/skew-angle-calculation/_index.md index 76c885f0..df2610b0 100644 --- a/ocr/polish/net/skew-angle-calculation/_index.md +++ b/ocr/polish/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ Poznaj Aspose.OCR dla .NET, potężne rozwiązanie OCR do dokładnego rozpoznawa Uwolnij moc Aspose.OCR dla .NET, solidnego rozwiązania do rozpoznawania obrazów. Dowiedz się, jak bez wysiłku obliczać kąty skośne. ### [Oblicz kąt pochylenia z URI w rozpoznawaniu obrazu OCR](./calculate-skew-angle-from-uri/) Przeglądaj Aspose.OCR dla .NET, aby bez wysiłku obliczyć kąty skosu w rozpoznawaniu obrazów OCR. Ulepsz swoje projekty z precyzją i wydajnością. +### [Jak wyrównać obraz w C# – Kompletny przewodnik po przetwarzaniu wstępnym OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Dowiedz się, jak skutecznie wyrównać obrazy w C# przed OCR, zwiększając dokładność rozpoznawania tekstu. {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/polish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..64c279a8 --- /dev/null +++ b/ocr/polish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,266 @@ +--- +category: general +date: 2026-01-10 +description: Jak prostować obraz i poprawić wyniki OCR przy użyciu Aspose.OCR. Dowiedz + się, jak wstępnie przetwarzać obraz pod OCR, usuwać szumy ze skanu i rozpoznawać + tekst ze skanu. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: pl +og_description: Jak wyrównać obraz i zwiększyć dokładność OCR. Ten przewodnik pokazuje, + jak wstępnie przetworzyć obraz pod OCR, usunąć szumy ze skanu oraz rozpoznać tekst + ze skanu przy użyciu Aspose.OCR. +og_title: Jak wyrównać obraz w C# – Kompletny przewodnik przetwarzania wstępnego OCR +tags: +- OCR +- C# +- Image Processing +title: Jak wyprostować obraz w C# – Kompletny przewodnik po przetwarzaniu wstępnym + OCR +url: /pl/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak prostować obraz w C# – Kompletny przewodnik po przetwarzaniu wstępnym OCR + +Zastanawiałeś się kiedyś **jak prostować obraz** przed przekazaniem go do silnika OCR? Nie jesteś jedyny. Skanowane dokumenty są często pochyłe, zaszumione lub o niskim kontraście, co utrudnia każdą próbę rozpoznawania tekstu. + +W tym samouczku przeprowadzimy Cię przez pełny, działający przykład, który **przetwarza obraz pod OCR**, usuwa szumy ze skanu i w końcu **rozpoznaje tekst ze skanu** przy użyciu biblioteki Aspose.OCR. Po zakończeniu będziesz mieć jasny obraz **jak używać OCR** w C#, zachowując kod krótki i zwięzły. + +> **Pro tip:** Nawet małe obrócenie (5‑10°) może obniżyć dokładność OCR o 30 % lub więcej. Prostowanie jest pierwszym krokiem, którego nigdy nie powinno się pomijać. + +--- + +## Co będziesz potrzebować + +- **.NET 6+** (kod działa także na .NET Framework, ale .NET 6 jest aktualnym LTS) +- **Aspose.OCR for .NET** – możesz go pobrać z NuGet (`Install-Package Aspose.OCR`) +- Przykładowy plik TIFF/PNG/JPEG, który jest obrócony lub zaszumiony (w przykładzie użyjemy `noisy_rotated.tif`) +- Dowolne IDE – Visual Studio, Rider lub VS Code będą odpowiednie + +To wszystko. Bez dodatkowych bibliotek, bez zewnętrznych usług. + +--- + +## Krok 1 – Wczytaj obraz źródłowy (Dlaczego to ważne) + +Zanim będziemy mogli **prostować obraz**, musimy wczytać go do obiektu Aspose `ImageStream`. Ten obiekt abstrahuje operacje I/O i zapewnia silnikowi OCR spójny interfejs. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Dlaczego najpierw wczytywać?* Ponieważ wszystkie kolejne filtry działają na obrazie w pamięci. Jeśli plik nie może zostać odczytany, cały pipeline się zawiesi. + +--- + +## Krok 2 – Zbuduj pipeline przetwarzania wstępnego (Prostowanie + Odszumianie + Kontrast) + +Solidny przepływ pracy OCR zazwyczaj łączy kilka filtrów. Tutaj **przetwarzamy obraz pod OCR**, a co ważniejsze, **automatycznie prostujemy obraz**. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Dlaczego te trzy?** +- **DeskewFilter** rozwiązuje problem „jak prostować obraz” automatycznie; nie musisz zgadywać kąta. +- **DenoiseFilter** zajmuje się wymaganiem „usuń szumy ze skanu”, które w przeciwnym razie tworzy fantomowe znaki. +- **ContrastBoostFilter** pomaga silnikowi OCR odróżnić ciemny tekst od jasnego tła, co jest klasycznym problemem przy *przetwarzaniu obrazu pod OCR*. + +--- + +## Krok 3 – Zastosuj pipeline (Widząc transformację) + +Teraz faktycznie uruchamiamy filtry. Zwrócony `processedImage` to obraz, który przekażemy silnikowi OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Jeśli otworzysz `cleaned_output.tif`, zauważysz, że tekst jest prosty, mniej ziarnisty i o wyższym kontraście. Ten wizualny kontrolny krok jest przydatny, gdy *usuwasz szumy ze skanu* i chcesz potwierdzić, że prostowanie zadziałało. + +--- + +## Krok 4 – Utwórz i skonfiguruj silnik OCR (Jak używać OCR) + +Mając czysty obraz, tworzymy instancję `OcrEngine`. To jest sedno **jak używać OCR** z Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Dlaczego ustawiamy `AutoPageSegmentation`?* Ponieważ wiele skanów zawiera tabele lub wiele kolumn. Włączenie tej opcji pozwala silnikowi inteligentnie podzielić stronę, poprawiając ostateczny wynik **rozpoznawania tekstu ze skanu**. + +--- + +## Krok 5 – Uruchom proces rozpoznawania (W końcu rozpoznaj tekst) + +Nadszedł moment prawdy: prosimy silnik o odczytanie tekstu. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Jeśli wszystko poszło gładko, zobaczysz czysty blok tekstu, który odpowiada oryginalnemu dokumentowi. To efekt prawidłowego **prostowania obrazu**, **usuwania szumów** i **przetwarzania obrazu pod OCR**. + +--- + +## Krok 6 – Pełny działający przykład (Gotowy do kopiowania i wklejenia) + +Poniżej znajduje się kompletny program, gotowy do kompilacji. Wystarczy podmienić ścieżkę do pliku i możesz startować. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Oczekiwany wynik** (skrócony dla przejrzystości): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Jeśli wynik wygląda na zniekształcony, sprawdź, czy obraz źródłowy nie jest obrócony o więcej niż 30°, lub zwiększ `DeskewFilter.MaxAngle`. + +--- + +## Najczęściej zadawane pytania (Przypadki brzegowe i warianty) + +| Pytanie | Odpowiedź | +|----------|--------| +| **Co jeśli mój skan jest obrócony o 45°?** | `DeskewFilter` ogranicza się do `MaxAngle`. Zwiększ tę wartość (np. `MaxAngle = 60`) lub wstępnie obróć obraz przy użyciu biblioteki graficznej przed przekazaniem go do pipeline. | +| **Czy mogę przetwarzać PDF‑y strona po stronie?** | Tak. Konwertuj każdą stronę PDF na obraz (np. przy użyciu `Aspose.Pdf`) i uruchom ten sam pipeline na każdym bitmapcie. | +| **Mój dokument jest po francusku – czy muszę coś zmienić?** | Ustaw `ocrEngine.Language = Language.French;` lub załaduj własny pakiet językowy. Reszta pipeline pozostaje bez zmian. | +| **Czy istnieje sposób, aby zachować oryginalną rozdzielczość?** | `PreprocessPipeline` działa na oryginalnym bitmapcie, zachowując DPI. Unikaj wywoływania `ImageStream.Resize`, chyba że potrzebujesz zmniejszyć rozmiar w celu wydajności. | +| **Jak podbijanie kontrastu wpływa na skany kolorowe?** | `ContrastBoostFilter` działa na każdym kanale; jest bezpieczny dla obrazów w odcieniach szarości i kolorowych, ale możesz najpierw przekonwertować do odcieni szarości przy użyciu `new GrayscaleFilter()`. | + +--- + +## Przykład obrazu (pomoc wizualna) + +![how to deskew image example](/images/deskew-example.png) + +*Obraz pokazuje przed/po 12° obróconym, zaszumionym skanie, który został prostowany i wyczyszczony.* + +--- + +## Podsumowanie + +Omówiliśmy **jak prostować obraz** przy użyciu Aspose.OCR, zaprezentowaliśmy pełny pipeline **przetwarzania obrazu pod OCR**, pokazaliśmy, jak **usuwać szumy ze skanu**, i w końcu **rozpoznawać tekst ze skanu** kilkoma liniami C#. Łącząc `DeskewFilter`, `DenoiseFilter` i `ContrastBoostFilter`, otrzymujesz czysty bitmap, który pozwala silnikowi OCR wykonać swoją pracę bez zacinania się na artefaktach. + +Co dalej? Eksperymentuj z różnymi siłami filtrów, dodaj `BinarizationFilter` dla czysto czarno‑białego wyniku lub przekaż wyczyszczony obraz do dalszego przetwarzania NLP. Ten sam schemat sprawdza się przy paragonach, paszportach i dokumentach historycznych. + +Masz więcej pytań o **jak używać OCR** w innych językach lub frameworkach? zostaw komentarz 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/net/text-recognition/_index.md b/ocr/polish/net/text-recognition/_index.md index 40c85d63..fecc0fdb 100644 --- a/ocr/polish/net/text-recognition/_index.md +++ b/ocr/polish/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Ulepsz swoje aplikacje .NET za pomocą Aspose.OCR, aby efektywnie rozpoznawać t Odblokuj potencjał OCR w .NET dzięki Aspose.OCR. Wyodrębnij tekst z plików PDF bez wysiłku. Pobierz teraz, aby zapewnić bezproblemową integrację. ### [Rozpoznaj tabelę w rozpoznawaniu obrazu OCR](./recognize-table/) Odblokuj potencjał Aspose.OCR dla .NET dzięki naszemu obszernemu przewodnikowi na temat rozpoznawania tabel w rozpoznawaniu obrazów OCR. +### [Jak uruchomić OCR w C# – Kompletny przewodnik z Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Dowiedz się, jak w prosty sposób uruchomić OCR w C# przy użyciu Aspose OCR, krok po kroku, z praktycznymi przykładami. +### [Jak uruchomić OCR w C# – Wyodrębnij arabski tekst z PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Dowiedz się, jak w prosty sposób wyodrębnić arabski tekst z pliku PNG przy użyciu Aspose OCR w C#. +### [Wyodrębnij tekst z obrazu przy użyciu Aspose OCR – Kompletny przewodnik C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Poznaj pełny przewodnik, jak używać Aspose OCR w C# do wyodrębniania tekstu z obrazów krok po kroku. +### [Utwórz przeszukiwalny PDF z PNG w C# – Kompletny przewodnik](./create-searchable-pdf-from-png-in-c-complete-guide/) +Dowiedz się, jak w C# przekształcić plik PNG w przeszukiwalny PDF przy użyciu Aspose OCR, krok po kroku. +### [Wyodrębnij tekst z obrazu w C# – Kompletny przewodnik Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Poznaj pełny przewodnik, jak wyodrębnić tekst z obrazu w C# przy użyciu Aspose OCR, krok po kroku. +### [Rozpoznaj tekst z obrazu w C# – Kompletny przewodnik po OCR i JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Poznaj pełny przewodnik, jak rozpoznawać tekst z obrazu w C# przy użyciu Aspose OCR i uzyskiwać wyniki w formacie JSON. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/polish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..ae240244 --- /dev/null +++ b/ocr/polish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Utwórz przeszukiwalny PDF z PNG przy użyciu C#. Dowiedz się, jak konwertować + obraz na PDF, wyodrębniać tekst z PNG i przeprowadzać OCR obrazu w C# w jednym prostym + tutorialu. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: pl +og_description: Utwórz przeszukiwalny PDF z PNG przy użyciu C#. Ten przewodnik pokazuje, + jak konwertować obraz na PDF, wyodrębniać tekst z PNG oraz wykonywać OCR obrazu + w C# przy użyciu Aspose. +og_title: Utwórz przeszukiwalny PDF z PNG w C# – krok po kroku +tags: +- Aspose OCR +- C# +- PDF/A +title: Tworzenie przeszukiwalnego PDF z PNG w C# – Kompletny przewodnik +url: /pl/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Create Searchable PDF from PNG in C# – Complete Guide + +Need to **create searchable pdf** from a PNG file in C#? You're not alone—many developers hit this roadblock when they want their scanned images to be both viewable **and** text‑searchable. In this tutorial we’ll walk through the whole pipeline: **convert image to pdf**, run OCR to **extract text from png**, and finally save everything as a **PDF/A‑2b** compliant searchable document. + +By the end you’ll have a single, reusable code snippet that you can drop into any .NET project, plus a handful of practical tips that will save you headaches later. No external services, just the Aspose OCR library and a few lines of C#. + +> **Prerequisites** +> * .NET 6+ (or .NET Framework 4.7.2+). +> * Visual Studio 2022 or any C#‑compatible IDE. +> * A valid Aspose OCR license (or a free trial). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Create searchable PDF from PNG using C#"} + +## Step 1 – Install and Reference Aspose OCR for C# + +First things first: you need the Aspose OCR NuGet package. Open your terminal (or Package Manager Console) and run: + +```bash +dotnet add package Aspose.OCR +``` + +If you prefer the GUI, right‑click your project → **Manage NuGet Packages…** → search for *Aspose.OCR* and install the latest stable version. + +Why this library? It supports **convert png to pdf**, handles multi‑page images, and can output PDF/A‑2b out of the box—perfect for creating a **searchable pdf** that complies with archival standards. + +> **Pro tip:** Register your license early in `Program.cs` to avoid the evaluation watermark. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Step 2 – Load the PNG and Run OCR (extract text from png) + +Now we’ll load the source image. The `ImageStream.FromFile` helper abstracts away the file‑system details and works with any supported raster format. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +At this point the engine has **extracted text from png** and stored it internally. You can even inspect the raw text via `ocrEngine.Text`, which is handy for debugging or logging. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **What if the image is multi‑page?** +> Aspose OCR treats each page as a separate layer. Just call `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` and the engine will iterate automatically. + +## Step 3 – Configure PDF/A‑2b Options (create searchable pdf) + +To turn the OCR result into a **searchable pdf**, we need to tell Aspose how to package the output. PDF/A‑2b is the sweet spot for long‑term preservation and guarantees that the text layer is searchable. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Why embed the original image? Some **compliance checks** require the visual representation to match the original scan. This flag makes the file a true **convert image to pdf** operation while preserving searchable text. + +## Step 4 – Save the Result and Verify (convert png to pdf) + +Finally, we write the output file. The same `Save` method works for any path you provide. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Open the resulting `output.pdf` in Adobe Reader or any PDF viewer and try searching for a word that appears in the original PNG. If the word **highlighted**, congratulations—you’ve successfully **create searchable pdf** from a PNG! + +### Quick verification script (optional) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Why Use PDF/A‑2b for Searchable PDFs? + +* **Archival safety**: PDF/A‑2b guarantees that the file **can be rendered** the same way decades from now. +* **Regulatory compliance**: Many **industries (legal, medical, finance)** require PDF/A for record‑keeping. +* **Searchability**: The **embedded OCR text** layer makes the document **indexable** by desktop search tools. + +If you don’t need the extra compliance baggage, you can drop the `PdfAStandard` line and simply use `new PdfSaveOptions()`—the output will still be searchable, just not PDF/A‑2b. + +## Common Pitfalls & How to Avoid Them + +| Objaw | Prawdopodobna przyczyna | Rozwiązanie | +|---------|--------------|-----| +| No searchable text appears | `ocrEngine.Recognize()` never called or failed silently | Ensure the image path is correct and that the license is registered. | +| PDF is huge (10 + MB) | Original PNG is high‑resolution and `EmbedOriginalImage` is true | Downscale the image before OCR or set `EmbedOriginalImage = false`. | +| Text is garbled | Language not detected automatically | Set `ocrEngine.Language = "eng";` (or your target language) before `Recognize()`. | + +## Full Working Example (Copy‑Paste Ready) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Run the program, open `output.pdf`, and try searching for words you know exist in `input.png`. If everything lines up, you’ve just **mastered the convert image to pdf workflow** and learned how to **ocr image c#** style. + +## Next Steps & Related Topics + +* **Batch processing:** Loop over a folder of PNGs and merge the results into a single PDF. +* **Alternative output formats:** Aspose OCR can also emit DOCX, TXT, or searchable PDF/A‑1b. +* **Performance tuning:** Use `ocrEngine.RecognitionMode = RecognitionMode.Fast` for large **volumes** where **absolute** **accuracy** isn’t critical. +* **Other libraries:** If you are on a tight budget, explore Tesseract .NET—though you’ll lose the built‑in PDF/A support. + +--- + +### TL;DR + +We showed you how to **create searchable pdf** from a PNG using Aspose OCR in C#. The steps are: + +1. Install Aspose OCR (`dotnet add package Aspose.OCR`). +2. Load the PNG and run `ocrEngine.Recognize()` (**extract text from png**). +3. Configure `PdfSaveOptions` for PDF/A‑2b (**convert image to pdf** & **convert png to pdf**). +4. Save the file and verify the searchable layer. + +Give it a spin, tweak the options, and you’ll soon have a robust pipeline for turning any scanned image into an archival‑ready, searchable PDF. 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/polish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/polish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..cb338215 --- /dev/null +++ b/ocr/polish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-01-10 +description: Wyodrębnij tekst z obrazu przy użyciu Aspose OCR w C#. Dowiedz się, jak + konwertować tekst zeskanowanego dokumentu przy przetwarzaniu wsadowym i zapisywać + wyniki. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: pl +og_description: Wyodrębnij tekst z obrazu za pomocą Aspose OCR w C#. Ten samouczek + pokazuje, jak konwertować tekst zeskanowanego dokumentu przy użyciu przetwarzania + wsadowego. +og_title: Wyodrębnianie tekstu z obrazu w C# – Kompletny przewodnik Aspose OCR +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Wyodrębnianie tekstu z obrazu w C# – Kompletny przewodnik po Aspose OCR +url: /pl/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wyodrębnianie tekstu z obrazu – Kompletny przewodnik Aspose OCR + +Kiedykolwiek potrzebowałeś **wyodrębnić tekst z obrazu**, ale nie wiedziałeś od czego zacząć? Nie jesteś sam; wielu programistów napotyka ten problem przy pracy ze skanowanymi PDF‑ami, wielostronicowymi plikami TIFF lub paragonami w formie zdjęć. Dobra wiadomość jest taka, że dzięki Aspose OCR możesz **konwertować tekst ze skanowanego dokumentu** w zaledwie kilku linijkach C#. + +W tym tutorialu przejdziemy przez realistyczny scenariusz: pobranie wielostronicowego pliku TIFF, uruchomienie wsadowego OCR na każdej stronie oraz zapisanie jednego pliku tekstowego zawierającego treść wszystkich stron. Po zakończeniu będziesz mieć gotową aplikację konsolową, zrozumiesz, dlaczego każdy krok ma znaczenie, i będziesz wiedział, jak dostosować przepływ w przypadkach brzegowych, takich jak obrazy zabezpieczone hasłem czy własne pakiety językowe. + +## Wymagania wstępne + +- .NET 6.0 SDK lub nowszy (kod działa również z .NET Core i .NET Framework) +- Visual Studio 2022 (lub dowolny inny edytor) +- Plik licencyjny Aspose OCR (lub możesz używać trybu darmowej ewaluacji) +- Wielostronicowy plik obrazu (np. `multipage.tif`) umieszczony w folderze, do którego możesz odwołać się w kodzie + +Nie są wymagane dodatkowe pakiety NuGet poza `Aspose.OCR`; zainstalujemy go w pierwszym kroku. + +## Krok 1 – Instalacja Aspose OCR i konfiguracja projektu + +Na początek utwórz nowy projekt konsolowy i dodaj bibliotekę Aspose OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro tip:** Jeśli masz plik licencji (`Aspose.OCR.lic`), skopiuj go do katalogu głównego projektu. Biblioteka automatycznie go wykryje w czasie uruchomienia. + +Dlaczego ten krok? Instalacja pakietu daje dostęp do `BatchProcessor`, `OcrEngine` i innych przydatnych klas, które ukrywają szczegóły obsługi obrazów niskiego poziomu. Zapewnia także, że korzystasz z najnowszych algorytmów OCR dostarczanych przez Aspose. + +## Krok 2 – Załadowanie wielostronicowego obrazu przy użyciu BatchProcessor + +`BatchProcessor` został zaprojektowany właśnie do takiego scenariusza: iteracji po każdej stronie wielostronicowego obrazu bez konieczności ręcznego dzielenia plików. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` wczytuje wszystkie strony do pamięci, udostępniając je poprzez `batchProcessor.Pages`. Każdy obiekt strony zna swój numer (`ocrPage.Number`), którego użyjemy później do wyświetlania czytelnych nagłówków. + +## Krok 3 – Przygotowanie StringBuildera do gromadzenia wyników + +Chcemy uzyskać jeden plik tekstowy zawierający wyniki OCR ze wszystkich stron, oddzielone nagłówkami. `StringBuilder` jest najefektywniejszym sposobem łączenia ciągów w pętli. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Dlaczego `StringBuilder`? Łączenie ciągów przy użyciu `+` w pętli powodowałoby alokację nowego obiektu przy każdej iteracji, co obniża wydajność – szczególnie przy dużych dokumentach. + +## Krok 4 – Iteracja po każdej stronie, uruchomienie OCR i dopisanie wyników + +Teraz serce tutorialu: pętla po stronach, rozpoznawanie tekstu i zapisywanie go z oznaczeniem strony. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Dlaczego nowy `OcrEngine` dla każdej strony?** Niektórzy programiści ponownie używają jednego silnika i zmieniają jego właściwość `Image`, ale może to zachować ustawienia języka lub poprzednie wyniki, prowadząc do subtelnych błędów. Utworzenie nowego silnika zapewnia czyste środowisko. + +### Obsługa typowych przypadków brzegowych + +- **Puste strony:** Jeśli strona nie zawiera rozpoznawalnego tekstu, `ocrEngine.Text` będzie pustym ciągiem. Możesz wstawić placeholder, np. “(Brak wykrytego tekstu)”. +- **Wybór języka:** Domyślnie Aspose OCR używa języka angielskiego. Aby przetworzyć niemiecki lub francuski, ustaw `ocrEngine.Language = Language.German;` przed wywołaniem `Recognize()`. +- **Wskazówka wydajnościowa:** Przy bardzo dużych plikach TIFF możesz włączyć `ocrEngine.UseParallelProcessing = true;`, aby wykorzystać wiele rdzeni procesora. + +## Krok 5 – Zapis połączonego wyniku do pliku tekstowego + +Na koniec zapisz zgromadzony ciąg na dysku. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Wynikowy plik `multipage_result.txt` będzie wyglądał mniej więcej tak: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Masz teraz **wyodrębniony tekst z obrazu** i skutecznie **przekonwertowany tekst ze skanowanego dokumentu** do formatu przeszukiwalnego i edytowalnego. + +## Bonus – Przegląd wizualny (tekst alternatywny obrazu) + +Poniżej prosty diagram przepływu ilustrujący proces. +*Alt text:* “Diagram pokazujący jak wyodrębnić tekst z obrazu przy użyciu przetwarzania wsadowego Aspose OCR w C#”. + +![Diagram pokazujący jak wyodrębnić tekst z obrazu przy użyciu przetwarzania wsadowego Aspose OCR w C#](placeholder-image-url.png) + +*(Jeśli publikujesz ten tutorial na statycznej stronie, zamień placeholder na rzeczywisty plik SVG lub PNG.)* + +## Najczęściej zadawane pytania + +**Czy to działa z plikami PDF?** +Tak, Aspose OCR może odczytywać strony PDF jako obrazy. Wystarczy najpierw przekonwertować PDF na obrazy lub użyć `PdfDocument` z `Aspose.PDF` i przekazać rasteryzowany obraz każdej strony do `OcrEngine`. + +**Co jeśli mój plik TIFF jest zabezpieczony hasłem?** +`BatchProcessor` nie obsługuje szyfrowania bezpośrednio. Zdejmij ochronę przy pomocy biblioteki takiej jak `Aspose.Imaging` przed przekazaniem pliku do potoku OCR. + +**Czy mogę wyjściowo uzyskać JSON zamiast zwykłego tekstu?** +Oczywiście. Zastąp logikę `StringBuilder` serializatorem JSON (np. `System.Text.Json`) i przechowuj tekst każdej strony pod kluczem `pageNumber`. + +## Pełny działający przykład + +Oto kompletny program, który możesz skopiować i wkleić do `Program.cs`. Zawiera wszystkie dyrektywy `using`, obsługę błędów i komentarze. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Uruchom program poleceniem: + +```bash +dotnet run +``` + +Powinieneś zobaczyć komunikat w konsoli potwierdzający sukces, a plik wyjściowy będzie zawierał połączone wyniki OCR. + +## Zakończenie + +Właśnie pokazaliśmy praktyczny sposób **wyodrębniania tekstu z obrazu** przy użyciu Aspose OCR, zamieniając dowolny wielostronicowy skan na zwykły, przeszukiwalny tekst. Dzięki wykorzystaniu `BatchProcessor` i czystej konfiguracji `OcrEngine` dla każdej strony możesz niezawodnie **konwertować tekst ze skanowanego dokumentu**, utrzymując kod prostym i łatwym do utrzymania. + +Śmiało eksperymentuj: wypróbuj różne języki, przełącz się na wyjście JSON lub zintegrować tę logikę z API webowym przetwarzającym pliki w locie. Podstawowy wzorzec pozostaje ten sam – wczytaj, rozpoznaj, zgromadź i zapisz. + +Masz więcej pytań dotyczących OCR, licencjonowania Aspose lub obsługi masowych partii dokumentów? Zostaw komentarz poniżej lub zajrzyj do oficjalnej dokumentacji Aspose, aby zgłębić temat. Szczęśliwego kodowania! + +{{< /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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/polish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..11af9e9d --- /dev/null +++ b/ocr/polish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Wyodrębnij tekst z obrazu przy użyciu Aspose OCR w C#. Dowiedz się, jak + wczytać obraz do OCR, rozpoznać tekst w języku hindi i przeprowadzić rozpoznawanie + OCR w kilku prostych krokach. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: pl +og_description: Wyodrębnij tekst z obrazu przy użyciu Aspose OCR w C#. Postępuj zgodnie + z tym przewodnikiem krok po kroku, aby wczytać obraz do OCR, rozpoznać tekst w języku + hindi i uruchomić rozpoznawanie OCR. +og_title: Wyodrębnij tekst z obrazu za pomocą Aspose OCR – Kompletny przewodnik C# +tags: +- Aspose OCR +- C# +- Image Processing +title: Wyodrębnij tekst z obrazu przy użyciu Aspose OCR – Kompletny przewodnik C# +url: /pl/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wyodrębnić tekst z obrazu przy użyciu Aspose OCR – Kompletny przewodnik C# + +Kiedykolwiek potrzebowałeś **wyodrębnić tekst z obrazu**, ale nie byłeś pewien, którą bibliotekę wybrać? Nie jesteś sam — wielu programistów napotyka ten problem, gdy po raz pierwszy zajmuje się OCR w .NET. Dobrą wiadomością jest to, że Aspose OCR sprawia, że cały proces jest zaskakująco prosty, nawet gdy masz do czynienia ze złożonymi skryptami, takimi jak hindi. + +W tym tutorialu przejdziemy przez wszystko, co musisz zrobić, aby **wczytać obraz do OCR**, **rozpoznać tekst w języku hindi** i **uruchomić rozpoznawanie OCR** w C#. Po zakończeniu będziesz mieć gotową do uruchomienia aplikację konsolową, która wypisze wyodrębniony tekst bezpośrednio na ekranie. + +## Co zbudujesz + +Stworzymy małą aplikację konsolową, która: + +1. Wskaże silnikowi OCR folder zawierający modele językowe. +2. Wyłączy automatyczne pobieranie — przydatne w środowiskach o ograniczonym dostępie do sieci. +3. Ustawi hindi jako docelowy język. +4. Wczyta plik JPEG (lub PNG) zawierający tekst w języku hindi. +5. Uruchomi pipeline rozpoznawania. +6. Zapisze wynikowy ciąg znaków w konsoli. + +Bez zewnętrznych usług, bez kluczy w chmurze, wyłącznie czysty OCR on‑premise. + +## Wymagania wstępne + +- **.NET 6.0** lub nowszy (kod działa również na .NET Framework 4.7+). +- **Aspose.OCR for .NET** zainstalowany jako pakiet NuGet. + ```bash + dotnet add package Aspose.OCR + ``` +- Folder o nazwie `OcrResources` zawierający model języka hindi (`hin.traineddata`). + Możesz go pobrać ze strony pobierania Aspose OCR i umieścić w `YOUR_DIRECTORY/OcrResources`. +- Plik obrazu (`input.jpg`) z wyraźnym tekstem w języku hindi. + Dla ilustracji wyobraź sobie zdjęcie szyldu sklepowego z napisem „स्वागत है”. + +> **Pro tip:** Utrzymuj rozdzielczość obrazu powyżej 300 dpi; niższe rozdzielczości mogą powodować pominięcie znaków. + +--- + +## Krok 1: Wskaż silnik OCR na swoje zasoby – *extract text from image* + +Pierwszą rzeczą, której potrzebuje Aspose OCR, jest lokalizacja modeli językowych. Jeśli to pominiesz, silnik spróbuje automatycznie pobrać pliki — co może nie być pożądane w zabezpieczonej sieci. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Dlaczego to ważne:* Ustawiając `ResourcesPath`, zapewniasz, że silnik ładuje poprawne dane treningowe lokalnie, co przyspiesza pierwsze uruchomienie i eliminuje nieoczekiwany ruch sieciowy. + +--- + +## Krok 2: Wyłącz automatyczne pobieranie zasobów – *load image for OCR* + +W wielu korporacyjnych środowiskach dostęp do internetu jest zablokowany. Aspose OCR respektuje flagę, która powstrzymuje go przed pobieraniem brakujących plików w locie. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Jeśli pominiesz tę linię i model hindi nie będzie dostępny, silnik wyrzuci wyjątek o treści „Unable to download required resource”. Ustawienie flagi na `false` daje wyraźny, deterministyczny błąd, który możesz obsłużyć samodzielnie. + +--- + +## Krok 3: Wybierz język – *recognize hindi text* + +Aspose OCR obsługuje dziesiątki języków, ale musisz określić, którego użyć. Hindi jest identyfikowane przez `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Co jeśli potrzebujesz wielu języków?* Możesz ustawić `Language = OcrLanguage.AutoDetect`, aby silnik samodzielnie zgadywał, ale auto‑detekcja jest wolniejsza i czasami myli się przy mieszanych skryptach. Dla czystego hindi jawny wybór jest najbezpieczniejszy. + +--- + +## Krok 4: Wczytaj swój obraz – *load image for OCR* + +Teraz przekazujemy silnikowi obraz, który ma zostać odczytany. Aspose oferuje wygodny pomocnik `ImageStream.FromFile`, który ukrywa zależności od `System.Drawing`. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Jeśli ścieżka do pliku jest nieprawidłowa, Aspose zgłosi `FileNotFoundException`. Szybka weryfikacja `File.Exists` przed tą linią może zaoszczędzić sesję debugowania. + +--- + +## Krok 5: Uruchom silnik OCR – *run OCR recognition* + +Po skonfigurowaniu wszystkiego w końcu wywołujemy proces rozpoznawania. To wywołanie jest synchroniczne i blokuje, dopóki tekst nie zostanie wyodrębniony. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Za kulisami Aspose wykonuje kilka etapów: wstępne przetwarzanie (prostowanie, usuwanie szumów), segmentację, klasyfikację znaków oraz końcowe przetwarzanie specyficzne dla języka. Ciężka praca odbywa się wewnątrz tego jednego wywołania metody. + +--- + +## Krok 6: Wyświetl wyodrębniony tekst – *extract text from image* + +Wynik znajduje się w właściwości `Text` silnika. Po prostu wypisujemy go w konsoli, ale możesz go również zapisać w bazie danych, przesłać przez API lub podać do kolejnego pipeline’u NLP. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Oczekiwany wynik** (zakładając, że obraz zawiera „स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +Jeśli zobaczysz zniekształcone znaki, sprawdź, czy model hindi jest prawidłowo umieszczony i czy obraz nie jest nadmiernie skompresowany. + +--- + +## Pełny działający przykład + +Poniżej znajduje się kompletny program, który możesz skopiować i wkleić do nowego projektu konsolowego (`dotnet new console`). Zamień `YOUR_DIRECTORY` na rzeczywistą ścieżkę na swoim komputerze. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** Jeśli planujesz przetwarzać wiele obrazów w pętli, utwórz jedną instancję `OcrEngine` i używaj jej wielokrotnie — zmniejszy to narzut inicjalizacji. + +--- + +## Rozwiązywanie typowych problemów + +| Problem | Dlaczego się pojawia | Szybka naprawa | +|---------|----------------------|----------------| +| **Pusty wynik** | Nieprawidłowy model językowy lub niska jakość obrazu. | Sprawdź `ResourcesPath`, zwiększ DPI obrazu lub użyj `ocrEngine.Image = ImageStream.FromFile(..., true)`, aby włączyć automatyczne ulepszenia. | +| **Wyjątek: Resource not found** | Brak pliku `.traineddata` dla hindi. | Pobierz model hindi z Aspose, umieść go w `OcrResources` i upewnij się, że nazwa pliku to `hin.traineddata`. | +| **Zniekształcone znaki** | Nieprawidłowe kodowanie przy wypisywaniu w konsoli. | Ustaw kodowanie wyjścia konsoli: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Opóźnienia w wydajności** | Przetwarzanie dużych obrazów bez skalowania. | Przed przekazaniem obrazu do OCR zmniejsz go do maksymalnej szerokości/wysokości 2000 px. | + +--- + +## Kolejne kroki i tematy powiązane + +- **Przetwarzanie wsadowe:** Owiń kod w pętlę `foreach`, aby obsłużyć folder z obrazami. +- **Inne języki:** Zamień `OcrLanguage.Hindi` na `OcrLanguage.English`, `OcrLanguage.Arabic` itd. +- **Formaty wyjściowe:** Zamiast `Console.WriteLine` zapisz do pliku tekstowego (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integracja z ASP.NET Core:** Udostępnij endpoint API, który przyjmuje upload obrazu i zwraca wyodrębniony tekst w formacie JSON. + +Wszystkie te rozszerzenia opierają się na tym samym schemacie — skonfiguruj silnik, wczytaj obraz, rozpoznaj i wykorzystaj wynik. + +--- + +## Zakończenie + +Pokazaliśmy, jak **wyodrębnić tekst z obrazu** przy użyciu Aspose OCR w C#. Poradnik obejmuje każdy krok potrzebny do **wczytania obrazu dla OCR**, **rozpoznania tekstu w języku hindi** oraz **uruchomienia rozpoznawania OCR** — wszystko w samodzielnej aplikacji konsolowej. + +Wypróbuj go na własnych zdjęciach, eksperymentuj z różnymi językami i dostosuj fragmenty do usług webowych lub zadań w tle. Podstawowa idea pozostaje niezmienna: ustaw zasoby, wybierz język, podaj obraz i odczytaj właściwość `Text`. + +Jeśli napotkasz problemy, sprawdź tabelę rozwiązywania problemów powyżej lub zostaw komentarz. Powodzenia w kodowaniu i niech wyniki OCR zawsze będą krystalicznie czyste! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/polish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..db62ce85 --- /dev/null +++ b/ocr/polish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Jak uruchomić OCR na obrazie przy użyciu Aspose OCR w C#. Dowiedz się, + jak wyodrębnić tekst z obrazu, wykonać OCR na obrazie oraz załadować obraz do OCR + z przyspieszeniem GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: pl +og_description: Jak uruchomić OCR na obrazie przy użyciu Aspose OCR. Ten samouczek + pokazuje, jak wyodrębnić tekst z obrazu, przeprowadzić OCR na obrazie oraz efektywnie + wczytać obraz do OCR. +og_title: Jak uruchomić OCR w C# – Pełny przewodnik krok po kroku +tags: +- OCR +- C# +- Aspose +title: Jak uruchomić OCR w C# – Kompletny przewodnik z Aspose OCR +url: /pl/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak uruchomić OCR w C# – Kompletny przewodnik z Aspose OCR + +Zastanawiałeś się kiedyś **jak uruchomić OCR** na zdjęciu i wyciągnąć z niego tekst bez tracenia włosów? Nie jesteś jedyny. Niezależnie od tego, czy digitalizujesz faktury, skanujesz paragony, czy po prostu próbujesz stworzyć przeszukiwalny PDF, możliwość wyodrębnienia tekstu z obrazu jest codzienną potrzebą wielu programistów. + +W tym samouczku przeprowadzimy praktyczny, kompleksowy przykład, który pokazuje **jak uruchomić OCR na obrazach** przy użyciu biblioteki Aspose OCR, z pełnym przyspieszeniem GPU dla szybkości. Po zakończeniu dokładnie będziesz wiedział, jak wczytać obraz do OCR, dostosować użycie pamięci i uzyskać czyste wyniki w postaci zwykłego tekstu — wszystko w kilku minutach kodu. + +## Czego się nauczysz + +- Jak zainicjalizować silnik Aspose OCR w C# +- Jak **wczytać obraz do OCR** z dysku lub strumienia +- Jak włączyć przyspieszenie GPU i ograniczyć pamięć GPU +- Jak **wyodrębnić tekst z obrazu** i zweryfikować wynik +- Typowe pułapki (brak modułu GPU, limity pamięci) i szybkie rozwiązania + +Nie wymagana jest wcześniejsza znajomość Aspose OCR; wystarczy działające środowisko .NET i przykładowy obraz. + +--- + +## Jak uruchomić OCR na obrazie z Aspose OCR + +Pierwszą rzeczą, której potrzebujesz, jest przejrzysty, gotowy do uruchomienia fragment kodu, który wykona całą pracę. Poniżej znajduje się pełny program, który możesz skopiować, wkleić i od razu uruchomić. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Oczekiwany wynik** (zakładając, że przykładowy obraz zawiera frazę „Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Porada:** Jeśli nie widzisz żadnego tekstu, sprawdź ponownie, czy moduł GPU jest zainstalowany i czy ścieżka do obrazu jest poprawna. Metoda `ImageStream.FromFile` wyrzuca czytelny wyjątek, jeśli plik nie zostanie znaleziony. + +--- + +## Wyodrębnianie tekstu z obrazu przy użyciu przyspieszenia GPU + +Po co w ogóle używać GPU? OCR działające wyłącznie na CPU działa, ale może być niezwykle wolne przy dużych lub wysokiej rozdzielczości obrazach. Włączenie przyspieszenia GPU (krok 2 powyżej) przekazuje ciężką pracę Twojej karcie graficznej, która może przetwarzać tysiące pikseli na sekundę. + +### Kiedy używać GPU + +- **Przetwarzanie wsadowe** – skanowanie dziesiątek faktur jednocześnie. +- **Skanowanie w wysokiej rozdzielczości** – wszystko powyżej 300 dpi. +- **Aplikacje w czasie rzeczywistym** – np. mobilny skaner wymagający natychmiastowej informacji zwrotnej. + +Jeśli Twoje środowisko nie posiada kompatybilnego GPU, po prostu ustaw `EnableGpuAcceleration = false;`, a silnik automatycznie przełączy się w tryb CPU. + +--- + +## Uruchamianie OCR na obrazie – prawidłowe wczytywanie obrazu + +Wczytywanie obrazu to krok **load image for OCR**, który często sprawia problemy. Aspose OCR oczekuje `ImageStream`, który może być utworzony z pliku, strumienia pamięci lub nawet z URL. Oto kilka wariantów: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Przypadek brzegowy:** Niektóre obrazy zawierają kanał alfa (przezroczystość), który myli silnik OCR. Usunięcie alfa jest proste: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Teraz omówiłeś najczęstsze sposoby **load image for OCR**, zapewniając, że silnik otrzymuje czysty, obsługiwany format za każdym razem. + +--- + +## Wskazówki dotyczące efektywnego wczytywania obrazu do OCR + +1. **Zmień rozmiar dużych obrazów** – OCR nie potrzebuje zdjęcia 4 K; zmniejszenie do szerokości ~1500 px przyspiesza działanie bez utraty dokładności. +2. **Konwertuj do odcieni szarości** – redukuje szumy i może poprawić rozpoznawanie przy skanach o niskim kontraście. +3. **Wstępna obróbka z prostowaniem** – jeśli Twój obraz jest nachylony, wbudowane prostowanie Aspose OCR można włączyć poprzez `ocrEngine.Config.EnableDeskew = true;`. + +Te poprawki są szczególnie przydatne, gdy **wyodrębniasz tekst z obrazu** w dużych ilościach. + +--- + +## Typowe pułapki i jak je naprawić + +| Objaw | Prawdopodobna przyczyna | Rozwiązanie | +|-------|--------------------------|-------------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | Moduł GPU nie jest zainstalowany | Zainstaluj pakiet Aspose OCR GPU lub wyłącz GPU (`EnableGpuAcceleration = false`). | +| Pusty wynik | Nieprawidłowa ścieżka do obrazu lub nieobsługiwany format | Zweryfikuj ścieżkę w `ImageStream.FromFile`; spróbuj wczytać z bajtów, aby upewnić się, że plik jest odczytywany poprawnie. | +| Błąd braku pamięci | Limit pamięci GPU jest zbyt niski dla dużej partii | Zwiększ `GpuMemoryLimit` (np. 2048) lub przetwarzaj obrazy w mniejszych partiach. | +| Zniekształcone znaki | Obraz ma dużo szumów lub niski kontrast | Wstępna obróbka: binaryzacja, usuwanie szumów lub zwiększenie DPI przed OCR. | + +--- + +## Pełny działający przykład – połącz wszystko razem + +Poniżej znajduje się kompaktowa aplikacja konsolowa, która zawiera najlepsze praktyki, o których rozmawialiśmy: przyspieszenie GPU, ograniczenie pamięci, wstępną obróbkę obrazu i obsługę błędów. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Uruchomienie tego programu wypisuje czysty tekst wyodrębniony z Twojego obrazu, demonstrując solidny sposób na **wyodrębnienie tekstu z obrazu**, nawet gdy źródło nie jest idealne. + +--- + +## Zakończenie + +Omówiliśmy **jak uruchomić OCR** na obrazie przy użyciu Aspose OCR, od inicjalizacji silnika po wczytanie obrazu, włączenie przyspieszenia GPU i obsługę przypadków brzegowych. Masz teraz solidne, godne cytowania odniesienie, które możesz skopiować i wkleić do dowolnego projektu .NET i od razu rozpocząć **wyodrębnianie tekstu z obrazu**. + +Kolejne kroki? Spróbuj przetwarzać strony PDF, eksperymentuj z różnymi językami (ustaw `ocrEngine.Config.Language = "spa"` dla hiszpańskiego) lub zintegrować ten przepływ z API webowym, które przetwarza przesyłane pliki w locie. Nie ma granic, a dzięki omówionym narzędziom jesteś dobrze przygotowany, aby podjąć się każdego wyzwania OCR. + +Miłego kodowania, niech Twój tekst zawsze będzie czysty, a OCR szybki! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/polish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..9efabd1c --- /dev/null +++ b/ocr/polish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-01-10 +description: Jak szybko uruchomić OCR i wyodrębnić arabski tekst z obrazu. Dowiedz + się, jak konwertować obraz na tekst, odczytywać tekst z pliku PNG i zobacz, jak + wyodrębnić tekst za pomocą Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: pl +og_description: Jak uruchomić OCR w C# i wyodrębnić arabski tekst z obrazu PNG. Ten + przewodnik pokazuje, jak przekształcić obraz w tekst i odczytać tekst z PNG krok + po kroku. +og_title: Jak uruchomić OCR w C# – wyodrębnić arabski tekst z PNG +tags: +- OCR +- C# +- Aspose +title: Jak uruchomić OCR w C# – wyodrębnić arabski tekst z PNG +url: /pl/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak uruchomić OCR w C# – Wyodrębnić arabski tekst z PNG + +Zastanawiałeś się kiedyś **jak uruchomić OCR** na zdjęciu zawierającym arabskie znaki? Nie jesteś sam. Wielu programistów napotyka problem, gdy muszą **wyodrębnić arabski tekst** z PNG, ale nie wiedzą, która biblioteka poradzi sobie ze skryptami od prawej do lewej bez problemów. + +W tym samouczku przeprowadzimy Cię przez wszystko, co musisz wiedzieć, aby **konwertować obraz na tekst**, **czytać tekst z PNG**, a w końcu **jak wyodrębnić tekst** przy użyciu Aspose.OCR w czystej aplikacji konsolowej C#. Po zakończeniu będziesz mieć gotowy do uruchomienia program, który wypisze arabski ciąg znaków bezpośrednio w Twoim terminalu. + +## Co się nauczysz + +- Zainstaluj i odwołaj się do pakietu NuGet Aspose.OCR. +- Skonfiguruj silnik OCR pod wsparcie języka arabskiego. +- Załaduj obraz PNG i uruchom proces rozpoznawania. +- Pobierz i wyświetl wyodrębniony tekst. +- Dostosuj ustawienia dla lepszej dokładności i obsłuż typowe pułapki. + +Nie wymagana jest wcześniejsza znajomość OCR, wystarczy podstawowa znajomość C# oraz środowiska programistycznego .NET (Visual Studio, Rider lub `dotnet` CLI będą wystarczające). + +--- + +## Jak uruchomić OCR – Konfiguracja Aspose OCR + +### Krok 1: Dodaj pakiet NuGet Aspose.OCR + +Pierwszą rzeczą, której potrzebujemy, jest sama biblioteka OCR. Aspose.OCR jest produktem komercyjnym, ale oferuje darmową wersję próbną, która doskonale sprawdza się w celach edukacyjnych. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Alternatywnie, otwórz **NuGet Package Manager** w Visual Studio, wyszukaj **Aspose.OCR** i kliknij **Install**. + +> **Pro tip:** Jeśli planujesz używać biblioteki w pipeline CI, dodaj flagę `-v`, aby zablokować wersję, np. `dotnet add package Aspose.OCR -v 23.10`. + +### Krok 2: Utwórz nowy projekt konsolowy (jeśli go nie masz) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Teraz masz świeży plik `Program.cs` gotowy do naszego kodu. + +--- + +## Wyodrębnianie arabskiego tekstu – Pisanie kodu OCR + +Poniżej znajduje się kompletny, gotowy do uruchomienia program. Zapisz go jako `Program.cs` (lub zastąp automatycznie wygenerowany plik). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Dlaczego każdy wiersz ma znaczenie + +- **`OcrEngine`**: Centralna klasa koordynująca ładowanie obrazu, wybór języka i rozpoznawanie. +- **`Language = OcrLanguage.Arabic`**: Arabski używa skryptu od prawej do lewej i unikalnych glifów; ustawienie języka informuje silnik, aby zastosował odpowiednie modele znaków. +- **`ImageStream.FromFile`**: Obsługuje PNG, JPEG, BMP i wiele innych formatów. Jeśli kiedykolwiek będziesz musiał odczytać z `MemoryStream` (np. przesłany plik), zamień to wywołanie odpowiednio. +- **`Recognize()`**: Wykonuje ciężką pracę — analizę pikseli, segmentację i klasyfikację znaków. +- **`ocrEngine.Text`**: Końcowy ciąg Unicode, gotowy do dalszego przetwarzania, przechowywania lub wyświetlania. + +### Oczekiwany wynik + +Jeśli `arabic_sample.png` zawiera frazę „مرحبا بالعالم” (Hello World), konsola wypisze: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Jeśli wynik wygląda na zniekształcony, sprawdź ponownie, czy obraz jest wyraźny, język ustawiony na arabski oraz czy wersja silnika OCR odpowiada dokumentacji. + +--- + +## Konwersja obrazu na tekst – Dostosowywanie dokładności + +Chociaż domyślne ustawienia działają dla większości czystych skanów, obrazy w rzeczywistych warunkach często wymagają dodatkowej troski. + +| Ustawienie | Co robi | Kiedy używać | +|------------|----------|---------------| +| `ocrEngine.Config.Preprocess = true` | Włącza automatyczną binaryzację i usuwanie szumów. | Skanowane dokumenty z cieniami. | +| `ocrEngine.Config.Deskew = true` | Obraca obraz, aby skorygować niewielkie przechylenie. | Zdjęcia zrobione pod kątem. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Traktuje cały obraz jako jedną blok tekstu. | Proste podpisy lub jednowierszowe etykiety. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Ogranicza rozpoznawanie wyłącznie do znaków arabskich. | Zmniejsza liczbę fałszywych trafień na stronach wielojęzycznych. | + +Możesz dodać te linie zaraz po utworzeniu silnika: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Odczytywanie tekstu z PNG – Obsługa różnych źródeł obrazu + +Czasami PNG znajduje się w bazie danych lub pochodzi z żądania sieciowego. Oto szybka wersja, która odczytuje z `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Reszta przepływu pozostaje identyczna, co oznacza, że **jak wyodrębnić tekst** jest spójne niezależnie od źródła. + +--- + +## Jak wyodrębnić tekst – Zaawansowane opcje i przypadki brzegowe + +### 1. Wielostronicowe PDF‑y lub TIFF‑y + +Jeśli potrzebujesz wykonać OCR na wielostronicowym dokumencie, przeiteruj każdą stronę: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Uwaga:** Do tego fragmentu będziesz potrzebował pakietu `Aspose.PDF`. + +### 2. Automatyczne wykrywanie języka + +Aspose.OCR oferuje także auto‑detekcję, ale jest wolniejsza. Jeśli nie jesteś pewien, czy obraz zawiera arabski czy inny skrypt, włącz ją: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +Silnik wypróbuje każdy model językowy i wybierze najlepsze dopasowanie. + +### 3. Wskazówki dotyczące wydajności + +- **Ponowne użycie obiektu `OcrEngine`** dla wielu obrazów; tworzenie nowej instancji za każdym razem zwiększa narzut. +- **Uruchamianie równolegle** tylko wtedy, gdy masz osobne instancje silnika na wątek — współdzielenie jednej instancji powoduje warunki wyścigu. + +--- + +## Podsumowanie + +Omówiliśmy **jak uruchomić OCR** w C# od początku do końca, pokazując jak **wyodrębnić arabski tekst**, **konwertować obraz na tekst**, **odczytać tekst z PNG**, oraz odpowiedzieć na **jak wyodrębnić tekst** w różnych scenariuszach. Przykładowy kod jest kompletny, samodzielny i gotowy do wklejenia w dowolnym projekcie konsolowym .NET. + +Kolejne kroki? Spróbuj zamienić `OcrLanguage.Arabic` na koreański lub serbski cyryliczny, aby zobaczyć wielojęzyczną moc biblioteki. Eksperymentuj z flagami przetwarzania wstępnego, aby zwiększyć dokładność przy szumnych skanach, lub zintegrować procedurę OCR z API webowym, aby użytkownicy mogli przesyłać obrazy i otrzymywać natychmiastowe wyniki tekstowe. + +Miłego kodowania i niech wyniki OCR zawsze będą krystalicznie czyste! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/polish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..4b20341b --- /dev/null +++ b/ocr/polish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,298 @@ +--- +category: general +date: 2026-01-10 +description: Dowiedz się, jak rozpoznawać tekst z obrazu, wyodrębniać współrzędne + tekstu i konwertować paragon na JSON przy użyciu Aspose OCR w C#. Samouczek krok + po kroku. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: pl +og_description: Rozpoznaj tekst z obrazu w C# przy użyciu Aspose OCR. Ten przewodnik + pokazuje, jak wyodrębnić tekst, uzyskać współrzędne i przekształcić paragon do formatu + JSON. +og_title: rozpoznawanie tekstu z obrazu – Pełny samouczek OCR w C# +tags: +- OCR +- C# +- Aspose +title: rozpoznawanie tekstu z obrazu w C# – Kompletny przewodnik po OCR i JSON +url: /pl/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# rozpoznawanie tekstu z obrazu – Pełny samouczek OCR w C# + +Kiedykolwiek potrzebowałeś rozpoznać tekst z obrazu, ale nie wiedziałeś, której biblioteki użyć? Nie jesteś sam. W wielu rzeczywistych aplikacjach — monitorach wydatków, skanerach paragonów czy archiwizatorach dokumentów — wyodrębnienie tekstu w sposób niezawodny jest pierwszą przeszkodą. + +W tym samouczku przejdziemy przez **sposób wyodrębniania tekstu**, pobieranie jego prostokątów ograniczających oraz w końcu **konwersję paragonu do JSON** przy użyciu Aspose.OCR dla .NET. Po zakończeniu będziesz mieć samodzielny projekt C#, który przyjmuje zdjęcie paragonu i generuje schludny plik JSON z ocenami pewności i współrzędnymi. + +## Co będzie potrzebne + +Zanim zaczniemy, upewnij się, że masz na swoim komputerze następujące elementy: + +- **.NET 6.0 SDK** (lub nowszą wersję). Starsze frameworki też działają, ale .NET 6 to optymalny wybór dla nowoczesnych bibliotek. +- **Visual Studio 2022** lub VS Code z rozszerzeniem C#. +- **Aspose.OCR for .NET** pakiet NuGet (`Aspose.OCR` i `Aspose.OCR.Output`). Możesz go zainstalować za pomocą Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Przykładowy obraz paragonu (np. `receipt.jpg`) umieszczony w folderze, do którego odwołasz się później. + +To wszystko — żadnych dodatkowych SDK, żadnych natywnych binarek, tylko czysty kod zarządzany. + +## Krok 1: Utwórz nowy projekt konsolowy + +Na początek, uruchom aplikację konsolową. To najszybszy sposób na przetestowanie OCR bez nakładów UI. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Wskazówka:** Utrzymuj folder projektu w porządku; utwórz podfolder o nazwie `Resources` i wrzuć tam `receipt.jpg`. Ułatwi to obsługę ścieżek. + +## Krok 2: Załaduj obraz paragonu + +Teraz faktycznie **rozpoznajemy tekst z obrazu**. Pierwszy krok to wskazanie silnikowi OCR pliku. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Dlaczego otaczamy ładowanie prostą kontrolą istnienia? Ponieważ w produkcji często masz do czynienia z przesyłanymi przez użytkownika plikami, które mogą być brakujące lub uszkodzone. Wczesne wykrycie problemu chroni przed niejasnymi wyjątkami później. + +## Krok 3: Wykonaj OCR – **rozpoznawanie tekstu z obrazu** + +Mając obraz w pamięci, prosimy Aspose o **rozpoznanie tekstu z obrazu**. Operacja jest synchroniczna i zwraca bogaty zestaw wyników. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Za kulisami Aspose uruchamia sieć neuronową wytrenowaną na milionach znaków. Silnik wypełnia `ocrEngine.Text`, `ocrEngine.RecognitionResult` oraz kolekcję obiektów `OcrRegion` zawierających współrzędne. To dokładnie to, czego potrzebujemy do kolejnego kroku. + +## Krok 4: **Jak wyodrębnić tekst** – Pobieranie surowego ciągu znaków + +Jeśli interesuje Cię tylko czysty tekst (np. do szybkiego wyszukiwania), możesz go pobrać bezpośrednio z silnika: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Zauważysz znaki nowej linii tam, gdzie OCR wykrył granice akapitów. W wielu scenariuszach skanowania paragonów surowy ciąg wystarcza, aby wyciągnąć sumy, daty czy nazwy sprzedawców przy użyciu prostych wyrażeń regularnych. + +## Krok 5: **wyodrębnianie współrzędnych tekstu** – Prostokąty ograniczające dla każdego słowa + +Często potrzebujesz wiedzieć, *gdzie* na obrazie znajduje się konkretny fragment tekstu — na przykład, aby podświetlić kwotę końcową w interfejsie. Aspose udostępnia to poprzez obiekty `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Zauważ, że iterujemy po **wyodrębnianiu współrzędnych tekstu** dla każdego rozpoznanego segmentu. Współrzędne są względem oryginalnego obrazu, więc możesz je nakładać na płótno graficzne lub element HTML ``. + +## Krok 6: **konwersja paragonu do JSON** – Zapisywanie szczegółowych wyników + +Teraz przychodzi część, która łączy wszystko razem: potrzebujemy struktury czytelnej dla maszyn, zawierającej tekst, oceny pewności i prostokąty ograniczające. Aspose dostarcza `JsonSaveOptions`, co czyni to zadanie bajecznie prostym. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Powstały plik wygląda mniej więcej tak (skrócony dla przejrzystości): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Masz teraz artefakt **konwersji paragonu do JSON**, który może być przekazany do usług downstream — myśl o API raportów wydatków, potokach analitycznych lub prostym UI rysującym prostokąty wokół każdego słowa. + +## Pełny działający przykład + +Łącząc wszystkie elementy, oto kompletny `Program.cs`, który możesz skopiować i wkleić do swojego projektu: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Uruchom program (`dotnet run`) i obserwuj wyjście w konsoli. Otwórz `Resources/receipt.json`, aby zweryfikować strukturę. + +## Częste pytania i sytuacje brzegowe + +- **Co zrobić, gdy obraz jest rozmyty?** + Aspose OCR działa najlepiej przy 300 dpi lub wyższym. Jeśli otrzymujesz niskie oceny pewności, rozważ zastosowanie filtru wyostrzającego przed przekazaniem obrazu do silnika. + +- **Czy mogę rozpoznawać wiele języków?** + Tak. Ustaw `ocrEngine.Language = Language.English | Language.Spanish;` przed wywołaniem `Recognize()`. + +- **Jak ograniczyć wynik tylko do liczb (np. sum)?** + Po uzyskaniu czystego tekstu, uruchom wyrażenie regularne takie jak `\d+\.\d{2}` na `ocrEngine.Text`. Ponieważ masz już współrzędne, możesz odwzorować dopasowany ciąg na jego region w celu wizualnego podświetlenia. + +- **Czy format JSON można dostosować?** + Klasa `JsonSaveOptions` udostępnia kilka flag. Jeśli potrzebujesz całkowicie własnego schematu, możesz przeiterować `ocrEngine.RecognitionResult.Regions` i samodzielnie serializować obiekty przy użyciu `System.Text.Json`. + +## Zakończenie + +Pokazaliśmy, jak **rozpoznawać tekst z obrazu** w C# przy użyciu Aspose.OCR, **wyodrębnić tekst**, pobrać **wyodrębnianie współrzędnych tekstu**, a na końcu **konwertować paragon do JSON**. Cały przepływ mieści się w jednej, łatwej do uruchomienia aplikacji konsolowej, co czyni go idealnym do prototypów lub jako element większych systemów. + +Co dalej? Spróbuj podać JSON do front‑endu, który rysuje prostokąty, lub podłącz wynik do usługi raportowania wydatków. Możesz także eksperymentować z różnymi formatami obrazów (PNG, TIFF) lub przetwarzać wsadowo folder z paragonami. + +Masz więcej pytań o OCR, Aspose lub obsługę JSON? Zostaw komentarz poniżej i powodzenia w kodowaniu! + +![Przykład obrazu paragonu dla rozpoznawania tekstu z obrazu](receipt.jpg "Przykład obrazu paragonu dla rozpoznawania tekstu z obrazu") + +{{< /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/net/ocr-configuration/_index.md b/ocr/portuguese/net/ocr-configuration/_index.md index 190e7bbe..b4bf8d3b 100644 --- a/ocr/portuguese/net/ocr-configuration/_index.md +++ b/ocr/portuguese/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Desbloqueie o poder do reconhecimento de imagem OCR em .NET com Aspose.OCR. Extr Desbloqueie recursos poderosos de OCR com Aspose.OCR para .NET. Extraia texto de imagens perfeitamente. ### [Operação OCR com lista no reconhecimento de imagem OCR](./ocr-operation-with-list/) Desbloqueie o potencial do Aspose.OCR para .NET. Execute facilmente o reconhecimento de imagens OCR com listas. Aumente a produtividade e a extração de dados em suas aplicações. +### [Ler Recurso Incorporado em .NET – Guia Completo para Configurar Licença Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Aprenda a ler recursos incorporados em .NET e configurar a licença Aspose de forma simples e eficaz. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/portuguese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..3bcd77cf --- /dev/null +++ b/ocr/portuguese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-01-10 +description: Leia recurso incorporado e defina a licença Aspose em C#. Aprenda a usar + GetManifestResourceStream, incorporar um arquivo de licença e obter a assembly em + execução no .NET em um único tutorial. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: pt +og_description: Leia recursos incorporados no .NET e configure a licença Aspose rapidamente. + Guia passo a passo que cobre GetManifestResourceStream, a incorporação da licença + e o uso do assembly em execução. +og_title: Ler Recurso Incorporado – Definir Licença Aspose no .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Ler Recurso Incorporado no .NET – Guia Completo para Configurar a Licença Aspose +url: /pt/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ler Recurso Incorporado – Guia Completo para Definir a Licença Aspose + +Já precisou **read embedded resource** em tempo de execução e se perguntou como licenciar sua biblioteca Aspose OCR sem codificar caminhos? Você não está sozinho. Em muitos aplicativos corporativos o arquivo de licença vive dentro do assembly, então você não precisa distribuir arquivos extras ou se preocupar com permissões ausentes. Este tutorial mostra exatamente como ler um recurso incorporado e definir a licença Aspose usando o método .NET `GetManifestResourceStream`. + +Vamos percorrer tudo que você precisa: incorporar o arquivo `.lic`, extraí‑lo com `GetExecutingAssembly` e, finalmente, aplicá‑lo à classe `License` do Aspose OCR. Ao final, você terá uma solução autônoma que funciona em qualquer projeto .NET — sem arquivos externos necessários. + +## O que você aprenderá + +- **How to embed a license file** em um projeto .NET para que ele se torne parte do DLL compilado. +- A maneira correta de **use GetManifestResourceStream** para ler esse recurso incorporado. +- Como **set Aspose license** programaticamente sem tocar no sistema de arquivos. +- Dicas para lidar com armadilhas comuns, como nomes de recursos digitados incorretamente ou ações de compilação ausentes. +- Um exemplo de código completo e executável que você pode inserir na sua própria solução. + +### Pré-requisitos + +- .NET 6.0 ou posterior (o código funciona também no .NET Framework 4.x, basta ajustar o arquivo de projeto adequadamente). +- Pacote NuGet Aspose.OCR instalado (`dotnet add package Aspose.OCR`). +- Familiaridade básica com C# e Visual Studio (ou sua IDE favorita). + +Se você já tem esses itens em mãos, ótimo — vamos mergulhar. + +## Etapa 1: Incorporar o Arquivo de Licença Aspose no Seu Assembly + +A primeira coisa que você precisa é o arquivo de licença real (`Aspose.OCR.lic`). Em vez de copiá‑lo ao lado do seu executável, você o incorporará como um **resource**. + +1. Adicione o arquivo `.lic` ao seu projeto (por exemplo, crie uma pasta `Resources` e coloque o arquivo lá). +2. Nas propriedades do arquivo, defina **Build Action** como `Embedded Resource`. + *Pro tip:* mantenha a estrutura de pastas simples; o nome de recurso totalmente qualificado será `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Por que incorporar? Porque o assembly agora carrega a licença dentro de si, eliminando o risco de um arquivo ausente em um servidor de produção. + +## Etapa 2: Recuperar o Recurso Incorporado Usando GetExecutingAssembly + +Agora que a licença está dentro do DLL, você precisa de uma forma de **read embedded resource** em tempo de execução. A classe .NET `Assembly` fornece exatamente isso. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +O método `GetExecutingAssembly` retorna o assembly que está sendo executado no momento — perfeito para localizar recursos que vivem ao lado do seu código. + +## Etapa 3: Abrir o Stream da Licença com GetManifestResourceStream + +Com a referência ao assembly em mãos, você pode chamar `GetManifestResourceStream`. Este método retorna um `Stream` que pode ser passado diretamente para o Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Observe que usamos uma instrução `using` **null‑conditional** (`using Stream?`) para garantir que o stream seja descartado automaticamente. Se o nome estiver errado, lançamos uma exceção clara — isso evita falhas silenciosas mais tarde. + +## Etapa 4: Aplicar a Licença ao Aspose OCR + +A classe `License` da Aspose espera um `Stream`. Já temos um, então a etapa final é simples. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +É isso! O motor Aspose OCR agora está totalmente licenciado e pronto para processar imagens sem a marca d'água de avaliação. + +## Exemplo Completo Funcional + +Abaixo está um programa completo, pronto para copiar e colar, que demonstra todo o processo. Ele inclui as diretivas `using` necessárias, tratamento de erros e uma chamada OCR simples para provar que a licença está ativa. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Saída Esperada + +Ao executar o programa em uma máquina com uma licença válida incorporada, você deverá ver: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Se o stream da licença não puder ser encontrado, o console reportará o nome do recurso ausente, orientando você a verificar novamente a **Build Action** e o namespace. + +## Armadilhas Comuns & Como Evitá‑las + +| Issue | Why It Happens | Fix | +|-------|----------------|-----| +| **Resource name mismatch** | .NET constrói o nome do recurso a partir do namespace padrão + caminho da pasta. | Use `Assembly.GetManifestResourceNames()` para listar os nomes disponíveis e verificar a string exata. | +| **License file not set as Embedded Resource** | A ação de compilação padrão é `Content`. | Altere para `Embedded Resource` nas propriedades do arquivo. | +| **Running from a different assembly** | Se você chamar o código de uma biblioteca de classes, `GetExecutingAssembly()` pode retornar a biblioteca em vez do exe principal. | Use `Assembly.GetEntryAssembly()` ou passe o assembly correto explicitamente. | +| **Stream disposed before use** | Acidentalmente usando um bloco `using` que fecha o stream muito cedo. | Mantenha o `using` ao redor da chamada `SetLicense`, como mostrado acima. | +| **Aspose.OCR version mismatch** | Versões mais recentes podem exigir um formato de licença diferente. | Sempre baixe a licença mais recente da sua conta Aspose e re‑incorpore-a. | + +## Usando a Mesma Técnica para Outros Arquivos Incorporados + +O padrão — **read embedded resource**, então **use GetManifestResourceStream** — funciona para qualquer tipo de arquivo: configurações JSON, imagens, até DLLs nativas. Basta ajustar o `resourceName` e a forma como você consome o stream. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Visão Visual + +![Diagrama ilustrando como ler recurso incorporado e definir a licença Aspose](read-embedded-resource-diagram.png) + +*Alt text:* read embedded resource – diagrama mostrando a incorporação, recuperação com GetManifestResourceStream e aplicação da licença Aspose. + +## Recapitulação + +Cobrimos como **read embedded resource** em um assembly .NET, as etapas exatas para **use GetManifestResourceStream**, e a forma limpa de **set Aspose license** sem expor arquivos no disco. Ao incorporar a licença, você elimina dores de cabeça de implantação e mantém sua aplicação portátil. + +## O que vem a seguir? + +- **Automate license updates:** Escreva um pequeno script de tempo de compilação que substitua o arquivo `.lic` incorporado quando você renovar sua assinatura Aspose. +- **Secure the resource:** Considere criptografar a licença antes de incorporá‑la e descriptografá‑la em tempo de execução para maior proteção. +- **Explore other Aspose products:** A mesma abordagem funciona para Aspose.Words, Aspose.PDF, etc., cada um com sua própria classe `License`. + +Sinta‑se à vontade para experimentar — talvez você incorpore várias licenças para diferentes módulos, ou mude para um nome de recurso controlado por configuração. O céu é o limite. + +--- + +*Feliz codificação! Se encontrar algum problema, deixe um comentário abaixo ou verifique os fóruns da Aspose para mais exemplos.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/portuguese/net/skew-angle-calculation/_index.md index 3199a6e5..c72c010a 100644 --- a/ocr/portuguese/net/skew-angle-calculation/_index.md +++ b/ocr/portuguese/net/skew-angle-calculation/_index.md @@ -40,9 +40,12 @@ Explore o Aspose.OCR for .NET, uma solução poderosa de OCR para reconhecimento Liberte o poder do Aspose.OCR for .NET, uma solução robusta para reconhecimento de imagens. Aprenda como calcular ângulos de inclinação sem esforço. ### [Calcule o ângulo de inclinação do URI no reconhecimento de imagem OCR](./calculate-skew-angle-from-uri/) Explore o Aspose.OCR for .NET para calcular facilmente ângulos de inclinação no reconhecimento de imagem OCR. Aprimore seus projetos com precisão e eficiência. +### [Como corrigir a inclinação de imagem em C# – Guia completo de pré‑processamento OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Aprenda a remover a inclinação de imagens usando Aspose.OCR for .NET, otimizando o pré‑processamento para reconhecimento preciso 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/portuguese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/portuguese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..0b0d6331 --- /dev/null +++ b/ocr/portuguese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-01-10 +description: Como corrigir a inclinação de imagens e melhorar os resultados de OCR + com Aspose.OCR. Aprenda a pré‑processar a imagem para OCR, remover ruído da digitalização + e reconhecer texto da digitalização. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: pt +og_description: Como corrigir a inclinação de imagens e melhorar a precisão do OCR. + Este guia mostra como pré‑processar a imagem para OCR, remover ruído da digitalização + e reconhecer texto da digitalização usando Aspose.OCR. +og_title: Como Desinclinar Imagem em C# – Guia Completo de Pré‑Processamento de OCR +tags: +- OCR +- C# +- Image Processing +title: Como Desinclinar Imagem em C# – Guia Completo de Pré‑Processamento de OCR +url: /pt/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Desinclinar Imagem em C# – Guia Completo de Pré‑Processamento OCR + +Já se perguntou **como desinclinar imagem** antes de enviá‑la para um motor OCR? Você não está sozinho. Documentos escaneados costumam estar tortos, ruidosos ou com baixo contraste, e isso atrapalha qualquer tentativa de reconhecimento de texto. + +Neste tutorial vamos percorrer um exemplo completo e executável que **preprocessa imagem para OCR**, remove ruído da digitalização e, finalmente, **reconhece texto da digitalização** usando a biblioteca Aspose.OCR. Ao final, você terá uma visão clara de **como usar OCR** em C# mantendo o código curto e simples. + +> **Dica profissional:** Mesmo uma pequena rotação (5‑10°) pode reduzir a precisão do OCR em 30 % ou mais. Desinclinar é o primeiro passo que você nunca deve pular. + +--- + +## O que Você Precisa + +- **.NET 6+** (o código funciona também no .NET Framework, mas o .NET 6 é o LTS atual) +- **Aspose.OCR for .NET** – você pode obtê‑lo no NuGet (`Install-Package Aspose.OCR`) +- Um exemplo de TIFF/PNG/JPEG que esteja rotacionado ou ruidoso (usaremos `noisy_rotated.tif` no exemplo) +- Qualquer IDE que você prefira – Visual Studio, Rider ou VS Code serve + +É isso. Sem bibliotecas extras, sem serviços externos. + +--- + +## Etapa 1 – Carregar a Imagem Fonte (Por que Importa) + +Antes de podermos **desinclinar imagem**, precisamos lê‑la em um `ImageStream` da Aspose. Esse objeto abstrai a I/O de arquivos e fornece ao motor OCR uma interface consistente. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Por que carregar primeiro?* Porque todos os filtros subsequentes operam em uma imagem na memória. Se o arquivo não puder ser lido, todo o pipeline entra em colapso. + +--- + +## Etapa 2 – Construir um Pipeline de Pré‑Processamento (Desinclinar + Remover Ruído + Contraste) + +Um fluxo de trabalho OCR robusto geralmente encadeia vários filtros. É aqui que **preprocessamos imagem para OCR** e, mais importante, **como desinclinar imagem** automaticamente. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Por que esses três?** +- **DeskewFilter** resolve o problema de “como desinclinar imagem” automaticamente; você não precisa adivinhar o ângulo. +- **DenoiseFilter** aborda a necessidade de “remover ruído da digitalização”, que caso contrário cria caracteres fantasmas. +- **ContrastBoostFilter** ajuda o motor OCR a distinguir texto escuro de um fundo claro, um problema clássico quando você *preprocessa imagem para OCR*. + +--- + +## Etapa 3 – Aplicar o Pipeline (Vendo a Transformação) + +Agora realmente executamos os filtros. O `processedImage` retornado é o que alimentaremos ao motor OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Se você abrir `cleaned_output.tif`, deverá notar que o texto está reto, menos granulado e com maior contraste. Essa verificação visual é útil quando você *remove ruído da digitalização* e quer confirmar que a desinclinação funcionou. + +--- + +## Etapa 4 – Criar e Configurar o Motor OCR (Como Usar OCR) + +Com uma imagem limpa em mãos, instanciamos `OcrEngine`. Este é o núcleo de **como usar OCR** com Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Por que definir `AutoPageSegmentation`?* Porque muitas digitalizações contêm tabelas ou múltiplas colunas. Ativá‑lo permite que o motor divida a página de forma inteligente, melhorando o resultado final de **reconhecer texto da digitalização**. + +--- + +## Etapa 5 – Executar o Processo de Reconhecimento (Finalmente Reconhecer Texto) + +Agora o momento da verdade: pedimos ao motor que leia o texto. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Se tudo correu bem, você verá um bloco de texto limpo que corresponde ao documento original. Esse é o resultado de **desinclinar imagem**, **remover ruído** e **preprocessar imagem para OCR** adequadamente. + +--- + +## Etapa 6 – Exemplo Completo Funcional (Pronto para Copiar‑Colar) + +Abaixo está o programa completo, pronto para compilar. Basta substituir o caminho do arquivo e você está pronto para usar. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Saída esperada** (truncada para brevidade): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Se a saída parecer confusa, verifique se a imagem fonte não está rotacionada além de 30°, ou aumente `DeskewFilter.MaxAngle`. + +--- + +## Perguntas Frequentes (Casos de Borda & Variações) + +| Question | Answer | +|----------|--------| +| **E se minha digitalização estiver rotacionada 45°?** | `DeskewFilter` tem limite em `MaxAngle`. Aumente (ex., `MaxAngle = 60`) ou pré‑rotacione a imagem com uma biblioteca gráfica antes de enviá‑la ao pipeline. | +| **Posso processar PDFs página‑por‑página?** | Sim. Converta cada página PDF em uma imagem (por exemplo, usando `Aspose.Pdf`) e execute o mesmo pipeline em cada bitmap. | +| **Meu documento está em francês – preciso mudar algo?** | Defina `ocrEngine.Language = Language.French;` ou carregue um pacote de idioma personalizado. O resto do pipeline permanece o mesmo. | +| **Existe uma forma de manter a resolução original?** | `PreprocessPipeline` trabalha no bitmap original, preservando DPI. Basta evitar chamar `ImageStream.Resize` a menos que precise reduzir a escala por desempenho. | +| **Como o aumento de contraste afeta digitalizações coloridas?** | `ContrastBoostFilter` atua em cada canal; é seguro para imagens em escala de cinza ou coloridas, mas você também pode converter para escala de cinza primeiro com `new GrayscaleFilter()`. | + +--- + +## Exemplo de Imagem (Ajuda Visual) + +![exemplo de como desinclinar imagem](/images/deskew-example.png) + +*A imagem mostra um antes/depois de uma digitalização rotacionada 12°, ruidosa, que foi desinclinado e limpo.* + +--- + +## Conclusão + +Cobremos **como desinclinar imagem** usando Aspose.OCR, demonstramos um pipeline completo de **preprocessamento de imagem para OCR**, mostramos como **remover ruído da digitalização**, e finalmente **reconhecer texto da digitalização** com algumas linhas de C#. Ao encadear `DeskewFilter`, `DenoiseFilter` e `ContrastBoostFilter` você obtém um bitmap limpo que permite ao motor OCR fazer seu trabalho sem travar em artefatos. + +Próximos passos? Experimente diferentes intensidades de filtro, adicione um `BinarizationFilter` para saída puramente preto‑e‑branco, ou alimente a imagem limpa em um pipeline NLP subsequente. O mesmo padrão funciona para recibos, passaportes e documentos históricos. + +Tem mais perguntas sobre **como usar OCR** em outras linguagens ou frameworks? Deixe um comentário, 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/net/text-recognition/_index.md b/ocr/portuguese/net/text-recognition/_index.md index 8efadbd2..a4d187e9 100644 --- a/ocr/portuguese/net/text-recognition/_index.md +++ b/ocr/portuguese/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Aprimore seus aplicativos .NET com Aspose.OCR para reconhecimento eficiente de t Desbloqueie o potencial do OCR em .NET com Aspose.OCR. Extraia texto de PDFs sem esforço. Baixe agora para uma experiência de integração perfeita. ### [Reconhecer tabela no reconhecimento de imagem OCR](./recognize-table/) Desbloqueie o potencial do Aspose.OCR para .NET com nosso guia completo sobre reconhecimento de tabelas no reconhecimento de imagem OCR. +### [Como Executar OCR em C# – Guia Completo com Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Aprenda a executar OCR em C# com Aspose OCR neste guia completo passo a passo. +### [Como Executar OCR em C# – Extrair Texto Árabe de PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Aprenda a usar Aspose.OCR em C# para extrair texto árabe de imagens PNG de forma simples e eficaz. +### [Extrair Texto de Imagem com Aspose OCR – Guia Completo em C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Aprenda a extrair texto de imagens usando Aspose OCR em C# com este guia completo passo a passo. +### [Criar PDF pesquisável a partir de PNG em C# – Guia Completo](./create-searchable-pdf-from-png-in-c-complete-guide/) +Aprenda a criar PDFs pesquisáveis a partir de imagens PNG usando Aspose.OCR em C# com este guia completo passo a passo. +### [Extrair Texto de Imagem em C# – Guia Completo Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Aprenda a extrair texto de imagens em C# com Aspose OCR neste guia completo passo a passo. +### [Reconhecer texto de imagem em C# – Guia completo de OCR e JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Aprenda a reconhecer texto em imagens usando Aspose.OCR em C# e obter os resultados em formato JSON de forma simples. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/portuguese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..080a9f6c --- /dev/null +++ b/ocr/portuguese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-01-10 +description: Crie PDF pesquisável a partir de PNG usando C#. Aprenda como converter + imagem para PDF, extrair texto de PNG e fazer OCR em imagem C# em um tutorial fácil. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: pt +og_description: Crie PDF pesquisável a partir de PNG usando C#. Este guia mostra como + converter imagem para PDF, extrair texto de PNG e fazer OCR de imagem em C# com + Aspose. +og_title: Criar PDF pesquisável a partir de PNG em C# – Passo a passo +tags: +- Aspose OCR +- C# +- PDF/A +title: Criar PDF pesquisável a partir de PNG em C# – Guia completo +url: /pt/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Criar PDF pesquisável a partir de PNG em C# – Guia Completo + +Precisa **criar PDF pesquisável** a partir de um arquivo PNG em C#? Você não está sozinho—muitos desenvolvedores encontram esse obstáculo quando desejam que suas imagens digitalizadas sejam tanto visualizáveis **quanto** pesquisáveis por texto. Neste tutorial percorreremos todo o fluxo: **convert image to pdf**, executar OCR para **extract text from png**, e finalmente salvar tudo como um documento pesquisável compatível com **PDF/A‑2b**. + +Ao final, você terá um único trecho de código reutilizável que pode inserir em qualquer projeto .NET, além de algumas dicas práticas que evitarão dores de cabeça mais tarde. Sem serviços externos, apenas a biblioteca Aspose OCR e algumas linhas de C#. + +> **Pré-requisitos** +> * .NET 6+ (ou .NET Framework 4.7.2+). +> * Visual Studio 2022 ou qualquer IDE compatível com C#. +> * Uma licença válida do Aspose OCR (ou um teste gratuito). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Criar PDF pesquisável a partir de PNG usando C#"} + +## Etapa 1 – Instalar e Referenciar Aspose OCR para C# + +Primeiro de tudo: você precisa do pacote NuGet Aspose OCR. Abra seu terminal (ou o Console do Gerenciador de Pacotes) e execute: + +```bash +dotnet add package Aspose.OCR +``` + +Se preferir a interface gráfica, clique com o botão direito no seu projeto → **Manage NuGet Packages…** → procure por *Aspose.OCR* e instale a versão estável mais recente. + +Por que esta biblioteca? Ela suporta **convert png to pdf**, lida com imagens multi‑página e pode gerar PDF/A‑2b pronto para uso—perfeito para criar um **searchable pdf** que cumpre os padrões de arquivamento. + +> **Dica profissional:** registre sua licença cedo em `Program.cs` para evitar a marca d'água de avaliação. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Etapa 2 – Carregar o PNG e Executar OCR (extract text from png) + +Agora vamos carregar a imagem de origem. O helper `ImageStream.FromFile` abstrai os detalhes do sistema de arquivos e funciona com qualquer formato raster suportado. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +Neste ponto, o mecanismo **extracted text from png** e o armazenou internamente. Você pode até inspecionar o texto bruto via `ocrEngine.Text`, o que é útil para depuração ou registro. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **E se a imagem for multi‑página?** +> Aspose OCR trata cada página como uma camada separada. Basta chamar `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` e o mecanismo iterará automaticamente. + +## Etapa 3 – Configurar Opções PDF/A‑2b (create searchable pdf) + +Para transformar o resultado do OCR em um **searchable pdf**, precisamos dizer ao Aspose como empacotar a saída. PDF/A‑2b é o ponto ideal para preservação a longo prazo e garante que a camada de texto seja pesquisável. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Por que incorporar a imagem original? Algumas verificações de conformidade exigem que a representação visual corresponda à digitalização original. Essa flag torna o arquivo uma verdadeira operação **convert image to pdf** enquanto preserva o texto pesquisável. + +## Etapa 4 – Salvar o Resultado e Verificar (convert png to pdf) + +Finalmente, gravamos o arquivo de saída. O mesmo método `Save` funciona para qualquer caminho que você fornecer. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Abra o `output.pdf` resultante no Adobe Reader ou em qualquer visualizador de PDF e tente buscar uma palavra que aparece no PNG original. Se a palavra for destacada, parabéns—você criou com sucesso **create searchable pdf** a partir de um PNG! + +### Script rápido de verificação (opcional) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Por que usar PDF/A‑2b para PDFs pesquisáveis? + +* **Segurança de arquivamento:** PDF/A‑2b garante que o arquivo possa ser renderizado da mesma forma décadas depois. +* **Conformidade regulatória:** Muitas indústrias (jurídica, médica, financeira) exigem PDF/A para manutenção de registros. +* **Pesquisabilidade:** A camada de texto OCR incorporada torna o documento indexável por ferramentas de busca de desktop. + +Se você não precisar da carga extra de conformidade, pode remover a linha `PdfAStandard` e simplesmente usar `new PdfSaveOptions()`—a saída ainda será pesquisável, apenas não será PDF/A‑2b. + +## Armadilhas Comuns & Como Evitá‑las + +| Sintoma | Causa Provável | Correção | +|---------|----------------|----------| +| Nenhum texto pesquisável aparece | `ocrEngine.Recognize()` nunca chamado ou falhou silenciosamente | Certifique‑se de que o caminho da imagem está correto e que a licença está registrada. | +| PDF está enorme (10 + MB) | O PNG original tem alta resolução e `EmbedOriginalImage` está true | Reduza a escala da imagem antes do OCR ou defina `EmbedOriginalImage = false`. | +| Texto está corrompido | Idioma não detectado automaticamente | Defina `ocrEngine.Language = "eng";` (ou o idioma desejado) antes de `Recognize()`. | + +## Exemplo Completo Funcional (Pronto para Copiar‑Colar) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Execute o programa, abra `output.pdf` e tente buscar palavras que você sabe que existem em `input.png`. Se tudo estiver correto, você acabou de dominar o fluxo de trabalho **convert image to pdf** e aprendeu como **ocr image c#**. + +## Próximos Passos & Tópicos Relacionados + +* **Processamento em lote:** Percorra uma pasta de PNGs e mescle os resultados em um único PDF. +* **Formatos de saída alternativos:** Aspose OCR também pode gerar DOCX, TXT ou PDF/A‑1b pesquisável. +* **Ajuste de desempenho:** Use `ocrEngine.RecognitionMode = RecognitionMode.Fast` para grandes volumes onde a precisão absoluta não é crítica. +* **Outras bibliotecas:** Se o orçamento for apertado, explore o Tesseract .NET—embora você perca o suporte integrado a PDF/A. + +--- + +### TL;DR + +Mostramos como **create searchable pdf** a partir de um PNG usando Aspose OCR em C#. Os passos são: + +1. Instale o Aspose OCR (`dotnet add package Aspose.OCR`). +2. Carregue o PNG e execute `ocrEngine.Recognize()` (**extract text from png**). +3. Configure `PdfSaveOptions` para PDF/A‑2b (**convert image to pdf** & **convert png to pdf**). +4. Salve o arquivo e verifique a camada pesquisável. + +Experimente, ajuste as opções, e em breve você terá um pipeline robusto para transformar qualquer imagem digitalizada em um PDF pronto para arquivamento e pesquisável. 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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/portuguese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..fe004999 --- /dev/null +++ b/ocr/portuguese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: Extraia texto de imagem usando Aspose OCR em C#. Aprenda como converter + texto de documentos digitalizados com processamento em lote e salvar os resultados. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: pt +og_description: Extrair texto de imagem com Aspose OCR em C#. Este tutorial mostra + como converter texto de documentos digitalizados usando processamento em lote. +og_title: Extrair Texto de Imagem em C# – Guia Completo de OCR da Aspose +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Extrair Texto de Imagem em C# – Guia Completo de OCR da Aspose +url: /pt/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrair Texto de Imagem – Guia Completo de Aspose OCR + +Já precisou **extrair texto de imagem** mas não sabia por onde começar? Você não está sozinho; muitos desenvolvedores encontram esse obstáculo ao lidar com PDFs escaneados, TIFFs de várias páginas ou recibos baseados em fotos. A boa notícia é que, com Aspose OCR, você pode **converter texto de documentos escaneados** em apenas algumas linhas de C#. + +Neste tutorial, percorreremos um cenário do mundo real: pegar um TIFF de várias páginas, executar OCR em lote em cada página e escrever um único arquivo de texto que contém o conteúdo de todas as páginas. Ao final, você terá um aplicativo de console pronto para executar, entenderá por que cada etapa é importante e saberá como ajustar o fluxo para casos especiais, como imagens protegidas por senha ou pacotes de idiomas personalizados. + +## Pré-requisitos + +- .NET 6.0 SDK ou posterior (o código funciona com .NET Core e .NET Framework também) +- Visual Studio 2022 (ou qualquer editor de sua preferência) +- Um arquivo de licença Aspose OCR (ou você pode usar o modo de avaliação gratuito) +- Um arquivo de imagem de várias páginas (por exemplo, `multipage.tif`) colocado em uma pasta que você pode referenciar + +Nenhum pacote NuGet adicional é necessário além de `Aspose.OCR`; instalaremos isso na primeira etapa. + +## Etapa 1 – Instalar Aspose  OCR e Configurar o Projeto + +Para começar, crie um novo projeto de console e inclua a biblioteca Aspose  OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Dica profissional:** Se você tem um arquivo de licença (`Aspose.OCR.lic`), copie-o para a raiz do projeto. A biblioteca o detectará automaticamente em tempo de execução. + +Por que esta etapa? Instalar o pacote lhe dá acesso a `BatchProcessor`, `OcrEngine` e outras classes úteis que abstraem o tratamento de imagens de baixo nível. Também garante que você esteja usando os algoritmos OCR mais recentes que a Aspose fornece. + +## Etapa 2 – Carregar a Imagem de Múltiplas Páginas com BatchProcessor + +`BatchProcessor` foi projetado exatamente para este cenário: iterar sobre cada página de uma imagem de várias páginas sem que você precise dividir os arquivos manualmente. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +O `BatchProcessor` lê todas as páginas na memória, expondo-as via `batchProcessor.Pages`. Cada objeto de página conhece seu número (`ocrPage.Number`), que usaremos mais tarde para cabeçalhos claros. + +## Etapa 3 – Preparar um StringBuilder para Acumular Resultados + +Queremos um único arquivo de texto que contenha a saída OCR de cada página, separada por cabeçalhos. `StringBuilder` é a forma mais eficiente de concatenar strings em um loop. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Por que um `StringBuilder`? Concatenar strings com `+` dentro de um loop alocaria uma nova string a cada iteração, prejudicando o desempenho — especialmente com documentos grandes. + +## Etapa 4 – Iterar Sobre Cada Página, Executar OCR e Anexar Resultados + +Agora o núcleo do tutorial: percorrer cada página, reconhecer o texto e armazená-lo com um marcador de página. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Por que um novo `OcrEngine` por página?** Alguns desenvolvedores reutilizam um único engine e alteram sua propriedade `Image`, mas isso pode manter configurações de idioma ou resultados anteriores, levando a bugs sutis. Instanciar um engine novo garante um estado limpo. + +### Lidando com Casos Limites Comuns + +- **Páginas vazias:** Se uma página não contiver texto reconhecível, `ocrEngine.Text` será uma string vazia. Você pode inserir um placeholder como “(Nenhum texto detectado)”. +- **Seleção de idioma:** Por padrão, o Aspose OCR usa inglês. Para processar alemão ou francês, defina `ocrEngine.Language = Language.German;` antes de chamar `Recognize()`. +- **Dica de desempenho:** Para TIFFs enormes, você pode habilitar `ocrEngine.UseParallelProcessing = true;` para aproveitar múltiplos núcleos. + +## Etapa 5 – Gravar a Saída Combinada em um Arquivo de Texto + +Finalmente, persista a string acumulada no disco. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +O `multipage_result.txt` resultante terá a seguinte aparência: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Agora você tem **texto extraído de imagem** e efetivamente **converteu texto de documento escaneado** em um formato pesquisável e editável. + +## Bônus – Visão Geral Visual (Texto Alternativo da Imagem) + +Abaixo está um diagrama de fluxo simples ilustrando o processo. +*Texto alternativo:* “Diagrama que mostra como extrair texto de imagem usando o processamento em lote do Aspose OCR em C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Se você estiver publicando este tutorial em um site estático, substitua o placeholder por um SVG ou PNG real.)* + +## Perguntas Frequentes + +**Isso funciona com arquivos PDF?** +Sim, o Aspose OCR pode ler páginas de PDF como imagens. Você só precisa converter o PDF em imagens primeiro, ou usar `PdfDocument` de `Aspose.PDF` e alimentar a imagem rasterizada de cada página ao `OcrEngine`. + +**E se o meu TIFF estiver protegido por senha?** +`BatchProcessor` não lida com criptografia diretamente. Descriptografe o arquivo usando uma biblioteca como `Aspose.Imaging` antes de passá-lo ao pipeline OCR. + +**Posso gerar JSON em vez de texto simples?** +Claro. Substitua a lógica do `StringBuilder` por um serializador JSON (por exemplo, `System.Text.Json`) e armazene o texto de cada página sob a chave `pageNumber`. + +## Exemplo Completo Funcional + +Aqui está o programa completo que você pode copiar e colar em `Program.cs`. Ele inclui todas as diretivas using, tratamento de erros e comentários. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Execute o programa com: + +```bash +dotnet run +``` + +Você deverá ver a mensagem no console confirmando o sucesso, e o arquivo de saída conterá os resultados OCR concatenados. + +## Conclusão + +Acabamos de demonstrar uma maneira prática de **extrair texto de imagem** usando Aspose OCR, transformando qualquer arquivo escaneado de várias páginas em texto simples e pesquisável. Ao aproveitar o `BatchProcessor` e uma configuração limpa de `OcrEngine` por página, você pode **converter texto de documentos escaneados** de forma confiável, mantendo a base de código simples e fácil de manter. + +Sinta-se à vontade para experimentar: tente diferentes idiomas, altere para saída JSON ou integre essa lógica em uma API web que processa uploads em tempo real. O padrão central permanece o mesmo — carregar, reconhecer, acumular e persistir. + +Tem mais perguntas sobre OCR, licenciamento da Aspose ou como lidar com lotes massivos de documentos? Deixe um comentário abaixo ou consulte a documentação oficial da Aspose para aprofundamentos. 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/portuguese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..94f932ee --- /dev/null +++ b/ocr/portuguese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Extraia texto de imagem usando Aspose OCR em C#. Aprenda como carregar + a imagem para OCR, reconhecer texto em hindi e executar o reconhecimento OCR em + alguns passos simples. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: pt +og_description: Extraia texto de imagem usando Aspose OCR em C#. Siga este guia passo + a passo para carregar a imagem para OCR, reconhecer texto em hindi e executar o + reconhecimento OCR. +og_title: Extrair Texto de Imagem com Aspose OCR – Guia Completo em C# +tags: +- Aspose OCR +- C# +- Image Processing +title: Extrair Texto de Imagem com Aspose OCR – Guia Completo em C# +url: /pt/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrair Texto de Imagem com Aspose OCR – Guia Completo em C# + +Já precisou **extrair texto de imagem** mas não tinha certeza de qual biblioteca escolher? Você não está sozinho—muitos desenvolvedores encontram essa dificuldade ao lidar com OCR no .NET pela primeira vez. A boa notícia é que o Aspose OCR torna todo o processo surpreendentemente simples, mesmo quando você está lidando com scripts complexos como o Hindi. + +Neste tutorial vamos percorrer tudo o que você precisa para **carregar imagem para OCR**, **reconhecer texto em Hindi** e **executar o reconhecimento OCR** em C#. Ao final, você terá um aplicativo de console pronto‑para‑executar que imprime o texto extraído diretamente na tela. + +## O Que Você Vai Construir + +Criar‑emos um pequeno aplicativo de console que: + +1. Aponta o motor OCR para uma pasta contendo modelos de idioma. +2. Desativa downloads automáticos—útil para ambientes restritos. +3. Seleciona o Hindi como idioma alvo. +4. Carrega um JPEG (ou PNG) que contém texto em Hindi. +5. Executa o pipeline de reconhecimento. +6. Grava a string resultante no console. + +Sem serviços externos, sem chaves de nuvem, apenas OCR puro on‑premise. + +## Pré‑requisitos + +- **.NET 6.0** ou superior (o código também funciona no .NET Framework 4.7+). +- Pacote NuGet **Aspose.OCR for .NET** instalado. + ```bash + dotnet add package Aspose.OCR + ``` +- Uma pasta chamada `OcrResources` que contém o modelo de idioma Hindi (`hin.traineddata`). + Você pode baixá‑lo da página de download do Aspose OCR e colocá‑lo em `YOUR_DIRECTORY/OcrResources`. +- Um arquivo de imagem (`input.jpg`) com texto Hindi nítido. + Para ilustração, imagine uma foto de uma placa de loja que diz “स्वागत है”. + +> **Dica profissional:** Mantenha a resolução da imagem acima de 300 dpi; resoluções menores podem causar perda de caracteres. + +--- + +## Etapa 1: Apontar o Motor OCR para Seus Recursos – *extrair texto de imagem* + +A primeira coisa que o Aspose OCR precisa é a localização dos seus modelos de idioma. Se você pular isso, o motor tentará baixar os arquivos automaticamente—algo que você pode não querer em uma rede segura. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Por que isso importa:* Ao definir `ResourcesPath` você garante que o motor carregue os dados treinados corretos localmente, o que acelera a primeira execução e elimina tráfego de rede inesperado. + +--- + +## Etapa 2: Desativar Download Automático de Recursos – *carregar imagem para OCR* + +Em muitos ambientes corporativos, o acesso à internet de saída é bloqueado. O Aspose OCR respeita uma flag que impede que ele tente buscar arquivos ausentes em tempo real. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Se você esquecer esta linha e o modelo Hindi não estiver presente, o motor lançará uma exceção semelhante a “Unable to download required resource”. Manter a flag como `false` fornece uma falha clara e determinística que você pode tratar por conta própria. + +--- + +## Etapa 3: Escolher o Idioma – *reconhecer texto hindi* + +O Aspose OCR suporta dezenas de idiomas, mas você precisa informar qual usar. O Hindi é identificado por `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*E se você precisar de vários idiomas?* Você pode definir `Language = OcrLanguage.AutoDetect` para deixar o motor adivinhar, mas a detecção automática é mais lenta e ocasionalmente falha em scripts mistos. Para Hindi puro, a seleção explícita é a opção mais segura. + +--- + +## Etapa 4: Carregar Sua Imagem – *carregar imagem para OCR* + +Agora entregamos ao motor a foto que queremos ler. O Aspose oferece um auxiliar conveniente `ImageStream.FromFile` que abstrai as dependências subjacentes de `System.Drawing`. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Se o caminho do arquivo estiver errado, o Aspose lançará uma `FileNotFoundException`. Uma verificação rápida com `File.Exists` antes desta linha pode economizar uma sessão de depuração. + +--- + +## Etapa 5: Executar o Motor OCR – *executar reconhecimento OCR* + +Com tudo configurado, finalmente iniciamos o processo de reconhecimento. Esta chamada é síncrona e bloqueia até que o texto seja extraído. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Nos bastidores, o Aspose executa várias etapas: pré‑processamento (deskew, remoção de ruído), segmentação, classificação de caracteres e, por fim, pós‑processamento específico do idioma. O trabalho pesado acontece dentro desta única chamada de método. + +--- + +## Etapa 6: Exibir o Texto Extraído – *extrair texto de imagem* + +O resultado está na propriedade `Text` do motor. Simplesmente o escrevemos no console, mas você também poderia armazená‑lo em um banco de dados, enviá‑lo por uma API ou alimentá‑lo em outro pipeline de NLP. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Saída esperada** (supondo que a imagem contenha “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +Se você vir caracteres corrompidos, verifique novamente se o modelo Hindi está corretamente colocado e se a imagem não está excessivamente comprimida. + +--- + +## Exemplo Completo Funcional + +Abaixo está o programa completo que você pode copiar‑colar em um novo projeto de console (`dotnet new console`). Substitua `YOUR_DIRECTORY` pelo caminho real na sua máquina. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Dica:** Se você planeja processar muitas imagens em um loop, instancie um único `OcrEngine` e reutilize‑o—isso reduz a sobrecarga de inicialização. + +--- + +## Lidando com Problemas Comuns + +| Problema | Por que acontece | Correção rápida | +|----------|------------------|-----------------| +| **Saída vazia** | Modelo de idioma errado ou imagem de baixa qualidade. | Verifique `ResourcesPath`, aumente o DPI da imagem ou tente `ocrEngine.Image = ImageStream.FromFile(..., true)` para habilitar auto‑melhoria. | +| **Exceção: Recurso não encontrado** | Falta o `.traineddata` do Hindi. | Baixe o modelo Hindi do Aspose, coloque‑o em `OcrResources` e assegure que o nome do arquivo seja `hin.traineddata`. | +| **Caracteres estranhos** | Incompatibilidade de codificação ao imprimir no console. | Defina a codificação de saída do console: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Desempenho lento** | Imagens grandes processadas sem redimensionamento. | Redimensione a imagem para largura/altura máxima de 2000 px antes de enviá‑la ao OCR. | + +--- + +## Próximos Passos & Tópicos Relacionados + +- **Processamento em lote:** Envolva o código em um loop `foreach` para tratar uma pasta de imagens. +- **Idiomas diferentes:** Troque `OcrLanguage.Hindi` por `OcrLanguage.English`, `OcrLanguage.Arabic`, etc. +- **Formatos de saída:** Em vez de `Console.WriteLine`, grave em um arquivo de texto (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integração com ASP.NET Core:** Exponha um endpoint de API que aceita upload de imagem e retorna o texto extraído como JSON. + +Todas essas extensões seguem o mesmo padrão—configurar o motor, carregar uma imagem, reconhecer e consumir o resultado. + +--- + +## Conclusão + +Acabamos de mostrar como **extrair texto de imagem** usando Aspose OCR em C#. O guia cobriu cada passo que você precisa para **carregar imagem para OCR**, **reconhecer texto em Hindi** e **executar reconhecimento OCR**—tudo em um aplicativo de console autônomo. + +Experimente com suas próprias fotos, teste diferentes idiomas e sinta‑se à vontade para adaptar o trecho para serviços web ou jobs em segundo plano. A ideia central permanece a mesma: definir recursos, escolher um idioma, alimentar uma imagem e ler a propriedade `Text`. + +Se encontrar algum obstáculo, consulte a tabela de solução de problemas acima ou deixe um comentário. Boa codificação, e que seus resultados de OCR sejam sempre cristalinos! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/portuguese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..2ca6715b --- /dev/null +++ b/ocr/portuguese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Como executar OCR em uma imagem usando Aspose OCR em C#. Aprenda a extrair + texto de uma imagem, executar OCR na imagem e carregar a imagem para OCR com aceleração + GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: pt +og_description: Como executar OCR em uma imagem usando Aspose OCR. Este tutorial mostra + como extrair texto de uma imagem, executar OCR na imagem e carregar a imagem para + OCR de forma eficiente. +og_title: Como Executar OCR em C# – Guia Completo Passo a Passo +tags: +- OCR +- C# +- Aspose +title: Como Executar OCR em C# – Guia Completo com Aspose OCR +url: /pt/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Executar OCR em C# – Guia Completo com Aspose OCR + +Já se perguntou **como executar OCR** em uma foto e extrair o texto sem perder a cabeça? Você não está sozinho. Seja digitalizando faturas, escaneando recibos ou apenas tentando criar um PDF pesquisável, a capacidade de extrair texto de imagens é uma necessidade diária para muitos desenvolvedores. + +Neste tutorial vamos percorrer um exemplo prático, de ponta a ponta, que mostra **como executar OCR em arquivos de imagem** usando a biblioteca Aspose OCR, com aceleração por GPU para velocidade. Ao final, você saberá exatamente como carregar a imagem para OCR, ajustar o uso de memória e obter resultados de texto puro — tudo em poucos minutos de código. + +## O que Você Vai Aprender + +- Como inicializar o motor Aspose OCR em C# +- Como **carregar imagem para OCR** a partir de disco ou de um stream +- Como habilitar a aceleração por GPU e limitar a memória da GPU +- Como **extrair texto de imagem** e verificar a saída +- Armadilhas comuns (módulo GPU ausente, limites de memória) e correções rápidas + +Nenhuma experiência prévia com Aspose OCR é necessária; basta um ambiente .NET funcional e uma imagem de exemplo. + +--- + +## Como Executar OCR em uma Imagem com Aspose OCR + +A primeira coisa que você precisa é um trecho claro e executável que faça todo o trabalho. Abaixo está o programa completo que você pode copiar, colar e executar imediatamente. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Saída esperada** (supondo que a imagem de exemplo contenha a frase “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Dica profissional:** Se você não vir nenhum texto, verifique se o módulo GPU está instalado e se o caminho da imagem está correto. O método `ImageStream.FromFile` lança uma exceção clara se o arquivo não for encontrado. + +--- + +## Extrair Texto de Imagem Usando Aceleração por GPU + +Por que se preocupar com a GPU? OCR apenas com CPU funciona, mas pode ser dolorosamente lento em imagens grandes ou de alta resolução. Habilitar a aceleração por GPU (passo 2 acima) delega o trabalho pesado à sua placa gráfica, que pode processar milhares de pixels por segundo. + +### Quando Usar GPU + +- **Processamento em lote** – escaneando dezenas de faturas de uma só vez. +- **Escaneamentos de alta resolução** – qualquer coisa acima de 300 dpi. +- **Aplicativos em tempo real** – como um scanner móvel que precisa de feedback instantâneo. + +Se o seu ambiente não possuir uma GPU compatível, basta definir `EnableGpuAcceleration = false;` e o motor retornará automaticamente ao modo CPU. + +--- + +## Executar OCR em Imagem – Carregando a Imagem Corretamente + +Carregar a imagem é a etapa **carregar imagem para OCR** que costuma pegar as pessoas desprevenidas. Aspose OCR espera um `ImageStream`, que pode ser criado a partir de um arquivo, de um memory stream ou até mesmo de uma URL. Aqui estão algumas variações: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Caso limite:** Algumas imagens contêm um canal alfa (transparência) que confunde o motor OCR. Remover o alfa é simples: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Agora você cobriu as formas mais comuns de **carregar imagem para OCR**, garantindo que o motor receba um formato limpo e suportado a cada vez. + +--- + +## Dicas para Carregar Imagem para OCR de Forma Eficiente + +1. **Redimensionar imagens grandes** – OCR não precisa de uma foto 4 K; reduzir para ~1500 px de largura acelera o processo sem prejudicar a precisão. +2. **Converter para escala de cinza** – reduz ruído e pode melhorar o reconhecimento em escaneamentos de baixo contraste. +3. **Pré‑processar com correção de inclinação** – se sua imagem estiver inclinada, o deskew interno do Aspose OCR pode ser habilitado via `ocrEngine.Config.EnableDeskew = true;`. + +Essas otimizações são especialmente úteis quando você está **extraindo texto de imagem** em lote. + +--- + +## Problemas Comuns & Como Corrigi‑los + +| Sintoma | Causa Provável | Correção | +|---------|----------------|----------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | Módulo GPU não instalado | Instale o pacote Aspose OCR GPU ou desative a GPU (`EnableGpuAcceleration = false`). | +| Saída em branco | Caminho da imagem errado ou formato não suportado | Verifique o caminho em `ImageStream.FromFile`; tente carregar a partir de bytes para garantir que o arquivo seja lido corretamente. | +| Erro de falta de memória | Limite de memória da GPU muito baixo para lote grande | Aumente `GpuMemoryLimit` (ex.: 2048) ou processe as imagens em blocos menores. | +| Caracteres distorcidos | Imagem com muito ruído ou baixo contraste | Pré‑processar: binarizar, remover manchas ou aumentar DPI antes do OCR. | + +--- + +## Exemplo Completo – Junte Tudo + +Abaixo está um aplicativo console compacto que incorpora as melhores práticas que discutimos: aceleração por GPU, limitação de memória, pré‑processamento de imagem e tratamento de erros. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Executar este programa imprime o texto limpo extraído da sua imagem, demonstrando uma forma robusta de **extrair texto de imagem** mesmo quando a fonte não é perfeita. + +--- + +## Conclusão + +Cobremos **como executar OCR** em uma imagem usando Aspose OCR, desde a inicialização do motor até o carregamento da imagem, habilitação da aceleração por GPU e tratamento de casos extremos. Agora você tem uma referência sólida, pronta para ser copiada e colada em qualquer projeto .NET e começar a **extrair texto de imagem** imediatamente. + +Próximos passos? Experimente alimentar páginas PDF, teste diferentes idiomas (defina `ocrEngine.Config.Language = "spa"` para espanhol) ou integre esse fluxo em uma API web que processe uploads em tempo real. O céu é o limite, e com as ferramentas que discutimos, você está bem equipado para enfrentar qualquer desafio de OCR. + +Feliz codificação, e que seu texto esteja sempre limpo e seu OCR rápido! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/portuguese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..94bd8d96 --- /dev/null +++ b/ocr/portuguese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Como executar OCR rapidamente e extrair texto em árabe de uma imagem. + Aprenda a converter imagem em texto, ler texto de PNG e veja como extrair texto + com Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: pt +og_description: Como executar OCR em C# e extrair texto em árabe de uma imagem PNG. + Este guia mostra como converter a imagem em texto e ler o texto de PNG passo a passo. +og_title: Como Executar OCR em C# – Extrair Texto Árabe de PNG +tags: +- OCR +- C# +- Aspose +title: Como Executar OCR em C# – Extrair Texto Árabe de PNG +url: /pt/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Executar OCR em C# – Extrair Texto Árabe de PNG + +Já se perguntou **como executar OCR** em uma imagem que contém caracteres árabes? Você não está sozinho. Muitos desenvolvedores se deparam com um obstáculo quando precisam **extrair texto árabe** de um PNG, mas não sabem qual biblioteca lidará com scripts da direita para a esquerda sem dor de cabeça. + +Neste tutorial, percorreremos tudo o que você precisa saber para **converter imagem em texto**, **ler texto de PNG**, e finalmente **como extrair texto** usando Aspose.OCR em um aplicativo console C# limpo. Ao final, você terá um programa pronto‑para‑executar que imprime a string árabe diretamente no seu terminal. + +## O que Você Vai Aprender + +- Instalar e referenciar o pacote NuGet Aspose.OCR. +- Configurar o motor OCR para suporte ao idioma árabe. +- Carregar uma imagem PNG e executar o processo de reconhecimento. +- Recuperar e exibir o texto extraído. +- Ajustar configurações para melhor precisão e lidar com armadilhas comuns. + +Nenhuma experiência prévia com OCR é necessária, apenas um entendimento básico de C# e um ambiente de desenvolvimento .NET (Visual Studio, Rider ou a CLI `dotnet` serve). + +--- + +## Como Executar OCR – Configurando Aspose OCR + +### Etapa 1: Adicionar o Pacote NuGet Aspose.OCR + +A primeira coisa que precisamos é a própria biblioteca OCR. Aspose.OCR é um produto comercial, mas oferece um teste gratuito que funciona perfeitamente para fins de aprendizado. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Alternativamente, abra o **NuGet Package Manager** no Visual Studio, procure por **Aspose.OCR** e clique em **Install**. + +> **Dica profissional:** Se você planeja usar a biblioteca em um pipeline de CI, adicione a flag `-v` para travar a versão, por exemplo, `dotnet add package Aspose.OCR -v 23.10`. + +### Etapa 2: Criar um Novo Projeto Console (se você ainda não tem um) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Agora você tem um arquivo `Program.cs` novo pronto para o nosso código. + +--- + +## Extrair Texto Árabe – Escrevendo o Código OCR + +Abaixo está o programa completo, pronto‑para‑executar. Salve-o como `Program.cs` (ou substitua o arquivo gerado automaticamente). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Por Que Cada Linha Importa + +- **`OcrEngine`**: A classe central que coordena o carregamento de imagens, a seleção de idioma e o reconhecimento. +- **`Language = OcrLanguage.Arabic`**: O árabe usa um script da direita para a esquerda e glifos únicos; definir o idioma informa ao motor para aplicar os modelos de caracteres corretos. +- **`ImageStream.FromFile`**: Lida com PNG, JPEG, BMP e muitos outros formatos. Se precisar ler de um `MemoryStream` (por exemplo, um arquivo enviado), substitua esta chamada adequadamente. +- **`Recognize()`**: Executa o trabalho pesado — análise de pixels, segmentação e classificação de caracteres. +- **`ocrEngine.Text`**: A string Unicode final, pronta para processamento adicional, armazenamento ou exibição. + +### Saída Esperada + +Se `arabic_sample.png` contiver a frase “مرحبا بالعالم” (Hello World), o console imprimirá: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Se a saída parecer corrompida, verifique se a imagem está nítida, se o idioma está definido como Árabe e se a versão do motor OCR corresponde à documentação. + +--- + +## Converter Imagem em Texto – Ajustando a Precisão + +Embora as configurações padrão funcionem para a maioria das digitalizações limpas, imagens do mundo real frequentemente precisam de um pouco de atenção extra. + +| Configuração | O que faz | Quando usar | +|--------------|-----------|-------------| +| `ocrEngine.Config.Preprocess = true` | Habilita binarização automática e remoção de ruído. | Documentos escaneados com sombras. | +| `ocrEngine.Config.Deskew = true` | Gira a imagem para corrigir inclinação leve. | Fotos tiradas em ângulo. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Trata a imagem inteira como um bloco único de texto. | Legendas simples ou rótulos de linha única. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Limita o reconhecimento apenas a caracteres árabes. | Reduz falsos positivos em páginas com múltiplos idiomas. | + +Você pode adicionar estas linhas logo após criar o motor: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Ler Texto de PNG – Manipulando Diferentes Fontes de Imagem + +Às vezes o PNG está armazenado em um banco de dados ou vem de uma requisição web. Aqui está uma variante rápida que lê de um `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +O resto do fluxo permanece idêntico, o que significa que **como extrair texto** permanece consistente independentemente da fonte. + +--- + +## Como Extrair Texto – Opções Avançadas & Casos Limite + +### 1. PDFs ou TIFFs de Múltiplas Páginas + +Se você precisar fazer OCR em um documento de várias páginas, faça um loop sobre cada página: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Nota:** Você precisará do pacote `Aspose.PDF` para este trecho. + +### 2. Detecção Automática de Idioma + +Aspose.OCR também oferece detecção automática, mas é mais lenta. Se você não tem certeza se a imagem contém árabe ou outro script, habilite-a: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +### 3. Dicas de Performance + +- **Reutilize o objeto `OcrEngine`** para múltiplas imagens; criar uma nova instância a cada vez adiciona sobrecarga. +- **Execute em paralelo** somente se você tiver instâncias de motor separadas por thread — compartilhar uma única instância causa condições de corrida. + +--- + +## Conclusão + +Cobremos **como executar OCR** em C# do início ao fim, mostrando como **extrair texto árabe**, **converter imagem em texto**, **ler texto de PNG**, e responder **como extrair texto** em uma variedade de cenários. O código de exemplo está completo, autocontido e pronto para você colar em qualquer projeto console .NET. + +Próximos passos? Experimente substituir `OcrLanguage.Arabic` por coreano ou cirílico sérvio para ver o poder multilíngue da biblioteca. Experimente as flags de pré‑processamento para melhorar a precisão em digitalizações ruidosas, ou integre a rotina OCR em uma API web para que os usuários possam enviar imagens e obter resultados de texto instantâneos. + +Feliz codificação, e que seus resultados de OCR estejam sempre cristalinos! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/portuguese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..c4a56cec --- /dev/null +++ b/ocr/portuguese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-01-10 +description: Aprenda a reconhecer texto a partir de imagens, extrair as coordenadas + do texto e converter recibos para JSON usando o Aspose OCR em C#. Tutorial passo + a passo. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: pt +og_description: reconhecer texto de imagem em C# usando Aspose OCR. Este guia mostra + como extrair texto, obter coordenadas e converter o recibo para JSON. +og_title: Reconhecer texto a partir de imagem – Tutorial completo de OCR em C# +tags: +- OCR +- C# +- Aspose +title: Reconhecer texto de imagem em C# – Guia completo de OCR e JSON +url: /pt/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# reconhecer texto a partir de imagem – Tutorial Completo de OCR em C# + +Já precisou reconhecer texto a partir de uma imagem, mas não sabia qual biblioteca escolher? Você não está sozinho. Em muitos aplicativos reais—controladores de despesas, scanners de recibos ou arquivadores de documentos—extrair texto de forma confiável é o primeiro obstáculo. + +Neste tutorial vamos percorrer **como extrair texto**, obter suas caixas delimitadoras e, finalmente, **converter recibo para JSON** usando Aspose.OCR para .NET. Ao final, você terá um projeto C# autônomo que recebe uma foto de um recibo e gera um arquivo JSON organizado com pontuações de confiança e coordenadas. + +## O que você vai precisar + +Antes de mergulharmos, certifique‑se de que tem o seguinte na sua máquina: + +- **.NET 6.0 SDK** (ou qualquer versão posterior). Frameworks mais antigos também funcionam, mas o .NET 6 é o ponto ideal para bibliotecas modernas. +- **Visual Studio 2022** ou VS Code com a extensão C#. +- **Aspose.OCR for .NET** pacote NuGet (`Aspose.OCR` e `Aspose.OCR.Output`). Você pode instalá‑lo via Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Uma imagem de exemplo de recibo (por exemplo, `receipt.jpg`) colocada em uma pasta que será referenciada mais adiante. + +É só isso—sem SDKs extras, sem binários nativos, apenas código gerenciado puro. + +## Etapa 1: Criar um Novo Projeto de Console + +Primeiro de tudo, crie um aplicativo de console. É a maneira mais rápida de testar OCR sem sobrecarga de UI. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Dica:** Mantenha a pasta do projeto organizada; crie uma sub‑pasta chamada `Resources` e coloque `receipt.jpg` lá. Isso facilita o manuseio de caminhos. + +## Etapa 2: Carregar a Imagem do Recibo + +Agora vamos realmente **reconhecer texto a partir de imagem**. O primeiro passo é apontar o motor OCR para o arquivo. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Por que envolvemos o carregamento em uma simples verificação de existência? Porque em produção você costuma lidar com uploads de usuários que podem estar ausentes ou corrompidos. Detectar o problema cedo evita exceções enigmáticas mais tarde. + +## Etapa 3: Executar OCR – **reconhecer texto a partir de imagem** + +Com a imagem na memória, pedimos ao Aspose para **reconhecer texto a partir de imagem**. Esta operação é síncrona e devolve um conjunto rico de resultados. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Nos bastidores, o Aspose executa uma rede neural treinada com milhões de caracteres. O motor preenche `ocrEngine.Text`, `ocrEngine.RecognitionResult` e uma coleção de objetos `OcrRegion` que contêm coordenadas. Isso é exatamente o que precisamos para a próxima etapa. + +## Etapa 4: **Como extrair texto** – Obtendo a string bruta + +Se você se importa apenas com o texto puro (talvez para uma busca rápida), pode obtê‑lo diretamente do motor: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Você notará quebras de linha onde o OCR detectou limites de parágrafo. Em muitos cenários de escaneamento de recibos, a string bruta basta para extrair totais, datas ou nomes de fornecedores usando expressões regulares simples. + +## Etapa 5: **extrair coordenadas de texto** – Caixas delimitadoras para cada palavra + +Frequentemente você precisa saber *onde* na imagem determinado trecho de texto está—por exemplo, para destacar o valor total em uma UI. O Aspose fornece isso via objetos `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Observe que estamos iterando sobre **extrair coordenadas de texto** para cada segmento reconhecido. As coordenadas são relativas à imagem original, de modo que você pode sobrepô‑las em um canvas gráfico ou no elemento HTML ``. + +## Etapa 6: **converter recibo para JSON** – Salvando resultados detalhados + +Agora vem a parte que une tudo: queremos uma estrutura legível por máquina que inclua o texto, as pontuações de confiança e as caixas delimitadoras. O Aspose vem com `JsonSaveOptions` que tornam isso muito simples. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +O arquivo resultante tem a seguinte aparência (abreviado para brevidade): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Você agora tem um artefato **converter recibo para JSON** que pode ser alimentado a serviços downstream—pense em APIs de relatórios de despesas, pipelines de análise ou até mesmo uma UI simples que desenha retângulos ao redor de cada palavra. + +## Exemplo Completo Funcional + +Juntando todas as peças, aqui está o `Program.cs` completo que você pode copiar‑colar no seu projeto: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Execute o programa (`dotnet run`) e observe a saída no console. Abra `Resources/receipt.json` para verificar a estrutura. + +## Perguntas Frequentes & Casos de Borda + +- **E se a imagem estiver borrada?** + O Aspose OCR funciona melhor com 300 dpi ou mais. Se você obtiver pontuações de confiança baixas, considere aplicar um filtro de nitidez antes de enviar a imagem ao motor. + +- **Posso reconhecer múltiplos idiomas?** + Sim. Defina `ocrEngine.Language = Language.English | Language.Spanish;` antes de chamar `Recognize()`. + +- **Como limitar a saída apenas a números (por exemplo, totais)?** + Depois de obter o texto puro, execute uma regex como `\d+\.\d{2}` em `ocrEngine.Text`. Como já temos as coordenadas, você pode mapear a string correspondida de volta à sua região para realce visual. + +- **O formato JSON é personalizável?** + A classe `JsonSaveOptions` expõe algumas flags. Se precisar de um esquema completamente customizado, pode iterar sobre `ocrEngine.RecognitionResult.Regions` e serializar os objetos manualmente com `System.Text.Json`. + +## Conclusão + +Acabamos de demonstrar como **reconhecer texto a partir de imagem** em C# usando Aspose.OCR, **como extrair texto**, obter **extrair coordenadas de texto**, e finalmente **converter recibo para JSON**. Todo o fluxo vive em um único aplicativo de console fácil de executar, tornando‑o perfeito para protótipos ou como bloco de construção em sistemas maiores. + +Próximos passos? Experimente alimentar o JSON em um front‑end que desenha as caixas delimitadoras, ou conecte a saída a um serviço de relatório de despesas. Você também pode testar diferentes formatos de imagem (PNG, TIFF) ou processar em lote uma pasta de recibos. + +Tem mais perguntas sobre OCR, Aspose ou manipulação de JSON? Deixe um comentário abaixo, e feliz codificação! + +![Exemplo de imagem de recibo para reconhecer texto a partir de imagem](receipt.jpg "Exemplo de imagem de recibo") + +{{< /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/net/ocr-configuration/_index.md b/ocr/russian/net/ocr-configuration/_index.md index c52b2c30..08691781 100644 --- a/ocr/russian/net/ocr-configuration/_index.md +++ b/ocr/russian/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ url: /ru/net/ocr-configuration/ Разблокируйте мощные возможности распознавания с помощью Aspose.OCR для .NET. Легко извлекайте текст из изображений. ### [OCROОперация со списком в распознавании изображений OCR](./ocr-operation-with-list/) Раскройте потенциал Aspose.OCR для .NET. Легко выполняйте распознавание изображений OCR с помощью списков. Повысьте производительность и извлечение данных в ваших приложениях. +### [Чтение встроенного ресурса в .NET – Полное руководство по установке лицензии Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Узнайте, как читать встроенные ресурсы в .NET и правильно установить лицензию Aspose для вашего приложения. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/russian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..b7ed88f4 --- /dev/null +++ b/ocr/russian/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-01-10 +description: Чтение встроенного ресурса и установка лицензии Aspose в C#. Узнайте, + как использовать GetManifestResourceStream, встраивать файл лицензии и получать + исполняемую сборку .NET в одном руководстве. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: ru +og_description: Прочитайте встроенный ресурс в .NET и быстро установите лицензию Aspose. + Пошаговое руководство, охватывающее GetManifestResourceStream, встраивание лицензии + и использование текущей сборки. +og_title: Чтение встроенного ресурса – Установка лицензии Aspose в .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Чтение встроенного ресурса в .NET — Полное руководство по установке лицензии + Aspose +url: /ru/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Чтение встроенного ресурса – Полное руководство по установке лицензии Aspose + +Когда‑нибудь вам нужно было **читать встроенный ресурс** во время выполнения и вы задавались вопросом, как лицензировать библиотеку Aspose OCR без жёстко прописанных путей? Вы не одиноки. Во многих корпоративных приложениях файл лицензии находится внутри сборки, поэтому вам не нужно поставлять дополнительные файлы или беспокоиться об отсутствующих разрешениях. Этот учебник покажет вам точно, как прочитать встроенный ресурс и установить лицензию Aspose с помощью метода .NET `GetManifestResourceStream`. + +Мы пройдём всё, что вам нужно: встраивание файла `.lic`, извлечение его с помощью `GetExecutingAssembly` и, наконец, применение к классу `License` Aspose OCR. К концу вы получите автономное решение, которое работает в любом проекте .NET — без внешних файлов. + +## Что вы узнаете + +- **Как встроить файл лицензии** в проект .NET, чтобы он стал частью скомпилированного DLL. +- Правильный способ **использовать GetManifestResourceStream** для чтения этого встроенного ресурса. +- Как **установить лицензию Aspose** программно, не трогая файловую систему. +- Советы по работе с распространёнными подводными камнями, такими как опечатки в именах ресурсов или отсутствие правильных действий сборки. +- Полный, исполняемый пример кода, который вы можете добавить в своё решение. + +### Требования + +- .NET 6.0 или новее (код также работает на .NET Framework 4.x, просто скорректируйте файл проекта соответствующим образом). +- Пакет NuGet Aspose.OCR установлен (`dotnet add package Aspose.OCR`). +- Базовое знакомство с C# и Visual Studio (или вашей любимой IDE). + +Если у вас уже всё готово, отлично — давайте погрузимся. + +## Шаг 1: Встроить файл лицензии Aspose в вашу сборку + +Первое, что вам нужно, — это сам файл лицензии (`Aspose.OCR.lic`). Вместо копирования его рядом с исполняемым файлом, вы встроите его как **ресурс**. + +1. Добавьте файл `.lic` в ваш проект (например, создайте папку `Resources` и поместите файл туда). +2. В свойствах файла установите **Build Action** в `Embedded Resource`. + *Pro tip:* держите структуру папок простой; полное имя ресурса будет `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Зачем встраивать? Потому что сборка теперь содержит лицензию внутри себя, устраняя риск отсутствия файла на продакшн‑сервере. + +## Шаг 2: Получить встроенный ресурс с помощью GetExecutingAssembly + +Теперь, когда лицензия находится внутри DLL, вам нужен способ **читать встроенный ресурс** во время выполнения. Класс .NET `Assembly` предоставляет именно это. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +Метод `GetExecutingAssembly` возвращает сборку, которая в данный момент выполняется — идеально подходит для поиска ресурсов, находящихся рядом с вашим кодом. + +## Шаг 3: Открыть поток лицензии с помощью GetManifestResourceStream + +Имея ссылку на сборку, вы можете вызвать `GetManifestResourceStream`. Этот метод возвращает `Stream`, который можно передать напрямую Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Обратите внимание, что мы используем **null‑conditional** оператор в операторе `using` (`using Stream?`), чтобы поток автоматически освобождался. Если имя неверно, мы бросаем понятное исключение — это спасает от тихих сбоев позже. + +## Шаг 4: Применить лицензию к Aspose OCR + +Класс `License` Aspose ожидает `Stream`. У нас уже есть поток, поэтому последний шаг прост. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Вот и всё! Движок Aspose OCR теперь полностью лицензирован и готов обрабатывать изображения без пробного водяного знака. + +## Полный рабочий пример + +Ниже представлен полный готовый к копированию и вставке пример программы, демонстрирующий весь процесс. Он включает необходимые директивы `using`, обработку ошибок и простой вызов OCR, чтобы подтвердить активность лицензии. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Ожидаемый вывод + +Когда вы запустите программу на машине с корректно встроенной лицензией, вы должны увидеть: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Если поток лицензии не найден, консоль выведет сообщение о недостающем имени ресурса, подсказывая проверить **Build Action** и пространство имён. + +## Распространённые подводные камни и как их избежать + +| Проблема | Почему происходит | Как исправить | +|-------|----------------|-----| +| **Несоответствие имени ресурса** | .NET формирует имя ресурса из пространства имён по умолчанию + путь к папке. | Используйте `Assembly.GetManifestResourceNames()` чтобы вывести доступные имена и проверить точную строку. | +| **Файл лицензии не установлен как Embedded Resource** | Действие сборки по умолчанию — `Content`. | Измените его на `Embedded Resource` в свойствах файла. | +| **Запуск из другой сборки** | Если вы вызываете код из библиотеки классов, `GetExecutingAssembly()` может вернуть библиотеку вместо основного exe. | Используйте `Assembly.GetEntryAssembly()` или явно передайте нужную сборку. | +| **Поток закрыт до использования** | Случайно использован блок `using`, который закрывает поток слишком рано. | Оставьте `using` вокруг вызова `SetLicense`, как показано выше. | +| **Несоответствие версии Aspose.OCR** | Более новые версии могут требовать иной формат лицензии. | Всегда загружайте последнюю лицензию из вашего аккаунта Aspose и повторно встраивайте её. | + +## Использование той же техники для других встроенных файлов + +Шаблон — **читать встроенный ресурс**, затем **использовать GetManifestResourceStream** — работает для любого типа файлов: JSON‑конфиги, изображения, даже нативные DLL. Просто скорректируйте `resourceName` и способ потребления потока. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Визуальный обзор + +![Диаграмма, иллюстрирующая процесс чтения встроенного ресурса и установки лицензии Aspose](read-embedded-resource-diagram.png) + +*Alt text:* чтение встроенного ресурса – диаграмма, показывающая встраивание, получение с помощью GetManifestResourceStream и применение лицензии Aspose. + +## Итоги + +Мы рассмотрели, как **читать встроенный ресурс** в сборке .NET, точные шаги для **использования GetManifestResourceStream**, и чистый способ **установить лицензию Aspose** без раскрытия файлов на диске. Встраивая лицензию, вы избавляетесь от проблем с развертыванием и делаете приложение портативным. + +## Что дальше? + +- **Автоматизировать обновление лицензий:** Написать небольшой скрипт сборки, который заменяет встроенный файл `.lic` при обновлении подписки Aspose. +- **Защитить ресурс:** Рассмотреть возможность шифрования лицензии перед встраиванием и её расшифровки во время выполнения для дополнительной защиты. +- **Изучить другие продукты Aspose:** Тот же подход работает для Aspose.Words, Aspose.PDF и т.д., каждый со своим классом `License`. + +Не стесняйтесь экспериментировать — возможно, вы встроите несколько лицензий для разных модулей или перейдёте к имени ресурса, задаваемому конфигурацией. Возможности безграничны. + +--- + +*Счастливого кодинга! Если возникнут проблемы, оставьте комментарий ниже или проверьте форумы 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/net/skew-angle-calculation/_index.md b/ocr/russian/net/skew-angle-calculation/_index.md index 54d92e3b..5c3dd14e 100644 --- a/ocr/russian/net/skew-angle-calculation/_index.md +++ b/ocr/russian/net/skew-angle-calculation/_index.md @@ -40,9 +40,12 @@ url: /ru/net/skew-angle-calculation/ Раскройте возможности Aspose.OCR для .NET, надежного решения для распознавания изображений. Узнайте, как легко вычислять углы перекоса. ### [Вычислить угол наклона по URI в распознавании изображений OCR](./calculate-skew-angle-from-uri/) Изучите Aspose.OCR для .NET, чтобы легко вычислять углы перекоса при распознавании изображений OCR. Усовершенствуйте свои проекты с точностью и эффективностью. +### [Как исправить перекос изображения в C# – Полное руководство по предобработке OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Полное руководство по исправлению перекоса изображений в C# перед 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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/russian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..37ca0f23 --- /dev/null +++ b/ocr/russian/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,246 @@ +--- +category: general +date: 2026-01-10 +description: Как исправить наклон изображения и улучшить результаты OCR с помощью + Aspose.OCR. Узнайте, как предварительно обрабатывать изображение для OCR, удалять + шум со скана и распознавать текст со скана. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: ru +og_description: Как исправить наклон изображения и повысить точность OCR. Это руководство + показывает, как предварительно обработать изображение для OCR, удалить шум со сканированного + документа и распознать текст с помощью Aspose.OCR. +og_title: Как исправить наклон изображения в C# — Полное руководство по предобработке + OCR +tags: +- OCR +- C# +- Image Processing +title: Как выпрямить изображение в C# – Полное руководство по предобработке OCR +url: /ru/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как исправить наклон изображения в C# – Полное руководство по предобработке OCR + +Вы когда‑нибудь задумывались **как исправить наклон изображения** перед тем, как передать его OCR‑движку? Вы не одиноки. Сканированные документы часто наклонены, шумные или с низким контрастом, и это мешает любой попытке распознавания текста. + +В этом руководстве мы пройдем полный, готовый к запуску пример, который **предобрабатывает изображение для OCR**, удаляет шум со скана и, наконец, **распознает текст со скана** с помощью библиотеки Aspose.OCR. К концу вы получите чёткое представление о **том, как использовать OCR** в C#, сохраняя код коротким и лаконичным. + +> **Совет:** Даже небольшое вращение (5‑10°) может снизить точность OCR на 30 % и более. Исправление наклона — первый шаг, который нельзя пропускать. + +## Что понадобится + +- **.NET 6+** (код работает и на .NET Framework, но .NET 6 — текущий LTS) +- **Aspose.OCR for .NET** – можно получить из NuGet (`Install-Package Aspose.OCR`) +- Пример TIFF/PNG/JPEG, который повернут или шумный (в примере мы используем `noisy_rotated.tif`) +- Любая IDE по вашему выбору – Visual Studio, Rider или VS Code подойдёт + +Вот и всё. Никаких дополнительных библиотек, никаких внешних сервисов. + +## Шаг 1 – Загрузка исходного изображения (Почему это важно) + +Прежде чем мы сможем **исправить наклон изображения**, нам нужно прочитать его в Aspose `ImageStream`. Этот объект абстрагирует ввод‑вывод файлов и предоставляет OCR‑движку единый интерфейс. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Почему сначала загрузка?* Потому что все последующие фильтры работают с изображением в памяти. Если файл не может быть прочитан, весь конвейер рушится. + +## Шаг 2 – Создание конвейера предобработки (исправление наклона + удаление шума + контраст) + +Надёжный OCR‑рабочий процесс обычно связывает несколько фильтров. Здесь мы **предобрабатываем изображение для OCR** и, что важнее, **автоматически исправляем наклон изображения**. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Почему именно эти три?** +- **DeskewFilter** автоматически решает проблему “как исправить наклон изображения”; не нужно угадывать угол. +- **DenoiseFilter** решает задачу “удалить шум со скана”, иначе появляются фантомные символы. +- **ContrastBoostFilter** помогает OCR‑движку различать тёмный текст и светлый фон, классическая проблема при *предобработке изображения для OCR*. + +## Шаг 3 – Применение конвейера (видим трансформацию) + +Теперь мы действительно запускаем фильтры. Возвращённый `processedImage` — это то, что мы передадим OCR‑движку. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Если открыть `cleaned_output.tif`, вы заметите, что текст прямой, менее зернистый и с более высоким контрастом. Эта визуальная проверка полезна, когда вы *удаляете шум со скана* и хотите убедиться, что исправление наклона сработало. + +## Шаг 4 – Создание и настройка OCR‑движка (как использовать OCR) + +Имея чистое изображение, мы создаём экземпляр `OcrEngine`. Это ядро **того, как использовать OCR** с Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Зачем устанавливать `AutoPageSegmentation`?* Потому что многие сканы содержат таблицы или несколько колонок. Включение этой опции позволяет движку интеллектуально разбивать страницу, улучшая окончательный результат **распознавания текста со скана**. + +## Шаг 5 – Запуск процесса распознавания (наконец распознаём текст) + +Теперь момент истины: мы просим движок прочитать текст. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Если всё прошло гладко, вы увидите чистый блок текста, соответствующий оригинальному документу. Это результат правильного **исправления наклона изображения**, **удаления шума** и **предобработки изображения для OCR**. + +## Шаг 6 – Полный рабочий пример (готов к копированию и вставке) + +Ниже полная программа, готовая к компиляции. Просто замените путь к файлу, и всё готово. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Ожидаемый вывод** (усечённый для краткости): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Если вывод выглядит искажённым, дважды проверьте, что исходное изображение не повернуто более чем на 30°, или увеличьте `DeskewFilter.MaxAngle`. + +## Часто задаваемые вопросы (крайние случаи и варианты) + +| Вопрос | Ответ | +|----------|--------| +| **Что если мой скан повернут на 45°?** | `DeskewFilter` ограничен `MaxAngle`. Увеличьте его (например, `MaxAngle = 60`) или предварительно поверните изображение с помощью графической библиотеки перед передачей в конвейер. | +| **Могу ли я обрабатывать PDF постранично?** | Да. Преобразуйте каждую страницу PDF в изображение (например, с помощью `Aspose.Pdf`) и запустите тот же конвейер для каждого битмапа. | +| **Мой документ на французском – нужно ли что‑то менять?** | Установите `ocrEngine.Language = Language.French;` или загрузите пользовательский языковой пакет. Остальная часть конвейера остаётся без изменений. | +| **Можно ли сохранить оригинальное разрешение?** | `PreprocessPipeline` работает с оригинальным битмапом, сохраняет DPI. Просто избегайте вызова `ImageStream.Resize`, если только не требуется уменьшить масштаб для производительности. | +| **Как повышение контраста влияет на цветные сканы?** | `ContrastBoostFilter` работает с каждым каналом; он безопасен для черно‑белых и цветных изображений, но вы также можете сначала преобразовать в градации серого с помощью `new GrayscaleFilter()`. | + +## Пример изображения (визуальная подсказка) + +![пример исправления наклона изображения](/images/deskew-example.png) + +*На картинке показан «до/после» 12° повернутого, шумного скана, который был исправлен и очищен.* + +## Заключение + +Мы рассмотрели **как исправить наклон изображения** с помощью Aspose.OCR, продемонстрировали полный конвейер **предобработки изображения для OCR**, показали, как **удалять шум со скана**, и, наконец, **распознавать текст со скана** несколькими строками C#. Объединяя `DeskewFilter`, `DenoiseFilter` и `ContrastBoostFilter`, вы получаете чистый битмап, позволяющий OCR‑движку выполнять свою работу без застревания на артефактах. + +Следующие шаги? Попробуйте экспериментировать с различными силами фильтров, добавить `BinarizationFilter` для чисто черно‑белого вывода или передать очищенное изображение в последующий NLP‑конвейер. Та же схема работает с чеками, паспортами и историческими документами. + +Есть дополнительные вопросы о **том, как использовать 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/net/text-recognition/_index.md b/ocr/russian/net/text-recognition/_index.md index cbc7a99c..0595b4c7 100644 --- a/ocr/russian/net/text-recognition/_index.md +++ b/ocr/russian/net/text-recognition/_index.md @@ -23,7 +23,7 @@ url: /ru/net/text-recognition/ ## Получите результат распознавания в распознавании изображений OCR -Изучите возможности Aspose.OCR для .NET и измените способ распознавания текста на изображениях. Раскройте тонкости получения результатов распознавания с помощью нашего подробного руководства. Независимо от того, являетесь ли вы опытным разработчиком или только начинаете, это руководство позволит вам легко интегрировать OCR в ваши проекты. +Изучите возможности Aspose.OCR для .NET и измените способ распознавания текста на изображениях. Раскройте тонкости получения результатов распознавания с помощью нашего подробного руководства. Независимо от того, являетесь ли вы опытным разработчиком или только начинаете, это руководство позволит вам легко интегрировать OCR в свои проекты. ## Получить результат в формате JSON в распознавании изображений OCR @@ -35,7 +35,7 @@ url: /ru/net/text-recognition/ ## Распознать PDF в распознавании изображений OCR -Раскройте потенциал оптического распознавания символов в .NET с помощью Aspose.OCR. Легко извлекайте текст из PDF-файлов и легко интегрируйте его в свои приложения. В этом руководстве представлено подробное руководство по распознаванию текста в PDF-файлах, обеспечивающее плавную и эффективную интеграцию. +Раскройте потенциал оптического распознавания символов в .NET с помощью Aspose.OCR. Легко извлекайте текст из PDF-файлов и легко интегрируйте его в свои приложения. В этом руководстве представлено подробное руководство по распознаванию текста в PDF-файлах, обеспечующее плавную и эффективную интеграцию. ## Распознать таблицу в распознавании изображений OCR @@ -55,9 +55,22 @@ url: /ru/net/text-recognition/ Раскройте потенциал оптического распознавания символов в .NET с помощью Aspose.OCR. Извлекайте текст из PDF-файлов без особых усилий. Загрузите сейчас и получите беспрепятственную интеграцию. ### [Распознать таблицу в распознавании изображений OCR](./recognize-table/) Раскройте потенциал Aspose.OCR для .NET с помощью нашего подробного руководства по распознаванию таблиц в распознавании изображений OCR. +### [Как запустить OCR в C# – Полное руководство с Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Узнайте, как быстро интегрировать OCR в C# с помощью Aspose OCR, следуя пошаговому полному руководству. +### [Как запустить OCR в C# – Извлечение арабского текста из PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Узнайте, как с помощью Aspose.OCR извлечь арабский текст из PNG‑изображений в C# за несколько шагов. +### [Извлечение текста из изображения с Aspose OCR – Полное руководство на C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Полное пошаговое руководство по извлечению текста из изображений с помощью Aspose OCR в C#. +### [Создание поискового PDF из PNG в C# – Полное руководство](./create-searchable-pdf-from-png-in-c-complete-guide/) +Полное пошаговое руководство по созданию поискового PDF из PNG‑изображений в C# с использованием Aspose OCR. +### [Извлечение текста из изображения в C# – Полное руководство Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Полное пошаговое руководство по извлечению текста из изображений с помощью Aspose OCR в C#. +### [Распознать текст с изображения в C# – Полное руководство по OCR и JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Полное пошаговое руководство по распознаванию текста с изображений в C# с использованием Aspose OCR и получению результатов в формате JSON. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/russian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..9ab12f9e --- /dev/null +++ b/ocr/russian/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Создайте поисковый PDF из PNG с помощью C#. Узнайте, как преобразовать + изображение в PDF, извлечь текст из PNG и выполнить OCR изображения на C# в одном + простом руководстве. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: ru +og_description: Создайте PDF с возможностью поиска из PNG с помощью C#. Это руководство + показывает, как преобразовать изображение в PDF, извлечь текст из PNG и выполнить + OCR изображения на C# с помощью Aspose. +og_title: Создание PDF с поисковым текстом из PNG в C# – пошагово +tags: +- Aspose OCR +- C# +- PDF/A +title: Создание PDF с возможностью поиска из PNG в C# – Полное руководство +url: /ru/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Создание поискового PDF из PNG в C# – Полное руководство + +Нужно **создать поисковый pdf** из файла PNG в C#? Вы не одиноки — многие разработчики сталкиваются с этой проблемой, когда хотят, чтобы отсканированные изображения были одновременно просматриваемыми **и** поддерживали поиск по тексту. В этом руководстве мы пройдем весь процесс: **конвертировать изображение в pdf**, выполнить OCR для **извлечения текста из png**, и, наконец, сохранить всё как документ, соответствующий **PDF/A‑2b**. + +К концу вы получите единый, переиспользуемый фрагмент кода, который можно вставить в любой .NET‑проект, а также несколько практических советов, которые сэкономят вам нервы в дальнейшем. Никаких внешних сервисов, только библиотека Aspose OCR и несколько строк C#. + +> **Prerequisites** +> * .NET 6+ (или .NET Framework 4.7.2+). +> * Visual Studio 2022 или любой совместимый IDE для C#. +> * Действительная лицензия Aspose OCR (или бесплатная пробная версия). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Создать поисковый PDF из PNG с помощью C#"} + +## Шаг 1 – Установите и подключите Aspose OCR для C# + +Первым делом: вам нужен пакет Aspose OCR из NuGet. Откройте терминал (или консоль диспетчера пакетов) и выполните: + +```bash +dotnet add package Aspose.OCR +``` + +Если предпочитаете графический интерфейс, щелкните правой кнопкой по проекту → **Manage NuGet Packages…** → найдите *Aspose.OCR* и установите последнюю стабильную версию. + +Почему именно эта библиотека? Она поддерживает **convert png to pdf**, работает с многостраничными изображениями и может сразу выводить PDF/A‑2b — идеальный вариант для создания **searchable pdf**, соответствующего архивным требованиям. + +> **Pro tip:** Зарегистрируйте лицензию сразу в `Program.cs`, чтобы избавиться от водяного знака оценки. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Шаг 2 – Загрузите PNG и выполните OCR (extract text from png) + +Теперь загрузим исходное изображение. Помощник `ImageStream.FromFile` скрывает детали файловой системы и работает с любым поддерживаемым растровым форматом. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +На этом этапе движок **extracted text from png** и сохранил его во внутренней структуре. Вы даже можете посмотреть сырой текст через `ocrEngine.Text`, что удобно для отладки или логирования. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **What if the image is multi‑page?** +> Aspose OCR рассматривает каждую страницу как отдельный слой. Просто вызовите `ocrEngine.Image = ImageStream.FromFile("multipage.tif");`, и движок автоматически переберёт их. + +## Шаг 3 – Настройте параметры PDF/A‑2b (create searchable pdf) + +Чтобы превратить результат OCR в **searchable pdf**, нужно указать Aspose, как упаковать вывод. PDF/A‑2b — оптимальный вариант для долгосрочного хранения и гарантирует, что текстовый слой будет доступен для поиска. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Зачем встраивать оригинальное изображение? Некоторые проверки соответствия требуют, чтобы визуальное представление совпадало с оригинальной скан‑копией. Этот флаг делает файл истинной операцией **convert image to pdf**, одновременно сохраняя поисковый текст. + +## Шаг 4 – Сохраните результат и проверьте (convert png to pdf) + +Наконец, записываем файл. Метод `Save` работает с любым указанным путем. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Откройте полученный `output.pdf` в Adobe Reader или любом другом просмотрщике PDF и попробуйте найти слово, которое присутствует в оригинальном PNG. Если слово подсвечивается, поздравляем — вы успешно **create searchable pdf** из PNG! + +### Быстрый скрипт проверки (по желанию) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Почему стоит использовать PDF/A‑2b для поисковых PDF? + +* **Archival safety:** PDF/A‑2b гарантирует, что файл будет отображаться одинаково даже через десятилетия. +* **Regulatory compliance:** Многие отрасли (юриспруденция, медицина, финансы) требуют PDF/A для архивирования. +* **Searchability:** Встроенный OCR‑текстовый слой делает документ индексируемым поисковыми инструментами. + +Если вам не нужна дополнительная соответствие, можно убрать строку `PdfAStandard` и просто использовать `new PdfSaveOptions()` — вывод всё равно будет поисковым, просто не будет соответствовать PDF/A‑2b. + +## Распространённые проблемы и способы их избежать + +| Symptom | Likely Cause | Fix | +|---------|--------------|-----| +| No searchable text appears | `ocrEngine.Recognize()` never called or failed silently | Ensure the image path is correct and that the license is registered. | +| PDF is huge (10 + MB) | Original PNG is high‑resolution and `EmbedOriginalImage` is true | Downscale the image before OCR or set `EmbedOriginalImage = false`. | +| Text is garbled | Language not detected automatically | Set `ocrEngine.Language = "eng";` (or your target language) before `Recognize()`. | + +## Полный рабочий пример (готов к копированию) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Запустите программу, откройте `output.pdf` и попробуйте найти слова, которые точно есть в `input.png`. Если всё совпадает, вы только что освоили процесс **convert image to pdf** и научились делать **ocr image c#**. + +## Следующие шаги и смежные темы + +* **Batch processing:** Перебор папки с PNG и объединение результатов в один PDF. +* **Alternative output formats:** Aspose OCR также может выводить DOCX, TXT или searchable PDF/A‑1b. +* **Performance tuning:** Используйте `ocrEngine.RecognitionMode = RecognitionMode.Fast` для больших объёмов, где абсолютная точность не критична. +* **Other libraries:** Если бюджет ограничен, изучите Tesseract .NET — но вы потеряете встроенную поддержку PDF/A. + +--- + +### TL;DR + +Мы показали, как **create searchable pdf** из PNG с помощью Aspose OCR в C#. Шаги: + +1. Установите Aspose OCR (`dotnet add package Aspose.OCR`). +2. Загрузите PNG и выполните `ocrEngine.Recognize()` (**extract text from png**). +3. Настройте `PdfSaveOptions` для PDF/A‑2b (**convert image to pdf** & **convert png to pdf**). +4. Сохраните файл и проверьте наличие поискового слоя. + +Попробуйте, поиграйте с параметрами, и у вас скоро будет надёжный конвейер для преобразования любых отсканированных изображений в архивно‑готовый, поисковый PDF. 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/russian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/russian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..8eba19e0 --- /dev/null +++ b/ocr/russian/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,254 @@ +--- +category: general +date: 2026-01-10 +description: Извлечение текста из изображения с помощью Aspose OCR в C#. Узнайте, + как конвертировать текст отсканированного документа с пакетной обработкой и сохранять + результаты. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: ru +og_description: Извлекать текст из изображения с помощью Aspose OCR в C#. Этот учебник + показывает, как преобразовать текст отсканированного документа с использованием + пакетной обработки. +og_title: Извлечение текста из изображения в C# – Полное руководство по Aspose OCR +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Извлечение текста из изображения в C# – Полное руководство по Aspose OCR +url: /ru/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Извлечение текста из изображения – Полное руководство по Aspose OCR + +Когда‑то вам нужно было **извлечь текст из изображения**, но вы не знали, с чего начать? Вы не одиноки; многие разработчики сталкиваются с этой проблемой при работе со сканированными PDF, многостраничными TIFF или фотографиями чеков. Хорошая новость в том, что с Aspose OCR вы можете **преобразовать текст сканированного документа** всего в несколько строк кода на C#. + +В этом руководстве мы пройдем реальный сценарий: возьмём многостраничный TIFF, запустим пакетный OCR для каждой страницы и запишем один текстовый файл, содержащий содержимое всех страниц. К концу вы получите готовое консольное приложение, поймёте, почему каждый шаг важен, и узнаете, как адаптировать процесс для особых случаев, таких как защищённые паролем изображения или пользовательские языковые пакеты. + +## Требования + +- .NET 6.0 SDK или новее (код работает также с .NET Core и .NET Framework) +- Visual Studio 2022 (или любой другой редактор) +- Файл лицензии Aspose OCR (или используйте бесплатный режим оценки) +- Многостраничный файл изображения (например, `multipage.tif`), размещённый в папке, к которой вы можете обратиться + +Дополнительные пакеты NuGet не требуются, кроме `Aspose.OCR`; мы установим его в первом шаге. + +## Шаг 1 – Установить Aspose OCR и создать проект + +Для начала создайте новый консольный проект и подключите библиотеку Aspose OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro tip:** Если у вас есть файл лицензии (`Aspose.OCR.lic`), скопируйте его в корень проекта. Библиотека автоматически подхватит его во время выполнения. + +Зачем этот шаг? Установка пакета даёт доступ к `BatchProcessor`, `OcrEngine` и другим удобным классам, которые скрывают низкоуровневую работу с изображениями. Кроме того, вы получаете самые свежие OCR‑алгоритмы, которые поставляются с Aspose. + +## Шаг 2 – Загрузить многостраничное изображение с помощью BatchProcessor + +`BatchProcessor` создан именно для такого сценария: перебора каждой страницы многостраничного изображения без необходимости вручную разделять файлы. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` читает все страницы в память, предоставляя их через `batchProcessor.Pages`. Каждый объект страницы знает свой номер (`ocrPage.Number`), который мы позже используем для чётких заголовков. + +## Шаг 3 – Подготовить StringBuilder для накопления результатов + +Нужен один текстовый файл, содержащий вывод OCR всех страниц, разделённый заголовками. `StringBuilder` – самый эффективный способ конкатенировать строки в цикле. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Почему именно `StringBuilder`? Конкатенация строк с помощью `+` внутри цикла создаёт новый объект строки на каждой итерации, что ухудшает производительность, особенно при работе с большими документами. + +## Шаг 4 – Перебрать каждую страницу, выполнить OCR и добавить результаты + +Теперь основной блок руководства: проход по каждой странице, распознавание текста и сохранение его с маркером страницы. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Почему новый `OcrEngine` для каждой страницы?** Некоторые разработчики переиспользуют один движок, меняя его свойство `Image`, но это может сохранять настройки языка или предыдущие результаты, вызывая скрытые ошибки. Создание нового экземпляра гарантирует чистый старт. + +### Обработка распространённых граничных случаев + +- **Пустые страницы:** Если на странице нет распознаваемого текста, `ocrEngine.Text` будет пустой строкой. Можно вставить заполнитель, например “(Текст не обнаружен)”. +- **Выбор языка:** По умолчанию Aspose OCR использует английский. Чтобы обработать немецкий или французский, установите `ocrEngine.Language = Language.German;` перед вызовом `Recognize()`. +- **Совет по производительности:** Для огромных TIFF можно включить `ocrEngine.UseParallelProcessing = true;`, чтобы задействовать несколько ядер процессора. + +## Шаг 5 – Записать объединённый вывод в текстовый файл + +Наконец, сохраняем накопленную строку на диск. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Полученный файл `multipage_result.txt` будет выглядеть примерно так: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Теперь вы **извлекли текст из изображения** и эффективно **преобразовали текст сканированного документа** в поисковый, редактируемый формат. + +## Бонус – Визуальный обзор (альтернативный текст изображения) + +Ниже простая блок‑схема, иллюстрирующая процесс. +*Alt text:* “Диаграмма, показывающая, как извлечь текст из изображения с помощью пакетной обработки Aspose OCR в C#”. + +![Диаграмма потока OCR](placeholder-image-url.png) + +*(Если вы публикуете это руководство на статическом сайте, замените заглушку реальным SVG или PNG.)* + +## Часто задаваемые вопросы + +**Работает ли это с PDF‑файлами?** +Да, Aspose OCR может читать страницы PDF как изображения. Нужно сначала преобразовать PDF в изображения или использовать `PdfDocument` из `Aspose.PDF` и передать растровое изображение каждой страницы в `OcrEngine`. + +**Что делать, если мой TIFF защищён паролем?** +`BatchProcessor` не обрабатывает шифрование напрямую. Расшифруйте файл с помощью библиотеки, например `Aspose.Imaging`, перед передачей его в OCR‑конвейер. + +**Можно ли выводить JSON вместо обычного текста?** +Конечно. Замените логику `StringBuilder` на сериализатор JSON (например, `System.Text.Json`) и храните текст каждой страницы под ключом `pageNumber`. + +## Полный рабочий пример + +Ниже полная программа, которую можно скопировать в `Program.cs`. Включены все директивы `using`, обработка ошибок и комментарии. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Запустите программу командой: + +```bash +dotnet run +``` + +Вы увидите сообщение в консоли, подтверждающее успешное выполнение, а выходной файл будет содержать объединённые результаты OCR. + +## Заключение + +Мы продемонстрировали практический способ **извлечения текста из изображения** с помощью Aspose OCR, превращая любой многостраничный скан в обычный, поисковый текст. Используя `BatchProcessor` и чистую настройку `OcrEngine` для каждой страницы, вы надёжно **преобразуете текст сканированного документа**, сохраняя код простым и поддерживаемым. + +Экспериментируйте: пробуйте разные языки, переключайтесь на вывод JSON или интегрируйте эту логику в веб‑API, обрабатывающий загрузки «на лету». Основной шаблон остаётся тем же — загрузить, распознать, накопить и сохранить. + +Есть вопросы по OCR, лицензированию Aspose или работе с большими пакетами документов? Оставляйте комментарий ниже или изучайте официальную документацию 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/russian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..955d2080 --- /dev/null +++ b/ocr/russian/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-01-10 +description: Извлеките текст из изображения с помощью Aspose OCR на C#. Узнайте, как + загрузить изображение для OCR, распознать текст на хинди и выполнить распознавание + OCR в несколько простых шагов. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: ru +og_description: Извлеките текст из изображения с помощью Aspose OCR в C#. Следуйте + этому пошаговому руководству, чтобы загрузить изображение для OCR, распознать хинди‑текст + и выполнить распознавание OCR. +og_title: Извлечение текста из изображения с помощью Aspose OCR – Полное руководство + по C# +tags: +- Aspose OCR +- C# +- Image Processing +title: Извлечение текста из изображения с помощью Aspose OCR – полное руководство + по C# +url: /ru/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Извлечение текста из изображения с помощью Aspose OCR – Полное руководство на C# + +Когда‑нибудь вам нужно было **извлечь текст из изображения**, но вы не знали, какую библиотеку выбрать? Вы не одиноки — многие разработчики сталкиваются с этим, когда впервые берутся за OCR в .NET. Хорошая новость в том, что Aspose OCR делает весь процесс удивительно простым, даже когда вы работаете со сложными скриптами, такими как хинди. + +В этом руководстве мы пройдём всё, что нужно для **загрузки изображения для OCR**, **распознавания текста на хинди** и **запуска распознавания OCR** в C#. К концу вы получите готовое к запуску консольное приложение, которое выводит извлечённый текст прямо на экран. + +## Что вы построите + +Мы создадим небольшое консольное приложение, которое: + +1. Указывает движку OCR папку, содержащую языковые модели. +2. Отключает автоматическую загрузку — удобно для закрытых окружений. +3. Выбирает хинди в качестве целевого языка. +4. Загружает JPEG (или PNG) с хинди‑текстом. +5. Выполняет конвейер распознавания. +6. Записывает полученную строку в консоль. + +Никаких внешних сервисов, никаких облачных ключей — только чистый локальный OCR. + +## Требования + +- **.NET 6.0** или новее (код также работает на .NET Framework 4.7+). +- **Aspose.OCR for .NET** пакет NuGet установлен. + ```bash + dotnet add package Aspose.OCR + ``` +- Папка с именем `OcrResources`, содержащая модель языка хинди (`hin.traineddata`). + Вы можете скачать её со страницы загрузки Aspose OCR и поместить в `YOUR_DIRECTORY/OcrResources`. +- Файл изображения (`input.jpg`) с чётким хинди‑текстом. + Для примера представьте фото вывески магазина с надписью «स्वागत है». + +> **Pro tip:** Держите разрешение изображения выше 300 dpi; более низкое разрешение может привести к пропуску символов. + +--- + +## Шаг 1: Указать движку OCR путь к ресурсам – *извлечение текста из изображения* + +Первое, что требуется Aspose OCR, — это расположение языковых моделей. Если пропустить этот шаг, движок попытается автоматически скачать файлы — чего вы, вероятно, не захотите в защищённой сети. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Почему это важно:* Устанавливая `ResourcesPath`, вы гарантируете, что движок загрузит нужные обученные данные локально, что ускоряет первый запуск и устраняет неожиданный сетевой трафик. + +--- + +## Шаг 2: Отключить автоматическую загрузку ресурсов – *загрузка изображения для OCR* + +Во многих корпоративных средах исходящий доступ в интернет заблокирован. Aspose OCR поддерживает флаг, который останавливает попытки загрузки недостающих файлов «на лету». + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Если забыть эту строку и модель хинди отсутствует, движок бросит исключение с сообщением вроде «Unable to download required resource». Установка флага в `false` даёт чёткую детерминированную ошибку, которую вы можете обработать самостоятельно. + +--- + +## Шаг 3: Выбрать язык – *распознавание текста на хинди* + +Aspose OCR поддерживает десятки языков, но вы должны указать, какой использовать. Хинди определяется как `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Что если нужны несколько языков?* Вы можете установить `Language = OcrLanguage.AutoDetect`, чтобы движок угадывал, но автоопределение медленнее и иногда ошибается при смешанных скриптах. Для чистого хинди явный выбор — самый надёжный вариант. + +--- + +## Шаг 4: Загрузить изображение – *загрузка изображения для OCR* + +Теперь мы передаём движку картинку, которую хотим прочитать. Aspose предлагает удобный помощник `ImageStream.FromFile`, который скрывает зависимости от `System.Drawing`. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Если путь к файлу неверен, Aspose бросит `FileNotFoundException`. Быстрая проверка `File.Exists` перед этой строкой может сэкономить время отладки. + +--- + +## Шаг 5: Запустить движок OCR – *запуск распознавания OCR* + +После полной настройки мы наконец запускаем процесс распознавания. Этот вызов синхронный и блокирует выполнение, пока текст не будет извлечён. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +За кулисами Aspose выполняет несколько этапов: предобработка (выравнивание, удаление шума), сегментация, классификация символов и, наконец, пост‑обработка, специфичная для языка. Основная работа происходит внутри этого единственного метода. + +--- + +## Шаг 6: Вывести извлечённый текст – *извлечение текста из изображения* + +Результат хранится в свойстве `Text` движка. Мы просто выводим его в консоль, но вы также можете сохранить в базе данных, отправить через API или передать в другой NLP‑конвейер. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Ожидаемый вывод** (при условии, что изображение содержит «स्वागत है»): + +``` +=== OCR RESULT === +स्वागत है +``` + +Если видите «мусорные» символы, проверьте, что модель хинди правильно размещена и изображение не слишком сжато. + +--- + +## Полный рабочий пример + +Ниже представлена полная программа, которую можно скопировать в новый консольный проект (`dotnet new console`). Замените `YOUR_DIRECTORY` реальным путём на вашей машине. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** Если планируете обрабатывать множество изображений в цикле, создайте один экземпляр `OcrEngine` и переиспользуйте его — это уменьшит накладные расходы на инициализацию. + +--- + +## Обработка типичных проблем + +| Проблема | Почему происходит | Быстрое решение | +|----------|-------------------|-----------------| +| **Пустой вывод** | Неправильная модель языка или низкокачественное изображение. | Проверьте `ResourcesPath`, увеличьте DPI изображения или попробуйте `ocrEngine.Image = ImageStream.FromFile(..., true)` для включения автоулучшения. | +| **Исключение: Ресурс не найден** | Отсутствует файл `.traineddata` для хинди. | Скачайте модель хинди с сайта Aspose, поместите её в `OcrResources` и убедитесь, что имя файла точно `hin.traineddata`. | +| **Неправильные символы** | Несоответствие кодировок при выводе в консоль. | Установите кодировку вывода консоли: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Задержка производительности** | Обрабатываются большие изображения без масштабирования. | Предварительно уменьшите изображение до максимальной ширины/высоты 2000 px перед передачей в OCR. | + +--- + +## Следующие шаги и связанные темы + +- **Пакетная обработка:** Оберните код в цикл `foreach`, чтобы обрабатывать папку с изображениями. +- **Другие языки:** Замените `OcrLanguage.Hindi` на `OcrLanguage.English`, `OcrLanguage.Arabic` и т.д. +- **Форматы вывода:** Вместо `Console.WriteLine` запишите в текстовый файл (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Интеграция с ASP.NET Core:** Откройте API‑endpoint, принимающий загрузку изображения и возвращающий извлечённый текст в формате JSON. + +Все эти расширения следуют той же схеме — настройте движок, загрузите изображение, выполните распознавание и используйте результат. + +--- + +## Заключение + +Мы только что показали, как **извлечь текст из изображения** с помощью Aspose OCR в C#. Руководство охватывало каждый шаг, необходимый для **загрузки изображения для OCR**, **распознавания текста на хинди** и **запуска распознавания OCR** — всё в автономном консольном приложении. + +Попробуйте с вашими собственными фотографиями, экспериментируйте с разными языками и адаптируйте фрагмент к веб‑сервисам или фоновым задачам. Основная идея остаётся той же: задать ресурсы, выбрать язык, передать изображение и прочитать свойство `Text`. + +Если возникнут трудности, обратитесь к таблице устранения неполадок выше или оставьте комментарий. Приятного кодинга, и пусть результаты 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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/russian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..ee38c185 --- /dev/null +++ b/ocr/russian/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Как выполнить OCR на изображении с помощью Aspose OCR в C#. Узнайте, + как извлекать текст из изображения, выполнять OCR на изображении и загружать изображение + для OCR с ускорением на GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: ru +og_description: Как выполнить OCR на изображении с помощью Aspose OCR. Этот учебник + показывает, как извлечь текст из изображения, выполнить OCR на изображении и эффективно + загрузить изображение для OCR. +og_title: Как запустить OCR в C# – Полное пошаговое руководство +tags: +- OCR +- C# +- Aspose +title: Как выполнить OCR в C# – полное руководство с Aspose OCR +url: /ru/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как выполнить OCR в C# – Полное руководство с Aspose OCR + +Когда‑нибудь задавались вопросом **как выполнить OCR** на фотографии и извлечь текст, не теряя волосы? Вы не одиноки. Будь то оцифровка счетов, сканирование чеков или просто создание PDF с возможностью поиска, возможность извлекать текст из изображения — ежедневная потребность многих разработчиков. + +В этом руководстве мы пройдем практический, сквозной пример, показывающий **как выполнить OCR на изображении** с использованием библиотеки Aspose OCR, включая ускорение GPU для скорости. К концу вы точно будете знать, как загрузить изображение для OCR, настроить использование памяти и получить чистый текстовый результат — всё за несколько минут кода. + +## Что вы узнаете + +- Как инициализировать движок Aspose OCR в C# +- Как **загрузить изображение для OCR** с диска или из потока +- Как включить ускорение GPU и ограничить память GPU +- Как **извлечь текст из изображения** и проверить вывод +- Распространённые подводные камни (отсутствие модуля GPU, ограничения памяти) и быстрые решения + +Предыдущий опыт работы с Aspose OCR не требуется; нужен лишь рабочий .NET‑окружение и пример изображения. + +--- + +## Как выполнить OCR на изображении с помощью Aspose OCR + +Первое, что вам понадобится, — это готовый, работающий фрагмент кода, который выполнит всю задачу. Ниже полная программа, которую можно скопировать, вставить и сразу запустить. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Ожидаемый вывод** (при условии, что образец изображения содержит фразу “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Pro tip:** Если вы не видите никакого текста, дважды проверьте, что модуль GPU установлен и путь к изображению указан правильно. Метод `ImageStream.FromFile` бросает понятное исключение, если файл не найден. + +--- + +## Извлечение текста из изображения с использованием ускорения GPU + +Зачем вообще нужен GPU? OCR только на CPU работает, но может быть ужасно медленным на больших или высокоразрешённых изображениях. Включение ускорения GPU (шаг 2 выше) передаёт тяжёлую работу вашей видеокарте, которая может обрабатывать тысячи пикселей в секунду. + +### Когда использовать GPU + +- **Пакетная обработка** — сканирование десятков счетов за один раз. +- **Сканы высокого разрешения** — всё, что выше 300 dpi. +- **Приложения в реальном времени** — например, мобильный сканер, требующий мгновенной обратной связи. + +Если в вашей среде нет совместимого GPU, просто установите `EnableGpuAcceleration = false;`, и движок автоматически переключится в режим CPU. + +--- + +## Выполнение OCR на изображении – правильная загрузка изображения + +Загрузка изображения — это шаг **загрузить изображение для OCR**, который часто ставит людей в тупик. Aspose OCR ожидает `ImageStream`, который можно создать из файла, из потока памяти или даже из URL. Вот несколько вариантов: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Пограничный случай:** Некоторые изображения содержат альфа‑канал (прозрачность), который сбивает с толку OCR‑движок. Удалить альфа‑канал просто: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Теперь вы покрыли самые распространённые способы **загрузить изображение для OCR**, гарантируя, что движок получает чистый поддерживаемый формат каждый раз. + +--- + +## Советы по эффективной загрузке изображения для OCR + +1. **Измените размер больших изображений** — OCR не нуждается в 4 K‑фото; уменьшение до ~1500 px по ширине ускорит процесс без потери точности. +2. **Переведите в градации серого** — уменьшает шум и может улучшить распознавание на сканах с низким контрастом. +3. **Предобработка с исправлением наклона** — если изображение наклонено, встроенный в Aspose OCR исправитель наклона можно включить через `ocrEngine.Config.EnableDeskew = true;`. + +Эти приёмы особенно полезны, когда вы **извлекаете текст из изображения** массово. + +--- + +## Распространённые проблемы и способы их решения + +| Симптом | Вероятная причина | Решение | +|---------|-------------------|---------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU‑модуль не установлен | Установите пакет Aspose OCR GPU или отключите GPU (`EnableGpuAcceleration = false`). | +| Пустой вывод | Неправильный путь к изображению или неподдерживаемый формат | Проверьте путь в `ImageStream.FromFile`; попробуйте загрузить из байтов, чтобы убедиться, что файл читается правильно. | +| Ошибка нехватки памяти | Лимит памяти GPU слишком низок для большой партии | Увеличьте `GpuMemoryLimit` (например, 2048) или обрабатывайте изображения небольшими порциями. | +| Искажённые символы | Изображение содержит сильный шум или низкий контраст | Предобработка: бинаризация, удаление шумов или увеличение DPI перед OCR. | + +--- + +## Полный рабочий пример – собрать всё вместе + +Ниже компактное консольное приложение, включающее лучшие практики, о которых мы говорили: ускорение GPU, ограничение памяти, предобработка изображения и обработка ошибок. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Запуск этой программы выводит чистый текст, извлечённый из вашего изображения, демонстрируя надёжный способ **извлечения текста из изображения**, даже если исходник далёк от идеала. + +--- + +## Заключение + +Мы рассмотрели **как выполнить OCR** на изображении с помощью Aspose OCR, от инициализации движка до загрузки изображения, включения ускорения GPU и обработки крайних случаев. Теперь у вас есть надёжная, готовая к использованию ссылка, которую можно скопировать‑вставить в любой .NET‑проект и сразу **извлекать текст из изображения**. + +Что дальше? Попробуйте обрабатывать страницы PDF, экспериментировать с разными языками (установите `ocrEngine.Config.Language = "spa"` для испанского) или интегрировать этот поток в веб‑API, обрабатывающий загрузки «на лету». Возможности безграничны, а с инструментами, которые мы обсудили, вы полностью подготовлены к любой задаче 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/russian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/russian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..5f09aeac --- /dev/null +++ b/ocr/russian/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-01-10 +description: Как быстро запустить OCR и извлечь арабский текст из изображения. Узнайте, + как преобразовать изображение в текст, прочитать текст из PNG и увидеть, как извлекать + текст с помощью Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: ru +og_description: Как выполнить OCR в C# и извлечь арабский текст из PNG‑изображения. + Это руководство покажет, как пошагово преобразовать изображение в текст и прочитать + текст из PNG. +og_title: Как запустить OCR в C# – извлечь арабский текст из PNG +tags: +- OCR +- C# +- Aspose +title: Как выполнить OCR в C# – извлечь арабский текст из PNG +url: /ru/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как запустить OCR в C# – Извлечение арабского текста из PNG + +Вы когда‑нибудь задавались вопросом, **как запустить OCR** на изображении, содержащем арабские символы? Вы не одиноки. Многие разработчики сталкиваются с проблемой, когда им нужно **извлечь арабский текст** из PNG, но они не знают, какая библиотека справится со скриптами справа налево без головной боли. + +В этом руководстве мы пройдем всё, что вам нужно знать, чтобы **преобразовать изображение в текст**, **прочитать текст из PNG** и, наконец, **извлечь текст** с помощью Aspose.OCR в чистом консольном приложении C#. К концу вы получите готовую к запуску программу, которая выводит арабскую строку прямо в ваш терминал. + +## Что вы узнаете + +- Установить и добавить ссылку на пакет NuGet Aspose.OCR. +- Настроить OCR‑движок для поддержки арабского языка. +- Загрузить PNG‑изображение и запустить процесс распознавания. +- Получить и отобразить извлечённый текст. +- Настроить параметры для повышения точности и обработки распространённых проблем. + +Предыдущий опыт работы с OCR не требуется, достаточно базовых знаний C# и среды разработки .NET (Visual Studio, Rider или `dotnet` CLI подойдут). + +--- + +## Как запустить OCR – Настройка Aspose OCR + +### Шаг 1: Добавьте пакет NuGet Aspose.OCR + +Первое, что нам нужно, — сама библиотека OCR. Aspose.OCR — коммерческий продукт, но он предлагает бесплатную пробную версию, которая прекрасно подходит для обучения. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +В качестве альтернативы откройте **NuGet Package Manager** в Visual Studio, найдите **Aspose.OCR** и нажмите **Install**. + +> **Pro tip:** Если вы планируете использовать библиотеку в CI‑конвейере, добавьте флаг `-v`, чтобы зафиксировать версию, например, `dotnet add package Aspose.OCR -v 23.10`. + +### Шаг 2: Создайте новый консольный проект (если у вас его ещё нет) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Теперь у вас есть свежий файл `Program.cs`, готовый для нашего кода. + +--- + +## Извлечение арабского текста – написание кода OCR + +Ниже представлен полный готовый к запуску пример программы. Сохраните его как `Program.cs` (или замените автоматически сгенерированный файл). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Почему каждая строка важна + +- **`OcrEngine`**: Центральный класс, который координирует загрузку изображения, выбор языка и распознавание. +- **`Language = OcrLanguage.Arabic`**: Арабский использует скрипт справа налево и уникальные глифы; установка языка сообщает движку использовать соответствующие модели символов. +- **`ImageStream.FromFile`**: Обрабатывает PNG, JPEG, BMP и многие другие форматы. Если вам понадобится читать из `MemoryStream` (например, загруженного файла), замените этот вызов соответствующим образом. +- **`Recognize()`**: Выполняет основную работу — анализ пикселей, сегментацию и классификацию символов. +- **`ocrEngine.Text`**: Финальная строка Unicode, готовая для дальнейшей обработки, хранения или отображения. + +### Ожидаемый вывод + +Если `arabic_sample.png` содержит фразу “مرحبا بالعالم” (Hello World), консоль выведет: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Если вывод выглядит искажённым, проверьте, что изображение чёткое, язык установлен на Arabic, и версия OCR‑движка соответствует документации. + +--- + +## Преобразование изображения в текст — настройка точности + +Хотя настройки по умолчанию работают для большинства чистых сканов, реальные изображения часто требуют дополнительной настройки. + +| Параметр | Что делает | Когда использовать | +|----------|------------|---------------------| +| `ocrEngine.Config.Preprocess = true` | Включает автоматическую бинаризацию и удаление шума. | Сканированные документы с тенями. | +| `ocrEngine.Config.Deskew = true` | Поворачивает изображение для исправления небольшого наклона. | Фотографии, сделанные под углом. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Обрабатывает всё изображение как один блок текста. | Простые подписи или однострочные метки. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Ограничивает распознавание только арабскими символами. | Снижает количество ложных срабатываний на страницах со смешанными языками. | + +Эти строки можно добавить сразу после создания движка: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Чтение текста из PNG — работа с различными источниками изображений + +Иногда PNG хранится в базе данных или приходит из веб‑запроса. Вот быстрый вариант, который читает из `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Остальная часть процесса остаётся идентичной, что означает, что **как извлечь текст** остаётся одинаковым независимо от источника. + +--- + +## Как извлечь текст — расширенные опции и крайние случаи + +### 1. Многостраничные PDF или TIFF + +Если вам нужно выполнить OCR многостраничного документа, пройдитесь по каждой странице в цикле: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Note:** Для этого фрагмента кода вам понадобится пакет `Aspose.PDF`. + +### 2. Автоматическое определение языка + +Aspose.OCR также поддерживает автоопределение, но оно медленнее. Если вы не уверены, содержит ли изображение арабский или другой скрипт, включите его: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +### 3. Советы по производительности + +- **Повторно используйте объект `OcrEngine`** для нескольких изображений; создание нового экземпляра каждый раз добавляет накладные расходы. +- **Запускайте параллельно** только если у вас есть отдельные экземпляры движка на каждый поток — совместное использование одного экземпляра приводит к состояниям гонки. + +--- + +## Заключение + +Мы рассмотрели **как запустить OCR** в C# от начала до конца, показали, как **извлечь арабский текст**, **преобразовать изображение в текст**, **прочитать текст из PNG**, и ответили на вопрос **как извлечь текст** в различных сценариях. Пример кода полностью готов, автономен и готов к вставке в любой .NET консольный проект. + +Следующие шаги? Попробуйте заменить `OcrLanguage.Arabic` на корейский или сербский кириллический, чтобы увидеть многоязычные возможности библиотеки. Поэкспериментируйте с флагами предобработки, чтобы повысить точность на шумных сканах, или интегрируйте OCR‑процедуру в веб‑API, чтобы пользователи могли загружать изображения и получать мгновенный результат текста. + +Счастливого кодинга, и пусть результаты 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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/russian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..ea99b580 --- /dev/null +++ b/ocr/russian/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,294 @@ +--- +category: general +date: 2026-01-10 +description: Узнайте, как распознавать текст с изображения, извлекать координаты текста + и преобразовывать чек в JSON с помощью Aspose OCR в C#. Пошаговое руководство. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: ru +og_description: Распознавать текст с изображения в C# с помощью Aspose OCR. Это руководство + показывает, как извлекать текст, получать координаты и преобразовывать чек в JSON. +og_title: распознавание текста с изображения – Полный учебник по OCR на C# +tags: +- OCR +- C# +- Aspose +title: Распознавание текста с изображения в C# – Полное руководство по OCR и JSON +url: /ru/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# распознавание текста с изображения – Полный учебник по OCR на C# + +Когда‑нибудь вам нужно было распознать текст с изображения, но вы не знали, какую библиотеку выбрать? Вы не одиноки. Во многих реальных приложениях — трекерах расходов, сканерах чеков или архиваторах документов — надёжное извлечение текста является первой преградой. + +В этом учебнике мы пройдемся по **как извлечь текст**, получим ограничивающие рамки и, наконец, **конвертировать чек в JSON** с использованием Aspose.OCR для .NET. К концу вы получите автономный проект C#, который берёт фото чека и выдаёт аккуратный JSON‑файл с оценками уверенности и координатами. + +## Что понадобится + +- **.NET 6.0 SDK** (или более поздняя версия). Старые фреймворки тоже работают, но .NET 6 — оптимальный вариант для современных библиотек. +- **Visual Studio 2022** или VS Code с расширением C#. +- **Aspose.OCR for .NET** пакет NuGet (`Aspose.OCR` и `Aspose.OCR.Output`). Вы можете установить его через консоль диспетчера пакетов: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Пример изображения чека (например, `receipt.jpg`), помещённый в папку, которую вы укажете позже. + +И всё—без дополнительных SDK, без нативных бинарных файлов, только чистый управляемый код. + +## Шаг 1: Создать новый консольный проект + +Для начала создайте консольное приложение. Это самый быстрый способ протестировать OCR без нагрузки UI. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Совет:** Держите папку проекта в порядке; создайте подпапку `Resources` и поместите туда `receipt.jpg`. Это упрощает работу с путями. + +## Шаг 2: Загрузить изображение чека + +Теперь мы действительно **распознаём текст с изображения**. Первый шаг — указать OCR‑движку файл. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Зачем мы оборачиваем загрузку простой проверкой существования? Потому что в продакшене вы часто имеете дело с пользовательскими загрузками, которые могут отсутствовать или быть повреждены. Раннее обнаружение проблемы спасает от непонятных исключений позже. + +## Шаг 3: Выполнить OCR – **распознавание текста с изображения** + +Имея изображение в памяти, мы просим Aspose **распознать текст с изображения**. Эта операция синхронна и возвращает богатый набор результатов. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +За кулисами Aspose запускает нейронную сеть, обученную на миллионах символов. Движок заполняет `ocrEngine.Text`, `ocrEngine.RecognitionResult` и коллекцию объектов `OcrRegion`, содержащих координаты. Именно это нам нужно для следующего шага. + +## Шаг 4: **Как извлечь текст** – Получение сырой строки + +Если вам нужен только простой текст (например, для быстрого поиска), вы можете взять его напрямую из движка: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Вы заметите разрывы строк там, где OCR обнаружил границы абзацев. Во многих сценариях сканирования чеков сырой текст достаточно, чтобы извлечь суммы, даты или названия продавцов с помощью простых регулярных выражений. + +## Шаг 5: **извлечение координат текста** – Ограничивающие рамки для каждого слова + +Часто необходимо знать *где* на изображении находится конкретный фрагмент текста — например, чтобы подсветить общую сумму в интерфейсе. Aspose предоставляет это через объекты `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Обратите внимание, что мы перебираем **извлечение координат текста** для каждого распознанного сегмента. Координаты относительны оригинальному изображению, поэтому их можно накладывать на графический холст или элемент HTML ``. + +## Шаг 6: **конвертировать чек в JSON** – Сохранение детальных результатов + +Теперь наступает часть, связывающая всё вместе: нам нужна машинно‑читаемая структура, включающая текст, оценки уверенности и ограничивающие рамки. Aspose поставляется с `JsonSaveOptions`, что упрощает задачу. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Получившийся файл выглядит примерно так (сокращён для краткости): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Теперь у вас есть артефакт **конвертировать чек в JSON**, который можно передать в последующие сервисы — например, API отчетов расходов, аналитические конвейеры или даже простой UI, рисующий прямоугольники вокруг каждого слова. + +## Полный рабочий пример + +Собрав все части вместе, представляем полный `Program.cs`, который вы можете скопировать‑вставить в свой проект: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Запустите программу (`dotnet run`) и наблюдайте вывод в консоли. Откройте `Resources/receipt.json`, чтобы проверить структуру. + +## Часто задаваемые вопросы и особые случаи + +- **Что если изображение размыто?** + Aspose OCR работает лучше всего при 300 dpi и выше. Если получаете низкие оценки уверенности, рассмотрите применение фильтра резкости перед передачей изображения в движок. + +- **Можно ли распознавать несколько языков?** + Да. Установите `ocrEngine.Language = Language.English | Language.Spanish;` перед вызовом `Recognize()`. + +- **Как ограничить вывод только числами (например, суммами)?** + После получения простого текста выполните регулярное выражение вроде `\d+\.\d{2}` на `ocrEngine.Text`. Поскольку у нас уже есть координаты, вы можете сопоставить найденную строку с её регионом для визуального выделения. + +- **Можно ли настроить формат JSON?** + Класс `JsonSaveOptions` предоставляет несколько флагов. Если нужен полностью кастомный схемат, вы можете пройтись по `ocrEngine.RecognitionResult.Regions` и сериализовать объекты самостоятельно с помощью `System.Text.Json`. + +## Заключение + +Мы только что продемонстрировали, как **распознавать текст с изображения** в C# с помощью Aspose.OCR, **как извлекать текст**, получать **координаты извлечённого текста**, и, наконец, **конвертировать чек в JSON**. Весь процесс реализован в одном простом в запуске консольном приложении, что делает его идеальным для прототипов или в качестве строительного блока в более крупных системах. + +Следующие шаги? Попробуйте передать JSON во фронтенд, который рисует ограничивающие рамки, или подключить вывод к сервису отчётов расходов. Вы также можете поэкспериментировать с различными форматами изображений (PNG, TIFF) или пакетно обрабатывать папку с чеками. + +Есть ещё вопросы по OCR, Aspose или работе с JSON? Оставьте комментарий ниже, и удачной разработки! + +![Пример изображения чека для распознавания текста с изображения](receipt.jpg "Пример изображения чека") + +{{< /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/net/ocr-configuration/_index.md b/ocr/spanish/net/ocr-configuration/_index.md index 1c0ae924..ca6ed943 100644 --- a/ocr/spanish/net/ocr-configuration/_index.md +++ b/ocr/spanish/net/ocr-configuration/_index.md @@ -39,9 +39,12 @@ Desbloquee el poder del reconocimiento de imágenes OCR en .NET con Aspose.OCR. Desbloquee potentes capacidades de OCR con Aspose.OCR para .NET. Extraiga texto de imágenes sin problemas. ### [OCROperación con lista en reconocimiento de imágenes OCR](./ocr-operation-with-list/) Libere el potencial de Aspose.OCR para .NET. Realice sin esfuerzo el reconocimiento de imágenes OCR con listas. Aumente la productividad y la extracción de datos en sus aplicaciones. +### [Leer recurso incrustado en .NET – Guía completa para configurar la licencia Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Aprenda a leer recursos incrustados en .NET y configurar correctamente la licencia de Aspose en sus aplicaciones. + {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/spanish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..2765d5bf --- /dev/null +++ b/ocr/spanish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-01-10 +description: Leer recurso incrustado y establecer la licencia de Aspose en C#. Aprenda + a usar GetManifestResourceStream, incrustar un archivo de licencia y obtener el + ensamblado en ejecución de .NET en un solo tutorial. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: es +og_description: Leer recurso incrustado en .NET y establecer la licencia de Aspose + rápidamente. Guía paso a paso que cubre GetManifestResourceStream, incrustar la + licencia y usar el ensamblado en ejecución. +og_title: Leer recurso incrustado – Establecer licencia de Aspose en .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Leer recurso incrustado en .NET – Guía completa para establecer la licencia + de Aspose +url: /es/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Leer recurso incrustado – Guía completa para establecer la licencia de Aspose + +¿Alguna vez necesitaste **leer un recurso incrustado** en tiempo de ejecución y te preguntaste cómo licenciar tu biblioteca Aspose OCR sin codificar rutas de forma rígida? No eres el único. En muchas aplicaciones corporativas el archivo de licencia vive dentro del ensamblado, por lo que no tienes que distribuir archivos adicionales ni preocuparte por permisos faltantes. Este tutorial te muestra exactamente cómo leer un recurso incrustado y establecer la licencia de Aspose usando el método .NET `GetManifestResourceStream`. + +Recorreremos todo lo que necesitas: incrustar el archivo `.lic`, extraerlo con `GetExecutingAssembly` y, finalmente, aplicarlo a la clase `License` de Aspose OCR. Al final tendrás una solución autónoma que funciona en cualquier proyecto .NET—sin archivos externos requeridos. + +## Lo que aprenderás + +- **Cómo incrustar un archivo de licencia** en un proyecto .NET para que forme parte del DLL compilado. +- La forma correcta de **usar GetManifestResourceStream** para leer ese recurso incrustado. +- Cómo **establecer la licencia de Aspose** programáticamente sin tocar el sistema de archivos. +- Consejos para manejar problemas comunes como nombres de recursos mal escritos o acciones de compilación faltantes. +- Un ejemplo de código completo y ejecutable que puedes incorporar en tu propia solución. + +### Requisitos previos + +- .NET 6.0 o posterior (el código también funciona en .NET Framework 4.x, solo ajusta el archivo de proyecto en consecuencia). +- Paquete NuGet Aspose.OCR instalado (`dotnet add package Aspose.OCR`). +- Familiaridad básica con C# y Visual Studio (o tu IDE favorito). + +Si ya tienes esos elementos listos, genial—¡vamos a sumergirnos! + +## Paso 1: Incrustar el archivo de licencia de Aspose en tu ensamblado + +Lo primero que necesitas es el archivo de licencia real (`Aspose.OCR.lic`). En lugar de copiarlo junto a tu ejecutable, lo incrustarás como un **recurso**. + +1. Agrega el archivo `.lic` a tu proyecto (por ejemplo, crea una carpeta `Resources` y coloca el archivo allí). +2. En las propiedades del archivo, establece **Build Action** a `Embedded Resource`. + *Consejo profesional:* mantén la estructura de carpetas simple; el nombre de recurso totalmente calificado será `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +¿Por qué incrustar? Porque el ensamblado ahora lleva la licencia dentro de sí mismo, eliminando el riesgo de que falte el archivo en un servidor de producción. + +## Paso 2: Recuperar el recurso incrustado usando GetExecutingAssembly + +Ahora que la licencia vive dentro del DLL, necesitas una forma de **leer un recurso incrustado** en tiempo de ejecución. La clase .NET `Assembly` te brinda exactamente eso. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +El método `GetExecutingAssembly` devuelve el ensamblado que se está ejecutando actualmente—perfecto para localizar recursos que viven junto a tu código. + +## Paso 3: Abrir el flujo de la licencia con GetManifestResourceStream + +Con la referencia al ensamblado en mano, puedes llamar a `GetManifestResourceStream`. Este método devuelve un `Stream` que puedes pasar directamente a Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Observa que usamos una instrucción `using` **condicional nula** (`using Stream?`) para asegurar que el flujo se libere automáticamente. Si el nombre es incorrecto, lanzamos una excepción clara—esto te protege de fallos silenciosos más adelante. + +## Paso 4: Aplicar la licencia a Aspose OCR + +La clase `License` de Aspose espera un `Stream`. Ya tenemos uno, así que el paso final es sencillo. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +¡Eso es todo! El motor Aspose OCR ahora está completamente licenciado y listo para procesar imágenes sin la marca de agua de prueba. + +## Ejemplo completo y funcional + +A continuación hay un programa completo, listo para copiar y pegar, que demuestra todo el proceso. Incluye las directivas `using` necesarias, manejo de errores y una llamada OCR simple para demostrar que la licencia está activa. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Salida esperada + +Cuando ejecutes el programa en una máquina con una licencia válida incrustada, deberías ver: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Si no se puede encontrar el flujo de la licencia, la consola informará el nombre del recurso faltante, guiándote a verificar nuevamente la **Build Action** y el espacio de nombres. + +## Problemas comunes y cómo evitarlos + +| Problema | Por qué ocurre | Solución | +|----------|----------------|----------| +| **Desajuste del nombre del recurso** | .NET construye el nombre del recurso a partir del espacio de nombres predeterminado + ruta de la carpeta. | Usa `Assembly.GetManifestResourceNames()` para listar los nombres disponibles y verificar la cadena exacta. | +| **Archivo de licencia no configurado como Embedded Resource** | La acción de compilación predeterminada es `Content`. | Cambia a `Embedded Resource` en las propiedades del archivo. | +| **Ejecutándose desde un ensamblado diferente** | Si llamas al código desde una biblioteca de clases, `GetExecutingAssembly()` podría devolver la biblioteca en lugar del exe principal. | Usa `Assembly.GetEntryAssembly()` o pasa explícitamente el ensamblado correcto. | +| **Flujo liberado antes de usar** | Uso accidental de un bloque `using` que cierra el flujo demasiado pronto. | Mantén el `using` alrededor de la llamada a `SetLicense`, como se muestra arriba. | +| **Desajuste de versión de Aspose.OCR** | Las versiones más recientes pueden requerir un formato de licencia diferente. | Siempre descarga la última licencia de tu cuenta Aspose y vuelve a incrustarla. | + +## Usar la misma técnica para otros archivos incrustados + +El patrón—**leer recurso incrustado**, luego **usar GetManifestResourceStream**—funciona para cualquier tipo de archivo: configuraciones JSON, imágenes, incluso DLL nativas. Solo ajusta el `resourceName` y la forma en que consumes el flujo. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Visión general visual + +![Diagrama que ilustra cómo leer un recurso incrustado y establecer la licencia de Aspose](read-embedded-resource-diagram.png) + +*Texto alternativo:* leer recurso incrustado – diagrama que muestra la incrustación, la recuperación con GetManifestResourceStream y la aplicación de la licencia de Aspose. + +## Recapitulación + +Hemos cubierto cómo **leer un recurso incrustado** en un ensamblado .NET, los pasos exactos para **usar GetManifestResourceStream**, y la forma limpia de **establecer la licencia de Aspose** sin exponer archivos en el disco. Al incrustar la licencia, eliminas problemas de despliegue y mantienes tu aplicación portátil. + +## ¿Qué sigue? + +- **Automatizar actualizaciones de licencia:** escribe un pequeño script en tiempo de compilación que reemplace el archivo `.lic` incrustado cuando renueves tu suscripción a Aspose. +- **Asegurar el recurso:** considera encriptar la licencia antes de incrustarla y desencriptarla en tiempo de ejecución para mayor protección. +- **Explorar otros productos Aspose:** el mismo enfoque funciona para Aspose.Words, Aspose.PDF, etc., cada uno con su propia clase `License`. + +Siéntete libre de experimentar—quizás incrustes múltiples licencias para diferentes módulos, o cambies a un nombre de recurso guiado por configuración. El cielo es el límite. + +*¡Feliz codificación! Si encuentras algún problema, deja un comentario abajo o revisa los foros de Aspose para más ejemplos.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/spanish/net/skew-angle-calculation/_index.md index 8e403633..afa595ab 100644 --- a/ocr/spanish/net/skew-angle-calculation/_index.md +++ b/ocr/spanish/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ Explore Aspose.OCR para .NET, una potente solución de OCR para un reconocimient Libere el poder de Aspose.OCR para .NET, una solución sólida para el reconocimiento de imágenes. Aprenda a calcular los ángulos de inclinación sin esfuerzo. ### [Calcule el ángulo de inclinación a partir de URI en el reconocimiento de imágenes OCR](./calculate-skew-angle-from-uri/) Explore Aspose.OCR para .NET para calcular sin esfuerzo ángulos de inclinación en el reconocimiento de imágenes OCR. Mejore sus proyectos con precisión y eficiencia. +### [Cómo corregir la inclinación de una imagen en C# – Guía completa de pre‑procesamiento OCR](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Aprenda a deskew imágenes en C# como paso previo esencial para OCR, mejorando la precisión del reconocimiento. {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/spanish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..b42b231f --- /dev/null +++ b/ocr/spanish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,266 @@ +--- +category: general +date: 2026-01-10 +description: Cómo corregir la inclinación de una imagen y mejorar los resultados de + OCR con Aspose.OCR. Aprende a preprocesar la imagen para OCR, eliminar el ruido + del escaneo y reconocer texto del escaneo. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: es +og_description: Cómo enderezar la imagen y mejorar la precisión del OCR. Esta guía + muestra cómo preprocesar la imagen para OCR, eliminar el ruido del escaneo y reconocer + el texto del escaneo usando Aspose.OCR. +og_title: Cómo desinclinar una imagen en C# – Guía completa de preprocesamiento OCR +tags: +- OCR +- C# +- Image Processing +title: Cómo corregir la inclinación de una imagen en C# – Guía completa de preprocesamiento + OCR +url: /es/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo enderezar una imagen en C# – Guía completa de pre‑procesamiento OCR + +¿Alguna vez te has preguntado **cómo enderezar una imagen** antes de enviarla a un motor OCR? No eres el único. Los documentos escaneados a menudo están torcidos, ruidosos o con bajo contraste, y eso complica cualquier intento de reconocimiento de texto. + +En este tutorial recorreremos un ejemplo completo y ejecutable que **preprocesa la imagen para OCR**, elimina el ruido del escaneo y, finalmente, **reconoce texto del escaneo** usando la biblioteca Aspose.OCR. Al final tendrás una visión clara de **cómo usar OCR** en C# manteniendo el código breve y sencillo. + +> **Consejo profesional:** Incluso una pequeña rotación (5‑10°) puede reducir la precisión del OCR en un 30 % o más. Enderezar la imagen es el primer paso que nunca debes omitir. + +--- + +## Lo que necesitarás + +- **.NET 6+** (el código funciona también en .NET Framework, pero .NET 6 es la LTS actual) +- **Aspose.OCR para .NET** – puedes obtenerlo desde NuGet (`Install-Package Aspose.OCR`) +- Un archivo de muestra TIFF/PNG/JPEG que esté rotado o ruidoso (usaremos `noisy_rotated.tif` en el ejemplo) +- Cualquier IDE que prefieras – Visual Studio, Rider o VS Code sirven + +Eso es todo. Sin bibliotecas adicionales, sin servicios externos. + +--- + +## Paso 1 – Cargar la imagen fuente (por qué importa) + +Antes de poder **enderezar la imagen**, necesitamos leerla en un `ImageStream` de Aspose. Este objeto abstrae la entrada/salida de archivos y le brinda al motor OCR una interfaz consistente. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*¿Por qué cargar primero?* Porque todos los filtros posteriores operan sobre una imagen en memoria. Si el archivo no se puede leer, toda la cadena se colapsa. + +--- + +## Paso 2 – Construir una canalización de pre‑procesamiento (Enderezar + Desruido + Contraste) + +Un flujo de trabajo OCR robusto suele encadenar varios filtros. Aquí es donde **preprocesamos la imagen para OCR** y, lo que es más importante, **cómo enderezar la imagen** automáticamente. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**¿Por qué estos tres?** +- **DeskewFilter** resuelve automáticamente el problema de “cómo enderezar la imagen”; no necesitas adivinar el ángulo. +- **DenoiseFilter** aborda el requisito de “eliminar ruido del escaneo”, que de otro modo crea caracteres fantasma. +- **ContrastBoostFilter** ayuda al motor OCR a distinguir texto oscuro de un fondo claro, un problema clásico cuando *preprocesas la imagen para OCR*. + +--- + +## Paso 3 – Aplicar la canalización (Viendo la transformación) + +Ahora ejecutamos realmente los filtros. La `processedImage` devuelta es lo que alimentaremos al motor OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Si abres `cleaned_output.tif`, deberías notar que el texto está recto, menos granuloso y con mayor contraste. Esta verificación visual es útil cuando *eliminás ruido del escaneo* y quieres confirmar que el enderezado funcionó. + +--- + +## Paso 4 – Crear y configurar el motor OCR (Cómo usar OCR) + +Con una imagen ordenada en mano, instanciamos `OcrEngine`. Este es el núcleo de **cómo usar OCR** con Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*¿Por qué establecer `AutoPageSegmentation`?* Porque muchos escaneos contienen tablas o múltiples columnas. Activarlo permite que el motor divida la página de forma inteligente, mejorando el resultado final de **reconocer texto del escaneo**. + +--- + +## Paso 5 – Ejecutar el proceso de reconocimiento (Finalmente reconocer texto) + +Ahora llega el momento de la verdad: le pedimos al motor que lea el texto. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Si todo salió sin problemas, verás un bloque limpio de texto que coincide con el documento original. Esa es la recompensa por **enderezar la imagen** correctamente, **eliminar ruido** y **preprocesar la imagen para OCR**. + +--- + +## Paso 6 – Ejemplo completo funcional (Listo para copiar‑pegar) + +A continuación se muestra el programa completo, listo para compilar. Simplemente reemplaza la ruta del archivo y estarás listo. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Salida esperada** (truncada por brevedad): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Si la salida se ve distorsionada, verifica que la imagen fuente no esté rotada más de 30°, o aumenta `DeskewFilter.MaxAngle`. + +--- + +## Preguntas frecuentes (Casos límite y variaciones) + +| Pregunta | Respuesta | +|----------|-----------| +| **¿Qué pasa si mi escaneo está rotado 45°?** | `DeskewFilter` tiene un límite en `MaxAngle`. Auméntalo (p.ej., `MaxAngle = 60`) o pre‑rota la imagen con una biblioteca gráfica antes de enviarla a la canalización. | +| **¿Puedo procesar PDFs página por página?** | Sí. Convierte cada página PDF a una imagen (p.ej., usando `Aspose.Pdf`) y ejecuta la misma canalización en cada bitmap. | +| **Mi documento está en francés – ¿debo cambiar algo?** | Configura `ocrEngine.Language = Language.French;` o carga un paquete de idioma personalizado. El resto de la canalización permanece igual. | +| **¿Hay alguna forma de mantener la resolución original?** | `PreprocessPipeline` trabaja sobre el bitmap original, preservando DPI. Simplemente evita llamar a `ImageStream.Resize` a menos que necesites reducir la escala por rendimiento. | +| **¿Cómo afecta el aumento de contraste a escaneos en color?** | `ContrastBoostFilter` actúa sobre cada canal; es seguro para imágenes en escala de grises o a color, pero también puedes convertir a escala de grises primero con `new GrayscaleFilter()`. | + +--- + +## Ejemplo de imagen (Ayuda visual) + +![ejemplo de cómo enderezar una imagen](/images/deskew-example.png) + +*La imagen muestra un antes/después de un escaneo ruidoso rotado 12° que ha sido enderezado y limpiado.* + +--- + +## Conclusión + +Hemos cubierto **cómo enderezar una imagen** usando Aspose.OCR, demostrado una canalización completa de **preprocesamiento de imagen para OCR**, mostrado cómo **eliminar ruido del escaneo**, y finalmente **reconocer texto del escaneo** con unas pocas líneas de C#. Al encadenar `DeskewFilter`, `DenoiseFilter` y `ContrastBoostFilter` obtienes un bitmap ordenado que permite al motor OCR hacer su trabajo sin atascarse en artefactos. + +¿Próximos pasos? Prueba a experimentar con diferentes intensidades de filtro, agrega un `BinarizationFilter` para obtener una salida en blanco y negro puro, o alimenta la imagen limpiada a una canalización NLP posterior. El mismo patrón funciona para recibos, pasaportes y documentos históricos por igual. + +¿Tienes más preguntas sobre **cómo usar OCR** en otros lenguajes o frameworks? Deja un comentario, ¡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/net/text-recognition/_index.md b/ocr/spanish/net/text-recognition/_index.md index 8f06dcbf..7daf334d 100644 --- a/ocr/spanish/net/text-recognition/_index.md +++ b/ocr/spanish/net/text-recognition/_index.md @@ -27,7 +27,7 @@ Explore las capacidades de Aspose.OCR para .NET y transforme la forma en que man ## Obtenga resultados como JSON en el reconocimiento de imágenes OCR -Libere todo el potencial de Aspose.OCR para .NET aprendiendo cómo obtener resultados de OCR en formato JSON sin esfuerzo. Esta guía paso a paso garantiza un viaje sencillo hacia la mejora de sus capacidades de reconocimiento de imágenes. Aumente la eficiencia de su aplicación con las sólidas funciones y la tecnología líder en la industria de Aspose.OCR. +Libere todo el potencial de Aspose.OCR para .NET aprendiendo cómo obtener resultados OCR en formato JSON sin esfuerzo. Esta guía paso a paso garantiza un viaje sencillo hacia la mejora de sus capacidades de reconocimiento de imágenes. Aumente la eficiencia de su aplicación con las sólidas funciones y la tecnología líder en la industria de Aspose.OCR. ## Modo de detección de áreas OCR en reconocimiento de imágenes OCR @@ -45,19 +45,43 @@ Navegue por las complejidades del reconocimiento de tablas en el reconocimiento ## Tutoriales de reconocimiento de texto ### [Obtenga opciones para caracteres reconocidos en el reconocimiento de imágenes OCR](./get-choices-for-recognized-characters/) Mejore sus aplicaciones .NET con Aspose.OCR para un reconocimiento preciso de caracteres. Siga nuestra guía paso a paso para recuperar opciones de caracteres reconocidos en el reconocimiento de imágenes. + ### [Obtener el resultado del reconocimiento en el reconocimiento de imágenes OCR](./get-recognition-result/) -Explore Aspose.OCR para .NET, una potente solución de OCR para un reconocimiento perfecto de texto en imágenes. +Explore Aspose.OCR para .NET, una potente solución de OCR para un reconocimiento perfecto del texto en imágenes. + ### [Obtenga resultados como JSON en el reconocimiento de imágenes OCR](./get-result-as-json/) Libere el poder de Aspose.OCR para .NET. Aprenda a obtener resultados OCR en formato JSON sin esfuerzo. Mejore el reconocimiento de sus imágenes con esta guía paso a paso. + ### [Modo de detección de áreas OCR en reconocimiento de imágenes OCR](./ocr-detect-areas-mode/) -Mejore sus aplicaciones .NET con Aspose.OCR para un reconocimiento eficiente del texto de las imágenes. Explore el modo de detección de áreas de OCR para obtener resultados precisos. +Mejore sus aplicaciones .NET con Aspose.OCR para un reconocimiento eficiente del texto de las imágenes. Explore el modo de detección áreas de OCR para obtener resultados precisos. + ### [Reconocer PDF en reconocimiento de imágenes OCR](./recognize-pdf/) Libere el potencial del OCR en .NET con Aspose.OCR. Extraiga texto de archivos PDF sin esfuerzo. Descárguelo ahora para disfrutar de una experiencia de integración perfecta. + ### [Reconocer tabla en reconocimiento de imágenes OCR](./recognize-table/) Descubra el potencial de Aspose.OCR para .NET con nuestra guía completa sobre cómo reconocer tablas en el reconocimiento de imágenes OCR. + +### [Cómo ejecutar OCR en C# – Guía completa con Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Aprenda paso a paso a ejecutar OCR en C# usando Aspose OCR, desde la configuración hasta la obtención de resultados precisos. + +### [Cómo ejecutar OCR en C# – Extraer texto árabe de PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Aprenda a extraer texto árabe de imágenes PNG usando OCR en C# con Aspose OCR. + +### [Extraer texto de imagen con Aspose OCR – Guía completa en C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Aprenda paso a paso a extraer texto de imágenes con Aspose OCR en C#, desde la configuración hasta los resultados precisos. + +### [Extraer texto de imagen en C# – Guía completa de Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Aprenda paso a paso a extraer texto de imágenes en C# usando Aspose OCR, desde la configuración hasta obtener resultados precisos. + +### [Crear PDF buscable a partir de PNG en C# – Guía completa](./create-searchable-pdf-from-png-in-c-complete-guide/) +Aprenda a generar PDFs buscables desde imágenes PNG usando Aspose OCR en C#, paso a paso. + +### [Reconocer texto de imagen en C# – Guía completa de OCR y JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Aprenda paso a paso a reconocer texto de imágenes en C# y obtener resultados en formato JSON con 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/spanish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/spanish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..fa534076 --- /dev/null +++ b/ocr/spanish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-01-10 +description: Crear PDF buscable a partir de PNG usando C#. Aprende cómo convertir + una imagen a PDF, extraer texto de PNG y hacer OCR a la imagen en C# en un tutorial + fácil. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: es +og_description: Crear PDF buscable a partir de PNG usando C#. Esta guía muestra cómo + convertir una imagen a PDF, extraer texto de PNG y hacer OCR de la imagen en C# + con Aspose. +og_title: Crear PDF buscable a partir de PNG en C# – Paso a paso +tags: +- Aspose OCR +- C# +- PDF/A +title: Crear PDF buscable a partir de PNG en C# – Guía completa +url: /es/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Crear PDF buscable a partir de PNG en C# – Guía completa + +¿Necesitas **crear PDF buscable** a partir de un archivo PNG en C#? No estás solo—muchos desarrolladores se topan con este obstáculo cuando quieren que sus imágenes escaneadas sean tanto visibles **como** buscables por texto. En este tutorial recorreremos todo el proceso: **convertir imagen a pdf**, ejecutar OCR para **extraer texto de png**, y finalmente guardar todo como un documento **PDF/A‑2b** compatible y buscable. + +Al final tendrás un fragmento de código único y reutilizable que podrás insertar en cualquier proyecto .NET, además de varios consejos prácticos que te ahorrarán dolores de cabeza más adelante. Sin servicios externos, solo la biblioteca Aspose OCR y unas pocas líneas de C#. + +> **Requisitos previos** +> * .NET 6+ (o .NET Framework 4.7.2+). +> * Visual Studio 2022 o cualquier IDE compatible con C#. +> * Una licencia válida de Aspose OCR (o una prueba gratuita). + +--- + +![Ejemplo de PDF buscable](image-placeholder.png){alt="Crear PDF buscable a partir de PNG usando C#"} + +## Paso 1 – Instalar y Referenciar Aspose OCR para C# + +Lo primero: necesitas el paquete NuGet Aspose OCR. Abre tu terminal (o la Consola del Administrador de paquetes) y ejecuta: + +```bash +dotnet add package Aspose.OCR +``` + +Si prefieres la interfaz gráfica, haz clic derecho en tu proyecto → **Manage NuGet Packages…** → busca *Aspose.OCR* e instala la última versión estable. + +¿por qué esta biblioteca? Soporta **convertir png a pdf**, maneja imágenes multipágina y puede generar PDF/A‑2b directamente—perfecta para crear un **PDF buscable** que cumpla con los estándares de archivo. + +> **Consejo profesional:** Registra tu licencia temprano en `Program.cs` para evitar la marca de agua de evaluación. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Paso 2 – Cargar el PNG y Ejecutar OCR (extraer texto de png) + +Ahora cargaremos la imagen fuente. El asistente `ImageStream.FromFile` abstrae los detalles del sistema de archivos y funciona con cualquier formato raster soportado. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +En este punto el motor ha **extraído texto de png** y lo ha almacenado internamente. Incluso puedes inspeccionar el texto bruto mediante `ocrEngine.Text`, lo cual es útil para depuración o registro. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **¿Qué pasa si la imagen es multipágina?** +> Aspose OCR trata cada página como una capa separada. Simplemente llama a `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` y el motor iterará automáticamente. + +## Paso 3 – Configurar Opciones PDF/A‑2b (crear PDF buscable) + +Para convertir el resultado OCR en un **PDF buscable**, necesitamos indicar a Aspose cómo empaquetar la salida. PDF/A‑2b es el punto óptimo para la preservación a largo plazo y garantiza que la capa de texto sea buscable. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +¿Por qué incrustar la imagen original? Algunas verificaciones de cumplimiento requieren que la representación visual coincida con el escaneo original. Esta opción convierte el archivo en una verdadera operación de **convertir imagen a pdf** mientras preserva el texto buscable. + +## Paso 4 – Guardar el Resultado y Verificar (convertir png a pdf) + +Finalmente, escribimos el archivo de salida. El mismo método `Save` funciona para cualquier ruta que proporciones. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Abre el `output.pdf` resultante en Adobe Reader o cualquier visor de PDF y prueba buscar una palabra que aparezca en el PNG original. Si la palabra se resalta, ¡felicidades! Has creado exitosamente un **PDF buscable** a partir de un PNG. + +### Script de verificación rápida (opcional) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## ¿Por qué usar PDF/A‑2b para PDFs buscables? + +* **Seguridad de archivo:** PDF/A‑2b garantiza que el archivo pueda renderizarse de la misma manera dentro de décadas. +* **Cumplimiento regulatorio:** Muchas industrias (legal, médica, financiera) requieren PDF/A para el mantenimiento de registros. +* **Buscabilidad:** La capa de texto OCR incrustada hace que el documento sea indexable por herramientas de búsqueda de escritorio. + +Si no necesitas la carga adicional de cumplimiento, puedes eliminar la línea `PdfAStandard` y simplemente usar `new PdfSaveOptions()`—la salida seguirá siendo buscable, solo que no será PDF/A‑2b. + +## Problemas comunes y cómo evitarlos + +| Síntoma | Causa probable | Solución | +|---------|----------------|----------| +| No aparece texto buscable | `ocrEngine.Recognize()` nunca se llama o falla silenciosamente | Asegúrate de que la ruta de la imagen sea correcta y que la licencia esté registrada. | +| El PDF es enorme (10 + MB) | El PNG original es de alta resolución y `EmbedOriginalImage` está activado | Reduce la escala de la imagen antes del OCR o establece `EmbedOriginalImage = false`. | +| El texto está distorsionado | El idioma no se detecta automáticamente | Establece `ocrEngine.Language = "eng";` (o el idioma objetivo) antes de `Recognize()`. | + +## Ejemplo completo (listo para copiar y pegar) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Ejecuta el programa, abre `output.pdf` y prueba buscar palabras que sabes que existen en `input.png`. Si todo coincide, acabas de dominar el flujo de trabajo de **convertir imagen a pdf** y aprendiste cómo **ocr image c#** estilo. + +## Próximos pasos y temas relacionados + +* **Procesamiento por lotes:** Recorrer una carpeta de PNGs y combinar los resultados en un solo PDF. +* **Formatos de salida alternativos:** Aspose OCR también puede generar DOCX, TXT o PDF/A‑1b buscable. +* **Ajuste de rendimiento:** Usa `ocrEngine.RecognitionMode = RecognitionMode.Fast` para grandes volúmenes donde la precisión absoluta no es crítica. +* **Otras bibliotecas:** Si tienes un presupuesto limitado, explora Tesseract .NET—aunque perderás el soporte integrado de PDF/A. + +--- + +### TL;DR + +Te mostramos cómo **crear PDF buscable** a partir de un PNG usando Aspose OCR en C#. Los pasos son: + +1. Instala Aspose OCR (`dotnet add package Aspose.OCR`). +2. Carga el PNG y ejecuta `ocrEngine.Recognize()` (**extraer texto de png**). +3. Configura `PdfSaveOptions` para PDF/A‑2b (**convertir imagen a pdf** y **convertir png a pdf**). +4. Guarda el archivo y verifica la capa buscable. + +Pruébalo, ajusta las opciones, y pronto tendrás una canalización robusta para convertir cualquier imagen escaneada en un PDF listo para archivo y buscable. ¡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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/spanish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..4db647ab --- /dev/null +++ b/ocr/spanish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: Extraiga texto de una imagen usando Aspose OCR en C#. Aprenda cómo convertir + el texto de documentos escaneados con procesamiento por lotes y guardar los resultados. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: es +og_description: Extraer texto de una imagen con Aspose OCR en C#. Este tutorial muestra + cómo convertir el texto de documentos escaneados mediante procesamiento por lotes. +og_title: Extraer texto de una imagen en C# – Guía completa de OCR de Aspose +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Extraer texto de una imagen en C# – Guía completa de Aspose OCR +url: /es/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extraer texto de una imagen – Guía completa de Aspose OCR + +¿Alguna vez necesitaste **extract text from image** pero no sabías por dónde empezar? No estás solo; muchos desarrolladores se topan con ese obstáculo al trabajar con PDFs escaneados, TIFFs de varias páginas o recibos basados en fotos. La buena noticia es que con Aspose OCR puedes **convert scanned document text** en solo unas pocas líneas de C#. + +En este tutorial recorreremos un escenario del mundo real: tomar un TIFF de varias páginas, ejecutar OCR por lotes en cada página y escribir un único archivo de texto que contenga el contenido de todas ellas. Al final tendrás una aplicación de consola lista para ejecutar, entenderás por qué cada paso es importante y sabrás cómo ajustar el flujo para casos especiales como imágenes protegidas con contraseña o paquetes de idiomas personalizados. + +## Prerrequisitos + +- SDK .NET 6.0 o posterior (el código también funciona con .NET Core y .NET Framework) +- Visual Studio 2022 (o cualquier editor que prefieras) +- Un archivo de licencia de Aspose OCR (o puedes usar el modo de evaluación gratuito) +- Un archivo de imagen multipágina (p. ej., `multipage.tif`) colocado en una carpeta a la que puedas hacer referencia + +No se requieren paquetes NuGet adicionales más allá de `Aspose.OCR`; lo instalaremos en el primer paso. + +## Paso 1 – Instalar Aspose OCR y configurar el proyecto + +Para comenzar, crea un nuevo proyecto de consola y agrega la biblioteca Aspose OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Consejo profesional:** Si tienes un archivo de licencia (`Aspose.OCR.lic`), cópialo en la raíz del proyecto. La biblioteca lo detectará automáticamente en tiempo de ejecución. + +¿Por qué este paso? Instalar el paquete te da acceso a `BatchProcessor`, `OcrEngine` y otras clases útiles que abstraen el manejo de imágenes de bajo nivel. También garantiza que estés usando los últimos algoritmos OCR que Aspose ofrece. + +## Paso 2 – Cargar la imagen multipágina con BatchProcessor + +`BatchProcessor` está diseñado exactamente para este escenario: iterar sobre cada página de una imagen multipágina sin que tengas que dividir los archivos manualmente. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +El `BatchProcessor` lee todas las páginas en memoria, exponiéndolas a través de `batchProcessor.Pages`. Cada objeto de página conoce su número (`ocrPage.Number`), que usaremos más adelante para encabezados claros. + +## Paso 3 – Preparar un StringBuilder para acumular resultados + +Queremos un único archivo de texto que contenga la salida OCR de cada página, separada por encabezados. `StringBuilder` es la forma más eficiente de concatenar cadenas dentro de un bucle. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +¿Por qué un `StringBuilder`? Concatenar cadenas con `+` dentro de un bucle asignaría una nueva cadena en cada iteración, perjudicando el rendimiento, especialmente con documentos grandes. + +## Paso 4 – Recorrer cada página, ejecutar OCR y agregar resultados + +Ahora el núcleo del tutorial: iterar por cada página, reconocer el texto y almacenarlo con un marcador de página. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**¿Por qué crear un nuevo `OcrEngine` por página?** Algunos desarrolladores reutilizan una única instancia y cambian su propiedad `Image`, pero eso puede conservar configuraciones de idioma o resultados previos, generando errores sutiles. Instanciar un motor nuevo garantiza un estado limpio. + +### Manejo de casos límite comunes + +- **Páginas vacías:** Si una página no contiene texto reconocible, `ocrEngine.Text` será una cadena vacía. Puedes insertar un marcador como “(No se detectó texto)”. +- **Selección de idioma:** Por defecto Aspose OCR usa inglés. Para procesar alemán o francés, establece `ocrEngine.Language = Language.German;` antes de llamar a `Recognize()`. +- **Consejo de rendimiento:** Para TIFF muy grandes, puedes habilitar `ocrEngine.UseParallelProcessing = true;` para aprovechar varios núcleos. + +## Paso 5 – Escribir la salida combinada en un archivo de texto + +Finalmente, persiste la cadena acumulada en disco. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +El archivo resultante `multipage_result.txt` tendrá un aspecto similar a este: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Ahora has **extract text from image** y, de manera eficaz, **convert scanned document text** a un formato buscable y editable. + +## Bonus – Visión general visual (texto alternativo de la imagen) + +A continuación se muestra un diagrama de flujo sencillo que ilustra el proceso. +*Texto alternativo:* “Diagrama que muestra cómo extraer texto de una imagen usando procesamiento por lotes de Aspose OCR en C#”. + +![Diagrama de flujo OCR](placeholder-image-url.png) + +*(Si publicas este tutorial en un sitio estático, reemplaza el marcador de posición con un SVG o PNG real.)* + +## Preguntas frecuentes + +**¿Esto funciona con archivos PDF?** +Sí, Aspose OCR puede leer páginas PDF como imágenes. Solo necesitas convertir el PDF a imágenes primero, o usar `PdfDocument` de `Aspose.PDF` y pasar la imagen rasterizada de cada página a `OcrEngine`. + +**¿Qué pasa si mi TIFF está protegido con contraseña?** +`BatchProcessor` no maneja la encriptación directamente. Desencripta el archivo usando una biblioteca como `Aspose.Imaging` antes de pasarlo al pipeline OCR. + +**¿Puedo generar JSON en lugar de texto plano?** +Claro. Sustituye la lógica del `StringBuilder` por un serializador JSON (p. ej., `System.Text.Json`) y almacena el texto de cada página bajo una clave `pageNumber`. + +## Ejemplo completo funcionando + +Aquí tienes el programa completo que puedes copiar y pegar en `Program.cs`. Incluye todas las directivas `using`, manejo de errores y comentarios. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Ejecuta el programa con: + +```bash +dotnet run +``` + +Deberías ver un mensaje en la consola confirmando el éxito, y el archivo de salida contendrá los resultados OCR concatenados. + +## Conclusión + +Acabamos de demostrar una forma práctica de **extract text from image** usando Aspose OCR, convirtiendo cualquier archivo escaneado de varias páginas en texto plano y buscable. Al aprovechar `BatchProcessor` y una configuración limpia de `OcrEngine` por página, puedes **convert scanned document text** de manera fiable manteniendo el código simple y mantenible. + +Siéntete libre de experimentar: prueba diferentes idiomas, cambia la salida a JSON o integra esta lógica en una API web que procese cargas al instante. El patrón central sigue siendo el mismo—cargar, reconocer, acumular y persistir. + +¿Tienes más preguntas sobre OCR, licencias de Aspose o el manejo de lotes masivos de documentos? Deja un comentario abajo o consulta la documentación oficial de Aspose para profundizar. ¡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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/spanish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..c2bb017f --- /dev/null +++ b/ocr/spanish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Extraiga texto de una imagen usando Aspose OCR en C#. Aprenda cómo cargar + la imagen para OCR, reconocer texto en hindi y ejecutar el reconocimiento OCR en + unos simples pasos. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: es +og_description: Extrae texto de una imagen usando Aspose OCR en C#. Sigue esta guía + paso a paso para cargar la imagen para OCR, reconocer texto en hindi y ejecutar + el reconocimiento OCR. +og_title: Extraer texto de una imagen con Aspose OCR – Guía completa de C# +tags: +- Aspose OCR +- C# +- Image Processing +title: Extraer texto de una imagen con Aspose OCR – Guía completa en C# +url: /es/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extraer texto de una imagen con Aspose OCR – Guía completa en C# + +¿Alguna vez necesitaste **extraer texto de una imagen** pero no estabas seguro de qué biblioteca elegir? No estás solo—muchos desarrolladores se topan con ese obstáculo cuando abordan OCR en .NET por primera vez. La buena noticia es que Aspose OCR hace que todo el proceso sea sorprendentemente sencillo, incluso cuando trabajas con scripts complejos como el hindi. + +En este tutorial recorreremos todo lo que necesitas para **cargar una imagen para OCR**, **reconocer texto en hindi** y **ejecutar el reconocimiento OCR** en C#. Al final, tendrás una aplicación de consola lista‑para‑ejecutar que imprime el texto extraído directamente en la pantalla. + +## Qué construirás + +Crearemos una pequeña aplicación de consola que: + +1. Apunte el motor OCR a una carpeta que contenga modelos de idioma. +2. Desactive las descargas automáticas—útil para entornos con restricciones. +3. Seleccione el hindi como idioma objetivo. +4. Cargue un JPEG (o PNG) que contenga texto en hindi. +5. Ejecute la cadena de reconocimiento. +6. Escriba la cadena resultante en la consola. + +Sin servicios externos, sin claves de nube, solo OCR puro en local. + +## Requisitos previos + +- **.NET 6.0** o posterior (el código también funciona en .NET Framework 4.7+). +- **Aspose.OCR for .NET** paquete NuGet instalado. + ```bash + dotnet add package Aspose.OCR + ``` +- Una carpeta llamada `OcrResources` que contenga el modelo de idioma hindi (`hin.traineddata`). + Puedes descargarlo desde la página de descargas de Aspose OCR y colocarlo en `YOUR_DIRECTORY/OcrResources`. +- Un archivo de imagen (`input.jpg`) con texto hindi claro. + Para ilustrar, imagina una foto de un letrero de tienda que dice “स्वागत है”. + +> **Pro tip:** Mantén la resolución de la imagen por encima de 300 dpi; resoluciones más bajas pueden provocar caracteres perdidos. + +--- + +## Paso 1: Apuntar el motor OCR a tus recursos – *extraer texto de imagen* + +Lo primero que necesita Aspose OCR es la ubicación de sus modelos de idioma. Si omites esto, el motor intentará descargar los archivos automáticamente—algo que quizá no quieras en una red segura. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Por qué importa:* Al establecer `ResourcesPath` garantizas que el motor cargue los datos entrenados correctos localmente, lo que acelera la primera ejecución y elimina cualquier tráfico inesperado de red. + +--- + +## Paso 2: Desactivar la descarga automática de recursos – *cargar imagen para OCR* + +En muchos entornos corporativos, el acceso a internet saliente está bloqueado. Aspose OCR respeta una bandera que impide que intente obtener archivos faltantes sobre la marcha. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Si olvidas esta línea y el modelo hindi no está presente, el motor lanzará una excepción que dice “Unable to download required resource”. Mantener la bandera en `false` te brinda una falla clara y determinista que puedes manejar tú mismo. + +--- + +## Paso 3: Elegir el idioma – *reconocer texto hindi* + +Aspose OCR soporta decenas de idiomas, pero debes indicarle cuál usar. El hindi se identifica con `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*¿Qué pasa si necesitas varios idiomas?* Puedes establecer `Language = OcrLanguage.AutoDetect` para que el motor lo adivine, pero la autodetección es más lenta y ocasionalmente falla con scripts mixtos. Para puro hindi, la selección explícita es la opción más segura. + +--- + +## Paso 4: Cargar tu imagen – *cargar imagen para OCR* + +Ahora entregamos al motor la foto que queremos leer. Aspose ofrece un práctico ayudante `ImageStream.FromFile` que abstrae las dependencias subyacentes de `System.Drawing`. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Si la ruta del archivo es incorrecta, Aspose lanzará una `FileNotFoundException`. Un rápido chequeo `File.Exists` antes de esta línea puede ahorrarte una sesión de depuración. + +--- + +## Paso 5: Ejecutar el motor OCR – *ejecutar reconocimiento OCR* + +Con todo configurado, finalmente iniciamos el proceso de reconocimiento. Esta llamada es síncrona y bloquea hasta que el texto sea extraído. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Detrás de escena, Aspose realiza varias etapas: preprocesamiento (desviación, eliminación de ruido), segmentación, clasificación de caracteres y, finalmente, post‑procesamiento específico del idioma. El trabajo pesado ocurre dentro de esta única llamada al método. + +--- + +## Paso 6: Mostrar el texto extraído – *extraer texto de imagen* + +El resultado vive en la propiedad `Text` del motor. Simplemente lo escribimos en la consola, pero también podrías almacenarlo en una base de datos, enviarlo a través de una API o alimentarlo a otro pipeline de NLP. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Salida esperada** (suponiendo que la imagen contiene “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +Si ves caracteres distorsionados, verifica que el modelo hindi esté colocado correctamente y que la imagen no esté excesivamente comprimida. + +--- + +## Ejemplo completo funcional + +A continuación tienes el programa completo que puedes copiar‑pegar en un nuevo proyecto de consola (`dotnet new console`). Reemplaza `YOUR_DIRECTORY` con la ruta real en tu máquina. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tip:** Si planeas procesar muchas imágenes en un bucle, instancia un solo `OcrEngine` y reutilízalo—esto reduce la sobrecarga de inicialización. + +--- + +## Manejo de problemas comunes + +| Problema | Por qué ocurre | Solución rápida | +|----------|----------------|-----------------| +| **Salida vacía** | Modelo de idioma incorrecto o imagen de baja calidad. | Verifique `ResourcesPath`, aumente la DPI de la imagen, o pruebe `ocrEngine.Image = ImageStream.FromFile(..., true)` para habilitar la mejora automática. | +| **Excepción: Recurso no encontrado** | Falta el `.traineddata` de hindi. | Descargue el modelo hindi de Aspose, colóquelo en `OcrResources` y asegúrese de que el nombre del archivo coincida con `hin.traineddata`. | +| **Caracteres basura** | Desajuste de codificación al imprimir en la consola. | Establezca la codificación de salida de la consola: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Retraso de rendimiento** | Imágenes grandes procesadas sin escalar. | Reduzca la escala de la imagen a un ancho/alto máximo de 2000 px antes de enviarla a OCR. | + +--- + +## Próximos pasos y temas relacionados + +- **Procesamiento por lotes:** Envuelve el código en un bucle `foreach` para manejar una carpeta de imágenes. +- **Idiomas diferentes:** Cambia `OcrLanguage.Hindi` por `OcrLanguage.English`, `OcrLanguage.Arabic`, etc. +- **Formatos de salida:** En lugar de `Console.WriteLine`, escribe a un archivo de texto (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integración con ASP.NET Core:** Expón un endpoint API que acepte una carga de imagen y devuelva el texto extraído como JSON. + +Todas estas extensiones siguen el mismo patrón—configura el motor, carga una imagen, reconoce y consume el resultado. + +--- + +## Conclusión + +Acabamos de mostrar cómo **extraer texto de una imagen** usando Aspose OCR en C#. La guía cubrió cada paso que necesitas para **cargar una imagen para OCR**, **reconocer texto en hindi** y **ejecutar el reconocimiento OCR**—todo en una aplicación de consola autocontenida. + +Pruébalo con tus propias fotos, experimenta con diferentes idiomas y siéntete libre de adaptar el fragmento para servicios web o trabajos en segundo plano. La idea central sigue siendo la misma: establecer recursos, elegir un idioma, alimentar una imagen y leer la propiedad `Text`. + +Si encuentras algún inconveniente, revisa la tabla de solución de problemas anterior o deja un comentario. ¡Feliz codificación, y que tus resultados de OCR siempre sean nítidos! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/spanish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..2fbc4b62 --- /dev/null +++ b/ocr/spanish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Cómo ejecutar OCR en una imagen usando Aspose OCR en C#. Aprende a extraer + texto de una imagen, ejecutar OCR en la imagen y cargar la imagen para OCR con aceleración + GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: es +og_description: Cómo ejecutar OCR en una imagen usando Aspose OCR. Este tutorial muestra + cómo extraer texto de una imagen, ejecutar OCR en la imagen y cargar la imagen para + OCR de manera eficiente. +og_title: Cómo ejecutar OCR en C# – Guía completa paso a paso +tags: +- OCR +- C# +- Aspose +title: Cómo ejecutar OCR en C# – Guía completa con Aspose OCR +url: /es/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo ejecutar OCR en C# – Guía completa con Aspose OCR + +¿Alguna vez te has preguntado **cómo ejecutar OCR** en una foto y extraer el texto sin volverte loco? No eres el único. Ya sea que estés digitalizando facturas, escaneando recibos o simplemente intentando crear un PDF searchable, poder extraer texto de una imagen es una necesidad diaria para muchos desarrolladores. + +En este tutorial caminaremos a través de un ejemplo práctico, de extremo a extremo, que muestra **cómo ejecutar OCR en imágenes** usando la biblioteca Aspose OCR, con aceleración GPU para mayor velocidad. Al final sabrás exactamente cómo cargar una imagen para OCR, ajustar el uso de memoria y obtener resultados de texto plano limpios, todo en unos minutos de código. + +## Lo que aprenderás + +- Cómo inicializar el motor Aspose OCR en C# +- Cómo **cargar imagen para OCR** desde disco o un stream +- Cómo habilitar la aceleración GPU y limitar la memoria GPU +- Cómo **extraer texto de la imagen** y verificar la salida +- Problemas comunes (módulo GPU ausente, límites de memoria) y soluciones rápidas + +No se requiere experiencia previa con Aspose OCR; solo un entorno .NET funcional y una imagen de muestra. + +--- + +## Cómo ejecutar OCR en una Imagen con Aspose OCR + +Lo primero que necesitas es un fragmento claro y ejecutable que haga todo el trabajo. A continuación tienes el programa completo que puedes copiar, pegar y ejecutar de inmediato. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Salida esperada** (suponiendo que la imagen de muestra contiene la frase “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Pro tip:** Si no ves ningún texto, verifica que el módulo GPU esté instalado y que la ruta de la imagen sea correcta. El método `ImageStream.FromFile` lanza una excepción clara si no se encuentra el archivo. + +--- + +## Extraer Texto de la Imagen Usando Aceleración GPU + +¿Por qué molestarse con la GPU? OCR solo con CPU funciona, pero puede ser dolorosamente lento con imágenes grandes o de alta resolución. Habilitar la aceleración GPU (paso 2 arriba) delega el trabajo pesado a tu tarjeta gráfica, que puede procesar miles de píxeles por segundo. + +### Cuándo usar la GPU + +- **Procesamiento por lotes** – escanear decenas de facturas de una sola vez. +- **Escaneos de alta resolución** – cualquier cosa por encima de 300 dpi. +- **Aplicaciones en tiempo real** – como un escáner móvil que necesita retroalimentación instantánea. + +Si tu entorno no dispone de una GPU compatible, simplemente establece `EnableGpuAcceleration = false;` y el motor volverá automáticamente al modo CPU. + +--- + +## Ejecutar OCR en Imagen – Cargando la Imagen Correctamente + +Cargar la imagen es el paso **cargar imagen para OCR** que a menudo confunde a la gente. Aspose OCR espera un `ImageStream`, que puede crearse a partir de un archivo, un stream de memoria o incluso una URL. Aquí tienes algunas variantes: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Caso límite:** Algunas imágenes contienen un canal alfa (transparencia) que confunde al motor OCR. Eliminar el alfa es fácil: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Ahora has cubierto las formas más comunes de **cargar imagen para OCR**, asegurando que el motor reciba un formato limpio y compatible cada vez. + +--- + +## Consejos para Cargar Imagen para OCR de Forma Eficiente + +1. **Redimensiona imágenes grandes** – OCR no necesita una foto 4 K; reducir a ~1500 px de ancho acelera el proceso sin afectar la precisión. +2. **Convertir a escala de grises** – reduce el ruido y puede mejorar el reconocimiento en escaneos de bajo contraste. +3. **Pre‑procesar con corrección de inclinación** – si tu imagen está inclinada, la corrección de inclinación incorporada de Aspose OCR se puede habilitar mediante `ocrEngine.Config.EnableDeskew = true;`. + +Estos ajustes son especialmente útiles cuando estás **extrayendo texto de la imagen** en bloque. + +--- + +## Problemas Comunes y Cómo Solucionarlos + +| Síntoma | Causa probable | Solución | +|---------|----------------|----------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | Módulo GPU no instalado | Instalar el paquete Aspose OCR GPU o deshabilitar GPU (`EnableGpuAcceleration = false`). | +| Salida en blanco | Ruta de la imagen incorrecta o formato no soportado | Verificar la ruta en `ImageStream.FromFile`; intentar cargar desde bytes para asegurar que el archivo se lee correctamente. | +| Error de falta de memoria | Límite de memoria GPU demasiado bajo para lote grande | Incrementar `GpuMemoryLimit` (p.ej., 2048) o procesar imágenes en lotes más pequeños. | +| Caracteres distorsionados | La imagen tiene mucho ruido o bajo contraste | Pre‑procesar: binarizar, eliminar manchas o aumentar DPI antes de OCR. | + +--- + +## Ejemplo Completo Funcional – Juntándolo Todo + +A continuación tienes una aplicación de consola compacta que incorpora las mejores prácticas que discutimos: aceleración GPU, limitación de memoria, pre‑procesamiento de imágenes y manejo de errores. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Ejecutar este programa imprime el texto limpio extraído de tu imagen, demostrando una forma robusta de **extraer texto de la imagen** incluso cuando la fuente no es perfecta. + +--- + +## Conclusión + +Hemos cubierto **cómo ejecutar OCR** en una imagen usando Aspose OCR, desde la inicialización del motor hasta la carga de la imagen, habilitación de la aceleración GPU y manejo de casos límite. Ahora tienes una referencia sólida y digna de citar que puedes copiar‑pegar en cualquier proyecto .NET y comenzar a **extraer texto de la imagen** de inmediato. + +¿Próximos pasos? Prueba alimentando páginas PDF, experimenta con diferentes idiomas (establece `ocrEngine.Config.Language = "spa"` para español), o integra este flujo en una API web que procese cargas al vuelo. El cielo es el límite, y con las herramientas que discutimos, estás bien equipado para enfrentar cualquier desafío de OCR. + +¡Feliz codificación, y que tu texto siempre sea limpio y tu OCR rápido! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/spanish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..516116f0 --- /dev/null +++ b/ocr/spanish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-01-10 +description: Cómo ejecutar OCR rápidamente y extraer texto árabe de una imagen. Aprende + a convertir imagen a texto, leer texto de PNG y descubre cómo extraer texto con + Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: es +og_description: Cómo ejecutar OCR en C# y extraer texto árabe de una imagen PNG. Esta + guía muestra cómo convertir la imagen a texto y leer el texto de un PNG paso a paso. +og_title: Cómo ejecutar OCR en C# – Extraer texto árabe de PNG +tags: +- OCR +- C# +- Aspose +title: Cómo ejecutar OCR en C# – Extraer texto árabe de PNG +url: /es/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo ejecutar OCR en C# – Extraer texto árabe de PNG + +¿Alguna vez te has preguntado **cómo ejecutar OCR** en una imagen que contiene caracteres árabes? No estás solo. Muchos desarrolladores se quedan atascados cuando necesitan **extraer texto árabe** de un PNG y no saben qué biblioteca manejará scripts de derecha a izquierda sin dolores de cabeza. + +En este tutorial recorreremos todo lo que necesitas saber para **convertir imagen a texto**, **leer texto de PNG**, y finalmente **cómo extraer texto** usando Aspose.OCR en una aplicación de consola C# limpia. Al final tendrás un programa listo‑para‑ejecutar que imprimirá la cadena árabe directamente en tu terminal. + +## Qué aprenderás + +- Instalar y referenciar el paquete NuGet Aspose.OCR. +- Configurar el motor OCR para soporte del idioma árabe. +- Cargar una imagen PNG y ejecutar el proceso de reconocimiento. +- Recuperar y mostrar el texto extraído. +- Ajustar configuraciones para mayor precisión y manejar problemas comunes. + +No se requiere experiencia previa con OCR, solo un entendimiento básico de C# y un entorno de desarrollo .NET (Visual Studio, Rider, o la CLI `dotnet` será suficiente). + +--- + +## Cómo ejecutar OCR – Configurando Aspose OCR + +### Paso 1: Añadir el paquete NuGet Aspose.OCR + +Lo primero que necesitamos es la propia biblioteca OCR. Aspose.OCR es un producto comercial, pero ofrece una prueba gratuita que funciona perfectamente para propósitos de aprendizaje. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Alternativamente, abre el **NuGet Package Manager** en Visual Studio, busca **Aspose.OCR**, y haz clic en **Install**. + +> **Consejo profesional:** Si planeas usar la biblioteca en una canalización CI, añade la bandera `-v` para bloquear la versión, por ejemplo, `dotnet add package Aspose.OCR -v 23.10`. + +### Paso 2: Crear un nuevo proyecto de consola (si no tienes uno) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Ahora tienes un archivo `Program.cs` fresco listo para nuestro código. + +--- + +## Extraer texto árabe – Escribiendo el código OCR + +A continuación tienes el programa completo, listo‑para‑ejecutar. Guárdalo como `Program.cs` (o reemplaza el archivo autogenerado). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Por qué cada línea es importante + +- **`OcrEngine`**: La clase central que coordina la carga de la imagen, la selección del idioma y el reconocimiento. +- **`Language = OcrLanguage.Arabic`**: El árabe usa un script de derecha a izquierda y glifos únicos; establecer el idioma indica al motor que aplique los modelos de caracteres correctos. +- **`ImageStream.FromFile`**: Maneja PNG, JPEG, BMP y muchos otros formatos. Si alguna vez necesitas leer desde un `MemoryStream` (p. ej., un archivo subido), reemplaza esta llamada en consecuencia. +- **`Recognize()`**: Realiza el trabajo pesado—análisis de píxeles, segmentación y clasificación de caracteres. +- **`ocrEngine.Text`**: La cadena Unicode final, lista para procesamiento adicional, almacenamiento o visualización. + +### Salida esperada + +Si `arabic_sample.png` contiene la frase “مرحبا بالعالم” (Hello World), la consola imprimirá: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Si la salida se ve distorsionada, verifica que la imagen sea clara, que el idioma esté configurado a árabe y que la versión del motor OCR coincida con la documentación. + +--- + +## Convertir imagen a texto – Ajustando la precisión + +Aunque la configuración predeterminada funciona para la mayoría de escaneos limpios, las imágenes del mundo real a menudo necesitan un poco de atención extra. + +| Configuración | Qué hace | Cuándo usar | +|---------------|----------|-------------| +| `ocrEngine.Config.Preprocess = true` | Habilita binarización automática y eliminación de ruido. | Documentos escaneados con sombras. | +| `ocrEngine.Config.Deskew = true` | Rota la imagen para corregir una ligera inclinación. | Fotos tomadas en ángulo. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Trata toda la imagen como un bloque único de texto. | Leyendas simples o etiquetas de una sola línea. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Limita el reconocimiento solo a caracteres árabes. | Reduce falsos positivos en páginas multilingües. | + +Puedes añadir estas líneas justo después de crear el motor: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Leer texto de PNG – Manejo de diferentes fuentes de imagen + +A veces el PNG está almacenado en una base de datos o proviene de una solicitud web. Aquí tienes una variante rápida que lee desde un `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +El resto del flujo permanece idéntico, lo que significa que **cómo extraer texto** sigue siendo consistente sin importar la fuente. + +--- + +## Cómo extraer texto – Opciones avanzadas y casos límite + +### 1. PDFs o TIFFs de varias páginas + +Si necesitas OCR en un documento de varias páginas, itera sobre cada una: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Nota:** Necesitarás el paquete `Aspose.PDF` para este fragmento. + +### 2. Detección automática de idioma + +Aspose.OCR también ofrece auto‑detección, pero es más lenta. Si no estás seguro de si la imagen contiene árabe u otro script, habilítala: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +El motor probará cada modelo de idioma y elegirá la mejor coincidencia. + +### 3. Consejos de rendimiento + +- **Reutiliza el objeto `OcrEngine`** para múltiples imágenes; crear una nueva instancia cada vez añade sobrecarga. +- **Ejecuta en paralelo** solo si tienes instancias de motor separadas por hilo—compartir una única instancia provoca condiciones de carrera. + +--- + +## Conclusión + +Hemos cubierto **cómo ejecutar OCR** en C# de principio a fin, mostrándote cómo **extraer texto árabe**, **convertir imagen a texto**, **leer texto de PNG**, y responder **cómo extraer texto** en una variedad de escenarios. El código de ejemplo está completo, autocontenido y listo para que lo pegues en cualquier proyecto de consola .NET. + +¿Próximos pasos? Prueba cambiar `OcrLanguage.Arabic` por coreano o serbio cirílico para ver el poder multilingüe de la biblioteca. Experimenta con las banderas de preprocesamiento para mejorar la precisión en escaneos ruidosos, o integra la rutina OCR en una API web para que los usuarios suban imágenes y obtengan resultados de texto al instante. + +¡Feliz codificación, y que tus resultados de OCR siempre sean nítidos! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/spanish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..4bf2851d --- /dev/null +++ b/ocr/spanish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-01-10 +description: Aprende a reconocer texto a partir de una imagen, extraer las coordenadas + del texto y convertir un recibo a JSON usando Aspose OCR en C#. Tutorial paso a + paso. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: es +og_description: Reconocer texto de una imagen en C# usando Aspose OCR. Esta guía muestra + cómo extraer texto, obtener coordenadas y convertir el recibo a JSON. +og_title: reconocer texto de imagen – Tutorial completo de OCR en C# +tags: +- OCR +- C# +- Aspose +title: reconocer texto de una imagen en C# – Guía completa de OCR y JSON +url: /es/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# reconocer texto de imagen – Tutorial completo de OCR en C# + +¿Alguna vez necesitaste reconocer texto de una imagen pero no estabas seguro de qué biblioteca elegir? No estás solo. En muchas aplicaciones del mundo real—seguidores de gastos, escáneres de recibos o archivadores de documentos—extraer texto de manera fiable es el primer obstáculo. + +En este tutorial recorreremos **cómo extraer texto**, obtendremos sus cajas delimitadoras y, finalmente, **convertir recibo a JSON** usando Aspose.OCR para .NET. Al final tendrás un proyecto C# autónomo que toma una foto de un recibo y genera un archivo JSON ordenado con puntuaciones de confianza y coordenadas. + +## Lo que necesitarás + +Antes de sumergirnos, asegúrate de tener lo siguiente en tu máquina: + +- **.NET 6.0 SDK** (o cualquier versión posterior). Los frameworks más antiguos también funcionan, pero .NET 6 es el punto óptimo para bibliotecas modernas. +- **Visual Studio 2022** o VS Code con la extensión C#. +- Paquete NuGet **Aspose.OCR for .NET** (`Aspose.OCR` y `Aspose.OCR.Output`). Puedes instalarlo a través de la consola del Administrador de paquetes: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Una imagen de recibo de muestra (p. ej., `receipt.jpg`) colocada en una carpeta que referenciarás más adelante. + +Eso es todo—sin SDKs adicionales, sin binarios nativos, solo código administrado puro. + +## Paso 1: Crear un nuevo proyecto de consola + +Primero lo primero, crea una aplicación de consola. Es la forma más rápida de probar OCR sin la sobrecarga de una interfaz de usuario. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Consejo profesional:** Mantén la carpeta del proyecto ordenada; crea una subcarpeta llamada `Resources` y coloca `receipt.jpg` allí. Facilita el manejo de rutas. + +## Paso 2: Cargar la imagen del recibo + +Ahora realmente **reconocemos texto de la imagen**. El primer paso es apuntar el motor OCR al archivo. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +¿Por qué envolvemos la carga en una simple verificación de existencia? Porque en producción a menudo manejas cargas de usuarios que pueden estar ausentes o corruptas. Detectar el problema temprano te ahorra excepciones crípticas más adelante. + +## Paso 3: Realizar OCR – **reconocer texto de la imagen** + +Con la imagen en memoria, le pedimos a Aspose que **reconozca texto de la imagen**. Esta operación es sincrónica y devuelve un conjunto de resultados completo. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Detrás de escena, Aspose ejecuta una red neuronal entrenada con millones de caracteres. El motor llena `ocrEngine.Text`, `ocrEngine.RecognitionResult` y una colección de objetos `OcrRegion` que contienen coordenadas. Eso es exactamente lo que necesitamos para el siguiente paso. + +## Paso 4: **Cómo extraer texto** – Obtener la cadena cruda + +Si solo te importa el texto plano (quizá para una búsqueda rápida), puedes obtenerlo directamente del motor: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Notarás saltos de línea donde el OCR detectó límites de párrafo. En muchos escenarios de escaneo de recibos, la cadena cruda es suficiente para extraer totales, fechas o nombres de proveedores usando expresiones regulares simples. + +## Paso 5: **extraer coordenadas de texto** – Cajas delimitadoras para cada palabra + +A menudo necesitas saber *dónde* en la imagen se encuentra un fragmento de texto en particular—por ejemplo, para resaltar el importe total en una interfaz. Aspose nos brinda eso a través de objetos `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Observa que estamos iterando sobre **extraer coordenadas de texto** para cada segmento reconocido. Las coordenadas son relativas a la imagen original, por lo que puedes superponerlas en un lienzo gráfico o en un elemento HTML ``. + +## Paso 6: **convertir recibo a JSON** – Guardar resultados detallados + +Ahora llega la parte que une todo: queremos una estructura legible por máquinas que incluya el texto, las puntuaciones de confianza y las cajas delimitadoras. Aspose incluye `JsonSaveOptions` que hacen esto muy sencillo. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +El archivo resultante se ve algo así (recortado por brevedad): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Ahora tienes un artefacto de **convertir recibo a JSON** que puede alimentarse a servicios posteriores—piensa en APIs de informes de gastos, canalizaciones de análisis o incluso una interfaz simple que dibuja rectángulos alrededor de cada palabra. + +## Ejemplo completo en funcionamiento + +Uniendo todas las piezas, aquí tienes el `Program.cs` completo que puedes copiar y pegar en tu proyecto: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Ejecuta el programa (`dotnet run`) y observa la salida de la consola. Abre `Resources/receipt.json` para verificar la estructura. + +## Preguntas comunes y casos límite + +- **¿Qué pasa si la imagen está borrosa?** + Aspose OCR funciona mejor con 300 dpi o más. Si obtienes puntuaciones de confianza bajas, considera aplicar un filtro de enfoque antes de pasar la imagen al motor. + +- **¿Puedo reconocer varios idiomas?** + Sí. Configura `ocrEngine.Language = Language.English | Language.Spanish;` antes de llamar a `Recognize()`. + +- **¿Cómo limito la salida solo a números (p. ej., totales)?** + Después de obtener el texto plano, ejecuta una expresión regular como `\d+\.\d{2}` sobre `ocrEngine.Text`. Como ya tenemos coordenadas, puedes mapear la cadena coincidente a su región para resaltado visual. + +- **¿Es personalizable el formato JSON?** + La clase `JsonSaveOptions` expone un conjunto de banderas. Si necesitas un esquema completamente personalizado, puedes iterar sobre `ocrEngine.RecognitionResult.Regions` y serializar los objetos tú mismo con `System.Text.Json`. + +## Conclusión + +Acabamos de demostrar cómo **reconocer texto de una imagen** en C# usando Aspose.OCR, **cómo extraer texto**, obtener **extraer coordenadas de texto**, y finalmente **convertir recibo a JSON**. Todo el flujo vive en una única aplicación de consola fácil de ejecutar, lo que la hace perfecta para prototipos o como bloque de construcción en sistemas más grandes. + +¿Próximos pasos? Intenta alimentar el JSON a un front‑end que dibuje las cajas delimitadoras, o conecta la salida a un servicio de informes de gastos. También puedes experimentar con diferentes formatos de imagen (PNG, TIFF) o procesar por lotes una carpeta de recibos. + +¿Tienes más preguntas sobre OCR, Aspose o el manejo de JSON? Deja un comentario abajo, ¡y feliz codificación! + +![Ejemplo de imagen de recibo para reconocer texto de la imagen](receipt.jpg "Ejemplo de imagen de recibo") + +{{< /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/net/ocr-configuration/_index.md b/ocr/swedish/net/ocr-configuration/_index.md index c6ad0534..757c874e 100644 --- a/ocr/swedish/net/ocr-configuration/_index.md +++ b/ocr/swedish/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Lås upp kraften med OCR-bildigenkänning i .NET med Aspose.OCR. Extrahera text Lås upp kraftfulla OCR-funktioner med Aspose.OCR för .NET. Extrahera text från bilder sömlöst. ### [OCRoperation med List i OCR-bildigenkänning](./ocr-operation-with-list/) Lås upp potentialen hos Aspose.OCR för .NET. Utför enkelt OCR-bildigenkänning med listor. Öka produktiviteten och datautvinningen i dina applikationer. +### [Läs inbäddad resurs i .NET – Komplett guide för att ställa in Aspose-licens](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Lär dig hur du läser inbäddade resurser i .NET och konfigurerar Aspose-licensen korrekt. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/swedish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..a7caa67f --- /dev/null +++ b/ocr/swedish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-01-10 +description: Läs inbäddad resurs och ställ in Aspose‑licens i C#. Lär dig hur du använder + GetManifestResourceStream, bäddar in en licensfil och hämtar den körande assemblyn + i .NET i en enda handledning. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: sv +og_description: Läs inbäddad resurs i .NET och ställ in Aspose‑licensen snabbt. Steg‑för‑steg‑guide + som täcker GetManifestResourceStream, inbäddning av licensen och användning av den + körande assemblyn. +og_title: Läs inbäddad resurs – Ställ in Aspose‑licens i .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Läs inbäddad resurs i .NET – Komplett guide för att sätta Aspose‑licens +url: /sv/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Läs inbäddad resurs – Komplett guide för att ställa in Aspose‑licens + +Har du någonsin behövt **read embedded resource** vid körning och undrat hur du får ditt Aspose OCR‑bibliotek licensierat utan att hårdkoda sökvägar? Du är inte ensam. I många företagsapplikationer ligger licensfilen inuti assemblyn så att du inte behöver leverera extra filer eller oroa dig för saknade behörigheter. Den här handledningen visar exakt hur du läser en inbäddad resurs och ställer in Aspose‑licens med .NET‑metoden `GetManifestResourceStream`. + +Vi går igenom allt du behöver: att bädda in `.lic`‑filen, hämta den med `GetExecutingAssembly` och slutligen tillämpa den på Aspose OCR `License`‑klassen. När du är klar har du en självständig lösning som fungerar i alla .NET‑projekt—utan externa filer. + +## Vad du kommer att lära dig + +- **How to embed a license file** i ett .NET‑projekt så att den blir en del av den kompilerade DLL‑filen. +- Det korrekta sättet att **use GetManifestResourceStream** för att läsa den inbäddade resursen. +- Hur du **set Aspose license** programatiskt utan att röra filsystemet. +- Tips för att hantera vanliga fallgropar som felstavade resursnamn eller saknade byggåtgärder. +- Ett komplett, körbart kodexempel som du kan klistra in i din egen lösning. + +### Förutsättningar + +- .NET 6.0 eller senare (koden fungerar även på .NET Framework 4.x, bara justera projektfilen därefter). +- Aspose.OCR NuGet‑paket installerat (`dotnet add package Aspose.OCR`). +- Grundläggande kunskap om C# och Visual Studio (eller din föredragna IDE). + +Om du redan har dessa komponenter på plats, toppen—låt oss dyka ner. + +## Steg 1: Bädda in Aspose‑licensfilen i din assembly + +Det första du behöver är den faktiska licensfilen (`Aspose.OCR.lic`). Istället för att kopiera den bredvid ditt körbara program kommer du att bädda in den som en **resource**. + +1. Lägg till `.lic`‑filen i ditt projekt (t.ex. skapa en mapp `Resources` och lägg filen där). +2. I filens egenskaper, sätt **Build Action** till `Embedded Resource`. + *Pro tip:* håll mappstrukturen enkel; det fullständigt kvalificerade resursnamnet blir `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Varför bädda in? För att assemblyn nu bär med sig licensen internt, vilket eliminerar risken för en saknad fil på en produktionsserver. + +## Steg 2: Hämta den inbäddade resursen med GetExecutingAssembly + +Nu när licensen finns i DLL‑filen behöver du ett sätt att **read embedded resource** vid körning. .NET‑klassen `Assembly` ger dig exakt det. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +`GetExecutingAssembly`‑metoden returnerar den assembly som för närvarande körs—perfekt för att hitta resurser som lever bredvid din kod. + +## Steg 3: Öppna licensströmmen med GetManifestResourceStream + +Med assembly‑referensen i handen kan du anropa `GetManifestResourceStream`. Denna metod returnerar en `Stream` som du kan skicka direkt till Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Observera att vi använder ett **null‑conditional** `using`‑statement (`using Stream?`) för att säkerställa att strömmen stängs automatiskt. Om namnet är fel kastar vi ett tydligt undantag—detta sparar dig från tysta fel senare. + +## Steg 4: Tilldela licensen till Aspose OCR + +Asposes `License`‑klass förväntar sig en `Stream`. Vi har redan en, så sista steget är enkelt. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Klart! Aspose OCR‑motorn är nu fullt licensierad och redo att bearbeta bilder utan provvattenstämpeln. + +## Fullständigt fungerande exempel + +Nedan är ett komplett, kopiera‑och‑klistra‑klart program som demonstrerar hela processen. Det inkluderar nödvändiga `using`‑direktiv, felhantering och ett enkelt OCR‑anrop för att bevisa att licensen är aktiv. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Förväntad output + +När du kör programmet på en maskin med en giltig inbäddad licens bör du se: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Om licensströmmen inte kan hittas kommer konsolen att rapportera det saknade resursnamnet och vägleda dig att dubbelkolla **Build Action** och namnrymden. + +## Vanliga fallgropar & hur du undviker dem + +| Problem | Varför det händer | Lösning | +|---------|-------------------|---------| +| **Resource name mismatch** | .NET bygger resursnamnet från standard‑namnrymden + mappväg. | Använd `Assembly.GetManifestResourceNames()` för att lista tillgängliga namn och verifiera den exakta strängen. | +| **License file not set as Embedded Resource** | Standard‑värdet för Build Action är `Content`. | Ändra det till `Embedded Resource` i filens egenskaper. | +| **Running from a different assembly** | Om du anropar koden från ett klassbibliotek kan `GetExecutingAssembly()` returnera biblioteket istället för huvud‑exe‑filen. | Använd `Assembly.GetEntryAssembly()` eller skicka den korrekta assemblyn explicit. | +| **Stream disposed before use** | Av misstag använder du ett `using`‑block som stänger strömmen för tidigt. | Behåll `using`‑blocket runt `SetLicense`‑anropet, som visat ovan. | +| **Aspose.OCR version mismatch** | Nyare versioner kan kräva ett annat licensformat. | Hämta alltid den senaste licensen från ditt Aspose‑konto och bädda in den på nytt. | + +## Använd samma teknik för andra inbäddade filer + +Mönstret—**read embedded resource**, sedan **use GetManifestResourceStream**—fungerar för alla filtyper: JSON‑konfigurationer, bilder, till och med inhemska DLL‑filer. Justera bara `resourceName` och hur du använder strömmen. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Visuell översikt + +![Diagram som visar hur man läser inbäddad resurs och ställer in Aspose‑licens](read-embedded-resource-diagram.png) + +*Alt text:* read embedded resource – diagram som visar inbäddning, hämtning med GetManifestResourceStream och tillämpning av Aspose‑licens. + +## Sammanfattning + +Vi har gått igenom hur man **read embedded resource** i en .NET‑assembly, de exakta stegen för att **use GetManifestResourceStream**, och det rena sättet att **set Aspose license** utan att exponera filer på disk. Genom att bädda in licensen eliminerar du deploymentsproblem och gör din applikation portabel. + +## Vad blir nästa? + +- **Automate license updates:** Skriv ett litet bygg‑tids‑script som ersätter den inbäddade `.lic`‑filen när du förnyar ditt Aspose‑abonnemang. +- **Secure the resource:** Överväg att kryptera licensen innan inbäddning och dekryptera den vid körning för extra skydd. +- **Explore other Aspose products:** Samma metod fungerar för Aspose.Words, Aspose.PDF osv., varje med sin egen `License`‑klass. + +Känn dig fri att experimentera—kanske bäddar du in flera licenser för olika moduler, eller byter till ett konfigurationsdrivet resursnamn. Möjligheterna är oändliga. + +--- + +*Lycklig kodning! Om du stöter på problem, lämna en kommentar nedan eller kolla Aspose‑forumet för fler exempel.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/swedish/net/skew-angle-calculation/_index.md index 37d018aa..d7f60f57 100644 --- a/ocr/swedish/net/skew-angle-calculation/_index.md +++ b/ocr/swedish/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ Utforska Aspose.OCR för .NET, en kraftfull OCR-lösning för korrekt textigenk Släpp lös kraften i Aspose.OCR för .NET, en robust lösning för bildigenkänning. Lär dig hur du beräknar snedvinklar utan ansträngning. ### [Beräkna skevningsvinkel från URI i OCR-bildigenkänning](./calculate-skew-angle-from-uri/) Utforska Aspose.OCR för .NET för att enkelt beräkna snedvinklar i OCR-bildigenkänning. Förbättra dina projekt med precision och effektivitet. +### [Hur du räta upp en bild i C# – Komplett guide för OCR‑förbehandling](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Lär dig steg‑för‑steg hur du räta upp bilder i C# för att förbättra OCR‑noggrannheten och förbehandla dina projekt. {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/swedish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..b87c7a62 --- /dev/null +++ b/ocr/swedish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,265 @@ +--- +category: general +date: 2026-01-10 +description: Hur man räta upp en bild och förbättra OCR-resultat med Aspose.OCR. Lär + dig förbehandla bilden för OCR, ta bort brus från skanningen och känna igen text + från skanningen. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: sv +og_description: Hur man räta upp en bild och förbättrar OCR‑noggrannheten. Denna guide + visar hur man förbehandlar en bild för OCR, tar bort brus från skanningen och känner + igen text från skanningen med Aspose.OCR. +og_title: Hur man räta upp bild i C# – Komplett guide för OCR-förbehandling +tags: +- OCR +- C# +- Image Processing +title: Hur man räta upp bild i C# – Komplett guide för OCR-förbehandling +url: /sv/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man räta upp bild i C# – Komplett OCR‑förbehandlingsguide + +Har du någonsin undrat **hur man räta upp bild** filer innan du matar dem till en OCR‑motor? Du är inte ensam. Skannade dokument är ofta snedställda, brusiga eller har låg kontrast, och det stör alla textigenkänningsförsök. + +I den här handledningen går vi igenom ett komplett, körbart exempel som **förbehandlar bild för OCR**, tar bort brus från skanningen och slutligen **läser text från skanningen** med hjälp av Aspose.OCR‑biblioteket. I slutet har du en tydlig bild av **hur man använder OCR** i C# samtidigt som koden hålls kort och enkel. + +> **Proffstips:** Även en liten rotation (5‑10°) kan sänka OCR‑noggrannheten med 30 % eller mer. Att räta upp bilden är det första steget du aldrig bör hoppa över. + +--- + +## Vad du behöver + +- **.NET 6+** (koden fungerar också på .NET Framework, men .NET 6 är den nuvarande LTS) +- **Aspose.OCR for .NET** – du kan hämta den från NuGet (`Install-Package Aspose.OCR`) +- En exempel‑TIFF/PNG/JPEG som är roterad eller brusig (vi använder `noisy_rotated.tif` i exemplet) +- Valfri IDE du föredrar – Visual Studio, Rider eller VS Code fungerar + +Det är allt. Inga extra bibliotek, inga externa tjänster. + +--- + +## Steg 1 – Läs in källbilden (Varför det är viktigt) + +Innan vi kan **räta upp bild** måste vi läsa in den i en Aspose `ImageStream`. Detta objekt abstraherar fil‑I/O och ger OCR‑motorn ett enhetligt gränssnitt. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Varför läsa först?* Eftersom alla efterföljande filter arbetar på en bild i minnet. Om filen inte kan läsas kollapsar hela pipeline‑kedjan. + +--- + +## Steg 2 – Bygg en förbehandlings‑pipeline (Räta upp + Denoisera + Kontrast) + +Ett robust OCR‑arbetsflöde kedjar vanligtvis flera filter. Här är där vi **förbehandlar bild för OCR** och, ännu viktigare, **hur man räta upp bild** automatiskt. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Varför dessa tre?** +- **DeskewFilter** löser problemet “hur man räta upp bild” automatiskt; du behöver inte gissa vinkeln. +- **DenoiseFilter** hanterar kravet “ta bort brus från skanningen”, vilket annars skapar fantomtecken. +- **ContrastBoostFilter** hjälper OCR‑motorn att skilja mörk text från en ljus bakgrund, ett klassiskt problem när du *förbehandlar bild för OCR*. + +--- + +## Steg 3 – Använd pipeline‑en (Se transformationen) + +Nu kör vi faktiskt filtren. Den returnerade `processedImage` är vad vi kommer att mata in i OCR‑motorn. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Om du öppnar `cleaned_output.tif` bör du märka att texten är rak, mindre kornig och med högre kontrast. Denna visuella kontroll är praktisk när du *tar bort brus från skanningen* och vill bekräfta att räta‑upp‑processen fungerade. + +--- + +## Steg 4 – Skapa och konfigurera OCR‑motorn (Hur man använder OCR) + +Med en ren bild i handen instansierar vi `OcrEngine`. Detta är kärnan i **hur man använder OCR** med Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Varför sätta `AutoPageSegmentation`?* Eftersom många skanningar innehåller tabeller eller flera kolumner. Att slå på den låter motorn dela sidan intelligent, vilket förbättrar det slutgiltiga resultatet av **läsa text från skanningen**. + +--- + +## Steg 5 – Kör igenkänningsprocessen (Slutligen läs texten) + +Nu är sanningsögonblicket: vi ber motorn att läsa texten. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Om allt gick smidigt kommer du att se ett rent textblock som matchar originaldokumentet. Det är belöningen för att korrekt **räta upp bild**, **ta bort brus** och **förbehandla bild för OCR**. + +--- + +## Steg 6 – Fullt fungerande exempel (Klar att kopiera‑klistra in) + +Nedan är det kompletta programmet, redo att kompileras. Byt bara ut filsökvägen så är du klar. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Förväntad utskrift** (avkortad för korthet): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Om utskriften ser förvrängd ut, dubbelkolla att källbilden inte är roterad mer än 30°, eller öka `DeskewFilter.MaxAngle`. + +--- + +## Vanliga frågor (Särskilda fall & variationer) + +| Fråga | Svar | +|----------|--------| +| **Vad händer om min skanning är roterad 45°?** | `DeskewFilter` begränsar till `MaxAngle`. Höj den (t.ex. `MaxAngle = 60`) eller förrotera bilden med ett grafikbibliotek innan du matar den till pipeline‑en. | +| **Kan jag bearbeta PDF‑filer sida‑för‑sida?** | Ja. Konvertera varje PDF‑sida till en bild (t.ex. med `Aspose.Pdf`) och kör samma pipeline på varje bitmap. | +| **Mitt dokument är på franska – måste jag ändra något?** | Ställ in `ocrEngine.Language = Language.French;` eller ladda ett eget språkpaket. Resten av pipeline‑en förblir densamma. | +| **Finns det ett sätt att behålla originalupplösningen?** | `PreprocessPipeline` arbetar på den ursprungliga bitmapen och bevarar DPI. Undvik bara att anropa `ImageStream.Resize` om du inte behöver skala ner för prestanda. | +| **Hur påverkar kontrastökning färgade skanningar?** | `ContrastBoostFilter` arbetar på varje kanal; den är säker för gråskalebilder eller färgbilder, men du kan också konvertera till gråskala först med `new GrayscaleFilter()`. | + +--- + +## Bildexempel (Visuell hjälp) + +![exempel på hur man räta upp bild](/images/deskew-example.png) + +*Bilden visar före/efter av en 12° roterad, brusig skanning som har räts upp och rengjorts.* + +--- + +## Slutsats + +Vi har gått igenom **hur man räta upp bild** med Aspose.OCR, demonstrerat en komplett **förbehandlings‑pipeline för OCR**, visat hur man **tar bort brus från skanningen**, och slutligen **läser text från skanningen** med några rader C#. Genom att kedja `DeskewFilter`, `DenoiseFilter` och `ContrastBoostFilter` får du en ren bitmap som låter OCR‑motorn göra sitt jobb utan att fastna i artefakter. + +Nästa steg? Prova att experimentera med olika filterstyrkor, lägg till ett `BinarizationFilter` för rent svart‑vitt resultat, eller mata den rengjorda bilden in i en efterföljande NLP‑pipeline. Samma mönster fungerar för kvitton, pass och historiska dokument lika väl. + +Har du fler frågor om **hur man använder OCR** i andra språk eller ramverk? Lägg en kommentar, 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/swedish/net/text-recognition/_index.md b/ocr/swedish/net/text-recognition/_index.md index fbefcc10..600a34cd 100644 --- a/ocr/swedish/net/text-recognition/_index.md +++ b/ocr/swedish/net/text-recognition/_index.md @@ -37,6 +37,9 @@ Effektivitet är nyckeln i .NET-applikationer, och Aspose.OCR är här för att Lås upp potentialen för OCR i .NET med Aspose.OCR. Extrahera text från PDF-filer utan ansträngning och integrera sömlöst i dina applikationer. Denna handledning ger en omfattande guide för att känna igen text i PDF-filer, vilket säkerställer en sömlös och effektiv integrationsupplevelse. +### [Skapa sökbar PDF från PNG i C# – Komplett guide](./create-searchable-pdf-from-png-in-c-complete-guide/) +Lär dig steg-för-steg hur du konverterar PNG-bilder till sökbara PDF-filer i C# med Aspose.OCR. + ## Identifiera tabell i OCR-bildigenkänning Navigera i komplexiteten med att känna igen tabeller i OCR-bildigenkänning med Aspose.OCR för .NET. Vår omfattande guide ger dig möjlighet att låsa upp den fulla potentialen hos Aspose.OCR, vilket säkerställer korrekt och effektiv tabelligenkänning i dina applikationer. Lyft dina projekt med den branschledande OCR-lösningen. @@ -55,9 +58,19 @@ Förbättra dina .NET-applikationer med Aspose.OCR för effektiv bildtextigenkä Lås upp potentialen för OCR i .NET med Aspose.OCR. Extrahera text från PDF-filer utan ansträngning. Ladda ner nu för en sömlös integrationsupplevelse. ### [Identifiera tabell i OCR-bildigenkänning](./recognize-table/) Lås upp potentialen hos Aspose.OCR för .NET med vår omfattande guide om att känna igen tabeller i OCR-bildigenkänning. +### [Hur du kör OCR i C# – Komplett guide med Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Lär dig köra OCR i C# med Aspose OCR i en komplett steg-för-steg-guide. +### [Hur du kör OCR i C# – Extrahera arabisk text från PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Lär dig att använda Aspose.OCR för .NET för att extrahera arabisk text från PNG-bilder med enkla steg. +### [Extrahera text från bild med Aspose OCR – Komplett C#-guide](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Lär dig steg-för-steg hur du extraherar text från bilder med Aspose OCR i C#. +### [Extrahera text från bild i C# – Komplett Aspose OCR-guide](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +### [Känn igen text från bild i C# – Komplett guide till OCR och JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Lär dig steg-för-steg hur du extraherar text från bilder i C# och får resultat i JSON-format med 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/swedish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/swedish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..92b93f35 --- /dev/null +++ b/ocr/swedish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-01-10 +description: Skapa sökbar PDF från PNG med C#. Lär dig hur du konverterar bild till + PDF, extraherar text från PNG och OCR‑ar bild i C# i en enkel handledning. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: sv +og_description: Skapa en sökbar PDF från PNG med C#. Denna guide visar hur du konverterar + en bild till PDF, extraherar text från PNG och OCR:ar bilden i C# med Aspose. +og_title: Skapa sökbar PDF från PNG i C# – Steg för steg +tags: +- Aspose OCR +- C# +- PDF/A +title: Skapa sökbar PDF från PNG i C# – Komplett guide +url: /sv/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Skapa sökbar PDF från PNG i C# – Komplett guide + +Behöver du **create searchable pdf** från en PNG‑fil i C#? Du är inte ensam—många utvecklare stöter på detta hinder när de vill att deras skannade bilder både ska vara visningsbara **och** text‑sökbara. I den här tutorialen går vi igenom hela kedjan: **convert image to pdf**, kör OCR för att **extract text from png**, och sparar slutligen allt som ett **PDF/A‑2b**‑kompatibelt sökbart dokument. + +När du är klar har du ett enda, återanvändbart kodsnutt som du kan klistra in i vilket .NET‑projekt som helst, plus ett antal praktiska tips som sparar dig huvudvärk senare. Inga externa tjänster, bara Aspose OCR‑biblioteket och några rader C#. + +> **Prerequisites** +> * .NET 6+ (or .NET Framework 4.7.2+). +> * Visual Studio 2022 or any C#‑compatible IDE. +> * A valid Aspose OCR license (or a free trial). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Skapa sökbar PDF från PNG med C#"} + +## Steg 1 – Installera och referera Aspose OCR för C# + +Först och främst: du behöver Aspose OCR‑NuGet‑paketet. Öppna din terminal (eller Package Manager Console) och kör: + +```bash +dotnet add package Aspose.OCR +``` + +Om du föredrar GUI‑gränssnittet, högerklicka på ditt projekt → **Manage NuGet Packages…** → sök efter *Aspose.OCR* och installera den senaste stabila versionen. + +Varför detta bibliotek? Det stödjer **convert png to pdf**, hanterar flersidiga bilder och kan leverera PDF/A‑2b direkt—perfekt för att skapa en **searchable pdf** som följer arkiveringsstandarder. + +> **Pro tip:** Registrera din licens tidigt i `Program.cs` för att undvika evalueringsvattenstämpeln. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Steg 2 – Ladda PNG och kör OCR (extract text from png) + +Nu laddar vi källbilden. Hjälpfunktionen `ImageStream.FromFile` döljer filsystemdetaljer och fungerar med alla stödda rasterformat. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +Vid detta tillfälle har motorn **extracted text from png** och lagrat det internt. Du kan även inspektera den råa texten via `ocrEngine.Text`, vilket är praktiskt för felsökning eller loggning. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **What if the image is multi‑page?** +> Aspose OCR treats each page as a separate layer. Just call `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` and the engine will iterate automatically. + +## Steg 3 – Konfigurera PDF/A‑2b‑alternativ (create searchable pdf) + +För att omvandla OCR‑resultatet till en **searchable pdf** måste vi instruera Aspose hur utdata ska paketeras. PDF/A‑2b är den optimala lösningen för långsiktig bevarande och garanterar att textlagret är sökbart. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Varför bädda in originalbilden? Vissa efterlevnadskontroller kräver att den visuella representationen matchar den ursprungliga skanningen. Denna flagga gör filen till en sann **convert image to pdf**‑operation samtidigt som den bevarar sökbar text. + +## Steg 4 – Spara resultatet och verifiera (convert png to pdf) + +Till sist skriver vi utdatafilen. Samma `Save`‑metod fungerar för vilken sökväg du än anger. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Öppna den resulterande `output.pdf` i Adobe Reader eller någon PDF‑visare och försök söka efter ett ord som finns i den ursprungliga PNG‑filen. Om ordet markeras, grattis—du har lyckats **create searchable pdf** från en PNG! + +### Snabb verifieringsskript (valfritt) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Varför använda PDF/A‑2b för sökbara PDF‑filer? + +- **Archival safety:** PDF/A‑2b garanterar att filen kan renderas på samma sätt årtionden framöver. +- **Regulatory compliance:** Många branscher (juridik, medicin, finans) kräver PDF/A för arkivering. +- **Searchability:** Det inbäddade OCR‑textlagret gör dokumentet indexerbart av skrivbords‑sökverktyg. + +Om du inte behöver den extra efterlevnadsbördan kan du ta bort raden med `PdfAStandard` och helt enkelt använda `new PdfSaveOptions()`—utdata blir fortfarande sökbar, bara inte PDF/A‑2b. + +## Vanliga fallgropar & hur man undviker dem + +| Symptom | Trolig orsak | Åtgärd | +|---------|--------------|-----| +| Ingen sökbar text visas | `ocrEngine.Recognize()` anropas aldrig eller misslyckas tyst | Säkerställ att bildsökvägen är korrekt och att licensen är registrerad. | +| PDF är enorm (10 + MB) | Original‑PNG är högupplöst och `EmbedOriginalImage` är true | Skala ner bilden innan OCR eller sätt `EmbedOriginalImage = false`. | +| Texten är förvrängd | Språk upptäcks inte automatiskt | Sätt `ocrEngine.Language = "eng";` (eller ditt mål‑språk) innan `Recognize()`. | + +## Fullt fungerande exempel (Klar att kopiera‑klistra in) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Kör programmet, öppna `output.pdf` och försök söka efter ord du vet finns i `input.png`. Om allt stämmer har du just bemästrat **convert image to pdf**‑arbetsflödet och lärt dig hur man **ocr image c#**‑stil. + +## Nästa steg & relaterade ämnen + +* **Batch processing:** Loopa över en mapp med PNG‑filer och slå ihop resultaten till en enda PDF. +* **Alternative output formats:** Aspose OCR kan också generera DOCX, TXT eller sökbar PDF/A‑1b. +* **Performance tuning:** Använd `ocrEngine.RecognitionMode = RecognitionMode.Fast` för stora volymer där absolut noggrannhet inte är kritisk. +* **Other libraries:** Om du har en stram budget, utforska Tesseract .NET—men du förlorar det inbyggda PDF/A‑stödet. + +--- + +### TL;DR + +Vi visade dig hur du **create searchable pdf** från en PNG med Aspose OCR i C#. Stegen är: + +1. Installera Aspose OCR (`dotnet add package Aspose.OCR`). +2. Ladda PNG‑filen och kör `ocrEngine.Recognize()` (**extract text from png**). +3. Konfigurera `PdfSaveOptions` för PDF/A‑2b (**convert image to pdf** & **convert png to pdf**). +4. Spara filen och verifiera det sökbara lagret. + +Ge det ett försök, justera alternativen, så har du snart en robust pipeline för att omvandla vilken skannad bild som helst till en arkiveringsklar, sökbar PDF. 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/swedish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/swedish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..efc40f58 --- /dev/null +++ b/ocr/swedish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: Extrahera text från bild med Aspose OCR i C#. Lär dig hur du konverterar + text från skannade dokument med batchbearbetning och sparar resultaten. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: sv +og_description: Extrahera text från bild med Aspose OCR i C#. Denna handledning visar + hur man konverterar text i skannade dokument med batchbearbetning. +og_title: Extrahera text från bild i C# – Komplett Aspose OCR-guide +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Extrahera text från bild i C# – Komplett Aspose OCR-guide +url: /sv/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrahera text från bild – Komplett Aspose OCR-guide + +Har du någonsin behövt **extrahera text från bild** men varit osäker på var du ska börja? Du är inte ensam; många utvecklare stöter på den muren när de hanterar skannade PDF‑filer, fler‑sidiga TIFF‑filer eller foto‑baserade kvitton. Den goda nyheten är att med Aspose OCR kan du **konvertera skannad dokumenttext** på bara några få rader C#. + +I den här handledningen går vi igenom ett verkligt scenario: att ta en fler‑sidig TIFF, köra batch‑OCR på varje sida och skriva en enda textfil som innehåller varje sidas innehåll. I slutet har du en färdig‑att‑köra konsolapp, förstår varför varje steg är viktigt och vet hur du kan justera flödet för kantfall som lösenordsskyddade bilder eller anpassade språkpaket. + +## Förutsättningar + +- .NET 6.0 SDK eller senare (koden fungerar även med .NET Core och .NET Framework) +- Visual Studio 2022 (eller någon annan editor du föredrar) +- En Aspose OCR‑licensfil (eller så kan du använda gratis utvärderingsläge) +- En fler‑sidig bildfil (t.ex. `multipage.tif`) placerad i en mapp du kan referera till + +Inga ytterligare NuGet‑paket krävs förutom `Aspose.OCR`; vi installerar det i första steget. + +## Steg 1 – Installera Aspose  OCR och sätt upp projektet + +För att börja, skapa ett nytt konsolprojekt och hämta Aspose  OCR‑biblioteket. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Proffstips:** Om du har en licensfil (`Aspose.OCR.lic`), kopiera den till projektets rot. Biblioteket kommer automatiskt att plocka upp den vid körning. + +Varför detta steg? Att installera paketet ger dig åtkomst till `BatchProcessor`, `OcrEngine` och andra praktiska klasser som abstraherar bort låg‑nivå bildhantering. Det säkerställer också att du använder de senaste OCR‑algoritmerna som Aspose levererar. + +## Steg 2 – Ladda den fler‑sidiga bilden med BatchProcessor + +`BatchProcessor` är designad för exakt detta scenario: att iterera över varje sida i en fler‑sidig bild utan att du måste dela filerna manuellt. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` läser alla sidor till minnet och exponerar dem via `batchProcessor.Pages`. Varje sidobjekt känner till sitt nummer (`ocrPage.Number`) som vi senare kommer att använda för tydliga rubriker. + +## Steg 3 – Förbered en StringBuilder för att samla resultat + +Vi vill ha en enda textfil som innehåller varje sidas OCR‑utdata, separerade med rubriker. `StringBuilder` är det mest effektiva sättet att sammanfoga strängar i en loop. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Varför en `StringBuilder`? Att concatenera strängar med `+` i en loop skulle allokera en ny sträng vid varje iteration, vilket försämrar prestandan—särskilt med stora dokument. + +## Steg 4 – Iterera över varje sida, kör OCR och lägg till resultat + +Nu är kärnan i handledningen: loopa genom varje sida, känna igen text och lagra den med en sidmarkör. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Varför en ny `OcrEngine` per sida?** Vissa utvecklare återanvänder en enda motor och ändrar dess `Image`‑egenskap, men det kan behålla språkinställningar eller tidigare resultat, vilket leder till subtila buggar. Att instansiera en ny motor garanterar en ren start. + +### Hantera vanliga kantfall + +- **Tomma sidor:** Om en sida inte innehåller någon igenkännbar text, kommer `ocrEngine.Text` att vara en tom sträng. Du kanske vill infoga en platshållare som “(No text detected)”. +- **Språkväljning:** Som standard använder Aspose OCR engelska. För att bearbeta tyska eller franska, sätt `ocrEngine.Language = Language.German;` innan du anropar `Recognize()`. +- **Prestandatips:** För enorma TIFF‑filer kan du aktivera `ocrEngine.UseParallelProcessing = true;` för att utnyttja flera kärnor. + +## Steg 5 – Skriv det kombinerade resultatet till en textfil + +Till sist, spara den samlade strängen till disk. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Den resulterande `multipage_result.txt` kommer att se ut ungefär så här: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Du har nu **extraherat text från bild** och effektivt **konverterat skannad dokumenttext** till ett sökbart, redigerbart format. + +## Bonus – Visuell översikt (Bild‑alt‑text) + +Nedan är ett enkelt flödesdiagram som illustrerar processen. +*Alt‑text:* “Diagram som visar hur man extraherar text från bild med Aspose OCR batch‑behandling i C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Om du publicerar den här handledningen på en statisk webbplats, ersätt platshållaren med en faktisk SVG‑ eller PNG‑fil.)* + +## Vanliga frågor + +**Fungerar detta med PDF‑filer?** +Ja, Aspose OCR kan läsa PDF‑sidor som bilder. Du behöver bara konvertera PDF‑filen till bilder först, eller använda `PdfDocument` från `Aspose.PDF` och skicka varje sidas rasteriserade bild till `OcrEngine`. + +**Vad händer om min TIFF är lösenordsskyddad?** +`BatchProcessor` hanterar inte kryptering direkt. Dekryptera filen med ett bibliotek som `Aspose.Imaging` innan du skickar den till OCR‑pipeline:n. + +**Kan jag få ut JSON istället för vanlig text?** +Absolut. Ersätt `StringBuilder`‑logiken med en JSON‑serializer (t.ex. `System.Text.Json`) och lagra varje sidas text under en nyckel `pageNumber`. + +## Fullt fungerande exempel + +Här är det kompletta programmet som du kan kopiera‑klistra in i `Program.cs`. Det inkluderar alla using‑direktiv, felhantering och kommentarer. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Kör programmet med: + +```bash +dotnet run +``` + +Du bör se ett konsolmeddelande som bekräftar framgång, och utdatafilen kommer att innehålla de sammanslagna OCR‑resultaten. + +## Slutsats + +Vi har just demonstrerat ett praktiskt sätt att **extrahera text från bild** med Aspose OCR, och omvandla vilken fler‑sidig skannad fil som helst till vanlig, sökbar text. Genom att utnyttja `BatchProcessor` och en ren per‑sidig `OcrEngine`‑uppsättning kan du på ett pålitligt sätt **konvertera skannad dokumenttext** samtidigt som kodbasen hålls enkel och underhållbar. + +Känn dig fri att experimentera: prova olika språk, byt till JSON‑utdata, eller integrera denna logik i ett webb‑API som bearbetar uppladdningar i realtid. Kärnmönstret förblir detsamma—ladda, känna igen, samla och spara. + +Har du fler frågor om OCR, Aspose‑licensiering eller hantering av massiva dokumentbuntar? Lämna en kommentar nedan eller kolla in Asposes officiella dokumentation för djupare insikter. 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/swedish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/swedish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..0d23a68c --- /dev/null +++ b/ocr/swedish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-01-10 +description: Extrahera text från bild med Aspose OCR i C#. Lär dig hur du laddar en + bild för OCR, känner igen hindi‑text och kör OCR‑igenkänning i några enkla steg. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: sv +og_description: Extrahera text från bild med Aspose OCR i C#. Följ den här steg‑för‑steg‑guiden + för att ladda bild för OCR, känna igen hindi‑text och köra OCR‑igenkänning. +og_title: Extrahera text från bild med Aspose OCR – Komplett C#‑guide +tags: +- Aspose OCR +- C# +- Image Processing +title: Extrahera text från bild med Aspose OCR – Komplett C#‑guide +url: /sv/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrahera text från bild med Aspose OCR – Komplett C#‑guide + +Har du någonsin behövt **extrahera text från bild** men varit osäker på vilket bibliotek du ska välja? Du är inte ensam—många utvecklare stöter på samma hinder när de först tar sig an OCR i .NET. Den goda nyheten är att Aspose OCR gör hela processen förvånansvärt smidig, även när du arbetar med komplexa skript som hindi. + +I den här handledningen går vi igenom allt du behöver för att **ladda bild för OCR**, **känna igen hindi‑text** och **köra OCR‑igenkänning** i C#. När du är klar har du en färdig konsolapp som skriver ut den extraherade texten direkt på skärmen. + +## Vad du kommer att bygga + +Vi skapar ett litet konsolprogram som: + +1. Pekar OCR‑motorn mot en mapp som innehåller språkmodeller. +2. Stänger av automatiska nedladdningar—praktiskt i låsta miljöer. +3. Väljer hindi som målspråk. +4. Laddar en JPEG (eller PNG) som innehåller hindi‑text. +5. Kör igenkännings‑pipeline:n. +6. Skriver den resulterande strängen till konsolen. + +Inga externa tjänster, inga moln‑nycklar, bara ren on‑premise OCR. + +## Förutsättningar + +- **.NET 6.0** eller senare (koden fungerar även på .NET Framework 4.7+). +- **Aspose.OCR for .NET** NuGet‑paket installerat. + ```bash + dotnet add package Aspose.OCR + ``` +- En mapp som heter `OcrResources` och som innehåller hindi‑språkmodellen (`hin.traineddata`). + Du kan ladda ner den från Aspose OCR‑nedladdningssidan och placera den i `YOUR_DIRECTORY/OcrResources`. +- En bildfil (`input.jpg`) med tydlig hindi‑text. + För illustration, föreställ dig ett foto av en skylt som visar “स्वागत है”. + +> **Proffstips:** Håll bildens upplösning över 300 dpi; lägre upplösningar kan leda till missade tecken. + +--- + +## Steg 1: Peka OCR‑motorn mot dina resurser – *extrahera text från bild* + +Det första Aspose OCR behöver är platsen för sina språkmodeller. Om du hoppar över detta kommer motorn att försöka ladda ner filerna automatiskt—något du kanske inte vill i ett säkrat nätverk. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Varför detta är viktigt:* Genom att sätta `ResourcesPath` säkerställer du att motorn laddar rätt tränade data lokalt, vilket snabbar upp första körningen och eliminerar oväntad nätverkstrafik. + +--- + +## Steg 2: Inaktivera automatisk resurshämtning – *ladda bild för OCR* + +I många företagsmiljöer är utgående internetåtkomst blockerad. Aspose OCR respekterar en flagga som hindrar den från att försöka hämta saknade filer i farten. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Om du glömmer den här raden och hindi‑modellen saknas kommer motorn att kasta ett undantag som ser ut så här: “Unable to download required resource”. Att hålla flaggan `false` ger dig ett tydligt, deterministiskt fel som du själv kan hantera. + +--- + +## Steg 3: Välj språk – *känna igen hindi‑text* + +Aspose OCR stödjer dussintals språk, men du måste tala om vilket du vill använda. Hindi identifieras med `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Vad händer om du behöver flera språk?* Du kan sätta `Language = OcrLanguage.AutoDetect` för att låta motorn gissa, men auto‑detect är långsammare och kan ibland misslyckas med blandade skript. För ren hindi är explicit val det säkraste alternativet. + +--- + +## Steg 4: Ladda din bild – *ladda bild för OCR* + +Nu ger vi motorn bilden vi vill läsa. Aspose erbjuder en bekväm hjälpfunktion `ImageStream.FromFile` som döljer de underliggande `System.Drawing`‑beroendena. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Om filsökvägen är felaktig kommer Aspose att kasta ett `FileNotFoundException`. En snabb kontroll med `File.Exists` innan den här raden kan spara dig en debug‑session. + +--- + +## Steg 5: Kör OCR‑motorn – *kör OCR‑igenkänning* + +När allt är konfigurerat startar vi äntligen igenkänningsprocessen. Detta anrop är synkront och blockerar tills texten är extraherad. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Bakom kulisserna utför Aspose flera steg: förbehandling (räta upp, brusreducering), segmentering, teckenklassificering och slutligen språk‑specifik efterbehandling. Det tunga lyftet sker inom detta enda metodanrop. + +--- + +## Steg 6: Skriv ut den extraherade texten – *extrahera text från bild* + +Resultatet finns i egenskapen `Text` på motorn. Vi skriver helt enkelt ut det till konsolen, men du kan också lagra det i en databas, skicka det via ett API eller föra in det i en annan NLP‑pipeline. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Förväntad utskrift** (förutsatt att bilden innehåller “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +Om du ser förvrängda tecken, dubbelkolla att hindi‑modellen är korrekt placerad och att bilden inte är överkomprimerad. + +--- + +## Fullt fungerande exempel + +Nedan är hela programmet som du kan kopiera‑klistra in i ett nytt konsolprojekt (`dotnet new console`). Byt ut `YOUR_DIRECTORY` mot den faktiska sökvägen på din maskin. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Tips:** Om du planerar att bearbeta många bilder i en loop, skapa en enda `OcrEngine` och återanvänd den—det minskar initieringskostnaden. + +--- + +## Hantera vanliga fallgropar + +| Problem | Varför det händer | Snabb lösning | +|---------|-------------------|---------------| +| **Tom utskrift** | Fel språkmodell eller lågkvalitativ bild. | Verifiera `ResourcesPath`, öka bildens DPI, eller prova `ocrEngine.Image = ImageStream.FromFile(..., true)` för att aktivera automatisk förbättring. | +| **Undantag: Resurs ej hittad** | Saknad hindi‑`.traineddata`. | Ladda ner hindi‑modellen från Aspose, placera den i `OcrResources`, och säkerställ att filnamnet är `hin.traineddata`. | +| **Skräptecken** | Kodningsfel vid utskrift till konsol. | Ställ in konsolens utmatningskodning: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Prestandaproblem** | Stora bilder bearbetas utan skalning. | Skala ner bilden till maxbredd/‑höjd 2000 px innan du skickar den till OCR. | + +--- + +## Nästa steg & relaterade ämnen + +- **Batch‑bearbetning:** Lägg in koden i en `foreach`‑loop för att hantera en hel mapp med bilder. +- **Olika språk:** Byt `OcrLanguage.Hindi` mot `OcrLanguage.English`, `OcrLanguage.Arabic` osv. +- **Utskriftsformat:** Istället för `Console.WriteLine`, skriv till en textfil (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Integration med ASP.NET Core:** Exponera en API‑endpoint som tar emot en bilduppladdning och returnerar den extraherade texten som JSON. + +Alla dessa utökningar följer samma mönster—konfigurera motorn, ladda en bild, kör igenkänning och konsumera resultatet. + +--- + +## Slutsats + +Vi har just visat hur man **extraherar text från bild** med Aspose OCR i C#. Guiden täckte varje steg du behöver för att **ladda bild för OCR**, **känna igen hindi‑text** och **köra OCR‑igenkänning**—allt i en självständig konsolapp. + +Prova med dina egna bilder, experimentera med olika språk, och anpassa gärna snippet‑en för webbtjänster eller bakgrundsjobb. Kärnidén är densamma: ange resurser, välj språk, mata in en bild och läs `Text`‑egenskapen. + +Om du stöter på problem, kolla tabellen med felsökning ovan eller lämna en kommentar. Lycka till med kodningen, och må dina OCR‑resultat alltid vara kristallklara! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/swedish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..f6ab66a8 --- /dev/null +++ b/ocr/swedish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-01-10 +description: Hur man kör OCR på en bild med Aspose OCR i C#. Lär dig att extrahera + text från en bild, köra OCR på en bild och ladda bild för OCR med GPU‑acceleration. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: sv +og_description: Hur man kör OCR på en bild med Aspose OCR. Denna handledning visar + hur man extraherar text från en bild, kör OCR på bilden och laddar bilden för OCR + på ett effektivt sätt. +og_title: Hur man kör OCR i C# – Fullständig steg‑för‑steg‑guide +tags: +- OCR +- C# +- Aspose +title: Hur man kör OCR i C# – Komplett guide med Aspose OCR +url: /sv/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man kör OCR i C# – Komplett guide med Aspose OCR + +Har du någonsin undrat **hur man kör OCR** på ett foto och får ut texten utan att dra i håret? Du är inte ensam. Oavsett om du digitaliserar fakturor, skannar kvitton eller bara försöker göra en sökbar PDF, är förmågan att extrahera text från en bild ett dagligt behov för många utvecklare. + +I den här handledningen går vi igenom ett praktiskt, end‑to‑end‑exempel som visar **hur man kör OCR på bild**‑filer med Aspose OCR‑biblioteket, komplett med GPU‑acceleration för hastighet. I slutet kommer du exakt att veta hur du laddar bild för OCR, justerar minnesanvändning och får rena ren‑text‑resultat — allt på några minuter kod. + +## Vad du kommer att lära dig + +- Hur man initierar Aspose OCR‑motorn i C# +- Hur man **laddar bild för OCR** från disk eller en ström +- Hur man aktiverar GPU‑acceleration och begränsar GPU‑minne +- Hur man **extraherar text från bild** och verifierar resultatet +- Vanliga fallgropar (GPU‑modul saknas, minnesgränser) och snabba lösningar + +Ingen tidigare erfarenhet av Aspose OCR krävs; bara en fungerande .NET‑miljö och en exempelbild. + +--- + +## Så kör du OCR på en bild med Aspose OCR + +Det första du behöver är ett tydligt, körbart kodsnutt som gör hela jobbet. Nedan är det fullständiga programmet som du kan kopiera, klistra in och köra direkt. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Förväntad output** (förutsatt att exempelbilden innehåller frasen “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Proffstips:** Om du inte ser någon text, dubbelkolla att GPU‑modulen är installerad och att bildsökvägen är korrekt. Metoden `ImageStream.FromFile` kastar ett tydligt undantag om filen inte kan hittas. + +--- + +## Extrahera text från bild med GPU‑acceleration + +Varför bry sig om GPU:n alls? OCR enbart på CPU fungerar, men kan vara smärtsamt långsam på stora eller högupplösta bilder. Att aktivera GPU‑acceleration (steg 2 ovan) överlåter det tunga arbetet till ditt grafikkort, som kan bearbeta tusentals pixlar per sekund. + +### När man använder GPU + +- **Batch‑behandling** – skanna dussintals fakturor på en gång. +- **Högupplösta skanningar** – allt över 300 dpi. +- **Realtime‑appar** – som en mobilskanner som behöver omedelbar återkoppling. + +Om din miljö saknar ett kompatibelt GPU, sätt helt enkelt `EnableGpuAcceleration = false;` så återgår motorn automatiskt till CPU‑läge. + +--- + +## Kör OCR på bild – Ladda bilden korrekt + +Att ladda bilden är **ladda bild för OCR**‑steget som ofta får folk att snubbla. Aspose OCR förväntar sig en `ImageStream`, som kan skapas från en fil, en minnesström eller till och med en URL. Här är några varianter: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Edge case:** Vissa bilder innehåller en alfakanal (transparens) som förvirrar OCR‑motorn. Att ta bort alfa är enkelt: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Nu har du täckt de vanligaste sätten att **ladda bild för OCR**, vilket säkerställer att motorn får ett rent, stödd format varje gång. + +--- + +## Tips för att ladda bild för OCR effektivt + +1. **Ändra storlek på stora bilder** – OCR behöver inte ett 4 K‑foto; att skala ner till ~1500 px bredd snabbar upp processen utan att skada noggrannheten. +2. **Konvertera till gråskala** – minskar brus och kan förbättra igenkänning på lågkontrast‑skanningar. +3. **Förbehandla med deskew** – om din bild är sned, kan Aspose OCR:s inbyggda deskew aktiveras via `ocrEngine.Config.EnableDeskew = true;`. + +Dessa justeringar är särskilt praktiska när du **extraherar text från bild** i bulk. + +--- + +## Vanliga fallgropar & hur man åtgärdar dem + +| Symptom | Trolig orsak | Åtgärd | +|---------|--------------|-----| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU‑modulen är inte installerad | Installera Aspose OCR GPU‑paketet eller inaktivera GPU (`EnableGpuAcceleration = false`). | +| Tomt resultat | Fel bildsökväg eller format som inte stöds | Verifiera sökvägen i `ImageStream.FromFile`; försök ladda från bytes för att säkerställa att filen läses korrekt. | +| Minnesbristfel | GPU‑minnesgränsen är för låg för stor batch | Öka `GpuMemoryLimit` (t.ex. 2048) eller bearbeta bilder i mindre portioner. | +| Förvrängda tecken | Bilden har mycket brus eller låg kontrast | Förbehandla: binarisera, avlägsna prickar eller öka DPI före OCR. | + +--- + +## Fullt fungerande exempel – Sätt ihop allt + +Nedan är en kompakt konsolapp som innehåller de bästa metoderna vi diskuterade: GPU‑acceleration, minnesbegränsning, bildförbehandling och felhantering. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Att köra detta program skriver ut den rena texten som extraherats från din bild, vilket demonstrerar ett robust sätt att **extrahera text från bild** även när källan inte är perfekt. + +--- + +## Slutsats + +Vi har gått igenom **hur man kör OCR** på en bild med Aspose OCR, från att initiera motorn till att ladda bilden, aktivera GPU‑acceleration och hantera kantfall. Du har nu en solid, citeringsvärd referens som du kan kopiera‑klistra in i vilket .NET‑projekt som helst och börja **extrahera text från bild** omedelbart. + +Nästa steg? Prova att mata in PDF‑sidor, experimentera med olika språk (sätt `ocrEngine.Config.Language = "spa"` för spanska), eller integrera detta flöde i ett webb‑API som bearbetar uppladdningar i realtid. Himlen är gränsen, och med verktygen vi diskuterat är du väl rustad att tackla vilken OCR‑utmaning som helst. + +Lycklig kodning, och må din text alltid vara ren och din OCR snabb! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/swedish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..55bfe49e --- /dev/null +++ b/ocr/swedish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-01-10 +description: Hur man kör OCR snabbt och extraherar arabisk text från en bild. Lär + dig att konvertera bild till text, läsa text från PNG och se hur man extraherar + text med Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: sv +og_description: Hur man kör OCR i C# och extraherar arabisk text från en PNG-bild. + Denna guide visar dig hur du konverterar bild till text och läser text från PNG + steg för steg. +og_title: Hur man kör OCR i C# – Extrahera arabisk text från PNG +tags: +- OCR +- C# +- Aspose +title: Hur man kör OCR i C# – Extrahera arabisk text från PNG +url: /sv/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man kör OCR i C# – Extrahera arabisk text från PNG + +Har du någonsin undrat **hur man kör OCR** på en bild som innehåller arabiska tecken? Du är inte ensam. Många utvecklare fastnar när de måste **extrahera arabisk text** från en PNG men inte vet vilket bibliotek som hanterar höger‑till‑vänster‑skript utan huvudvärk. + +I den här handledningen går vi igenom allt du behöver veta för att **konvertera bild till text**, **läsa text från PNG**, och slutligen **hur man extraherar text** med Aspose.OCR i en ren C#‑konsolapp. När du är klar har du ett färdigt program som skriver ut den arabiska strängen direkt i din terminal. + +## Vad du kommer att lära dig + +- Installera och referera Aspose.OCR‑paketet från NuGet. +- Konfigurera OCR‑motorn för stöd av arabiska. +- Ladda en PNG‑bild och köra igenkänningsprocessen. +- Hämta och visa den extraherade texten. +- Justera inställningar för bättre noggrannhet och hantera vanliga fallgropar. + +Ingen tidigare erfarenhet av OCR krävs, bara en grundläggande förståelse för C# och en .NET‑utvecklingsmiljö (Visual Studio, Rider eller `dotnet`‑CLI räcker). + +--- + +## Hur man kör OCR – Installera Aspose OCR + +### Steg 1: Lägg till Aspose.OCR‑paketet från NuGet + +Det första vi behöver är själva OCR‑biblioteket. Aspose.OCR är en kommersiell produkt, men den erbjuder en gratis provperiod som fungerar utmärkt för lärande. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Alternativt kan du öppna **NuGet Package Manager** i Visual Studio, söka efter **Aspose.OCR** och klicka på **Install**. + +> **Pro tip:** Om du planerar att använda biblioteket i en CI‑pipeline, lägg till flaggan `-v` för att låsa versionen, t.ex. `dotnet add package Aspose.OCR -v 23.10`. + +### Steg 2: Skapa ett nytt konsolprojekt (om du inte redan har ett) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Nu har du en ny `Program.cs`‑fil klar för vår kod. + +--- + +## Extrahera arabisk text – Skriva OCR‑koden + +Nedan är det kompletta, färdiga programmet. Spara det som `Program.cs` (eller ersätt den automatiskt genererade filen). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Varför varje rad är viktig + +- **`OcrEngine`**: Den centrala klassen som koordinerar bildladdning, språkval och igenkänning. +- **`Language = OcrLanguage.Arabic`**: Arabiska använder ett höger‑till‑vänster‑skript och unika tecken; genom att sätta språket talar du om för motorn att använda rätt teckensnittsmodeller. +- **`ImageStream.FromFile`**: Hanterar PNG, JPEG, BMP och många andra format. Om du någonsin behöver läsa från en `MemoryStream` (t.ex. en uppladdad fil), ersätt detta anrop därefter. +- **`Recognize()`**: Utför det tunga arbetet – pixelanalys, segmentering och teckenklassificering. +- **`ocrEngine.Text`**: Den slutgiltiga Unicode‑strängen, klar för vidare bearbetning, lagring eller visning. + +### Förväntad utskrift + +Om `arabic_sample.png` innehåller frasen “مرحبا بالعالم” (Hello World) kommer konsolen att skriva ut: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Om utskriften ser förvrängd ut, dubbelkolla att bilden är tydlig, att språket är satt till Arabiska och att OCR‑motorns version matchar dokumentationen. + +--- + +## Konvertera bild till text – Finjustera noggrannheten + +Standardinställningarna fungerar för de flesta rena skanningar, men verkliga bilder kräver ofta lite extra omsorg. + +| Inställning | Vad den gör | När du ska använda den | +|------------|-------------|------------------------| +| `ocrEngine.Config.Preprocess = true` | Aktiverar automatisk binarisering och brusreducering. | Skannade dokument med **skuggor**. | +| `ocrEngine.Config.Deskew = true` | Rotera bilden för att korrigera lätt lutning. | Fotografi tagna i vinkeln. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Behandlar hela bilden som ett **block** med text. | Enkla bildtexter **eller** enradiga etiketter. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Begränsar igenkänning till enbart arabiska tecken. | Minskar falska positiva på blandade språk‑sidor. | + +Du kan lägga till dessa rader precis efter att du skapat motorn: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Läs text från PNG – Hantera olika bildkällor + +Ibland finns PNG‑filen i en databas eller kommer från en webbförfrågan. Här är en snabb variant som läser från en `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Resten av flödet är identiskt, vilket betyder att **hur man extraherar text** förblir konsekvent oavsett källa. + +--- + +## Hur man extraherar text – Avancerade alternativ & kantfall + +### 1. Fler‑sidiga PDF‑ eller TIFF‑filer + +Om du behöver OCR:a ett dokument med flera sidor, loopa över varje sida: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Note:** Du behöver `Aspose.PDF`‑paketet för detta kodexempel. + +### 2. Automatisk språkdetection + +Aspose.OCR erbjuder också auto‑detect, men det är långsammare. Om du är osäker på om bilden innehåller arabiska eller ett annat skript, aktivera detta: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +Motorn provar varje språkmodell och väljer den bästa matchen. + +### 3. Prestandatips + +- **Återanvänd `OcrEngine`**‑objektet för flera bilder; att skapa en ny instans varje gång ger extra overhead. +- **Kör parallellt** endast om du har separata motorinstanser per **tråd** – att dela en instans orsakar race‑conditions. + +--- + +## Slutsats + +Vi har gått igenom **hur man kör OCR** i C# från början till slut, visat hur man **extraherar arabisk text**, **konverterar bild till text**, **läser text från PNG**, och svarat på **hur man extraherar text** i en rad olika **scenarier**. Exempelkoden är komplett, självständig och klar att klistra in i vilket .NET‑konsolprojekt som helst. + +Nästa steg? Prova att **byta** `OcrLanguage.Arabic` mot **Koreanska** eller **Serbiska kyrilliska** för att se bibliotekets flerspråkiga kraft. Experimentera med förbehandlingsflaggorna **för att öka noggrannheten** på brusiga skanningar, eller **integrera** OCR‑rutinen i ett **web‑API** så att **användare** kan **ladda upp** bilder och få **omedelbara** textresultat. + +Lycka till med kodandet, och må dina OCR‑resultat alltid vara **kristallklara**! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/swedish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..d2c1303b --- /dev/null +++ b/ocr/swedish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,296 @@ +--- +category: general +date: 2026-01-10 +description: Lär dig hur du känner igen text från en bild, extraherar textkoordinater + och konverterar kvitto till JSON med Aspose OCR i C#. Steg‑för‑steg‑handledning. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: sv +og_description: Känn igen text från bild i C# med Aspose OCR. Den här guiden visar + hur du extraherar text, får koordinater och konverterar kvitto till JSON. +og_title: igenkänna text från bild – Fullständig C# OCR-handledning +tags: +- OCR +- C# +- Aspose +title: igenkänna text från bild i C# – Komplett guide till OCR och JSON +url: /sv/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# känna igen text från bild – Fullständig C# OCR‑handledning + +Har du någonsin behövt känna igen text från en bild men varit osäker på vilket bibliotek du ska välja? Du är inte ensam. I många verkliga appar – utgiftsspårare, kvittoskannrar eller dokumentarkiv – är pålitlig textutvinning det första hindret. + +I den här handledningen går vi igenom **hur man extraherar text**, hämtar dess avgränsningsrutor och slutligen **konverterar kvitto till JSON** med Aspose.OCR för .NET. När du är klar har du ett självständigt C#‑projekt som tar ett foto av ett kvitto och levererar en prydlig JSON‑fil med förtroendescore och koordinater. + +## Vad du behöver + +Innan vi sätter igång, se till att du har följande på din maskin: + +- **.NET 6.0 SDK** (eller någon senare version). Äldre ramverk fungerar också, men .NET 6 är den optimala versionen för moderna bibliotek. +- **Visual Studio 2022** eller VS Code med C#‑tillägget. +- **Aspose.OCR for .NET** NuGet‑paket (`Aspose.OCR` och `Aspose.OCR.Output`). Du kan installera det via Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- En exempel‑kvittobild (t.ex. `receipt.jpg`) placerad i en mapp som du senare refererar till. + +Det är allt – inga extra SDK:er, inga inhemska binärer, bara ren hanterad kod. + +## Steg 1: Skapa ett nytt konsolprojekt + +Först och främst, skapa en konsolapp. Det är det snabbaste sättet att testa OCR utan UI‑överbyggnad. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Proffstips:** Håll projektmappen prydlig; skapa en undermapp som heter `Resources` och lägg `receipt.jpg` där. Det gör sökvägshanteringen enkel. + +## Steg 2: Ladda kvittobilden + +Nu **känner vi igen text från bild**. Det första steget är att peka OCR‑motorn på filen. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Varför omsluter vi laddningen med en enkel existenskontroll? För i produktion hanterar du ofta användaruppladdningar som kan saknas eller vara korrupta. Att fånga problemet tidigt sparar dig från kryptiska undantag senare. + +## Steg 3: Utför OCR – **recognize text from image** + +Med bilden i minnet ber vi Aspose **recognize text from image**. Denna operation är synkron och returnerar ett rikt resultatset. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Bakom kulisserna kör Aspose ett neuralt nätverk tränat på miljontals tecken. Motorn fyller `ocrEngine.Text`, `ocrEngine.RecognitionResult` och en samling `OcrRegion`‑objekt som innehåller koordinater. Det är exakt vad vi behöver för nästa steg. + +## Steg 4: **How to extract text** – Hämta den råa strängen + +Om du bara är intresserad av ren text (kanske för en snabb sökning) kan du hämta den direkt från motorn: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Du kommer att märka radbrytningar där OCR identifierade styckegränser. I många kvittoskannings‑scenarier räcker den råa strängen för att plocka ut totalbelopp, datum eller leverantörsnamn med enkla regex‑uttryck. + +## Steg 5: **extract text coordinates** – Avgränsningsrutor för varje ord + +Ofta behöver du veta *var* på bilden en viss text finns – till exempel för att markera totalbeloppet i ett UI. Aspose ger oss detta via `OcrRegion`‑objekt. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Observera att vi loopar över **extract text coordinates** för varje igenkänd segment. Koordinaterna är relativa till originalbilden, så du kan överlagra dem i en grafik‑canvas eller ett HTML‑``‑element. + +## Steg 6: **convert receipt to JSON** – Spara detaljerade resultat + +Nu kommer delen som binder ihop allt: vi vill ha en maskinläsbar struktur som inkluderar text, förtroendescore och avgränsningsrutor. Aspose levereras med `JsonSaveOptions` som gör detta enkelt. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Den resulterande filen ser ungefär ut så här (trimmad för korthet): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Du har nu ett **convert receipt to JSON**‑artefakt som kan matas in i downstream‑tjänster – tänk utgift‑rapport‑API:er, analys‑pipelines eller till och med ett enkelt UI som ritar rektanglar runt varje ord. + +## Fullt fungerande exempel + +När alla bitar sätts ihop, här är hela `Program.cs` som du kan kopiera och klistra in i ditt projekt: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Kör programmet (`dotnet run`) och observera konsolutdata. Öppna `Resources/receipt.json` för att verifiera strukturen. + +## Vanliga frågor & kantfall + +- **Vad händer om bilden är suddig?** + Aspose OCR fungerar bäst med 300 dpi eller högre. Om du får låga förtroendescore, överväg att applicera ett skärpande filter innan du skickar bilden till motorn. + +- **Kan jag känna igen flera språk?** + Ja. Sätt `ocrEngine.Language = Language.English | Language.Spanish;` innan du anropar `Recognize()`. + +- **Hur begränsar jag utdata till endast siffror (t.ex. totalbelopp)?** + När du har den rena texten, kör en regex som `\d+\.\d{2}` på `ocrEngine.Text`. Eftersom vi redan har koordinater kan du mappa den matchade strängen tillbaka till dess region för visuell markering. + +- **Är JSON‑formatet anpassningsbart?** + Klassen `JsonSaveOptions` exponerar ett antal flaggor. Om du behöver ett helt eget schema kan du iterera över `ocrEngine.RecognitionResult.Regions` och själv serialisera objekten med `System.Text.Json`. + +## Slutsats + +Vi har just demonstrerat hur man **recognize text from image** i C# med Aspose.OCR, **how to extract text**, hämtar **extract text coordinates**, och slutligen **convert receipt to JSON**. Hela flödet levereras i en enda, lättkörbar konsolapp, vilket gör den perfekt för prototyper eller som byggsten i större system. + +Nästa steg? Prova att mata in JSON‑filen i ett front‑end som ritar avgränsningsrutorna, eller koppla utdata till en utgift‑rapport‑tjänst. Du kan också experimentera med olika bildformat (PNG, TIFF) eller batch‑processa en mapp med kvitton. + +Har du fler frågor om OCR, Aspose eller JSON‑hantering? Lämna en kommentar nedan, och lycka till med kodandet! + +![Receipt image example for recognize text from image](receipt.jpg "Receipt image example") + +{{< /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/net/ocr-configuration/_index.md b/ocr/thai/net/ocr-configuration/_index.md index b8a87a31..a4e8d760 100644 --- a/ocr/thai/net/ocr-configuration/_index.md +++ b/ocr/thai/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ url: /th/net/ocr-configuration/ ปลดล็อกความสามารถ OCR อันทรงพลังด้วย Aspose.OCR สำหรับ .NET แยกข้อความจากรูปภาพได้อย่างลงตัว ### [OCROperation พร้อมรายการในการจดจำรูปภาพ OCR](./ocr-operation-with-list/) ปลดล็อกศักยภาพของ Aspose.OCR สำหรับ .NET ดำเนินการจดจำรูปภาพ OCR พร้อมรายการได้อย่างง่ายดาย เพิ่มประสิทธิภาพการทำงานและการดึงข้อมูลในแอปพลิเคชันของคุณ +### [อ่านทรัพยากรฝังใน .NET – คู่มือฉบับสมบูรณ์ในการตั้งค่าใบอนุญาต Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +เรียนรู้วิธีอ่านทรัพยากรฝังในแอป .NET และตั้งค่าใบอนุญาต Aspose อย่างครบถ้วน {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/thai/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..351d2ec7 --- /dev/null +++ b/ocr/thai/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,237 @@ +--- +category: general +date: 2026-01-10 +description: อ่านทรัพยากรที่ฝังไว้และตั้งค่าไลเซนส์ Aspose ใน C# เรียนรู้วิธีใช้ GetManifestResourceStream, + ฝังไฟล์ไลเซนส์, และดึงข้อมูล Assembly ที่กำลังทำงานของ .NET ในบทแนะนำเดียว. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: th +og_description: อ่านทรัพยากรที่ฝังไว้ใน .NET และตั้งค่าใบอนุญาต Aspose อย่างรวดเร็ว + คู่มือขั้นตอนโดยละเอียดครอบคลุม GetManifestResourceStream การฝังใบอนุญาต และการใช้ + assembly ที่กำลังทำงานอยู่ +og_title: อ่านทรัพยากรฝัง – ตั้งค่าใบอนุญาต Aspose ใน .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: อ่านทรัพยากรฝังใน .NET – คู่มือครบถ้วนสำหรับการตั้งค่าใบอนุญาต Aspose +url: /th/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# อ่านทรัพยากรฝัง – คู่มือฉบับสมบูรณ์สำหรับตั้งค่าใบอนุญาต Aspose + +เคยต้อง **อ่านทรัพยากรฝัง** ขณะทำงานและสงสัยว่าจะทำให้ไลบรารี Aspose OCR ของคุณได้รับใบอนุญาตโดยไม่ต้องกำหนดเส้นทางแบบฮาร์ด‑โค้ดหรือไม่? คุณไม่ได้เป็นคนเดียว ในหลายแอปพลิเคชันระดับองค์กร ไฟล์ใบอนุญาตจะอยู่ภายใน assembly ทำให้คุณไม่ต้องจัดส่งไฟล์เพิ่มเติมหรือกังวลเรื่องสิทธิ์ที่หายไป บทแนะนำนี้จะแสดงให้คุณเห็นวิธีอ่านทรัพยากรฝังและตั้งค่าใบอนุญาต Aspose โดยใช้เมธอด .NET `GetManifestResourceStream` + +เราจะเดินผ่านทุกขั้นตอนที่คุณต้องการ: ฝังไฟล์ `.lic` เข้าไป, ดึงออกด้วย `GetExecutingAssembly`, และสุดท้ายนำไปใช้กับคลาส `License` ของ Aspose OCR เมื่อเสร็จแล้วคุณจะได้โซลูชันที่เป็นอิสระและทำงานได้บนโปรเจกต์ .NET ใด ๆ — ไม่ต้องใช้ไฟล์ภายนอก + +## สิ่งที่คุณจะได้เรียนรู้ + +- **วิธีฝังไฟล์ใบอนุญาต** เข้าไปในโปรเจกต์ .NET เพื่อให้เป็นส่วนหนึ่งของ DLL ที่คอมไพล์ +- วิธีที่ถูกต้องในการ **ใช้ GetManifestResourceStream** เพื่ออ่านทรัพยากรฝังนั้น +- **ตั้งค่าใบอนุญาต Aspose** ผ่านโค้ดโดยไม่ต้องยุ่งกับระบบไฟล์ +- เคล็ดลับการจัดการกับปัญหาทั่วไป เช่น ชื่อทรัพยากรสะกดผิดหรือการตั้งค่า Build Action ที่หายไป +- ตัวอย่างโค้ดที่สมบูรณ์และรันได้ คุณสามารถนำไปวางในโซลูชันของคุณได้ทันที + +### ข้อกำหนดเบื้องต้น + +- .NET 6.0 หรือใหม่กว่า (โค้ดนี้ยังทำงานบน .NET Framework 4.x ได้เช่นกัน เพียงปรับไฟล์โปรเจกต์ให้เหมาะ) +- ติดตั้งแพคเกจ NuGet Aspose.OCR (`dotnet add package Aspose.OCR`) +- มีความคุ้นเคยพื้นฐานกับ C# และ Visual Studio (หรือ IDE ที่คุณชื่นชอบ) + +หากคุณมีทุกอย่างพร้อมแล้ว ยอดเยี่ยม — ไปเริ่มกันเลย + +## ขั้นตอนที่ 1: ฝังไฟล์ใบอนุญาต Aspose ลงใน Assembly ของคุณ + +สิ่งแรกที่คุณต้องมีคือไฟล์ใบอนุญาตจริง (`Aspose.OCR.lic`) แทนที่จะคัดลอกไฟล์ไว้ข้าง ๆ executable คุณจะฝังมันเป็น **resource** + +1. เพิ่มไฟล์ `.lic` เข้าไปในโปรเจกต์ (เช่น สร้างโฟลเดอร์ `Resources` แล้ววางไฟล์ไว้ที่นั่น) +2. ในคุณสมบัติของไฟล์ ตั้งค่า **Build Action** เป็น `Embedded Resource` + *เคล็ดลับ:* ให้โครงสร้างโฟลเดอร์เรียบง่าย ชื่อทรัพยากรเต็มจะเป็น `YourNamespace.Resources.Aspose.OCR.lic` + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +ทำไมต้องฝัง? เพราะตอนนี้ Assembly จะบรรจุใบอนุญาตไว้ภายในตัวเอง ลดความเสี่ยงของไฟล์หายบนเซิร์ฟเวอร์ผลิต + +## ขั้นตอนที่ 2: ดึงทรัพยากรฝังโดยใช้ GetExecutingAssembly + +เมื่อใบอนุญาตอยู่ใน DLL แล้ว คุณต้องมีวิธี **อ่านทรัพยากรฝัง** ขณะทำงาน คลาส `Assembly` ของ .NET มีเมธอดที่ทำได้ตรงนี้ + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +เมธอด `GetExecutingAssembly` จะคืนค่า Assembly ที่กำลังรันอยู่ — เหมาะสำหรับหาทรัพยากรที่อยู่เคียงคู่กับโค้ดของคุณ + +## ขั้นตอนที่ 3: เปิด Stream ของใบอนุญาตด้วย GetManifestResourceStream + +เมื่อมีอ้างอิง Assembly อยู่ในมือแล้ว คุณสามารถเรียก `GetManifestResourceStream` เมธอดนี้จะคืนค่า `Stream` ที่คุณสามารถส่งต่อให้ Aspose ได้โดยตรง + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +สังเกตว่าเราใช้ **using** แบบ null‑conditional (`using Stream?`) เพื่อให้สตรีมถูกกำจัดอัตโนมัติ หากชื่อไม่ถูกต้อง เราจะโยนข้อยกเว้นที่ชัดเจน — ช่วยหลีกเลี่ยงความล้มเหลวเงียบในภายหลัง + +## ขั้นตอนที่ 4: นำใบอนุญาตไปใช้กับ Aspose OCR + +คลาส `License` ของ Aspose ต้องการ `Stream` เรามีแล้ว ขั้นตอนสุดท้ายจึงง่ายมาก + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +เท่านี้! เอนจิน Aspose OCR ของคุณได้รับใบอนุญาตเต็มรูปแบบและพร้อมประมวลผลภาพโดยไม่มีลายน้ำทดลอง + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมที่พร้อมคัดลอก‑วาง แสดงกระบวนการทั้งหมด รวมถึง `using` ที่จำเป็น การจัดการข้อผิดพลาด และการเรียก OCR อย่างง่ายเพื่อพิสูจน์ว่าใบอนุญาตทำงาน + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### ผลลัพธ์ที่คาดหวัง + +เมื่อคุณรันโปรแกรมบนเครื่องที่มีใบอนุญาตฝังอย่างถูกต้อง คุณควรเห็น: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +หากไม่พบสตรีมของใบอนุญาต คอนโซลจะรายงานชื่อทรัพยากรที่หายไป เพื่อให้คุณตรวจสอบ **Build Action** และ namespace อีกครั้ง + +## ปัญหาที่พบบ่อยและวิธีหลีกเลี่ยง + +| ปัญหา | สาเหตุ | วิธีแก้ | +|-------|--------|--------| +| **ชื่อทรัพยากรไม่ตรงกัน** | .NET สร้างชื่อทรัพยากรจาก default namespace + เส้นทางโฟลเดอร์ | ใช้ `Assembly.GetManifestResourceNames()` เพื่อตรวจสอบชื่อที่มีอยู่และยืนยันสตริงที่ถูกต้อง | +| **ไฟล์ใบอนุญาตไม่ได้ตั้งเป็น Embedded Resource** | ค่า Build Action เริ่มต้นเป็น `Content` | เปลี่ยนเป็น `Embedded Resource` ในคุณสมบัติของไฟล์ | +| **รันจาก Assembly ที่ต่างกัน** | หากเรียกโค้ดจากคลาสไลบรารี `GetExecutingAssembly()` อาจคืนค่าไลบรารีแทน exe หลัก | ใช้ `Assembly.GetEntryAssembly()` หรือส่ง Assembly ที่ถูกต้องโดยตรง | +| **Stream ถูกกำจัดก่อนใช้** | ใช้บล็อก `using` ที่ปิดสตรีมเร็วเกินไป | เก็บ `using` ไว้รอบการเรียก `SetLicense` ตามที่แสดงข้างต้น | +| **เวอร์ชัน Aspose.OCR ไม่ตรงกัน** | เวอร์ชันใหม่อาจต้องรูปแบบใบอนุญาตที่ต่างกัน | ดาวน์โหลดใบอนุญาตล่าสุดจากบัญชี Aspose ของคุณและฝังใหม่ | + +## ใช้เทคนิคเดียวกันกับไฟล์ฝังอื่น ๆ + +รูปแบบ **อ่านทรัพยากรฝัง** แล้ว **ใช้ GetManifestResourceStream** ทำงานได้กับไฟล์ทุกประเภท: คอนฟิก JSON, รูปภาพ, หรือแม้แต่ DLL เนทีฟ เพียงปรับ `resourceName` และวิธีใช้สตรีมให้เหมาะ + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## ภาพรวมแบบภาพ + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*ข้อความแทนภาพ:* อ่านทรัพยากรฝัง – แผนภาพแสดงการฝัง, การดึงด้วย GetManifestResourceStream, และการนำใบอนุญาต Aspose ไปใช้ + +## สรุป + +เราได้ครอบคลุมวิธี **อ่านทรัพยากรฝัง** ใน Assembly ของ .NET ขั้นตอนที่แม่นยำในการ **ใช้ GetManifestResourceStream** และวิธีที่สะอาดในการ **ตั้งค่าใบอนุญาต Aspose** โดยไม่ต้องเปิดไฟล์บนดิสก์ การฝังใบอนุญาตช่วยลดปัญหาการจัดจำหน่ายและทำให้แอปของคุณพกพาได้ง่ายขึ้น + +## ต่อไปคุณควรทำอะไร? + +- **อัตโนมัติการอัปเดตใบอนุญาต:** เขียนสคริปต์ในขั้นตอนการสร้างที่แทนที่ไฟล์ `.lic` ฝังเมื่อคุณต่ออายุการสมัคร Aspose +- **รักษาความปลอดภัยของทรัพยากร:** พิจารณาเข้ารหัสใบอนุญาตก่อนฝังและถอดรหัสที่รันไทม์เพื่อเพิ่มการปกป้อง +- **สำรวจผลิตภัณฑ์ Aspose อื่น:** วิธีเดียวกันใช้ได้กับ Aspose.Words, Aspose.PDF ฯลฯ แต่ละตัวมีคลาส `License` ของตนเอง + +ลองทดลองดู — คุณอาจฝังหลายใบอนุญาตสำหรับโมดูลต่าง ๆ หรือเปลี่ยนเป็นการกำหนดชื่อทรัพยากรจากคอนฟิก การทำได้ไม่มีขีดจำกัด + +--- + +*Happy coding! หากเจออุปสรรคใด ๆ คอมเมนต์ด้านล่างหรือดูฟอรั่มของ 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/net/skew-angle-calculation/_index.md b/ocr/thai/net/skew-angle-calculation/_index.md index 2ebf1b3f..f55e0eef 100644 --- a/ocr/thai/net/skew-angle-calculation/_index.md +++ b/ocr/thai/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ url: /th/net/skew-angle-calculation/ ปลดปล่อยพลังของ Aspose.OCR สำหรับ .NET ซึ่งเป็นโซลูชันที่แข็งแกร่งสำหรับการจดจำรูปภาพ เรียนรู้วิธีการคำนวณมุมเอียงได้อย่างง่ายดาย ### [คำนวณมุมเอียงจาก URI ในการรับรู้ภาพ OCR](./calculate-skew-angle-from-uri/) สำรวจ Aspose.OCR สำหรับ .NET เพื่อคำนวณมุมเอียงในการจดจำรูปภาพ OCR ได้อย่างง่ายดาย ปรับปรุงโครงการของคุณด้วยความแม่นยำและมีประสิทธิภาพ +### [วิธีการ Deskew ภาพใน C# – คู่มือการเตรียม OCR อย่างสมบูรณ์](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +เรียนรู้ขั้นตอนการ Deskew ภาพด้วย C# เพื่อเพิ่มประสิทธิภาพการประมวลผล 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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/thai/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..9cc0f644 --- /dev/null +++ b/ocr/thai/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-01-10 +description: วิธีแก้การเอียงของภาพและปรับปรุงผลลัพธ์ OCR ด้วย Aspose.OCR เรียนรู้การเตรียมภาพล่วงหน้าสำหรับ + OCR, กำจัดสัญญาณรบกวนจากการสแกน, และจดจำข้อความจากการสแกน +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: th +og_description: วิธีแก้ไขการเอียงของภาพและเพิ่มความแม่นยำของ OCR คู่มือนี้แสดงวิธีการเตรียมภาพล่วงหน้าสำหรับ + OCR, กำจัดสัญญาณรบกวนจากการสแกน, และจดจำข้อความจากการสแกนโดยใช้ Aspose.OCR. +og_title: วิธีแก้ไขการเอียงของภาพใน C# – คู่มือการเตรียม OCR อย่างครบถ้วน +tags: +- OCR +- C# +- Image Processing +title: วิธีแก้ไขการเอียงของภาพใน C# – คู่มือการเตรียมการ OCR อย่างครบถ้วน +url: /th/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีแก้ไขการเอียงของภาพใน C# – คู่มือการเตรียม OCR อย่างครบถ้วน + +เคยสงสัยหรือไม่ว่า **how to deskew image** ไฟล์ก่อนนำเข้าไปยังเครื่อง OCR? คุณไม่ได้เป็นคนเดียว เอกสารที่สแกนมักจะเอียง, มีเสียงรบกวน, หรือคอนทราสต์ต่ำ, ซึ่งทำให้การจดจำข้อความใด ๆ ล้มเหลว + +ในบทแนะนำนี้ เราจะพาคุณผ่านตัวอย่างที่ทำงานได้เต็มรูปแบบที่ **preprocesses image for OCR**, ลบเสียงรบกวนจากการสแกน, และสุดท้าย **recognize text from scan** โดยใช้ไลบรารี Aspose.OCR. เมื่อจบคุณจะเข้าใจอย่างชัดเจนว่า **how to use OCR** ใน C# พร้อมกับโค้ดที่สั้นและกระชับ. + +> **เคล็ดลับ:** แม้การหมุนเล็กน้อย (5‑10°) ก็สามารถทำให้ความแม่นยำของ OCR ลดลง 30 % หรือมากกว่า การแก้ไขการเอียงเป็นขั้นตอนแรกที่คุณไม่ควรข้าม. + +--- + +## สิ่งที่คุณต้องเตรียม + +- **.NET 6+** (โค้ดทำงานบน .NET Framework ได้เช่นกัน, แต่ .NET 6 เป็น LTS ปัจจุบัน) +- **Aspose.OCR for .NET** – คุณสามารถดาวน์โหลดได้จาก NuGet (`Install-Package Aspose.OCR`) +- ไฟล์ตัวอย่าง TIFF/PNG/JPEG ที่ถูกหมุนหรือมีเสียงรบกวน (เราจะใช้ `noisy_rotated.tif` ในตัวอย่าง) +- IDE ใดก็ได้ที่คุณชอบ – Visual Studio, Rider, หรือ VS Code ก็ใช้ได้ + +แค่นั้นแหละ ไม่ต้องใช้ไลบรารีเพิ่มเติมหรือบริการภายนอก + +## ขั้นตอนที่ 1 – โหลดภาพต้นฉบับ (ทำไมถึงสำคัญ) + +ก่อนที่เราจะสามารถ **deskew image** เราต้องอ่านไฟล์เข้าสู่ Aspose `ImageStream`. วัตถุนี้ทำหน้าที่เป็นชั้นนามธรรมของการ I/O ของไฟล์และให้เครื่อง OCR อินเทอร์เฟซที่สอดคล้องกัน. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*ทำไมต้องโหลดก่อน?* เพราะฟิลเตอร์ต่อ ๆ ไปทำงานบนภาพในหน่วยความจำ หากไฟล์ไม่สามารถอ่านได้ ทั้งกระบวนการจะล่ม. + +## ขั้นตอนที่ 2 – สร้าง Pipeline การเตรียมการ (Deskew + Denoise + Contrast) + +กระบวนการ OCR ที่แข็งแรงมักจะเชื่อมต่อหลายฟิลเตอร์ ที่นี่เราจะ **preprocess image for OCR** และที่สำคัญกว่า **how to deskew image** โดยอัตโนมัติ. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**ทำไมถึงเลือกสามอย่างนี้?** +- **DeskewFilter** แก้ปัญหา “how to deskew image” โดยอัตโนมัติ; คุณไม่ต้องคาดเดามุม. +- **DenoiseFilter** จัดการกับความต้องการ “remove noise from scan”, ซึ่งหากไม่ทำจะทำให้เกิดอักขระเทียม. +- **ContrastBoostFilter** ช่วยให้เครื่อง OCR แยกแยะข้อความสีเข้มจากพื้นหลังสีอ่อน, ปัญหาที่พบบ่อยเมื่อคุณ *preprocess image for OCR*. + +## ขั้นตอนที่ 3 – ใช้งาน Pipeline (ดูการแปลงสภาพ) + +ตอนนี้เราจะเรียกใช้ฟิลเตอร์จริง ๆ `processedImage` ที่ได้จะเป็นภาพที่เราจะส่งให้เครื่อง OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +หากคุณเปิด `cleaned_output.tif` คุณจะสังเกตว่าข้อความตรง, มีเม็ดสีน้อยลง, และคอนทราสต์สูงขึ้น การตรวจสอบภาพนี้เป็นประโยชน์เมื่อคุณ *remove noise from scan* และต้องการยืนยันว่าการแก้ไขการเอียงทำงานสำเร็จ. + +## ขั้นตอนที่ 4 – สร้างและกำหนดค่า OCR Engine (How to Use OCR) + +เมื่อมีภาพที่เรียบร้อยในมือ เราจะสร้างอินสแตนซ์ของ `OcrEngine`. นี่คือหัวใจของ **how to use OCR** กับ Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*ทำไมต้องตั้งค่า `AutoPageSegmentation`?* เพราะการสแกนหลาย ๆ ครั้งมีตารางหรือหลายคอลัมน์ การเปิดใช้งานทำให้เครื่องแยกหน้าอย่างฉลาด, ปรับปรุงผลลัพธ์ของ **recognize text from scan**. + +## ขั้นตอนที่ 5 – เรียกใช้กระบวนการจดจำ (สุดท้ายจดจำข้อความ) + +นี่คือช่วงเวลาที่สำคัญ: เราขอให้เครื่องอ่านข้อความ. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +หากทุกอย่างทำงานได้อย่างราบรื่น คุณจะเห็นบล็อกข้อความที่สะอาดและตรงกับเอกสารต้นฉบับ นั่นคือผลลัพธ์ของการ **deskewing image**, **removing noise**, และ **preprocess image for OCR** อย่างถูกต้อง. + +## ขั้นตอนที่ 6 – ตัวอย่างทำงานเต็มรูปแบบ (พร้อมคัดลอก‑วาง) + +ด้านล่างเป็นโปรแกรมเต็มรูปแบบพร้อมคอมไพล์ เพียงเปลี่ยนเส้นทางไฟล์และคุณก็พร้อมใช้งาน. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**ผลลัพธ์ที่คาดหวัง** (ตัดทอนเพื่อความกระชับ): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +หากผลลัพธ์ดูเป็นอักษรผิดพลาด ตรวจสอบว่าภาพต้นฉบับไม่ได้หมุนเกิน 30°, หรือเพิ่มค่า `DeskewFilter.MaxAngle`. + +## คำถามที่พบบ่อย (กรณีขอบและความหลากหลาย) + +| คำถาม | คำตอบ | +|----------|--------| +| **What if my scan is rotated 45°?** | `DeskewFilter` จำกัดที่ `MaxAngle`. เพิ่มค่า (เช่น `MaxAngle = 60`) หรือหมุนภาพล่วงหน้าด้วยไลบรารีกราฟิกก่อนส่งเข้า pipeline. | +| **Can I process PDFs page‑by‑page?** | ได้. แปลงแต่ละหน้าของ PDF เป็นภาพ (เช่น ใช้ `Aspose.Pdf`) แล้วรัน pipeline เดียวกันบนแต่ละบิตแมพ. | +| **My document is in French – do I need to change anything?** | ตั้งค่า `ocrEngine.Language = Language.French;` หรือโหลดแพ็คภาษาแบบกำหนดเอง. ส่วนที่เหลือของ pipeline ยังคงเหมือนเดิม. | +| **Is there a way to keep the original resolution?** | `PreprocessPipeline` ทำงานบนบิตแมพต้นฉบับ, รักษา DPI. เพียงหลีกเลี่ยงการเรียก `ImageStream.Resize` เว้นแต่คุณต้องการลดขนาดเพื่อประสิทธิภาพ. | +| **How does contrast boosting affect colored scans?** | `ContrastBoostFilter` ทำงานบนแต่ละช่อง; ปลอดภัยสำหรับภาพระดับสีเทาหรือสี, แต่คุณสามารถแปลงเป็นระดับสีเทาก่อนด้วย `new GrayscaleFilter()`. | + +## ตัวอย่างภาพ (ช่วยในการมองเห็น) + +![ตัวอย่างการแก้ไขการเอียงของภาพ](/images/deskew-example.png) + +*รูปภาพแสดงภาพก่อน/หลังของการสแกนที่หมุน 12° และมีเสียงรบกวนที่ถูกแก้ไขการเอียงและทำความสะอาดแล้ว.* + +## สรุป + +เราได้อธิบาย **how to deskew image** ด้วย Aspose.OCR, แสดง pipeline **preprocess image for OCR** แบบเต็ม, แสดงวิธี **remove noise from scan**, และสุดท้าย **recognize text from scan** ด้วยไม่กี่บรรทัดของ C#. ด้วยการเชื่อมต่อ `DeskewFilter`, `DenoiseFilter`, และ `ContrastBoostFilter` คุณจะได้บิตแมพที่เรียบร้อยซึ่งทำให้เครื่อง OCR ทำงานได้โดยไม่ติดขัดจากศิลปะ. + +ขั้นตอนต่อไป? ลองทดลองปรับความแรงของฟิลเตอร์ต่าง ๆ, เพิ่ม `BinarizationFilter` เพื่อให้ได้ผลลัพธ์สีดำ‑ขาวบริสุทธิ์, หรือส่งภาพที่ทำความสะอาดเข้าสู่ pipeline NLP ต่อไป. รูปแบบเดียวกันใช้ได้กับใบเสร็จ, หนังสือเดินทาง, และเอกสารประวัติศาสตร์เช่นกัน. + +มีคำถามเพิ่มเติมเกี่ยวกับ **how to use 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/net/text-recognition/_index.md b/ocr/thai/net/text-recognition/_index.md index 7001ea59..9857f1b6 100644 --- a/ocr/thai/net/text-recognition/_index.md +++ b/ocr/thai/net/text-recognition/_index.md @@ -55,9 +55,21 @@ url: /th/net/text-recognition/ ปลดล็อกศักยภาพของ OCR ใน .NET ด้วย Aspose.OCR แยกข้อความจาก PDF ได้อย่างง่ายดาย ดาวน์โหลดทันทีเพื่อประสบการณ์การบูรณาการที่ราบรื่น ### [จดจำตารางในการจดจำรูปภาพ OCR](./recognize-table/) ปลดล็อกศักยภาพของ Aspose.OCR สำหรับ .NET ด้วยคำแนะนำที่ครอบคลุมเกี่ยวกับการจดจำตารางในการจดจำรูปภาพ OCR +### [วิธีรัน OCR ใน C# – คู่มือฉบับสมบูรณ์กับ Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +เรียนรู้วิธีการใช้งาน Aspose OCR ใน C# ตั้งแต่การตั้งค่าไปจนถึงการประมวลผล OCR อย่างเต็มรูปแบบ +### [วิธีรัน OCR ใน C# – ดึงข้อความอาหรับจาก PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +เรียนรู้วิธีใช้ Aspose.OCR ใน C# เพื่อดึงข้อความอาหรับจากไฟล์ PNG อย่างแม่นยำและง่ายดาย +### [ดึงข้อความจากภาพด้วย Aspose OCR – คู่มือฉบับสมบูรณ์สำหรับ C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +เรียนรู้ขั้นตอนเต็มที่ในการใช้ Aspose OCR กับ C# เพื่อดึงข้อความจากภาพอย่างแม่นยำและง่ายดาย +### [ดึงข้อความจากภาพใน C# – คู่มือ Aspose OCR ฉบับสมบูรณ์](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +เรียนรู้ขั้นตอนเต็มที่ในการใช้ Aspose OCR กับ C# เพื่อดึงข้อความจากภาพอย่างแม่นยำและง่ายดาย +### [สร้าง PDF ที่ค้นหาได้จาก PNG ใน C# – คู่มือฉบับสมบูรณ์](./create-searchable-pdf-from-png-in-c-complete-guide/) +เรียนรู้วิธีสร้าง PDF ที่สามารถค้นหาได้จากไฟล์ PNG ด้วย Aspose.OCR ใน C# อย่างละเอียดและง่ายดาย +### [จดจำข้อความจากภาพใน C# – คู่มือฉบับสมบูรณ์เกี่ยวกับ OCR และ JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/thai/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..39f22f35 --- /dev/null +++ b/ocr/thai/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,224 @@ +--- +category: general +date: 2026-01-10 +description: สร้าง PDF ที่ค้นหาได้จาก PNG ด้วย C# เรียนรู้วิธีแปลงภาพเป็น PDF ดึงข้อความจาก + PNG และทำ OCR ภาพด้วย C# ในบทเรียนง่าย ๆ ครั้งเดียว. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: th +og_description: สร้าง PDF ที่ค้นหาได้จาก PNG ด้วย C# คู่มือนี้แสดงวิธีแปลงภาพเป็น + PDF ดึงข้อความจาก PNG และทำ OCR ภาพด้วย C# ด้วย Aspose. +og_title: สร้าง PDF ที่ค้นหาได้จาก PNG ด้วย C# – ขั้นตอนโดยละเอียด +tags: +- Aspose OCR +- C# +- PDF/A +title: สร้าง PDF ที่ค้นหาได้จาก PNG ด้วย C# – คู่มือฉบับสมบูรณ์ +url: /th/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สร้าง PDF ที่ค้นหาได้จาก PNG ใน C# – คู่มือฉบับสมบูรณ์ + +ต้องการ **สร้าง PDF ที่ค้นหาได้** จากไฟล์ PNG ใน C# หรือไม่? คุณไม่ได้อยู่คนเดียว—นักพัฒนาหลายคนเจออุปสรรคนี้เมื่ออยากให้ภาพสแกนของพวกเขาเป็นทั้งที่ดูได้ **และ** ค้นหาได้ด้วยข้อความ ในบทเรียนนี้เราจะเดินผ่านกระบวนการทั้งหมด: **แปลงภาพเป็น PDF**, รัน OCR เพื่อ **ดึงข้อความจาก PNG**, และสุดท้ายบันทึกทุกอย่างเป็นเอกสาร **PDF/A‑2b** ที่รองรับการค้นหา + +เมื่อเสร็จคุณจะได้โค้ดสั้น ๆ ที่สามารถนำไปใช้ซ้ำได้ในโปรเจกต์ .NET ใด ๆ พร้อมกับเคล็ดลับปฏิบัติที่ช่วยลดปัญหาในภายหลัง ไม่ต้องพึ่งบริการภายนอก เพียงแค่ใช้ไลบรารี Asp Aspose OCR และบรรทัดโค้ด C# ไม่กี่บรรทัด + +> **ข้อกำหนดเบื้องต้น** +> * .NET 6+ (หรือ .NET Framework 4.7.2+) +> * Visual Studio 2022 หรือ IDE ที่รองรับ C# ใด ๆ +> * ใบอนุญาต Aspose OCR ที่ถูกต้อง (หรือทดลองใช้ฟรี) + +--- + +![Create searchable PDF example](image-placeholder.png){alt="สร้าง PDF ที่ค้นหาได้จาก PNG ด้วย C#"} + +## ขั้นตอนที่ 1 – ติดตั้งและอ้างอิง Aspose OCR สำหรับ C# + +สิ่งแรกที่ต้องทำคือการติดตั้งแพ็กเกจ NuGet ของ Aspose OCR เปิดเทอร์มินัล (หรือ Package Manager Console) แล้วรัน: + +```bash +dotnet add package Aspose.OCR +``` + +ถ้าคุณชอบใช้ GUI ให้คลิกขวาที่โปรเจกต์ → **Manage NuGet Packages…** → ค้นหา *Aspose.OCR* แล้วติดตั้งเวอร์ชันล่าสุดที่เสถียร + +ทำไมต้องใช้ไลบรารีนี้? มันรองรับ **แปลง PNG เป็น PDF**, จัดการกับภาพหลายหน้า, และสามารถส่งออกเป็น PDF/A‑2b ได้โดยตรง—เหมาะอย่างยิ่งสำหรับการสร้าง **PDF ที่ค้นหาได้** ที่สอดคล้องกับมาตรฐานการเก็บรักษา + +> **เคล็ดลับมืออาชีพ:** ลงทะเบียนใบอนุญาตของคุณตั้งแต่ต้นใน `Program.cs` เพื่อหลีกเลี่ยงลายน้ำการประเมินผล + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## ขั้นตอนที่ 2 – โหลด PNG และรัน OCR (ดึงข้อความจาก PNG) + +ต่อไปเราจะโหลดภาพต้นฉบับ ตัวช่วย `ImageStream.FromFile` จะจัดการรายละเอียดของระบบไฟล์และทำงานกับรูปแบบแรสเตอร์ที่รองรับทั้งหมด + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +ในขั้นตอนนี้เอนจินได้ **ดึงข้อความจาก PNG** แล้วเก็บไว้ภายใน คุณสามารถตรวจสอบข้อความดิบผ่าน `ocrEngine.Text` ซึ่งเป็นประโยชน์สำหรับการดีบักหรือบันทึก + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **ถ้าภาพเป็นหลายหน้า?** +> Aspose OCR ถือแต่ละหน้าว่าเป็นเลเยอร์แยกกัน เพียงเรียก `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` แล้วเอนจินจะวนลูปโดยอัตโนมัติ + +## ขั้นตอนที่ 3 – ตั้งค่า PDF/A‑2b Options (สร้าง PDF ที่ค้นหาได้) + +เพื่อแปลงผลลัพธ์ OCR ให้เป็น **PDF ที่ค้นหาได้** เราต้องบอก Aspose ว่าจะบรรจุผลลัพธ์อย่างไร PDF/A‑2b เป็นจุดที่เหมาะสมสำหรับการเก็บรักษาระยะยาวและรับประกันว่าชั้นข้อความจะสามารถค้นหาได้ + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +ทำไมต้องฝังภาพต้นฉบับ? บางการตรวจสอบความสอดคล้องต้องการให้ภาพที่แสดงตรงกับสแกนต้นฉบับ ธงนี้ทำให้ไฟล์เป็นการ **แปลงภาพเป็น PDF** ที่แท้จริงพร้อมกับรักษาข้อความที่ค้นหาได้ + +## ขั้นตอนที่ 4 – บันทึกผลลัพธ์และตรวจสอบ (แปลง PNG เป็น PDF) + +สุดท้าย เราจะเขียนไฟล์ผลลัพธ์ วิธี `Save` เดียวกันทำงานกับเส้นทางใดก็ได้ที่คุณระบุ + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +เปิด `output.pdf` ที่ได้ใน Adobe Reader หรือโปรแกรมอ่าน PDF ใด ๆ แล้วลองค้นหาคำที่ปรากฏใน PNG ดั้งเดิม หากคำดังกล่าวถูกไฮไลต์ ยินดีด้วย—คุณได้ **สร้าง PDF ที่ค้นหาได้** จาก PNG สำเร็จแล้ว! + +### สคริปต์ตรวจสอบอย่างรวดเร็ว (ไม่บังคับ) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## ทำไมต้องใช้ PDF/A‑2b สำหรับ PDF ที่ค้นหาได้? + +* **ความปลอดภัยในการเก็บรักษา:** PDF/A‑2b รับประกันว่าไฟล์จะถูกแสดงผลแบบเดียวกันแม้หลายทศวรรษต่อมา +* **การปฏิบัติตามกฎระเบียบ:** หลายอุตสาหกรรม (กฎหมาย, การแพทย์, การเงิน) ต้องการ PDF/A สำหรับการบันทึกเอกสาร +* **การค้นหา:** ชั้นข้อความ OCR ที่ฝังอยู่ทำให้เอกสารสามารถทำดัชนีโดยเครื่องมือค้นหาเดสก์ท็อป + +หากคุณไม่ต้องการความสอดคล้องเพิ่มเติม สามารถลบบรรทัด `PdfAStandard` แล้วใช้ `new PdfSaveOptions()` ธรรมดาได้—ไฟล์ยังคงค้นหาได้ แต่จะไม่เป็น PDF/A‑2b + +## ข้อผิดพลาดทั่วไป & วิธีหลีกเลี่ยง + +| อาการ | สาเหตุที่เป็นไปได้ | วิธีแก้ | +|---------|--------------|-----| +| ไม่พบข้อความที่ค้นหาได้ | `ocrEngine.Recognize()` ไม่ได้ถูกเรียกหรือล้มเหลวโดยเงียบ | ตรวจสอบว่าเส้นทางไฟล์ถูกต้องและใบอนุญาตได้ลงทะเบียน | +| PDF มีขนาดใหญ่ (10 + MB) | PNG ต้นฉบับความละเอียดสูงและ `EmbedOriginalImage` ตั้งเป็น true | ลดขนาดภาพก่อน OCR หรือตั้ง `EmbedOriginalImage = false` | +| ข้อความอ่านไม่ออก | ไม่ได้ตรวจจับภาษาที่ต้องการอัตโนมัติ | ตั้ง `ocrEngine.Language = "eng";` (หรือภาษาที่ต้องการ) ก่อน `Recognize()` | + +## ตัวอย่างทำงานเต็มรูปแบบ (พร้อมคัดลอก‑วาง) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +รันโปรแกรม เปิด `output.pdf` แล้วลองค้นหาคำที่คุณรู้ว่ามีใน `input.png` หากทุกอย่างตรงกัน คุณก็เพิ่งทำความเข้าใจ **กระบวนการแปลงภาพเป็น PDF** และเรียนรู้วิธี **ocr image c#** อย่างเต็มที่ + +## ขั้นตอนต่อไป & หัวข้อที่เกี่ยวข้อง + +* **การประมวลผลเป็นชุด:** วนลูปโฟลเดอร์ของ PNG แล้วรวมผลลัพธ์เป็น PDF ไฟล์เดียว +* **รูปแบบผลลัพธ์ทางเลือก:** Aspose OCR ยังสามารถส่งออกเป็น DOCX, TXT หรือ searchable PDF/A‑1b ได้ +* **การปรับประสิทธิภาพ:** ใช้ `ocrEngine.RecognitionMode = RecognitionMode.Fast` สำหรับปริมาณงานมากที่ไม่ต้องการความแม่นยำสูงสุด +* **ไลบรารีอื่น:** หากงบประมาณจำกัด สามารถลอง Tesseract .NET—แต่จะเสียการสนับสนุน PDF/A ในตัว + +--- + +### TL;DR + +เราได้แสดงวิธี **สร้าง PDF ที่ค้นหาได้** จาก PNG ด้วย Aspose OCR ใน C# ขั้นตอนคือ: + +1. ติดตั้ง Aspose OCR (`dotnet add package Aspose.OCR`) +2. โหลด PNG แล้วรัน `ocrEngine.Recognize()` (**ดึงข้อความจาก PNG**) +3. ตั้งค่า `PdfSaveOptions` สำหรับ PDF/A‑2b (**แปลงภาพเป็น PDF** & **แปลง PNG เป็น PDF**) +4. บันทึกไฟล์และตรวจสอบชั้นข้อความที่ค้นหาได้ + +ลองทำ ปรับแต่งตัวเลือกต่าง ๆ แล้วคุณจะมีไพป์ไลน์ที่มั่นคงสำหรับการแปลงภาพสแกนใด ๆ ให้เป็น PDF ที่พร้อมเก็บรักษาและค้นหาได้อย่างง่ายดาย ขอให้สนุกกับการเขียนโค้ด! + +{{< /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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/thai/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..3dc1cb71 --- /dev/null +++ b/ocr/thai/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-01-10 +description: ดึงข้อความจากภาพโดยใช้ Aspose OCR ใน C# เรียนรู้วิธีแปลงข้อความจากเอกสารสแกนด้วยการประมวลผลแบบกลุ่มและบันทึกผลลัพธ์ +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: th +og_description: สกัดข้อความจากภาพด้วย Aspose OCR ใน C# บทเรียนนี้แสดงวิธีแปลงข้อความของเอกสารสแกนโดยใช้การประมวลผลแบบกลุ่ม +og_title: ดึงข้อความจากภาพใน C# – คู่มือ Aspose OCR ฉบับสมบูรณ์ +tags: +- OCR +- C# +- Aspose +- Image Processing +title: ดึงข้อความจากภาพใน C# – คู่มือ Aspose OCR ฉบับสมบูรณ์ +url: /th/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สกัดข้อความจากรูปภาพ – คู่มือ Aspose OCR ฉบับสมบูรณ์ + +เคยต้องการ **สกัดข้อความจากรูปภาพ** แต่ไม่รู้ว่าจะเริ่มต้นอย่างไรหรือไม่? คุณไม่ได้อยู่คนเดียว; นักพัฒนาหลายคนเจออุปสรรคเดียวกันเมื่อทำงานกับ PDF ที่สแกน, TIFF หลายหน้า, หรือใบเสร็จที่เป็นรูปถ่าย. ข่าวดีคือด้วย Aspose OCR คุณสามารถ **แปลงข้อความจากเอกสารที่สแกน** ได้ด้วยเพียงไม่กี่บรรทัดของ C#. + +ในบทแนะนำนี้เราจะเดินผ่านสถานการณ์จริง: รับไฟล์ TIFF หลายหน้า, รัน OCR แบบแบตช์บนแต่ละหน้า, และเขียนไฟล์ข้อความเดียวที่บรรจุเนื้อหาของทุกหน้า. เมื่อเสร็จคุณจะมีแอปคอนโซลที่พร้อมรัน, เข้าใจเหตุผลของแต่ละขั้นตอน, และรู้วิธีปรับเปลี่ยนกระบวนการสำหรับกรณีขอบเช่นรูปภาพที่มีรหัสผ่านหรือแพ็คเกจภาษาที่กำหนดเอง. + +## ข้อกำหนดเบื้องต้น + +- .NET 6.0 SDK หรือใหม่กว่า (โค้ดทำงานกับ .NET Core และ .NET Framework ด้วย) +- Visual Studio 2022 (หรือเครื่องมือแก้ไขที่คุณชอบ) +- ไฟล์ลิขสิทธิ์ Aspose OCR (หรือคุณสามารถใช้โหมดประเมินผลฟรี) +- ไฟล์รูปภาพหลายหน้า (เช่น `multipage.tif`) ที่วางไว้ในโฟลเดอร์ที่คุณอ้างอิงได้ + +ไม่มีแพ็กเกจ NuGet เพิ่มเติมที่จำเป็นนอกจาก `Aspose.OCR`; เราจะติดตั้งมันในขั้นตอนแรก. + +## ขั้นตอนที่ 1 – ติดตั้ง Aspose OCR และตั้งค่าโปรเจกต์ + +เริ่มต้นโดยสร้างโปรเจกต์คอนโซลใหม่และดึงไลบรารี Aspose OCR เข้ามา. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **เคล็ดลับ:** หากคุณมีไฟล์ลิขสิทธิ์ (`Aspose.OCR.lic`), ให้คัดลอกไปยังโฟลเดอร์รากของโปรเจกต์. ไลบรารีจะดึงไฟล์นี้โดยอัตโนมัติขณะรัน. + +ทำไมต้องทำขั้นตอนนี้? การติดตั้งแพ็กเกจทำให้คุณเข้าถึง `BatchProcessor`, `OcrEngine`, และคลาสที่มีประโยชน์อื่น ๆ ที่ช่วยซ่อนการจัดการภาพระดับล่าง. มันยังรับประกันว่าคุณใช้ алгоритм OCR ล่าสุดที่ Aspose จัดให้. + +## ขั้นตอนที่ 2 – โหลดรูปภาพหลายหน้าโดยใช้ BatchProcessor + +`BatchProcessor` ถูกออกแบบมาสำหรับสถานการณ์นี้โดยเฉพาะ: การวนซ้ำแต่ละหน้าของไฟล์หลายหน้าโดยที่คุณไม่ต้องแยกไฟล์ด้วยตนเอง. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` จะอ่านทุกหน้าเข้าหน่วยความจำและให้เข้าถึงผ่าน `batchProcessor.Pages`. แต่ละอ็อบเจ็กต์หน้าเก็บหมายเลขของมัน (`ocrPage.Number`) ซึ่งเราจะใช้ต่อไปเพื่อสร้างหัวข้อที่ชัดเจน. + +## ขั้นตอนที่ 3 – เตรียม StringBuilder เพื่อสะสมผลลัพธ์ + +เราต้องการไฟล์ข้อความเดียวที่บรรจุผลลัพธ์ OCR ของทุกหน้า, แยกด้วยหัวข้อ. `StringBuilder` เป็นวิธีที่มีประสิทธิภาพที่สุดในการต่อสตริงในลูป. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +ทำไมต้องใช้ `StringBuilder`? การต่อสตริงด้วย `+` ภายในลูปจะสร้างสตริงใหม่ทุกครั้ง, ทำให้ประสิทธิภาพลดลง—โดยเฉพาะกับเอกสารขนาดใหญ่. + +## ขั้นตอนที่ 4 – วนซ้ำแต่ละหน้า, รัน OCR, และเพิ่มผลลัพธ์ + +นี่คือหัวใจของบทแนะนำ: วนผ่านแต่ละหน้า, จดจำข้อความ, และบันทึกพร้อมเครื่องหมายหน้าหนังสือ. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**ทำไมต้องสร้าง `OcrEngine` ใหม่สำหรับแต่ละหน้า?** นักพัฒนาบางคนอาจใช้เอนจินเดียวและเปลี่ยนคุณสมบัติ `Image`, แต่การทำเช่นนั้นอาจเก็บการตั้งค่าภาษา หรือผลลัพธ์ก่อนหน้าไว้, ทำให้เกิดบั๊กที่ละเอียดอ่อน. การสร้างเอนจินใหม่ทุกครั้งรับประกันว่ามีสภาพแวดล้อมที่สะอาด. + +### การจัดการกรณีขอบที่พบบ่อย + +- **หน้าว่าง:** หากหน้าหนึ่งไม่มีข้อความที่สามารถจดจำได้, `ocrEngine.Text` จะเป็นสตริงว่าง. คุณอาจต้องใส่ตัวแทนเช่น “(ไม่พบข้อความ)”. +- **การเลือกภาษา:** โดยค่าเริ่มต้น Aspose OCR ใช้ภาษาอังกฤษ. หากต้องการประมวลผลภาษาเยอรมันหรือฝรั่งเศส, ตั้งค่า `ocrEngine.Language = Language.German;` ก่อนเรียก `Recognize()`. +- **เคล็ดลับประสิทธิภาพ:** สำหรับ TIFF ขนาดใหญ่, คุณสามารถเปิด `ocrEngine.UseParallelProcessing = true;` เพื่อใช้หลายคอร์. + +## ขั้นตอนที่ 5 – เขียนผลลัพธ์ที่รวมกันลงไฟล์ข้อความ + +สุดท้าย, บันทึกสตริงที่สะสมไว้ลงดิสก์. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +ไฟล์ `multipage_result.txt` ที่ได้จะมีลักษณะประมาณนี้: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +คุณได้ **สกัดข้อความจากรูปภาพ** และ **แปลงข้อความจากเอกสารที่สแกน** เป็นรูปแบบที่สามารถค้นหาและแก้ไขได้. + +## โบนัส – ภาพรวมเชิงภาพ (Alt Text) + +ด้านล่างเป็นแผนภาพกระบวนการอย่างง่ายที่แสดงขั้นตอนทั้งหมด. +*Alt text:* “แผนภาพแสดงวิธีสกัดข้อความจากรูปภาพโดยใช้การประมวลผลแบบแบตช์ของ Aspose OCR ใน C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(หากคุณกำลังเผยแพร่บทแนะนำนี้บนเว็บไซต์แบบสแตติก, ให้แทนที่ placeholder ด้วยไฟล์ SVG หรือ PNG จริง.)* + +## คำถามที่พบบ่อย + +**ทำงานกับไฟล์ PDF ได้หรือไม่?** +ใช่, Aspose OCR สามารถอ่านหน้าของ PDF เป็นภาพได้. คุณเพียงแค่ต้องแปลง PDF เป็นภาพก่อน, หรือใช้ `PdfDocument` จาก `Aspose.PDF` แล้วส่งภาพที่แรสเตอร์ไลซ์ของแต่ละหน้าให้ `OcrEngine`. + +**ถ้า TIFF ของฉันมีรหัสผ่านจะทำอย่างไร?** +`BatchProcessor` ไม่รองรับการถอดรหัสโดยตรง. ให้ถอดรหัสไฟล์ด้วยไลบรารีเช่น `Aspose.Imaging` ก่อนส่งต่อไปยังขั้นตอน OCR. + +**สามารถส่งออกเป็น JSON แทนข้อความธรรมดาได้หรือไม่?** +ได้เลย. แทนที่ตรรกะ `StringBuilder` ด้วยตัวแปลง JSON (เช่น `System.Text.Json`) และเก็บข้อความของแต่ละหน้าไว้ภายใต้คีย์ `pageNumber`. + +## ตัวอย่างทำงานเต็มรูปแบบ + +นี่คือโปรแกรมเต็มที่คุณสามารถคัดลอก‑วางลงใน `Program.cs`. มันรวมคำสั่ง `using` ทั้งหมด, การจัดการข้อผิดพลาด, และคอมเมนต์. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +รันโปรแกรมด้วยคำสั่ง: + +```bash +dotnet run +``` + +คุณควรเห็นข้อความในคอนโซลยืนยันความสำเร็จ, และไฟล์ผลลัพธ์จะมีข้อความ OCR ที่ต่อกันเรียบร้อย. + +## สรุป + +เราได้สาธิตวิธีการ **สกัดข้อความจากรูปภาพ** อย่างเป็นระบบด้วย Aspose OCR, เปลี่ยนไฟล์สแกนหลายหน้าให้เป็นข้อความธรรมดาที่ค้นหาได้. ด้วยการใช้ `BatchProcessor` และการตั้งค่า `OcrEngine` แยกต่อหน้า, คุณสามารถ **แปลงข้อความจากเอกสารที่สแกน** ได้อย่างเชื่อถือได้ พร้อมโค้ดที่เรียบง่ายและดูแลรักษาง่าย. + +ลองทดลองเพิ่มเติม: ใช้ภาษาต่าง ๆ, เปลี่ยนเป็นการส่งออกเป็น JSON, หรือรวมตรรกะนี้เข้าไปใน Web API ที่ประมวลผลไฟล์อัปโหลดแบบเรียลไทม์. รูปแบบหลักยังคงเหมือนเดิม—โหลด, จดจำ, สะสม, และบันทึก. + +มีคำถามเพิ่มเติมเกี่ยวกับ OCR, การลิขสิทธิ์ Aspose, หรือการจัดการชุดเอกสารขนาดใหญ่? แสดงความคิดเห็นด้านล่างหรือดูเอกสารอย่างเป็นทางการของ Aspose เพื่อข้อมูลเชิงลึกเพิ่มเติม. 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/thai/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/thai/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..64a4dfe7 --- /dev/null +++ b/ocr/thai/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-01-10 +description: ดึงข้อความจากภาพโดยใช้ Aspose OCR ใน C# เรียนรู้วิธีโหลดภาพสำหรับ OCR, + จดจำข้อความภาษาฮินดี, และทำการจดจำ OCR เพียงไม่กี่ขั้นตอนง่าย ๆ. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: th +og_description: ดึงข้อความจากภาพด้วย Aspose OCR ใน C# ตามคำแนะนำขั้นตอนต่อขั้นตอนเพื่อโหลดภาพสำหรับ + OCR, จดจำข้อความภาษาฮินดี, และทำการจดจำ OCR. +og_title: ดึงข้อความจากภาพด้วย Aspose OCR – คู่มือ C# ฉบับสมบูรณ์ +tags: +- Aspose OCR +- C# +- Image Processing +title: ดึงข้อความจากภาพด้วย Aspose OCR – คู่มือ C# ฉบับสมบูรณ์ +url: /th/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สกัดข้อความจากรูปภาพด้วย Aspose OCR – คู่มือ C# ฉบับสมบูรณ์ + +เคยต้องการ **สกัดข้อความจากรูปภาพ** แต่ไม่แน่ใจว่าจะเลือกไลบรารีใด? คุณไม่ได้อยู่คนเดียว—นักพัฒนาหลายคนเจออุปสรรคนี้เมื่อต้องทำ OCR ครั้งแรกใน .NET ข่าวดีคือ Aspose OCR ทำให้กระบวนการทั้งหมดง่ายดายอย่างน่าแปลกใจ แม้คุณจะต้องจัดการกับสคริปต์ที่ซับซ้อนเช่นภาษาฮินดี + +ในบทแนะนำนี้ เราจะพาคุณผ่านทุกขั้นตอนที่คุณต้องการเพื่อ **โหลดรูปภาพสำหรับ OCR**, **จดจำข้อความภาษาฮินดี**, และ **เรียกใช้การจดจำ OCR** ด้วย C#. เมื่อเสร็จสิ้น คุณจะได้แอปคอนโซลที่พร้อมรันซึ่งจะแสดงข้อความที่สกัดออกมาบนหน้าจอโดยตรง + +## สิ่งที่คุณจะสร้าง + +เราจะสร้างแอปคอนโซลขนาดเล็กที่: + +1. ชี้เครื่องมือ OCR ไปยังโฟลเดอร์ที่มีโมเดลภาษา +2. ปิดการดาวน์โหลดอัตโนมัติ—สะดวกสำหรับสภาพแวดล้อมที่จำกัด +3. เลือกภาษาฮินดีเป็นภาษาที่ต้องการ +4. โหลดไฟล์ JPEG (หรือ PNG) ที่มีข้อความภาษาฮินดี +5. ดำเนินการ pipeline การจดจำ +6. เขียนสตริงผลลัพธ์ไปยังคอนโซล + +ไม่มีบริการภายนอก, ไม่มีคีย์คลาวด์, เพียง OCR บนเครื่องเท่านั้น + +## ข้อกำหนดเบื้องต้น + +- **.NET 6.0** หรือรุ่นต่อไป (โค้ดนี้ยังทำงานบน .NET Framework 4.7+ ด้วย) +- **Aspose.OCR for .NET** NuGet package ที่ติดตั้งแล้ว. + ```bash + dotnet add package Aspose.OCR + ``` +- โฟลเดอร์ชื่อ `OcrResources` ที่มีโมเดลภาษาฮินดี (`hin.traineddata`). + คุณสามารถดาวน์โหลดได้จากหน้าดาวน์โหลด Aspose OCR แล้ววางไว้ใน `YOUR_DIRECTORY/OcrResources` +- ไฟล์รูปภาพ (`input.jpg`) ที่มีข้อความภาษาฮินดีชัดเจน. + เพื่อเป็นตัวอย่าง ลองนึกภาพป้ายหน้าร้านที่เขียนว่า “स्वागत है”. + +> **เคล็ดลับมืออาชีพ:** รักษาความละเอียดของรูปภาพให้สูงกว่า 300 dpi; ความละเอียดที่ต่ำอาจทำให้พลาดอักขระ + +--- + +## ขั้นตอนที่ 1: ชี้เครื่องมือ OCR ไปยังทรัพยากรของคุณ – *สกัดข้อความจากรูปภาพ* + +สิ่งแรกที่ Aspose OCR ต้องการคือที่ตั้งของโมเดลภาษา หากคุณข้ามขั้นตอนนี้ เครื่องมือจะพยายามดาวน์โหลดไฟล์โดยอัตโนมัติ—ซึ่งอาจไม่ต้องการในเครือข่ายที่ปลอดภัย + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*ทำไมสิ่งนี้ถึงสำคัญ:* การตั้งค่า `ResourcesPath` ทำให้เครื่องมือโหลดข้อมูลฝึกที่ถูกต้องจากเครื่องท้องถิ่น ซึ่งจะเร่งการทำงานครั้งแรกและขจัดการจราจรเครือข่ายที่ไม่คาดคิด + +--- + +## ขั้นตอนที่ 2: ปิดการดาวน์โหลดทรัพยากรอัตโนมัติ – *โหลดรูปภาพสำหรับ OCR* + +ในหลายสภาพแวดล้อมองค์กร การเข้าถึงอินเทอร์เน็ตออกนอกถูกบล็อก Aspose OCR เคารพแฟล็กที่หยุดไม่ให้พยายามดึงไฟล์ที่หายไปแบบเรียลไทม์ + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +หากคุณลืมบรรทัดนี้และโมเดลภาษาฮินดีไม่มีอยู่ เครื่องมือจะโยนข้อยกเว้นที่มีข้อความเช่น “Unable to download required resource”. การตั้งค่าแฟล็กเป็น `false` จะให้ความล้มเหลวที่ชัดเจนและกำหนดได้ซึ่งคุณสามารถจัดการเองได้ + +--- + +## ขั้นตอนที่ 3: เลือกภาษา – *จดจำข้อความภาษาฮินดี* + +Aspose OCR รองรับหลายสิบภาษา แต่คุณต้องบอกว่าต้องการใช้ภาษาใด ภาษาฮินดีระบุด้วย `OcrLanguage.Hindi` + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*ถ้าคุณต้องการหลายภาษา?* คุณสามารถตั้งค่า `Language = OcrLanguage.AutoDetect` ให้เครื่องมือเดาได้ แต่การตรวจจับอัตโนมัติช้ากว่าและบางครั้งอาจพลาดในสคริปต์ผสม สำหรับภาษาฮินดีล้วน การเลือกอย่างชัดเจนเป็นวิธีที่ปลอดภัยที่สุด + +--- + +## ขั้นตอนที่ 4: โหลดรูปภาพของคุณ – *โหลดรูปภาพสำหรับ OCR* + +ตอนนี้เรามอบรูปภาพให้กับเครื่องมือเพื่ออ่าน Aspose มีตัวช่วย `ImageStream.FromFile` ที่สะดวกซึ่งทำให้ไม่ต้องพึ่งพา `System.Drawing` ด้านล่าง + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +หากเส้นทางไฟล์ไม่ถูกต้อง Aspose จะโยน `FileNotFoundException`. การตรวจสอบ `File.Exists` อย่างรวดเร็วก่อนบรรทัดนี้จะช่วยประหยัดเวลา debug + +--- + +## ขั้นตอนที่ 5: เรียกใช้เครื่องมือ OCR – *ทำการจดจำ OCR* + +เมื่อทุกอย่างตั้งค่าเรียบร้อย เราจะเริ่มกระบวนการจดจำ การเรียกนี้เป็นแบบ synchronous และบล็อกจนกว่าจะสกัดข้อความเสร็จ + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +เบื้องหลัง Aspose ทำหลายขั้นตอน: การเตรียมข้อมูล (deskew, การกำจัดสัญญาณรบกวน), การแบ่งส่วน, การจำแนกอักขระ, และสุดท้ายการประมวลผลหลังขั้นตอนตามภาษา การทำงานหนักทั้งหมดอยู่ในเมธอดเดียวนี้ + +--- + +## ขั้นตอนที่ 6: แสดงข้อความที่สกัด – *สกัดข้อความจากรูปภาพ* + +ผลลัพธ์อยู่ในคุณสมบัติ `Text` ของเครื่องมือ เราเพียงเขียนลงคอนโซล แต่คุณก็สามารถเก็บไว้ในฐานข้อมูล ส่งผ่าน API หรือป้อนเข้าสู่ pipeline NLP อื่นได้ + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**ผลลัพธ์ที่คาดหวัง** (สมมติว่ารูปภาพมีข้อความ “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +หากคุณเห็นอักขระแปลก ๆ ให้ตรวจสอบอีกครั้งว่าโมเดลภาษาฮินดีวางถูกต้องและรูปภาพไม่ได้บีบอัดเกินไป + +--- + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอก‑วางลงในโปรเจคคอนโซลใหม่ (`dotnet new console`). แทนที่ `YOUR_DIRECTORY` ด้วยเส้นทางจริงบนเครื่องของคุณ + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **เคล็ดลับ:** หากคุณวางแผนประมวลผลรูปหลายภาพในลูป ให้สร้าง `OcrEngine` เพียงหนึ่งตัวและใช้ซ้ำ—จะลดภาระการเริ่มต้น + +--- + +## การจัดการกับปัญหาทั่วไป + +| ปัญหา | สาเหตุ | วิธีแก้เร็ว | +|-------|--------|--------------| +| **ผลลัพธ์ว่าง** | โมเดลภาษาผิดหรือรูปภาพคุณภาพต่ำ. | ตรวจสอบ `ResourcesPath`, เพิ่ม DPI ของรูปภาพ, หรือลอง `ocrEngine.Image = ImageStream.FromFile(..., true)` เพื่อเปิดใช้งานการปรับปรุงอัตโนมัติ. | +| **ข้อยกเว้น: ไม่พบทรัพยากร** | ไม่มีไฟล์ `.traineddata` ของภาษาฮินดี. | ดาวน์โหลดโมเดลภาษาฮินดีจาก Aspose, วางไว้ใน `OcrResources`, และตรวจสอบว่าไฟล์ชื่อ `hin.traineddata` ตรงกัน. | +| **อักขระเสีย** | การเข้ารหัสไม่ตรงกันเมื่อพิมพ์ลงคอนโซล. | ตั้งค่าการเข้ารหัสของคอนโซล: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **ความล่าช้าด้านประสิทธิภาพ** | รูปภาพขนาดใหญ่ถูกประมวลผลโดยไม่ปรับขนาด. | ปรับขนาดรูปภาพล่วงหน้าให้มีความกว้าง/สูงสูงสุด 2000 px ก่อนส่งให้ OCR. | + +--- + +## ขั้นตอนต่อไปและหัวข้อที่เกี่ยวข้อง + +- **การประมวลผลแบบกลุ่ม:** ห่อโค้ดในลูป `foreach` เพื่อจัดการโฟลเดอร์รูปภาพหลายไฟล์. +- **ภาษาต่าง ๆ:** เปลี่ยน `OcrLanguage.Hindi` เป็น `OcrLanguage.English`, `OcrLanguage.Arabic` เป็นต้น. +- **รูปแบบผลลัพธ์:** แทนที่ `Console.WriteLine` ด้วยการเขียนไฟล์ข้อความ (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **การรวมกับ ASP.NET Core:** เปิดเผย endpoint API ที่รับอัปโหลดรูปภาพและคืนข้อความที่สกัดเป็น JSON. + +ส่วนขยายทั้งหมดนี้ทำตามรูปแบบเดียวกัน—ตั้งค่าเครื่องมือ, โหลดรูปภาพ, ทำการจดจำ, และใช้ผลลัพธ์ + +--- + +## สรุป + +เราได้แสดงวิธี **สกัดข้อความจากรูปภาพ** ด้วย Aspose OCR ใน C# คู่มือนี้ครอบคลุมทุกขั้นตอนที่คุณต้อง **โหลดรูปภาพสำหรับ OCR**, **จดจำข้อความภาษาฮินดี**, และ **ทำการจดจำ OCR**—ทั้งหมดในแอปคอนโซลที่ทำงานอิสระ + +ลองใช้กับรูปภาพของคุณเอง, ทดลองกับภาษาต่าง ๆ, และปรับโค้ดสำหรับบริการเว็บหรืองานเบื้องหลังได้ตามต้องการ แนวคิดหลักยังคงเหมือนเดิม: ตั้งค่าทรัพยากร, เลือกภาษา, ป้อนรูปภาพ, และอ่านคุณสมบัติ `Text` + +หากคุณเจอปัญหาใด ๆ ตรวจสอบตารางการแก้ไขปัญหาข้างต้นหรือแสดงความคิดเห็น ขอให้สนุกกับการเขียนโค้ด และขอให้ผลลัพธ์ 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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/thai/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..77f8b7c8 --- /dev/null +++ b/ocr/thai/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-01-10 +description: วิธีใช้ OCR บนรูปภาพด้วย Aspose OCR ใน C# เรียนรู้การดึงข้อความจากรูปภาพ, + การทำ OCR บนรูปภาพ, และการโหลดรูปภาพสำหรับ OCR ด้วยการเร่งความเร็วด้วย GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: th +og_description: วิธีรัน OCR บนภาพด้วย Aspose OCR บทเรียนนี้แสดงวิธีดึงข้อความจากภาพ, + รัน OCR บนภาพ, และโหลดภาพสำหรับ OCR อย่างมีประสิทธิภาพ +og_title: วิธีรัน OCR ใน C# – คู่มือเต็มขั้นตอนโดยละเอียด +tags: +- OCR +- C# +- Aspose +title: วิธีรัน OCR ใน C# – คู่มือฉบับสมบูรณ์กับ Aspose OCR +url: /th/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีการรัน OCR ใน C# – คู่มือครบถ้วนกับ Aspose OCR + +เคยสงสัย **how to run OCR** บนรูปภาพและดึงข้อความออกมาโดยไม่ต้องบิดหัวของคุณไหม? คุณไม่ได้เป็นคนเดียว ไม่ว่าคุณจะกำลังแปลงใบแจ้งหนี้เป็นดิจิทัล, สแกนใบเสร็จ, หรือแค่ต้องการทำ PDF ที่ค้นหาได้ การสามารถดึงข้อความจากรูปภาพเป็นความต้องการประจำวันของนักพัฒนาหลายคน + +ในบทเรียนนี้เราจะพาคุณผ่านตัวอย่างเชิงปฏิบัติแบบครบวงจรที่แสดง **how to run OCR on image** ด้วยไลบรารี Aspose OCR พร้อมการเร่งความเร็วด้วย GPU เพื่อความเร็วที่ดีขึ้น เมื่อจบคุณจะรู้วิธีโหลดภาพสำหรับ OCR, ปรับการใช้หน่วยความจำ, และรับผลลัพธ์ข้อความธรรมดาที่สะอาด—all ในไม่กี่นาทีของโค้ด + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธีการเริ่มต้น Aspose OCR engine ใน C# +- วิธี **load image for OCR** จากดิสก์หรือสตรีม +- วิธีเปิดใช้งานการเร่งความเร็วด้วย GPU และจำกัดหน่วยความจำของ GPU +- วิธี **extract text from image** และตรวจสอบผลลัพธ์ +- ข้อผิดพลาดทั่วไป (โมดูล GPU หาย, ขีดจำกัดหน่วยความจำ) และวิธีแก้ไขอย่างรวดเร็ว + +ไม่จำเป็นต้องมีประสบการณ์กับ Aspose OCR มาก่อน; เพียงมีสภาพแวดล้อม .NET ที่ทำงานได้และภาพตัวอย่างหนึ่งภาพ + +--- + +## How to Run OCR on an Image with Aspose OCR + +สิ่งแรกที่คุณต้องการคือโค้ดสั้น ๆ ที่ชัดเจนและทำงานได้เต็มที่ ด้านล่างเป็นโปรแกรมเต็มที่คุณสามารถคัดลอก, วาง, และรันได้ทันที + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**ผลลัพธ์ที่คาดหวัง** (สมมติว่าภาพตัวอย่างมีคำว่า “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Pro tip:** หากคุณไม่เห็นข้อความใด ๆ ให้ตรวจสอบอีกครั้งว่าโมดูล GPU ถูกติดตั้งแล้วและเส้นทางภาพถูกต้อง เมธอด `ImageStream.FromFile` จะโยนข้อยกเว้นที่ชัดเจนหากไม่พบไฟล์ + +--- + +## Extract Text from Image Using GPU Acceleration + +ทำไมต้องยุ่งกับ GPU เลย? OCR ที่ทำงานบน CPU เพียงอย่างเดียวก็ทำงานได้ แต่จะช้าอย่างมากกับภาพขนาดใหญ่หรือความละเอียดสูง การเปิดใช้งานการเร่งความเร็วด้วย GPU (ขั้นตอน 2 ด้านบน) จะย้ายงานหนักไปยังการ์ดกราฟิกของคุณ ซึ่งสามารถประมวลผลพัน ๆ พิกเซลต่อวินาทีได้ + +### เมื่อใดควรใช้ GPU + +- **Batch processing** – สแกนใบแจ้งหนี้หลายสิบฉบับในครั้งเดียว. +- **High‑resolution scans** – สิ่งใดที่เกิน 300 dpi. +- **Real‑time apps** – เช่นแอปสแกนมือถือที่ต้องการผลตอบกลับทันที. + +หากสภาพแวดล้อมของคุณไม่มี GPU ที่รองรับ เพียงตั้งค่า `EnableGpuAcceleration = false;` แล้วเอนจินจะสลับไปใช้โหมด CPU โดยอัตโนมัติ + +--- + +## Run OCR on Image – Loading the Image Correctly + +การโหลดภาพคือขั้นตอน **load image for OCR** ที่มักทำให้หลายคนติดขัด Aspose OCR ต้องการ `ImageStream` ซึ่งสามารถสร้างจากไฟล์, memory stream, หรือแม้แต่ URL ด้านล่างเป็นตัวอย่างหลายรูปแบบ: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Edge case:** บางภาพมีช่องอัลฟา (ความโปร่งใส) ที่ทำให้เอนจิน OCR สับสน การลบอัลฟาก็ทำได้ง่าย: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +ตอนนี้คุณได้ครอบคลุมวิธีที่พบบ่อยที่สุดในการ **load image for OCR** เพื่อให้เอนจินได้รับรูปแบบที่สะอาดและรองรับทุกครั้ง + +--- + +## Tips for Loading Image for OCR Efficiently + +1. **Resize large images** – OCR ไม่จำเป็นต้องใช้ภาพ 4 K; การลดขนาดลงประมาณ 1500 px ความกว้างจะทำให้เร็วขึ้นโดยไม่กระทบความแม่นยำ. +2. **Convert to grayscale** – ลดสัญญาณรบกวนและอาจเพิ่มการรับรู้บนสแกนที่คอนทราสต์ต่ำ. +3. **Pre‑process with deskew** – หากภาพของคุณเอียง, ฟีเจอร์ deskew ในตัวของ Aspose OCR สามารถเปิดได้โดยใช้ `ocrEngine.Config.EnableDeskew = true;`. + +การปรับแต่งเหล่านี้มีประโยชน์เป็นพิเศษเมื่อคุณกำลัง **extracting text from image** เป็นจำนวนมาก + +--- + +## Common Pitfalls & How to Fix Them + +| อาการ | สาเหตุที่เป็นไปได้ | วิธีแก้ | +|---------|--------------|-----| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | โมดูล GPU ไม่ได้ติดตั้ง | ติดตั้งแพ็คเกจ Aspose OCR GPU หรือปิดการใช้งาน GPU (`EnableGpuAcceleration = false`). | +| ผลลัพธ์เป็นค่าว่าง | เส้นทางไฟล์รูปภาพผิดหรือรูปแบบไม่รองรับ | ตรวจสอบเส้นทาง `ImageStream.FromFile`; ลองโหลดจากไบต์เพื่อให้แน่ใจว่าไฟล์อ่านได้อย่างถูกต้อง. | +| ข้อผิดพลาดหน่วยความจำเต็ม | ขีดจำกัดหน่วยความจำ GPU ต่ำเกินไปสำหรับชุดใหญ่ | เพิ่มค่า `GpuMemoryLimit` (เช่น 2048) หรือประมวลผลภาพเป็นชุดเล็กลง. | +| อักขระแสดงผิด | ภาพมีสัญญาณรบกวนมากหรือคอนทราสต์ต่ำ | ทำการพรี‑โปรเซส: ทำให้เป็นสีขาวดำ, ลดจุดรบกวน, หรือเพิ่ม DPI ก่อน OCR. | + +--- + +## Full Working Example – Put It All Together + +ด้านล่างเป็นแอปคอนโซลขนาดกะทัดรัดที่รวมแนวปฏิบัติที่ดีที่สุดที่เราได้พูดถึง: การเร่งความเร็วด้วย GPU, การจำกัดหน่วยความจำ, การพรี‑โปรเซสภาพ, และการจัดการข้อผิดพลาด + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +การรันโปรแกรมนี้จะแสดงข้อความที่สะอาดที่ดึงจากภาพของคุณ แสดงวิธีที่แข็งแกร่งในการ **extract text from image** แม้แหล่งที่มาจะไม่สมบูรณ์ + +--- + +## Conclusion + +เราได้ครอบคลุม **how to run OCR** บนภาพด้วย Aspose OCR ตั้งแต่การเริ่มต้นเอนจินจนถึงการโหลดภาพ, การเปิดใช้งานการเร่งความเร็วด้วย GPU, และการจัดการกรณีขอบต่าง ๆ ตอนนี้คุณมีอ้างอิงที่มั่นคงและพร้อมอ้างอิงที่สามารถคัดลอก‑วางลงในโปรเจกต์ .NET ใดก็ได้และเริ่ม **extracting text from image** ได้ทันที + +ขั้นตอนต่อไป? ลองป้อนหน้า PDF, ทดลองกับภาษาต่าง ๆ (ตั้งค่า `ocrEngine.Config.Language = "spa"` สำหรับภาษาสเปน), หรือรวมกระบวนการนี้เข้าไปใน Web API ที่ประมวลผลการอัปโหลดแบบเรียลไทม์ ท้องฟ้าเป็นขอบเขต, และด้วยเครื่องมือที่เราได้พูดถึง คุณพร้อมเต็มที่ที่จะรับมือกับความท้าทาย 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/thai/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/thai/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..fa5fe996 --- /dev/null +++ b/ocr/thai/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,223 @@ +--- +category: general +date: 2026-01-10 +description: วิธีรัน OCR อย่างรวดเร็วและดึงข้อความภาษาอาหรับจากภาพ เรียนรู้การแปลงภาพเป็นข้อความ + อ่านข้อความจาก PNG และดูวิธีดึงข้อความด้วย Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: th +og_description: วิธีรัน OCR ใน C# และดึงข้อความภาษาอาหรับจากภาพ PNG คู่มือนี้จะแสดงวิธีแปลงภาพเป็นข้อความและอ่านข้อความจาก + PNG ทีละขั้นตอน +og_title: วิธีรัน OCR ใน C# – แยกข้อความอารบิกจากไฟล์ PNG +tags: +- OCR +- C# +- Aspose +title: วิธีใช้ OCR ใน C# – แยกข้อความภาษาอาหรับจากไฟล์ PNG +url: /th/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีการรัน OCR ใน C# – ดึงข้อความภาษาอาหรับจาก PNG + +เคยสงสัยไหมว่า **how to run OCR** บนรูปภาพที่มีอักขระภาษาอาหรับ? คุณไม่ได้เป็นคนเดียวที่เจอปัญหา นักพัฒนาจำนวนมากเจออุปสรรคเมื่อพวกเขาต้อง **extract Arabic text** จาก PNG แต่ไม่รู้ว่าคลังไหนจะจัดการสคริปต์จากขวาไปซ้ายได้โดยไม่มีปัญหา. + +ในบทแนะนำนี้ เราจะพาคุณผ่านทุกอย่างที่คุณต้องรู้เพื่อ **convert image to text**, **read text from PNG**, และสุดท้าย **how to extract text** ด้วย Aspose.OCR ในแอปคอนโซล C# ที่สะอาดตา เมื่อเสร็จคุณจะมีโปรแกรมพร้อมรันที่พิมพ์สตริงภาษาอาหรับตรงไปยังเทอร์มินัลของคุณ. + +## สิ่งที่คุณจะได้เรียนรู้ + +- ติดตั้งและอ้างอิงแพคเกจ NuGet ของ Aspose.OCR. +- กำหนดค่า OCR engine เพื่อรองรับภาษาอาหรับ. +- โหลดภาพ PNG และรันกระบวนการจดจำ. +- ดึงและแสดงข้อความที่ถูกดึงออกมา. +- ปรับแต่งการตั้งค่าเพื่อความแม่นยำที่ดียิ่งขึ้นและจัดการกับข้อผิดพลาดทั่วไป. + +ไม่จำเป็นต้องมีประสบการณ์กับ OCR มาก่อน เพียงแค่ความเข้าใจพื้นฐานของ C# และสภาพแวดล้อมการพัฒนา .NET (Visual Studio, Rider หรือ `dotnet` CLI ก็เพียงพอ). + +--- + +## วิธีการรัน OCR – การตั้งค่า Aspose OCR + +### ขั้นตอนที่ 1: เพิ่มแพคเกจ NuGet ของ Aspose.OCR + +สิ่งแรกที่เราต้องการคือไลบรารี OCR เอง Aspose.OCR เป็นผลิตภัณฑ์เชิงพาณิชย์ แต่มีรุ่นทดลองฟรีที่ทำงานได้อย่างสมบูรณ์สำหรับการเรียนรู้. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +หรืออีกวิธีหนึ่ง เปิด **NuGet Package Manager** ใน Visual Studio ค้นหา **Aspose.OCR** แล้วคลิก **Install**. + +> **Pro tip:** หากคุณวางแผนใช้ไลบรารีใน CI pipeline ให้เพิ่มแฟล็ก `-v` เพื่อล็อกเวอร์ชัน เช่น `dotnet add package Aspose.OCR -v 23.10`. + +### ขั้นตอนที่ 2: สร้างโปรเจกต์คอนโซลใหม่ (หากคุณยังไม่มี) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +ตอนนี้คุณมีไฟล์ `Program.cs` ใหม่พร้อมสำหรับโค้ดของเรา. + +--- + +## ดึงข้อความภาษาอาหรับ – เขียนโค้ด OCR + +ด้านล่างเป็นโปรแกรมที่สมบูรณ์พร้อมรัน บันทึกเป็น `Program.cs` (หรือแทนที่ไฟล์ที่สร้างอัตโนมัติ). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### ทำไมแต่ละบรรทัดถึงสำคัญ + +- **`OcrEngine`**: คลาสหลักที่ประสานการโหลดภาพ, การเลือกภาษา, และการจดจำ. +- **`Language = OcrLanguage.Arabic`**: ภาษาอาหรับใช้สคริปต์จากขวาไปซ้ายและมี glyph เฉพาะ; การตั้งค่าภาษาแจ้งให้ engine ใช้โมเดลอักขระที่ถูกต้อง. +- **`ImageStream.FromFile`**: รองรับ PNG, JPEG, BMP, และรูปแบบอื่น ๆ มากมาย หากคุณต้องการอ่านจาก `MemoryStream` (เช่นไฟล์ที่อัปโหลด) ให้แทนที่การเรียกนี้ตามความต้องการ. +- **`Recognize()`**: ทำงานหนัก—วิเคราะห์พิกเซล, แบ่งส่วน, และจำแนกอักขระ. +- **`ocrEngine.Text`**: สตริง Unicode สุดท้าย พร้อมสำหรับการประมวลผลต่อ, การจัดเก็บ, หรือการแสดงผล. + +### ผลลัพธ์ที่คาดหวัง + +หาก `arabic_sample.png` มีวลี “مرحبا بالعالم” (Hello World) คอนโซลจะพิมพ์: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +หากผลลัพธ์ดูเป็นอักขระผสมกัน ตรวจสอบให้แน่ใจว่าภาพชัดเจน, ภาษาได้ตั้งเป็น Arabic, และเวอร์ชันของ OCR engine ตรงกับเอกสาร. + +--- + +## แปลงภาพเป็นข้อความ – ปรับความแม่นยำ + +แม้การตั้งค่าเริ่มต้นจะทำงานได้กับการสแกนที่สะอาดส่วนใหญ่ แต่ภาพในโลกจริงมักต้องการการปรับแต่งเพิ่มเติม. + +| การตั้งค่า | ทำอะไร | เมื่อใช้ | +|-----------|--------|----------| +| `ocrEngine.Config.Preprocess = true` | เปิดใช้งานการทำไบนารีอัตโนมัติและการกำจัดสัญญาณรบกวน. | เอกสารสแกนที่มีเงา. | +| `ocrEngine.Config.Deskew = true` | หมุนภาพเพื่อแก้ไขการเอียงเล็กน้อย. | ภาพถ่ายที่ถ่ายมุมเอียง. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | ถือภาพทั้งหมดเป็นบล็อกข้อความหนึ่งบล็อก. | คำบรรยายง่ายหรือป้ายข้อความบรรทัดเดียว. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | จำกัดการจดจำเฉพาะอักขระภาษาอาหรับเท่านั้น. | ลดผลบวกเท็จในหน้าที่มีหลายภาษา. | + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## อ่านข้อความจาก PNG – จัดการแหล่งภาพที่แตกต่าง + +บางครั้ง PNG อยู่ในฐานข้อมูลหรือมาจากคำขอเว็บ นี่คือตัวอย่างย่อยที่อ่านจาก `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +ส่วนที่เหลือของกระบวนการยังคงเหมือนเดิม ซึ่งหมายความว่า **how to extract text** จะสอดคล้องกันไม่ว่าที่มาของภาพจะเป็นอะไร. + +--- + +## วิธีการดึงข้อความ – ตัวเลือกขั้นสูงและกรณีขอบ + +### 1. PDF หรือ TIFF หลายหน้า + +หากคุณต้องการ OCR เอกสารหลายหน้า ให้วนลูปผ่านแต่ละหน้า: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Note:** คุณจะต้องใช้แพคเกจ `Aspose.PDF` สำหรับโค้ดส่วนนั้น. + +### 2. ตรวจจับภาษาอัตโนมัติ + +Aspose.OCR ยังมีฟีเจอร์ตรวจจับอัตโนมัติ แต่ช้ากว่า หากคุณไม่แน่ใจว่าภาพมีภาษาอาหรับหรือสคริปต์อื่น ให้เปิดใช้งาน: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +### 3. เคล็ดลับด้านประสิทธิภาพ + +- **Reuse the `OcrEngine`** object สำหรับหลายภาพ; การสร้างอินสแตนซ์ใหม่ทุกครั้งเพิ่มภาระ. +- **Run in parallel** เฉพาะเมื่อคุณมีอินสแตนซ์ engine แยกตามเธรด—การแชร์อินสแตนซ์เดียวทำให้เกิด race conditions. + +--- + +## สรุป + +เราได้ครอบคลุม **how to run OCR** ใน C# ตั้งแต่ต้นจนจบ แสดงให้คุณเห็นวิธี **extract Arabic text**, **convert image to text**, **read text from PNG**, และตอบ **how to extract text** ในหลายสถานการณ์ โค้ดตัวอย่างสมบูรณ์ มีความเป็นอิสระ และพร้อมให้คุณวางลงในโปรเจกต์คอนโซล .NET ใดก็ได้. + +ขั้นตอนต่อไป? ลองเปลี่ยน `OcrLanguage.Arabic` เป็น Korean หรือ Serbian Cyrillic เพื่อดูพลังหลายภาษาของไลบรารี ทดลองใช้แฟล็ก preprocessing เพื่อเพิ่มความแม่นยำบนสแกนที่มีสัญญาณรบกวน หรือรวมฟังก์ชัน OCR เข้าไปในเว็บ API เพื่อให้ผู้ใช้อัปโหลดภาพและรับผลลัพธ์ข้อความทันที. + +ขอให้เขียนโค้ดอย่างสนุกสนาน และผลลัพธ์ 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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/thai/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..ad301c20 --- /dev/null +++ b/ocr/thai/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,296 @@ +--- +category: general +date: 2026-01-10 +description: เรียนรู้วิธีจดจำข้อความจากภาพ ดึงพิกัดข้อความ และแปลงใบเสร็จเป็น JSON + ด้วย Aspose OCR ใน C# คู่มือทีละขั้นตอน. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: th +og_description: รับรู้ข้อความจากภาพใน C# ด้วย Aspose OCR. คู่มือนี้แสดงวิธีการดึงข้อความ, + รับพิกัด, และแปลงใบเสร็จเป็น JSON. +og_title: แยกข้อความจากภาพ – บทเรียน OCR C# เต็มรูปแบบ +tags: +- OCR +- C# +- Aspose +title: แยกข้อความจากภาพใน C# – คู่มือฉบับสมบูรณ์ของ OCR และ JSON +url: /th/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# จดจำข้อความจากภาพ – คู่มือเต็ม C# OCR + +เคยต้องการจดจำข้อความจากภาพแต่ไม่แน่ใจว่าจะเลือกไลบรารีไหนไหม? คุณไม่ได้อยู่คนเดียว ในแอปพลิเคชันจริงหลาย ๆ ตัว—เช่น ตัวติดตามค่าใช้จ่าย, ตัวสแกนใบเสร็จ, หรือระบบจัดเก็บเอกสาร—การดึงข้อความอย่างแม่นยำเป็นอุปสรรคแรก + +ในบทเรียนนี้เราจะอธิบาย **วิธีดึงข้อความ**, ดึงกล่องขอบเขต (bounding boxes) ของมัน, และสุดท้าย **แปลงใบเสร็จเป็น JSON** ด้วย Aspose.OCR สำหรับ .NET. เมื่อเสร็จแล้วคุณจะมีโปรเจกต์ C# ที่ทำงานได้เองซึ่งรับภาพถ่ายของใบเสร็จและสร้างไฟล์ JSON ที่เรียบร้อยพร้อมคะแนนความมั่นใจและพิกัด + +## สิ่งที่คุณต้องเตรียม + +ก่อนที่เราจะเริ่ม, ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้บนเครื่องของคุณ: + +- **.NET 6.0 SDK** (หรือเวอร์ชันใหม่กว่า). เฟรมเวิร์กเก่าก็ใช้ได้, แต่ .NET 6 เป็นจุดที่เหมาะสมสำหรับไลบรารีสมัยใหม่ +- **Visual Studio 2022** หรือ VS Code พร้อมส่วนขยาย C# +- **Aspose.OCR for .NET** NuGet package (`Aspose.OCR` และ `Aspose.OCR.Output`). คุณสามารถติดตั้งได้ผ่าน Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- ตัวอย่างภาพใบเสร็จ (เช่น `receipt.jpg`) ที่วางไว้ในโฟลเดอร์ที่คุณจะอ้างอิงต่อไป + +เท่านี้—ไม่มี SDK เพิ่มเติม, ไม่มีไบนารีเนทีฟ, เพียงโค้ดที่จัดการโดย .NET เท่านั้น + +## ขั้นตอนที่ 1: สร้างโปรเจกต์คอนโซลใหม่ + +เริ่มต้นด้วยการสร้างแอปคอนโซล. นี่เป็นวิธีที่เร็วที่สุดในการทดสอบ OCR โดยไม่ต้องมี UI + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **เคล็ดลับ:** รักษาโฟลเดอร์โปรเจกต์ให้เป็นระเบียบ; สร้างโฟลเดอร์ย่อยชื่อ `Resources` แล้ววาง `receipt.jpg` ไว้ที่นั่น. จะทำให้การจัดการพาธง่ายขึ้นมาก + +## ขั้นตอนที่ 2: โหลดภาพใบเสร็จ + +ตอนนี้เราจะ **จดจำข้อความจากภาพ** จริง ๆ ขั้นตอนแรกคือการชี้เครื่อง OCR ไปที่ไฟล์ + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +ทำไมเราต้องห่อการโหลดด้วยการตรวจสอบการมีอยู่? เพราะในสภาพการผลิตคุณมักต้องจัดการกับไฟล์ที่ผู้ใช้อัปโหลดซึ่งอาจหายไปหรือเสียหาย. การตรวจจับปัญหาแต่เนิ่น ๆ จะช่วยหลีกเลี่ยงข้อยกเว้นที่ทำให้สับสนในภายหลัง + +## ขั้นตอนที่ 3: ทำ OCR – **จดจำข้อความจากภาพ** + +เมื่อภาพอยู่ในหน่วยความจำแล้ว, เราขอให้ Aspose **จดจำข้อความจากภาพ**. การทำงานนี้เป็นแบบ synchronous และจะคืนผลลัพธ์ที่เต็มไปด้วยข้อมูล + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +เบื้องหลัง Aspose จะรันเครือข่ายประสาทเทียมที่ฝึกด้วยตัวอักษรหลายล้านตัว. เครื่องจะเติมค่า `ocrEngine.Text`, `ocrEngine.RecognitionResult`, และคอลเลกชันของอ็อบเจกต์ `OcrRegion` ที่เก็บพิกัด. นี่คือข้อมูลที่เราต้องการสำหรับขั้นตอนต่อไป + +## ขั้นตอนที่ 4: **วิธีดึงข้อความ** – รับสตริงดิบ + +หากคุณต้องการเพียงข้อความธรรมดา (อาจใช้สำหรับการค้นหาอย่างรวดเร็ว), คุณสามารถดึงมันโดยตรงจาก engine: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +คุณจะสังเกตเห็นการขึ้นบรรทัดใหม่ที่ OCR ตรวจจับขอบเขตย่อหน้า. ในหลายกรณีของการสแกนใบเสร็จ, สตริงดิบเพียงพอที่จะดึงยอดรวม, วันที่, หรือชื่อผู้ขายด้วย regex ง่าย ๆ + +## ขั้นตอนที่ 5: **ดึงพิกัดข้อความ** – กล่องขอบเขตสำหรับแต่ละคำ + +บ่อยครั้งที่คุณต้องรู้ว่า *ที่ไหน* บนภาพที่ข้อความชิ้นนั้นอยู่—เช่น การไฮไลท์ยอดรวมใน UI. Aspose ให้ข้อมูลนี้ผ่านอ็อบเจกต์ `OcrRegion` + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +สังเกตว่าเรากำลังวนลูป **ดึงพิกัดข้อความ** สำหรับทุกส่วนที่ถูกจดจำ. พิกัดเหล่านี้เป็นค่าที่สัมพันธ์กับภาพต้นฉบับ, ดังนั้นคุณสามารถวางซ้อนบนแคนวาสกราฟิกหรือองค์ประกอบ `` ของ HTML ได้ + +## ขั้นตอนที่ 6: **แปลงใบเสร็จเป็น JSON** – บันทึกผลลัพธ์ละเอียด + +ตอนนี้มาถึงส่วนที่เชื่อมทุกอย่างเข้าด้วยกัน: เราต้องการโครงสร้างที่เครื่องอ่านได้ซึ่งรวมถึงข้อความ, คะแนนความมั่นใจ, และกล่องขอบเขต. Aspose มี `JsonSaveOptions` ที่ทำให้ขั้นตอนนี้ง่ายดาย + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +ไฟล์ที่ได้จะมีลักษณะประมาณนี้ (ตัดให้สั้นเพื่อความกระชับ): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +ตอนนี้คุณมีผลลัพธ์ **แปลงใบเสร็จเป็น JSON** ที่สามารถส่งต่อให้บริการ downstream—เช่น API รายงานค่าใช้จ่าย, pipeline การวิเคราะห์, หรือแม้แต่ UI ง่าย ๆ ที่วาดสี่เหลี่ยมรอบแต่ละคำ + +## ตัวอย่างทำงานเต็มรูปแบบ + +รวมทุกส่วนเข้าด้วยกัน, นี่คือไฟล์ `Program.cs` ฉบับเต็มที่คุณสามารถคัดลอก‑วางลงในโปรเจกต์ของคุณได้: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +รันโปรแกรม (`dotnet run`) แล้วดูผลลัพธ์ในคอนโซล. เปิด `Resources/receipt.json` เพื่อตรวจสอบโครงสร้าง + +## คำถามทั่วไป & กรณีขอบ + +- **ภาพเบลอจะทำอย่างไร?** + Aspose OCR ทำงานได้ดีที่สุดที่ 300 dpi หรือสูงกว่า. หากคุณได้รับคะแนนความมั่นใจต่ำ, ลองใช้ฟิลเตอร์เพิ่มความคมชัดก่อนส่งภาพให้ engine + +- **สามารถจดจำหลายภาษาได้หรือไม่?** + ได้. ตั้งค่า `ocrEngine.Language = Language.English | Language.Spanish;` ก่อนเรียก `Recognize()` + +- **จะจำกัดผลลัพธ์ให้เป็นตัวเลขเท่านั้น (เช่น ยอดรวม) อย่างไร?** + หลังจากได้ข้อความธรรมดา, ใช้ regex เช่น `\d+\.\d{2}` บน `ocrEngine.Text`. เนื่องจากเรามีพิกัดอยู่แล้ว, คุณสามารถแมปสตริงที่จับได้กลับไปยัง region ของมันเพื่อไฮไลท์ภาพได้ + +- **รูปแบบ JSON สามารถปรับแต่งได้หรือไม่?** + คลาส `JsonSaveOptions` มี flag หลายตัวให้เลือก. หากต้องการสคีมาที่กำหนดเองอย่างสมบูรณ์, คุณสามารถวนลูป `ocrEngine.RecognitionResult.Regions` แล้วทำการ serialize ด้วย `System.Text.Json` เอง + +## สรุป + +เราได้สาธิตวิธี **จดจำข้อความจากภาพ** ด้วย C# และ Aspose.OCR, **วิธีดึงข้อความ**, ดึง **ดึงพิกัดข้อความ**, และสุดท้าย **แปลงใบเสร็จเป็น JSON**. ทั้งหมดอยู่ในแอปคอนโซลเดียวที่ง่ายต่อการรัน, ทำให้เหมาะสำหรับต้นแบบหรือเป็นบล็อกสร้างในระบบที่ใหญ่ขึ้น + +ขั้นตอนต่อไป? ลองนำ JSON ไปใช้กับฟรอนท์‑เอนด์ที่วาดกล่องขอบเขต, หรือเชื่อมต่อผลลัพธ์กับบริการรายงานค่าใช้จ่าย. คุณยังสามารถทดลองกับรูปแบบภาพต่าง ๆ (PNG, TIFF) หรือประมวลผลหลายใบเสร็จในโฟลเดอร์ได้ + +มีคำถามเพิ่มเติมเกี่ยวกับ OCR, Aspose, หรือการจัดการ JSON? แสดงความคิดเห็นด้านล่าง, แล้วขอให้สนุกกับการเขียนโค้ด! + +![ตัวอย่างภาพใบเสร็จสำหรับจดจำข้อความจากภาพ](receipt.jpg "ตัวอย่างภาพใบเสร็จสำหรับจดจำข้อความจากภาพ") + +{{< /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/net/ocr-configuration/_index.md b/ocr/turkish/net/ocr-configuration/_index.md index ab8cd94c..eebd0b6d 100644 --- a/ocr/turkish/net/ocr-configuration/_index.md +++ b/ocr/turkish/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Aspose.OCR ile .NET'te OCR görüntü tanımanın gücünün kilidini açın. G Aspose.OCR for .NET ile güçlü OCR özelliklerinin kilidini açın. Görüntülerden metni sorunsuz bir şekilde çıkarın. ### [OCR Görüntü Tanıma'da Liste ile OCR İşlemi](./ocr-operation-with-list/) Aspose.OCR for .NET'in potansiyelini ortaya çıkarın. Listelerle OCR görüntü tanımayı zahmetsizce gerçekleştirin. Uygulamalarınızda üretkenliği ve veri çıkarmayı artırın. +### [Embedded Kaynağı .NET'te Okuma – Aspose Lisansını Ayarlama Tam Kılavuzu](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Aspose lisansını ayarlamak için .NET'te gömülü kaynağı nasıl okuyacağınızı adım adım öğrenin. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/turkish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..73b6398c --- /dev/null +++ b/ocr/turkish/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-01-10 +description: Gömülü kaynağı okuyun ve C#'ta Aspose lisansını ayarlayın. GetManifestResourceStream + kullanımını, bir lisans dosyasını gömmeyi ve tek bir öğreticide .NET yürütülen derlemeyi + almayı öğrenin. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: tr +og_description: .NET'te gömülü kaynağı okuyun ve Aspose lisansını hızlıca ayarlayın. + GetManifestResourceStream, lisansın gömülmesi ve çalışan derlemenin kullanımı konularını + kapsayan adım adım rehber. +og_title: Gömülü Kaynağı Oku – .NET'te Aspose Lisansını Ayarla +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: .NET’te Gömülü Kaynağı Okuma – Aspose Lisansını Ayarlama İçin Tam Kılavuz +url: /tr/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Gömülü Kaynağı Okuma – Aspose Lisansını Ayarlama Tam Kılavuzu + +Çalışma zamanında **gömülü kaynağı** okumak ve Aspose OCR kütüphanenizi yolları sabit kodlamadan lisanslamak gerektiğinde hiç zorlandınız mı? Tek başınıza değilsiniz. Birçok kurumsal uygulamada lisans dosyası derlemenin içinde bulunur, böylece ekstra dosyalar göndermenize ya da eksik izinler konusunda endişelenmenize gerek kalmaz. Bu öğreticide, gömülü bir kaynağı nasıl okuyacağınızı ve .NET `GetManifestResourceStream` yöntemiyle Aspose lisansını nasıl ayarlayacağınızı adım adım göstereceğiz. + +Her şeyi ele alacağız: `.lic` dosyasını gömmek, `GetExecutingAssembly` ile çıkarmak ve son olarak Aspose OCR `License` sınıfına uygulamak. Sonunda, dış dosya gerektirmeyen, herhangi bir .NET projesinde çalışan kendi kendine yeten bir çözümünüz olacak. + +## Öğrenecekleriniz + +- **Bir lisans dosyasını** .NET projesine gömerek derlenmiş DLL'in bir parçası haline getirme. +- Gömülü kaynağı okumak için **GetManifestResourceStream** kullanımının doğru yolu. +- Dosya sistemine dokunmadan **Aspose lisansını** programatik olarak ayarlama. +- Yanlış kaynak adları veya eksik derleme eylemleri gibi yaygın tuzakları ele alma ipuçları. +- Kendi çözümünüze ekleyebileceğiniz tam, çalıştırılabilir bir kod örneği. + +### Önkoşullar + +- .NET 6.0 veya üzeri (kod .NET Framework 4.x üzerinde de çalışır, sadece proje dosyasını ona göre ayarlamanız gerekir). +- Aspose.OCR NuGet paketi yüklü (`dotnet add package Aspose.OCR`). +- C# ve Visual Studio (veya tercih ettiğiniz IDE) hakkında temel bilgi. + +Bu öğelere sahipseniz, harika—hadi başlayalım. + +## Adım 1: Aspose Lisans Dosyasını Derlemenize Gömme + +İlk olarak gerçek lisans dosyasına (`Aspose.OCR.lic`) ihtiyacınız var. Çalıştırılabilir dosyanızın yanına kopyalamak yerine **kaynak** olarak gömeceksiniz. + +1. `.lic` dosyasını projenize ekleyin (ör. `Resources` adlı bir klasör oluşturup dosyayı oraya bırakın). +2. Dosyanın özelliklerinde **Build Action** değerini `Embedded Resource` olarak ayarlayın. + *İpucu:* klasör yapısını basit tutun; tam nitelikli kaynak adı `YourNamespace.Resources.Aspose.OCR.lic` olacaktır. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Neden gömülür? Çünkü derleme artık lisansı içinde taşır, üretim sunucusunda eksik dosya riski ortadan kalkar. + +## Adım 2: GetExecutingAssembly ile Gömülü Kaynağı Alın + +Lisans artık DLL içinde olduğuna göre, çalışma zamanında **gömülü kaynağı** okuyabilmek için bir yol gerekir. .NET `Assembly` sınıfı tam da bunu sağlar. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +`GetExecutingAssembly` yöntemi, şu anda çalışan derlemeyi döndürür—kodunuzla aynı konumda bulunan kaynakları bulmak için mükemmeldir. + +## Adım 3: GetManifestResourceStream ile Lisans Akışını Açın + +Derleme referansını elde ettikten sonra `GetManifestResourceStream` çağırabilirsiniz. Bu yöntem, Aspose'a doğrudan aktarabileceğiniz bir `Stream` döndürür. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +**null‑conditional** bir `using` ifadesi (`using Stream?`) kullandığımıza dikkat edin; bu sayede akış otomatik olarak serbest bırakılır. İsim yanlışsa, net bir istisna fırlatır—bu da sessiz hatalardan sizi korur. + +## Adım 4: Lisansı Aspose OCR'a Uygulayın + +Aspose’un `License` sınıfı bir `Stream` bekler. Bizde zaten bir akış var, bu yüzden son adım basittir. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Hepsi bu! Aspose OCR motoru artık tam lisanslı ve deneme filigranı olmadan görüntü işleyebilir. + +## Tam Çalışan Örnek + +Aşağıda, tüm süreci gösteren, kopyala‑yapıştır‑hazır bir program bulunuyor. Gerekli `using` yönergeleri, hata yönetimi ve lisansın aktif olduğunu kanıtlayan basit bir OCR çağrısı içerir. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Beklenen Çıktı + +Geçerli bir lisans gömülü bir makinede programı çalıştırdığınızda şu çıktıyı görmelisiniz: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Lisans akışı bulunamazsa, konsol eksik kaynak adını raporlayacak ve **Build Action** ile ad alanını tekrar kontrol etmeniz gerektiğini belirtecektir. + +## Yaygın Tuzaklar ve Çözümleri + +| Sorun | Neden Oluşur | Çözüm | +|-------|--------------|------| +| **Kaynak adı uyuşmazlığı** | .NET, kaynak adını varsayılan ad alanı + klasör yolu ile oluşturur. | `Assembly.GetManifestResourceNames()` ile mevcut adları listeleyip tam dizeyi doğrulayın. | +| **Lisans dosyası Gömülü Kaynak olarak ayarlanmamış** | Varsayılan Build Action `Content`’tir. | Dosya özelliklerinde `Embedded Resource` olarak değiştirin. | +| **Farklı bir derlemeden çalıştırma** | Kod bir sınıf kitaplığından çağrılırsa, `GetExecutingAssembly()` kitaplığı dönebilir. | `Assembly.GetEntryAssembly()` kullanın veya doğru derlemeyi açıkça geçirin. | +| **Akış kullanım öncesi kapatılmış** | `using` bloğu akışı çok erken kapatır. | `SetLicense` çağrısı etrafında `using` tutun, yukarıdaki gibi. | +| **Aspose.OCR sürüm uyuşmazlığı** | Yeni sürümler farklı lisans formatı isteyebilir. | Aspose hesabınızdan en yeni lisansı indirin ve yeniden gömün. | + +## Diğer Gömülü Dosyalar İçin Aynı Tekniği Kullanma + +**Gömülü kaynağı oku**, ardından **GetManifestResourceStream** kullan—desen herhangi bir dosya türü için çalışır: JSON yapılandırmaları, resimler, hatta yerel DLL'ler. Sadece `resourceName` ve akışı tüketme şeklinizi ayarlayın. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Görsel Bakış + +![Diagram illustrating how to read embedded resource and set Aspose license](read-embedded-resource-diagram.png) + +*Alt metin:* gömülü kaynağı okuma – gömme, GetManifestResourceStream ile alma ve Aspose lisansını uygulama diyagramı. + +## Özet + +.NET derlemesinde **gömülü kaynağı** nasıl okuyacağınızı, **GetManifestResourceStream** kullanımını ve dosya sistemine dosya bırakmadan **Aspose lisansını** nasıl ayarlayacağınızı ele aldık. Lisansı gömerek dağıtım zorluklarını ortadan kaldırır ve uygulamanızı taşınabilir tutarsınız. + +## Sıradaki Adımlar + +- **Lisans güncellemelerini otomatikleştir:** Aspose aboneliğinizi yenilediğinizde gömülü `.lic` dosyasını değiştiren küçük bir derleme‑zamanı betiği yazın. +- **Kaynağı güvenceye al:** Lisansı gömmeden önce şifreleyin ve çalışma zamanında çözüp kullanın, ek koruma sağlayın. +- **Diğer Aspose ürünlerini keşfedin:** Aynı yaklaşım Aspose.Words, Aspose.PDF vb. için de geçerlidir, her birinin kendi `License` sınıfı vardır. + +Deney yapmaktan çekinmeyin—belki farklı modüller için birden fazla lisans gömersiniz ya da yapılandırma‑tabanlı bir kaynak adı kullanırsınız. Hayal gücünüz sınırsız. + +--- + +*Kodlamanın tadını çıkarın! Herhangi bir sorunla karşılaşırsanız, aşağıya yorum bırakın ya da daha fazla örnek için 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/net/skew-angle-calculation/_index.md b/ocr/turkish/net/skew-angle-calculation/_index.md index e8878e24..932650e9 100644 --- a/ocr/turkish/net/skew-angle-calculation/_index.md +++ b/ocr/turkish/net/skew-angle-calculation/_index.md @@ -40,9 +40,11 @@ C# uygulamalarınızda doğru metin tanıma için güçlü bir OCR çözümü ol Görüntü tanıma için güçlü bir çözüm olan Aspose.OCR for .NET'in gücünü açığa çıkarın. Eğim açılarını zahmetsizce nasıl hesaplayacağınızı öğrenin. ### [OCR Görüntü Tanıma'da URI'den Eğim Açısını Hesaplama](./calculate-skew-angle-from-uri/) OCR görüntü tanımada eğim açılarını zahmetsizce hesaplamak için Aspose.OCR for .NET'i keşfedin. Projelerinizi hassasiyet ve verimlilikle geliştirin. +### [C#'ta Görüntüyü Düzeltme – Tam OCR Ön İşleme Rehberi](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +C# ile görüntüleri düzeltmeyi öğrenin ve OCR ön işleme sürecinizi mükemmelleştirin. {{< /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/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/turkish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..7f7c7203 --- /dev/null +++ b/ocr/turkish/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-01-10 +description: Aspose.OCR ile görüntüyü düzleştirerek OCR sonuçlarını nasıl iyileştireceğinizi + öğrenin. OCR için görüntüyü ön işleme, taramadan gürültüyü kaldırma ve taramadan + metni tanıma. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: tr +og_description: Görüntüyü nasıl eğriltme düzeltir ve OCR doğruluğunu artırır. Bu kılavuz, + OCR için görüntüyü ön işleme, taramadan gürültüyü kaldırma ve Aspose.OCR kullanarak + taramadan metni tanıma yöntemlerini gösterir. +og_title: C#'ta Görüntüyü Düzeltme – Tam OCR Ön İşleme Rehberi +tags: +- OCR +- C# +- Image Processing +title: C#'ta Görüntüyü Düzleştirme – Tam OCR Ön İşleme Rehberi +url: /tr/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#'ta Görüntüyü Nasıl Düzeltiriz – Tam OCR Ön İşleme Kılavuzu + +Bir OCR motoruna vermeden önce **how to deskew image** dosyalarını nasıl düzelteceğinizi hiç merak ettiniz mi? Tek başınıza değilsiniz. Tarama belgeleri genellikle eğik, gürültülü veya düşük‑kontrastlıdır ve bu, herhangi bir metin‑tanıma girişimini bozar. + +Bu öğreticide, Aspose.OCR kütüphanesini kullanarak **preprocesses image for OCR** yapan, taramadan gürültüyü kaldıran ve sonunda **recognize text from scan** yapan tam, çalıştırılabilir bir örnek üzerinden ilerleyeceğiz. Sonunda, C#'ta **how to use OCR** konusunda net bir anlayışa sahip olacak ve kodu kısa ve öz tutacaksınız. + +> **Pro ipucu:** Küçük bir dönüş (5‑10°) bile OCR doğruluğunu %30 'dan fazla düşürebilir. Deskewing, asla atlamamanız gereken ilk adımdır. + +--- + +## Gereksinimler + +- **.NET 6+** (kod .NET Framework'te de çalışır, ancak .NET 6 şu anki LTS'dir) +- **Aspose.OCR for .NET** – NuGet'ten alabilirsiniz (`Install-Package Aspose.OCR`) +- Döndürülmüş veya gürültülü bir örnek TIFF/PNG/JPEG (örnekte `noisy_rotated.tif` dosyasını kullanacağız) +- İstediğiniz herhangi bir IDE – Visual Studio, Rider veya VS Code işinizi görecektir + +Hepsi bu. Başka kütüphane yok, dış hizmet yok. + +## Adım 1 – Kaynak Görüntüyü Yükle (Neden Önemli?) + +**deskew image** yapmadan önce, Aspose `ImageStream` içine okumamız gerekir. Bu nesne dosya I/O'yu soyutlar ve OCR motoruna tutarlı bir arayüz sağlar. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Neden önce yükleyelim?* Çünkü sonraki tüm filtreler bellek içi bir görüntü üzerinde çalışır. Dosya okunamazsa, tüm işlem hattı çöküşe uğrar. + +## Adım 2 – Ön‑İşleme Boru Hattı Oluştur (Deskew + Denoise + Contrast) + +Sağlam bir OCR iş akışı genellikle birkaç filtreyi zincirler. Burada **preprocesses image for OCR** ve daha da önemlisi **how to deskew image** otomatik olarak gerçekleştiriyoruz. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Neden bu üç?** +- **DeskewFilter**, “how to deskew image” sorununu otomatik olarak çözer; açı tahmin etmenize gerek yoktur. +- **DenoiseFilter**, “remove noise from scan” gereksinimini ele alır, aksi takdirde hayalet karakterler oluşur. +- **ContrastBoostFilter**, OCR motorunun koyu metni açık bir arka plandan ayırmasına yardımcı olur; bu, *preprocess image for OCR* yaparken klasik bir sorundur. + +## Adım 3 – Boru Hattını Uygula (Dönüşümü Görmek) + +Şimdi filtreleri gerçekten çalıştırıyoruz. Dönen `processedImage`, OCR motoruna vereceğimiz şeydir. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +`cleaned_output.tif` dosyasını açarsanız, metnin düz, daha az grenli ve daha yüksek kontrastlı olduğunu fark edeceksiniz. Bu görsel kontrol, *remove noise from scan* yaptığınızda ve deskew'in çalıştığını doğrulamak istediğinizde kullanışlıdır. + +## Adım 4 – OCR Motorunu Oluştur ve Yapılandır (How to Use OCR) + +Düzenli bir görüntü elde ettiğimizde, `OcrEngine`'i örnekliyoruz. Bu, Aspose ile **how to use OCR**'un çekirdeğidir. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Neden `AutoPageSegmentation` ayarlıyoruz?* Çünkü birçok tarama tablo veya birden çok sütun içerir. Açık tutmak, motorun sayfayı akıllıca bölmesini sağlar ve son **recognize text from scan** sonucunu iyileştirir. + +## Adım 5 – Tanıma İşlemini Çalıştır (Sonunda Metni Tanı) + +Şimdi gerçek an: motoru metni okumaya istiyoruz. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Eğer her şey sorunsuz ilerlediyse, orijinal belgeyle eşleşen temiz bir metin bloğu göreceksiniz. Bu, doğru şekilde **deskewing image**, **removing noise** ve **preprocessing image for OCR** yapmanın karşılığıdır. + +## Adım 6 – Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +Aşağıda, derlenmeye hazır tam program yer alıyor. Sadece dosya yolunu değiştirin ve hazırsınız. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Beklenen çıktı** (kısaltılmış olarak): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Eğer çıktı bozuk görünüyorsa, kaynak görüntünün 30°'den fazla döndürülmediğini iki kez kontrol edin veya `DeskewFilter.MaxAngle` değerini artırın. + +## Sıkça Sorulan Sorular (Köşe Durumları & Varyasyonlar) + +| Question | Answer | +|----------|--------| +| **Tarama 45° döndürülmüş olsaydı ne olur?** | `DeskewFilter` `MaxAngle` ile sınırlıdır. Bunu artırın (ör. `MaxAngle = 60`) veya boru hattına vermeden önce bir grafik kütüphanesi ile görüntüyü önceden döndürün. | +| **PDF'leri sayfa‑sayfa işleyebilir miyim?** | Evet. Her PDF sayfasını bir görüntüye dönüştürün (ör. `Aspose.Pdf` kullanarak) ve aynı boru hattını her bitmap üzerinde çalıştırın. | +| **Belgem Fransızca – bir şey değiştirmem gerekir mi?** | `ocrEngine.Language = Language.French;` olarak ayarlayın veya özel bir dil paketi yükleyin. Boru hattının geri kalanı aynı kalır. | +| **Orijinal çözünürlüğü korumanın bir yolu var mı?** | `PreprocessPipeline` orijinal bitmap üzerinde çalışır, DPI'yi korur. Performans için küçültme ihtiyacınız olmadıkça `ImageStream.Resize` çağrısından kaçının. | +| **Kontrast artırma renkli taramaları nasıl etkiler?** | `ContrastBoostFilter` her kanalda çalışır; gri tonlamalı veya renkli görüntüler için güvenlidir, ancak `new GrayscaleFilter()` ile önce gri tonlamaya da dönüştürebilirsiniz. | + +## Görsel Örnek (Görsel Yardım) + +![how to deskew image örneği](/images/deskew-example.png) + +*Resim, 12° döndürülmüş, gürültülü bir taramanın deskew ve temizlenmiş öncesi/sonrası görüntüsünü gösterir.* + +## Sonuç + +Aspose.OCR kullanarak **how to deskew image** konusunu ele aldık, tam bir **preprocess image for OCR** boru hattını gösterdik, **remove noise from scan** nasıl yapılır gösterdik ve sonunda birkaç C# satırıyla **recognize text from scan** yaptık. `DeskewFilter`, `DenoiseFilter` ve `ContrastBoostFilter`'ı zincirleyerek, OCR motorunun artefaktlarla boğulmadan işini yapmasını sağlayan düzenli bir bitmap elde edersiniz. + +Sonraki adımlar? Farklı filtre güçleriyle denemeler yapın, saf siyah‑beyaz çıktı için bir `BinarizationFilter` ekleyin veya temizlenmiş görüntüyü sonraki bir NLP boru hattına besleyin. Aynı desen makbuzlar, pasaportlar ve tarihi belgeler için de işe yarar. + +Diğer dillerde veya çerçevelerde **how to use OCR** hakkında daha fazla sorunuz mu var? 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/net/text-recognition/_index.md b/ocr/turkish/net/text-recognition/_index.md index 5ddf0e83..b782164b 100644 --- a/ocr/turkish/net/text-recognition/_index.md +++ b/ocr/turkish/net/text-recognition/_index.md @@ -21,7 +21,7 @@ url: /tr/net/text-recognition/ Bu eğitimde, görüntü tanıma yeteneklerinizi geliştirmek için Aspose.OCR for .NET'in gücünden yararlanmanız konusunda size rehberlik edeceğiz. Uygulamalarınızda doğruluk ve verimlilik sağlayarak, tanınan karakterlere ilişkin seçimleri nasıl alacağınızı adım adım öğrenin. Aspose.OCR'ın üstün özellikleriyle OCR deneyiminizi geliştirin. -## OCR Görüntü Tanıma'da Tanıma Sonucunu Alın +## OCR Görüntü Tanıma'da Tanıma Sonucunu Al Aspose.OCR for .NET'in yeteneklerini keşfedin ve görüntülerdeki metin tanıma yönteminizi dönüştürün. Kapsamlı kılavuzumuzla tanıma sonuçları elde etmenin inceliklerini ortaya çıkarın. İster deneyimli bir geliştirici olun ister yeni başlıyor olun, bu eğitim OCR'yi projelerinize sorunsuz bir şekilde entegre etmenize yardımcı olacaktır. @@ -55,9 +55,22 @@ Etkili görüntü metni tanıma için .NET uygulamalarınızı Aspose.OCR ile ge Aspose.OCR ile .NET'te OCR'nin potansiyelini ortaya çıkarın. PDF'lerden metni zahmetsizce çıkarın. Sorunsuz bir entegrasyon deneyimi için hemen indirin. ### [OCR Görüntü Tanıma'da Tabloyu Tanıma](./recognize-table/) OCR görüntü tanımada tabloları tanımaya ilişkin kapsamlı kılavuzumuzla Aspose.OCR for .NET'in potansiyelini ortaya çıkarın. +### [C#'ta OCR Çalıştırma – Aspose OCR ile Tam Kılavuz](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Aspose OCR kullanarak C# içinde OCR nasıl çalıştırılır, adım adım tam rehber. +### [C#'ta OCR Çalıştırma – PNG'den Arapça Metin Çıkarma](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +C# ile Aspose OCR kullanarak PNG dosyalarından Arapça metni çıkarmayı adım adım keşfedin. +### [Aspose OCR ile Görüntüden Metin Çıkarma – Tam C# Kılavuzu](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Aspose OCR kullanarak C# ile görüntülerden metin çıkarmayı adım adım öğrenin. +### [C#'ta PNG'den Aranabilir PDF Oluşturma – Tam Kılavuz](./create-searchable-pdf-from-png-in-c-complete-guide/) +C# ile Aspose OCR kullanarak PNG dosyasından aranabilir PDF oluşturmayı adım adım öğrenin. +### [C#'ta Görüntüden Metin Çıkarma – Tam Aspose OCR Kılavuzu](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Aspose OCR kullanarak C# içinde görüntülerden metin çıkarmayı adım adım keşfedin. +### [C#'ta Görüntüden Metin Tanıma – OCR ve JSON Tam Kılavuzu](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +C# ile Aspose OCR kullanarak görüntülerden metin çıkarın ve sonuçları JSON formatında alın. Adım adım tam rehber. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/turkish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..9e4422cf --- /dev/null +++ b/ocr/turkish/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-01-10 +description: C# kullanarak PNG'den aranabilir PDF oluşturun. Görüntüyü PDF'ye dönüştürmeyi, + PNG'den metin çıkarmayı ve C# ile görüntü OCR'ını tek bir kolay öğreticide öğrenin. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: tr +og_description: C# kullanarak PNG'den aranabilir PDF oluşturun. Bu kılavuz, görüntüyü + PDF'ye dönüştürmeyi, PNG'den metin çıkarmayı ve Aspose ile C#'ta görüntü OCR işlemini + gösterir. +og_title: C#'ta PNG'den Aranabilir PDF Oluşturma – Adım Adım +tags: +- Aspose OCR +- C# +- PDF/A +title: C#'ta PNG'den Aranabilir PDF Oluşturma – Tam Rehber +url: /tr/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PNG'den Aranabilir PDF Oluşturma C# – Tam Kılavuz + +C#'ta bir PNG dosyasından **aranabilir pdf** oluşturmanız mı gerekiyor? Yalnız değilsiniz—birçok geliştirici, taranmış görüntülerinin hem görüntülenebilir **hem** metin‑aranabilir olmasını istediğinde bu engelle karşılaşıyor. Bu öğreticide tüm süreci adım adım inceleyeceğiz: **görüntüyü pdf'ye dönüştür**, OCR çalıştırarak **png'den metin çıkar**, ve son olarak her şeyi **PDF/A‑2b** uyumlu aranabilir bir belge olarak kaydet. + +Sonunda, herhangi bir .NET projesine ekleyebileceğiniz tek bir yeniden kullanılabilir kod parçacığına sahip olacaksınız, ayrıca ileride baş ağrısı yaşamamanızı sağlayacak bir dizi pratik ipucu da edineceksiniz. Harici hizmetler yok, sadece Aspose OCR kütüphanesi ve birkaç satır C#. + +> **Önkoşullar** +> * .NET 6+ (or .NET Framework 4.7.2+). +> * Visual Studio 2022 or any C#‑compatible IDE. +> * A valid Aspose OCR license (or a free trial). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="C# kullanarak PNG'den aranabilir PDF oluşturma"} + +## Adım 1 – Aspose OCR'yi C# için Yükleyin ve Referans Verin + +İlk olarak, Aspose OCR NuGet paketine ihtiyacınız var. Terminalinizi (veya Package Manager Console) açın ve şu komutu çalıştırın: + +```bash +dotnet add package Aspose.OCR +``` + +GUI'yi tercih ediyorsanız, projenize sağ‑tıklayın → **Manage NuGet Packages…** → *Aspose.OCR*'u arayın ve en son kararlı sürümü yükleyin. + +Neden bu kütüphane? **png'yi pdf'ye dönüştür** işlemini destekler, çok sayfalı görüntüleri işler ve kutudan çıkar çıkmaz PDF/A‑2b üretebilir—arşivleme standartlarına uygun **aranabilir pdf** oluşturmak için mükemmeldir. + +> **Pro tip:** Değerlendirme filigranını önlemek için lisansınızı `Program.cs` içinde erken kaydedin. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Adım 2 – PNG'yi Yükleyin ve OCR Çalıştırın (png'den metin çıkar) + +Şimdi kaynak görüntüyü yükleyeceğiz. `ImageStream.FromFile` yardımcı sınıfı dosya sistemi detaylarını soyutlar ve desteklenen herhangi bir raster formatıyla çalışır. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +Bu noktada motor **png'den metin çıkarmış** ve içerde saklamıştır. Hatta `ocrEngine.Text` aracılığıyla ham metni inceleyebilirsiniz; bu, hata ayıklama veya günlükleme için kullanışlıdır. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **Görüntü çok sayfalı olsaydı ne olur?** +> Aspose OCR her sayfayı ayrı bir katman olarak ele alır. Sadece `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` çağırın ve motor otomatik olarak yineleyecektir. + +## Adım 3 – PDF/A‑2b Seçeneklerini Yapılandır (aranabilir pdf oluştur) + +OCR sonucunu **aranabilir pdf**'ye dönüştürmek için Aspose'a çıktıyı nasıl paketleyeceğini söylememiz gerekir. PDF/A‑2b uzun vadeli koruma için ideal bir seçenektir ve metin katmanının aranabilir olmasını garanti eder. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Orijinal görüntüyü neden gömüyoruz? Bazı uyumluluk kontrolleri, görsel temsiliyin orijinal taramaya eşleşmesini ister. Bu işaretleme, dosyayı gerçek bir **görüntüyü pdf'ye dönüştür** işlemi yaparken aranabilir metni korur. + +## Adım 4 – Sonucu Kaydedin ve Doğrulayın (png'yi pdf'ye dönüştür) + +Son olarak, çıktı dosyasını yazıyoruz. Aynı `Save` yöntemi, sağladığınız herhangi bir yol için çalışır. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Oluşan `output.pdf` dosyasını Adobe Reader veya herhangi bir PDF görüntüleyicide açın ve orijinal PNG'de bulunan bir kelimeyi aramayı deneyin. Kelime vurgulanıyorsa, tebrikler—PNG'den başarıyla **aranabilir pdf oluşturmuş**sunuz! + +### Hızlı doğrulama betiği (isteğe bağlı) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Neden Aranabilir PDF'ler için PDF/A‑2b Kullanılır? + +* **Arşiv güvenliği:** PDF/A‑2b dosyanın on yıllar sonra aynı şekilde render edilebileceğini garanti eder. +* **Regülasyon uyumu:** Birçok sektör (hukuk, tıp, finans) kayıt tutma için PDF/A gerektirir. +* **Aranabilirlik:** Gömülü OCR metin katmanı, belgenin masaüstü arama araçlarıyla indekslenmesini sağlar. + +Ek uyumluluk yüküne ihtiyacınız yoksa, `PdfAStandard` satırını kaldırabilir ve sadece `new PdfSaveOptions()` kullanabilirsiniz—çıktı hâlâ aranabilir olacak, sadece PDF/A‑2b olmayacak. + +## Yaygın Tuzaklar ve Nasıl Kaçınılır + +| Belirti | Muhtemel Neden | Çözüm | +|---------|----------------|------| +| Aranabilir metin görünmüyor | `ocrEngine.Recognize()` hiç çağrılmadı veya sessizce başarısız oldu | Görüntü yolunun doğru olduğundan ve lisansın kaydedildiğinden emin olun. | +| PDF çok büyük (10 + MB) | Orijinal PNG yüksek çözünürlükte ve `EmbedOriginalImage` true | OCR'dan önce görüntüyü küçültün veya `EmbedOriginalImage = false` ayarlayın. | +| Metin bozuk | Dil otomatik algılanmadı | `ocrEngine.Language = "eng";` (veya hedef dilinizi) `Recognize()`'den önce ayarlayın. | + +## Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Programı çalıştırın, `output.pdf` dosyasını açın ve `input.png` içinde bulunduğunu bildiğiniz kelimeleri aramayı deneyin. Her şey uyuyorsa, **görüntüyü pdf'ye dönüştür** iş akışını hâlihazırda ustalaştınız ve **ocr image c#** tarzını öğrendiniz. + +## Sonraki Adımlar ve İlgili Konular + +* **Toplu işleme:** PNG klasörünü döngüye alıp sonuçları tek bir PDF'de birleştirin. +* **Alternatif çıktı formatları:** Aspose OCR ayrıca DOCX, TXT veya aranabilir PDF/A‑1b üretebilir. +* **Performans ayarı:** Kesin doğruluğun kritik olmadığı büyük hacimler için `ocrEngine.RecognitionMode = RecognitionMode.Fast` kullanın. +* **Diğer kütüphaneler:** Bütçeniz kısıtlıysa Tesseract .NET'i inceleyin—ancak yerleşik PDF/A desteğini kaybedeceksiniz. + +--- + +### TL;DR + +Aspose OCR kullanarak C#'ta bir PNG'den **aranabilir pdf** oluşturmayı size gösterdik. Adımlar şunlardır: + +1. Aspose OCR'yi kurun (`dotnet add package Aspose.OCR`). +2. PNG'yi yükleyin ve `ocrEngine.Recognize()` çalıştırın (**png'den metin çıkar**). +3. PDF/A‑2b için `PdfSaveOptions`'ı yapılandırın (**görüntüyü pdf'ye dönüştür** & **png'yi pdf'ye dönüştür**). +4. Dosyayı kaydedin ve aranabilir katmanı doğrulayın. + +Deneyin, seçenekleri ayarlayın ve yakında herhangi bir taranmış görüntüyü arşiv‑hazır, aranabilir bir PDF'ye dönüştüren sağlam bir iş akışına sahip olacaksınız. İyi 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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/turkish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..4e7d47c5 --- /dev/null +++ b/ocr/turkish/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: Aspose OCR kullanarak C#'de görüntüden metin çıkarın. Tarama belgesi + metnini toplu işleme ile nasıl dönüştüreceğinizi öğrenin ve sonuçları kaydedin. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: tr +og_description: Aspose OCR ile C#'da görüntüden metin çıkarın. Bu öğretici, toplu + işleme kullanarak taranmış belge metnini nasıl dönüştüreceğinizi gösterir. +og_title: C#'ta Görüntüden Metin Çıkarma – Tam Aspose OCR Rehberi +tags: +- OCR +- C# +- Aspose +- Image Processing +title: C#'ta Görüntüden Metin Çıkarma – Tam Aspose OCR Kılavuzu +url: /tr/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Görüntüden Metin Çıkarma – Tam Aspose OCR Kılavuzu + +Hiç **görüntüden metin çıkarma** ihtiyacı duydunuz ama nereden başlayacağınızı bilemediniz mi? Yalnız değilsiniz; birçok geliştirici taranmış PDF'ler, çok sayfalı TIFF'ler veya fotoğraf tabanlı makbuzlarla çalışırken bu engelle karşılaşıyor. İyi haber, Aspose OCR ile sadece birkaç C# satırıyla **taran belge metnini dönüştürebilirsiniz**. + +Bu öğreticide gerçek bir senaryoyu adım adım inceleyeceğiz: çok sayfalı bir TIFF dosyasını alıp her sayfada toplu OCR çalıştırmak ve tüm sayfaların içeriğini tek bir metin dosyasına yazmak. Sonunda çalıştırmaya hazır bir konsol uygulamanız olacak, her adımın neden önemli olduğunu anlayacaksınız ve şifre korumalı görüntüler ya da özel dil paketleri gibi uç durumlar için akışı nasıl ayarlayacağınızı öğreneceksiniz. + +## Önkoşullar + +- .NET 6.0 SDK veya daha yeni (kod .NET Core ve .NET Framework ile de çalışır) +- Visual Studio 2022 (ya da tercih ettiğiniz herhangi bir editör) +- Bir Aspose OCR lisans dosyası (ya da ücretsiz deneme modunu kullanabilirsiniz) +- Referans alabileceğiniz bir klasöre yerleştirilmiş çok sayfalı bir görüntü dosyası (ör. `multipage.tif`) + +`Aspose.OCR` dışındaki ek NuGet paketlerine ihtiyaç yoktur; ilk adımda onu kuracağız. + +## 1. Adım – Aspose  OCR'yi Yükleyin ve Projeyi Ayarlayın + +Başlamak için yeni bir konsol projesi oluşturun ve Aspose  OCR kütüphanesini ekleyin. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Pro ipucu:** Bir lisans dosyanız (`Aspose.OCR.lic`) varsa, proje kök dizinine kopyalayın. Kütüphane çalışma zamanında otomatik olarak algılar. + +Bu adım neden gerekli? Paketi yüklemek, `BatchProcessor`, `OcrEngine` ve düşük seviyeli görüntü işleme detaylarını soyutlayan diğer kullanışlı sınıflara erişmenizi sağlar. Ayrıca Aspose'un sunduğu en yeni OCR algoritmalarını kullanmanızı garantiler. + +## 2. Adım – BatchProcessor ile Çok Sayfalı Görüntüyü Yükleyin + +`BatchProcessor`, tam da bu senaryo için tasarlanmıştır: çok sayfalı bir görüntünün her sayfasını manuel olarak bölmenize gerek kalmadan yinelemenizi sağlar. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor`, tüm sayfaları belleğe okur ve `batchProcessor.Pages` üzerinden erişime açar. Her sayfa nesnesi kendi numarasını (`ocrPage.Number`) bilir; bu numarayı daha sonra net başlıklar oluşturmak için kullanacağız. + +## 3. Adım – Sonuçları Biriktirmek İçin StringBuilder Hazırlayın + +Her sayfanın OCR çıktısını başlıklarla ayırarak tek bir metin dosyasında toplamak istiyoruz. `StringBuilder`, bir döngü içinde string birleştirmenin en verimli yoludur. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Neden `StringBuilder`? Döngü içinde `+` ile string birleştirmek her yinelemede yeni bir string oluşturur ve performansı düşürür—özellikle büyük belgelerde. + +## 4. Adım – Her Sayfayı Döngüyle İşleyin, OCR Çalıştırın ve Sonuçları Ekleyin + +Şimdi öğreticinin özü: her sayfayı döngüye alıp metni tanıyın ve sayfa işaretleyicisiyle saklayın. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Neden her sayfa için yeni bir `OcrEngine`?** Bazı geliştiriciler tek bir motoru yeniden kullanıp `Image` özelliğini değiştirir, ancak bu dil ayarlarını veya önceki sonuçları tutabilir ve ince hatalara yol açar. Yeni bir motor oluşturmak temiz bir başlangıç garantiler. + +### Yaygın Uç Durumları Ele Alma + +- **Boş sayfalar:** Bir sayfada tanınabilir metin yoksa, `ocrEngine.Text` boş bir string olur. “(Metin bulunamadı)” gibi bir yer tutucu eklemek isteyebilirsiniz. +- **Dil seçimi:** Varsayılan olarak Aspose OCR İngilizce kullanır. Almanca veya Fransızca işlemek için `ocrEngine.Language = Language.German;` gibi bir ayar yapın, `Recognize()` çağrısından önce. +- **Performans ipucu:** Çok büyük TIFF'lerde `ocrEngine.UseParallelProcessing = true;` etkinleştirerek birden fazla çekirdekten yararlanabilirsiniz. + +## 5. Adım – Birleştirilmiş Çıktıyı Metin Dosyasına Yazın + +Son olarak biriktirilmiş stringi diske kaydedin. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Oluşan `multipage_result.txt` aşağıdaki gibi görünecektir: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Artık **görüntüden metin çıkarma** işlemini gerçekleştirdiniz ve **taran belge metnini** aranabilir, düzenlenebilir bir formata etkili bir şekilde dönüştürdünüz. + +## Bonus – Görsel Genel Bakış (Resim Alt Metni) + +Aşağıda süreci gösteren basit bir akış diyagramı bulunmaktadır. +*Alt metin:* “Aspose OCR toplu işleme ile C#’ta görüntüden metin çıkarma sürecini gösteren diyagram”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Bu öğreticiyi statik bir siteye yayınlıyorsanız, yer tutucuyu gerçek bir SVG veya PNG ile değiştirin.)* + +## Sıkça Sorulan Sorular + +**Bu PDF dosyalarıyla çalışır mı?** +Evet, Aspose OCR PDF sayfalarını görüntü olarak okuyabilir. Önce PDF'yi görüntülere dönüştürmeniz ya da `Aspose.PDF`'den `PdfDocument` kullanıp her sayfanın rasterleştirilmiş görüntüsünü `OcrEngine`'e beslemeniz gerekir. + +**TIFF dosyam şifre korumalıysa ne olur?** +`BatchProcessor` şifrelemeyi doğrudan desteklemez. OCR işlem hattına göndermeden önce `Aspose.Imaging` gibi bir kütüphane ile dosyayı çözmeniz gerekir. + +**Düz metin yerine JSON çıktı alabilir miyim?** +Kesinlikle. `StringBuilder` mantığını bir JSON serileştirici (ör. `System.Text.Json`) ile değiştirin ve her sayfanın metnini `pageNumber` anahtarı altında saklayın. + +## Tam Çalışan Örnek + +Aşağıda `Program.cs` içine kopyalayıp yapıştırabileceğiniz tam program yer alıyor. Tüm using yönergeleri, hata yönetimi ve yorumlar dahildir. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Programı şu şekilde çalıştırın: + +```bash +dotnet run +``` + +Konsolda başarı mesajı görmeli ve çıktı dosyası birleştirilmiş OCR sonuçlarını içermelidir. + +## Sonuç + +Aspose OCR kullanarak **görüntüden metin çıkarma** için pratik bir yol gösterdik; çok sayfalı taranmış dosyaları düz, aranabilir metne dönüştürdük. `BatchProcessor` ve sayfa başına temiz bir `OcrEngine` kurulumu sayesinde **taran belge metnini** güvenilir bir şekilde dönüştürürken kod tabanını basit ve sürdürülebilir tutabilirsiniz. + +Denemekten çekinmeyin: farklı diller deneyin, JSON çıktısına geçin veya bu mantığı anlık yükleme işleyen bir web API’sine entegre edin. Temel desen aynı kalır—yükle, tanı, biriktir ve kalıcı hale getir. + +OCR, Aspose lisanslaması veya devasa belge gruplarıyla ilgili daha fazla sorunuz mu var? Aşağıya yorum bırakın ya da Aspose’un resmi dokümantasyonuna göz atarak daha derinlemesine bilgi edinin. İyi 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/turkish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..0901b9e6 --- /dev/null +++ b/ocr/turkish/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Aspose OCR kullanarak C#'de görüntüden metin çıkarın. OCR için görüntüyü + nasıl yükleyeceğinizi, Hintçe metni nasıl tanıyacağınızı ve birkaç basit adımda + OCR tanımasını nasıl çalıştıracağınızı öğrenin. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: tr +og_description: Aspose OCR'i C#'da kullanarak görüntüden metin çıkarın. OCR için görüntüyü + yükleme, Hintçe metni tanıma ve OCR tanımasını çalıştırma adımlarını içeren bu adım + adım rehberi izleyin. +og_title: Aspose OCR ile Görüntüden Metin Çıkarma – Tam C# Rehberi +tags: +- Aspose OCR +- C# +- Image Processing +title: Aspose OCR ile Görüntüden Metin Çıkarma – Tam C# Rehberi +url: /tr/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Resimden Metin Çıkarma Aspose OCR ile – Tam C# Kılavuzu + +Resimden **metin çıkarmak** istediğiniz ama hangi kütüphaneyi seçeceğinizden emin olmadığınız oldu mu? Yalnız değilsiniz—birçok geliştirici .NET'te OCR ile ilk kez uğraştıklarında bu engelle karşılaşıyor. İyi haber, Aspose OCR tüm süreci şaşırtıcı derecede sorunsuz hâle getiriyor, hatta Hintçe gibi karmaşık betiklerle çalışırken bile. + +Bu öğreticide **OCR için resmi yükleme**, **Hintçe metni tanıma** ve **OCR tanımasını çalıştırma** için ihtiyacınız olan her şeyi adım adım göstereceğiz. Sonunda, çıkarılan metni doğrudan ekrana yazdıran hazır‑çalıştır bir konsol uygulamanız olacak. + +## Oluşturacağınız Şey + +Küçük bir konsol uygulaması oluşturacağız ve bu uygulama: + +1. OCR motorunu dil modellerinin bulunduğu bir klasöre yönlendirecek. +2. Otomatik indirmeleri kapatacak—kısıtlı ortamlar için kullanışlı. +3. Hedef dil olarak Hintçeyi seçecek. +4. Hintçe metin içeren bir JPEG (veya PNG) dosyasını yükleyecek. +5. Tanıma işlem hattını çalıştıracak. +6. Oluşan dizeyi konsola yazdıracak. + +Harici servisler, bulut anahtarları yok; sadece yerel OCR. + +## Önkoşullar + +- **.NET 6.0** veya üzeri (kod .NET Framework 4.7+ üzerinde de çalışır). +- **Aspose.OCR for .NET** NuGet paketi yüklü. + ```bash + dotnet add package Aspose.OCR + ``` +- `OcrResources` adlı bir klasör ve içinde Hintçe dil modeli (`hin.traineddata`). + Aspose OCR indirme sayfasından indirip `YOUR_DIRECTORY/OcrResources` içine koyabilirsiniz. +- Açık Hintçe metin içeren bir resim dosyası (`input.jpg`). + Örneğin, “स्वागत है” yazan bir dükkan tabelası fotoğrafı hayal edin. + +> **Pro tip:** Görüntü çözünürlüğünü 300 dpi’nin üzerinde tutun; daha düşük çözünürlükler karakter kaçırmaya neden olabilir. + +--- + +## Adım 1: OCR Motorunu Kaynaklarınıza Yönlendirin – *resimden metin çıkarma* + +Aspose OCR'ın ilk ihtiyacı, dil modellerinin konumudur. Bunu atlamazsanız motor, dosyaları otomatik olarak indirmeye çalışır—güvenli bir ağda istemeyebilirsiniz. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Neden önemli:* `ResourcesPath` ayarlanarak motorun doğru eğitim verisini yerel olarak yüklemesi sağlanır, bu da ilk çalıştırmayı hızlandırır ve beklenmedik ağ trafiğini önler. + +--- + +## Adım 2: Otomatik Kaynak İndirmesini Devre Dışı Bırakın – *OCR için resmi yükleme* + +Birçok kurumsal ortamda dış internet erişimi engellenmiştir. Aspose OCR, eksik dosyaları anlık olarak indirmeye çalışan bir bayrağı saygı ile uygular. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Bu satırı atlayıp Hint modeli eksik olursa motor “Gerekli kaynak indirilemedi” şeklinde bir istisna fırlatır. Bayrağı `false` tutmak, kendinizin ele alabileceği net, deterministik bir hatayı verir. + +--- + +## Adım 3: Dili Seçin – *hintçe metni tanıma* + +Aspose OCR onlarca dili destekler, ancak hangi dili kullanacağınıza siz karar vermelisiniz. Hintçe `OcrLanguage.Hindi` ile tanımlanır. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Birden fazla dile mi ihtiyacınız var?* `Language = OcrLanguage.AutoDetect` ayarlayarak motorun tahmin etmesini sağlayabilirsiniz, ancak otomatik algılama daha yavaştır ve karışık betiklerde bazen yanılabilir. Saf Hintçe için açık seçim en güvenli yoldur. + +--- + +## Adım 4: Resminizi Yükleyin – *OCR için resmi yükleme* + +Şimdi motorun okuyacağı resmi veriyoruz. Aspose, temel `System.Drawing` bağımlılıklarını soyutlayan `ImageStream.FromFile` yardımcı metodunu sunar. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Dosya yolu yanlışsa Aspose bir `FileNotFoundException` fırlatır. Bu satırdan önce `File.Exists` kontrolü yapmak hata ayıklamayı kolaylaştırır. + +--- + +## Adım 5: OCR Motorunu Çalıştırın – *OCR tanımasını çalıştırma* + +Her şey yapılandırıldıktan sonra tanıma sürecini başlatıyoruz. Bu çağrı senkronizedir ve metin çıkarılana kadar bloklanır. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Arka planda Aspose; ön işleme (eğrilik düzeltme, gürültü giderme), segmentasyon, karakter sınıflandırma ve son olarak dil‑özel sonrası işleme gibi birden çok aşamayı yürütür. Ağır iş bu tek metod çağrısının içinde gerçekleşir. + +--- + +## Adım 6: Çıkarılan Metni Yazdırın – *resimden metin çıkarma* + +Sonuç motorun `Text` özelliğinde bulunur. Basitçe konsola yazdırıyoruz, ancak veritabanına kaydedebilir, bir API üzerinden gönderebilir ya da başka bir NLP hattına besleyebilirsiniz. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Beklenen çıktı** (resimde “स्वागत है” varsa): + +``` +=== OCR RESULT === +स्वागत है +``` + +Karakterler bozuk görünüyorsa, Hint modeli doğru konumda mı kontrol edin ve görüntünün aşırı sıkıştırılmadığından emin olun. + +--- + +## Tam Çalışan Örnek + +Aşağıda yeni bir konsol projesine (`dotnet new console`) kopyalayıp yapıştırabileceğiniz tam program yer alıyor. `YOUR_DIRECTORY` kısmını kendi makinenizdeki gerçek yol ile değiştirin. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **İpucu:** Birden çok resmi döngü içinde işleyecekseniz, tek bir `OcrEngine` örneği oluşturup yeniden kullanın—bu, başlatma maliyetini azaltır. + +--- + +## Yaygın Sorunların Çözümü + +| Sorun | Neden Oluşur | Hızlı Çözüm | +|-------|--------------|-------------| +| **Boş çıktı** | Yanlış dil modeli veya düşük kalite görüntü. | `ResourcesPath`i doğrulayın, DPI artırın veya `ocrEngine.Image = ImageStream.FromFile(..., true)` ile otomatik iyileştirmeyi etkinleştirin. | +| **İstisna: Kaynak bulunamadı** | Hintçe `.traineddata` dosyası eksik. | Hint modeli dosyasını Aspose'tan indirip `OcrResources` içine koyun, dosya adının `hin.traineddata` olduğundan emin olun. | +| **Garip karakterler** | Konsola yazdırırken kodlama uyuşmazlığı. | Konsol çıktı kodlamasını ayarlayın: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Performans gecikmesi** | Ölçeklendirilmemiş büyük görüntüler. | OCR'a vermeden önce görüntüyü maksimum 2000 px genişlik/yüksekliğe küçültün. | + +--- + +## Sonraki Adımlar ve İlgili Konular + +- **Toplu işleme:** Kodu bir `foreach` döngüsüyle sararak bir klasördeki tüm resimleri işleyin. +- **Farklı diller:** `OcrLanguage.Hindi` yerine `OcrLanguage.English`, `OcrLanguage.Arabic` vb. kullanın. +- **Çıktı formatları:** `Console.WriteLine` yerine `File.WriteAllText("result.txt", ocrEngine.Text);` ile metni bir dosyaya yazın. +- **ASP.NET Core entegrasyonu:** Görüntü yüklemesi kabul eden bir API uç noktası oluşturup çıkarılan metni JSON olarak döndürün. + +Bu uzantıların tümü aynı desen izler—motoru yapılandırın, bir resim yükleyin, tanıyın ve sonucu tüketin. + +--- + +## Sonuç + +Aspose OCR kullanarak C# içinde **resimden metin çıkarma** işlemini nasıl yapacağınızı gösterdik. Kılavuz, **OCR için resmi yükleme**, **Hintçe metni tanıma** ve **OCR tanımasını çalıştırma** adımlarını kapsayan tam bir konsol uygulaması sunuyor. + +Kendi resimlerinizle deneyin, farklı dillerle oynayın ve kod parçacığını web servisleri ya da arka plan görevleri için uyarlamaktan çekinmeyin. Temel fikir aynı kalır: kaynakları ayarlayın, dili seçin, bir resim verin ve `Text` özelliğini okuyun. + +Herhangi bir sorunla karşılaşırsanız, yukarıdaki sorun giderme tablosuna bakın ya da bir yorum bırakın. İyi kodlamalar, OCR sonuçlarınız her zaman kristal‑net olsun! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/turkish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..e3089470 --- /dev/null +++ b/ocr/turkish/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: C#'ta Aspose OCR kullanarak bir görüntüde OCR nasıl çalıştırılır. Görüntüden + metin çıkarma, görüntüde OCR çalıştırma ve GPU hızlandırmasıyla OCR için görüntü + yükleme öğrenin. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: tr +og_description: Aspose OCR kullanarak bir görüntüde OCR nasıl çalıştırılır. Bu öğreticide, + görüntüden metin nasıl çıkarılır, görüntüde OCR nasıl çalıştırılır ve OCR için görüntü + nasıl verimli bir şekilde yüklenir gösterilmektedir. +og_title: C#'ta OCR Nasıl Çalıştırılır – Tam Adım Adım Kılavuz +tags: +- OCR +- C# +- Aspose +title: C#'de OCR Nasıl Çalıştırılır – Aspose OCR ile Tam Rehber +url: /tr/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#'ta OCR Nasıl Çalıştırılır – Aspose OCR ile Tam Kılavuz + +Hiç **OCR'ı bir fotoğrafta çalıştırıp** metni çıkarmayı, saçınızı çekmeden nasıl yapabileceğinizi merak ettiniz mi? Tek başınıza değilsiniz. Faturaları dijitalleştiriyor, makbuzları tarıyor ya da sadece aranabilir bir PDF oluşturmak istiyor olun, görüntüden metin çıkarabilmek birçok geliştirici için günlük bir ihtiyaç. + +Bu öğreticide, Aspose OCR kütüphanesini kullanarak **görüntü dosyalarında OCR nasıl çalıştırılır** konusunu, hız için GPU hızlandırmasıyla birlikte gösteren pratik, uçtan uca bir örnek üzerinden adım adım ilerleyeceğiz. Sonunda görüntüyü OCR için nasıl yükleyeceğinizi, bellek kullanımını nasıl ayarlayacağınızı ve temiz düz metin sonuçlarını birkaç dakikalık kodla nasıl alacağınızı tam olarak bileceksiniz. + +## Öğrenecekleriniz + +- C# içinde Aspose OCR motorunu nasıl başlatılır +- Diskten ya da akıştan **OCR için görüntü nasıl yüklenir** +- GPU hızlandırmasını nasıl etkinleştirir ve GPU belleğini nasıl sınırlandırırsınız +- **Görüntüden metin nasıl çıkarılır** ve çıktının nasıl doğrulanır +- Yaygın tuzaklar (GPU modülü eksik, bellek limitleri) ve hızlı çözümleri + +Aspose OCR ile önceden bir deneyiminiz olmasına gerek yok; sadece çalışan bir .NET ortamı ve örnek bir görüntü yeterli. + +--- + +## Aspose OCR ile Bir Görüntüde OCR Nasıl Çalıştırılır + +İlk olarak, tüm işi yapan net, çalıştırılabilir bir kod parçacığına ihtiyacınız var. Aşağıda, kopyalayıp yapıştırıp hemen çalıştırabileceğiniz tam program yer alıyor. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Beklenen çıktı** (örnek görüntünün “Hello World” ifadesini içerdiğini varsayarsak): + +``` +=== OCR Result === +Hello World +``` + +> **Pro ipucu:** Metin göremiyorsanız, GPU modülünün yüklü olduğundan ve görüntü yolunun doğru olduğundan emin olun. `ImageStream.FromFile` metodu, dosya bulunamazsa net bir istisna fırlatır. + +--- + +## GPU Hızlandırmasıyla Görüntüden Metin Çıkarma + +GPU'yu neden kullanmalısınız? Sadece CPU ile OCR çalışır, ancak büyük ya da yüksek çözünürlüklü resimlerde acı verici derecede yavaş olabilir. GPU hızlandırmasını (yukarıdaki adım 2) etkinleştirmek, binlerce pikseli saniyede işleyebilen grafik kartınıza ağır işi devretmek demektir. + +### GPU Ne Zaman Kullanılır + +- **Toplu işleme** – bir kerede onlarca faturayı taramak. +- **Yüksek çözünürlüklü taramalar** – 300 dpi üzerindeki her şey. +- **Gerçek zamanlı uygulamalar** – anlık geri bildirim gerektiren mobil tarayıcılar. + +Ortamınız uyumlu bir GPU içermiyorsa, sadece `EnableGpuAcceleration = false;` satırını ekleyin; motor otomatik olarak CPU moduna geçer. + +--- + +## Görüntüde OCR Çalıştırma – Görüntüyü Doğru Yükleme + +Görüntüyü yüklemek, **OCR için görüntü nasıl yüklenir** adımıdır ve çoğu zaman insanları zorlar. Aspose OCR bir `ImageStream` bekler; bu akış bir dosyadan, bellek akışından ya da bir URL'den oluşturulabilir. İşte birkaç örnek: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Köşe durumu:** Bazı görüntüler, OCR motorunu şaşırtan bir alfa kanalı (şeffaflık) içerir. Alfanın kaldırılması çok basittir: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Şimdi **OCR için görüntü nasıl yüklenir** konusundaki en yaygın yolları kapsadınız; motor her seferinde temiz ve desteklenen bir format alacak. + +--- + +## OCR İçin Görüntüyü Verimli Yükleme İpuçları + +1. **Büyük görüntüleri yeniden boyutlandırın** – OCR 4 K bir fotoğrafa ihtiyaç duymaz; genişliği ~1500 px’e düşürmek, doğruluğu etkilemeden hızı artırır. +2. **Gri tonlamaya dönüştürün** – gürültüyü azaltır ve düşük kontrastlı taramalarda tanıma kalitesini artırabilir. +3. **Deskew ile ön işleme** – görüntünüz eğimli ise, Aspose OCR’ın yerleşik deskew özelliği `ocrEngine.Config.EnableDeskew = true;` ile etkinleştirilebilir. + +Bu ayarlamalar, **görüntüden metin çıkarma** işlemini toplu yaparken özellikle işe yarar. + +--- + +## Yaygın Tuzaklar ve Çözüm Yolları + +| Belirti | Muhtemel Neden | Çözüm | +|---------|----------------|-------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | GPU modülü yüklü değil | Aspose OCR GPU paketini kurun veya GPU'yu devre dışı bırakın (`EnableGpuAcceleration = false`). | +| Boş çıktı | Görüntü yolu hatalı ya da format desteklenmiyor | `ImageStream.FromFile` yolunu kontrol edin; dosyanın doğru okunduğundan emin olmak için baytlardan yüklemeyi deneyin. | +| Bellek yetersiz hatası | Büyük toplu işlem için GPU bellek limiti çok düşük | `GpuMemoryLimit` değerini artırın (ör. 2048) veya görüntüleri daha küçük partilerde işleyin. | +| Bozuk karakterler | Görüntü çok gürültülü ya da düşük kontrastlı | Ön işleme: ikilileştirme, lekeleri temizleme veya DPI'yi artırma. | + +--- + +## Tam Çalışan Örnek – Hepsini Bir Araya Getirin + +Aşağıda, tartıştığımız en iyi uygulamaları içeren kompakt bir konsol uygulaması bulunuyor: GPU hızlandırması, bellek sınırlaması, görüntü ön işleme ve hata yönetimi. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Bu programı çalıştırdığınızda, görüntünüzden temiz metin çıkarılır ve **görüntüden metin çıkarma** işleminin sağlam bir yolunu gösterir. + +--- + +## Sonuç + +Aspose OCR kullanarak bir görüntüde **OCR nasıl çalıştırılır** konusunu, motorun başlatılmasından görüntünün yüklenmesine, GPU hızlandırmasının etkinleştirilmesine ve kenar durumlarının ele alınmasına kadar ele aldık. Artık bu referansı herhangi bir .NET projesine kopyalayıp **görüntüden metin çıkarma** işlemini anında başlatabilirsiniz. + +Sıradaki adım? PDF sayfalarını beslemeyi deneyin, farklı dillerle (ör. `ocrEngine.Config.Language = "spa"` ile İspanyolca) deney yapın veya bu akışı, yüklemeleri anlık işleyen bir web API'ye entegre edin. Ufuklar geniş ve konuştuğumuz araçlarla her OCR zorluğuna hazır olduğunuzdan emin olabilirsiniz. + +Kodlamaktan keyif alın, metniniz her zaman temiz ve OCR'ınız hızlı olsun! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/turkish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..59b5d346 --- /dev/null +++ b/ocr/turkish/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-01-10 +description: OCR'yi hızlı bir şekilde nasıl çalıştırır ve bir görüntüden Arapça metni + nasıl çıkarırsınız. Görüntüyü metne dönüştürmeyi, PNG'den metin okumayı öğrenin + ve Aspose OCR ile metin çıkarmanın nasıl yapıldığını görün. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: tr +og_description: C#'ta OCR nasıl çalıştırılır ve bir PNG görüntüsünden Arapça metin + nasıl çıkarılır. Bu rehber, görüntüyü metne dönüştürmeyi ve PNG'den metni adım adım + okumayı gösterir. +og_title: C#'ta OCR Nasıl Çalıştırılır – PNG'den Arapça Metin Çıkarma +tags: +- OCR +- C# +- Aspose +title: C#'ta OCR Nasıl Çalıştırılır – PNG'den Arapça Metin Çıkarma +url: /tr/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# C#'de OCR Nasıl Çalıştırılır – PNG'den Arapça Metin Çıkarma + +Arapça karakterler içeren bir resimde **OCR nasıl çalıştırılır** diye hiç merak ettiniz mi? Tek başınıza değilsiniz. Birçok geliştirici, bir PNG'den **Arapça metin çıkarmak** gerektiğinde, sağ‑dan‑sol scriptleri sorunsuz şekilde işleyebilecek kütüphaneyi bilmedikleri için bir duvara çarpar. + +Bu öğreticide, **görüntüyü metne dönüştürmek**, **PNG'den metin okumak** ve sonunda Aspose.OCR kullanarak **metni nasıl çıkaracağınızı** temiz bir C# konsol uygulamasında öğreneceksiniz. Sonunda, Arapça dizeyi doğrudan terminalinize yazdıran çalıştırmaya hazır bir programınız olacak. + +## Öğrenecekleriniz + +- Aspose.OCR NuGet paketini kurun ve referans verin. +- OCR motorunu Arapça dil desteği için yapılandırın. +- Bir PNG görüntüsü yükleyin ve tanıma sürecini çalıştırın. +- Çıkarılan metni alın ve görüntüleyin. +- Daha iyi doğruluk için ayarları ince ayar yapın ve yaygın tuzakları yönetin. + +OCR konusunda önceden deneyim gerekmez, sadece C#'a ve bir .NET geliştirme ortamına (Visual Studio, Rider veya `dotnet` CLI yeterlidir) temel bir anlayışınız olmalı. + +--- + +## OCR Nasıl Çalıştırılır – Aspose OCR Kurulumu + +### Adım 1: Aspose.OCR NuGet Paketini Ekleyin + +İlk ihtiyacımız olan şey OCR kütüphanesidir. Aspose.OCR ticari bir üründür, ancak öğrenme amaçları için mükemmel çalışan ücretsiz bir deneme sürümü sunar. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Alternatif olarak, Visual Studio'da **NuGet Package Manager**'ı açın, **Aspose.OCR**'ı arayın ve **Install** (Yükle) düğmesine tıklayın. + +> **Pro ipucu:** Kütüphaneyi bir CI boru hattında kullanmayı planlıyorsanız, sürümü kilitlemek için `-v` bayrağını ekleyin, örn., `dotnet add package Aspose.OCR -v 23.10`. + +### Adım 2: Yeni Bir Konsol Projesi Oluşturun (eğer yoksa) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Artık kodumuz için hazır, yeni bir `Program.cs` dosyanız var. + +--- + +## Arapça Metin Çıkarma – OCR Kodunu Yazma + +Aşağıda eksiksiz, çalıştırmaya hazır program yer alıyor. `Program.cs` olarak kaydedin (veya otomatik oluşturulan dosyanın yerine koyun). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Her Satırın Önemi + +- **`OcrEngine`**: Görüntü yüklemeyi, dil seçimini ve tanıma işlemini koordine eden merkezi sınıftır. +- **`Language = OcrLanguage.Arabic`**: Arapça sağ‑dan‑sol bir betik ve benzersiz glifler kullanır; dili ayarlamak motorun doğru karakter modellerini uygulamasını sağlar. +- **`ImageStream.FromFile`**: PNG, JPEG, BMP ve birçok diğer formatı işler. Eğer bir `MemoryStream`'den (örneğin, yüklenen bir dosya) okumanız gerekirse, bu çağrıyı ona göre değiştirin. +- **`Recognize()`**: Ağır işi yapar—piksel analizi, segmentasyon ve karakter sınıflandırması. +- **`ocrEngine.Text`**: Son Unicode dizesi, daha fazla işleme, depolamaya veya görüntülemeye hazır. + +### Beklenen Çıktı + +`arabic_sample.png` dosyası “مرحبا بالعالم” (Hello World) ifadesini içeriyorsa, konsol şu çıktıyı verir: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Eğer çıktı bozuk görünüyorsa, görüntünün net olduğundan, dilin Arapça olarak ayarlandığından ve OCR motoru sürümünün belgelerle eşleştiğinden emin olun. + +--- + +## Görüntüyü Metne Dönüştürme – Doğruluğu Ayarlama + +Varsayılan ayarlar çoğu temiz tarama için işe yarasa da, gerçek dünya görüntüleri genellikle biraz ekstra ilgi gerektirir. + +| Ayar | Ne İşe Yarar | Ne Zaman Kullanılır | +|------|--------------|---------------------| +| `ocrEngine.Config.Preprocess = true` | Otomatik ikilileştirme ve gürültü kaldırmayı etkinleştirir. | Gölge içeren taranmış belgeler. | +| `ocrEngine.Config.Deskew = true` | Görüntüyü hafif eğimi düzeltmek için döndürür. | Eğimli çekilmiş fotoğraflar. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Tüm görüntüyü tek bir metin bloğu olarak ele alır. | Basit başlıklar veya tek satırlı etiketler. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Tanıma sadece Arapça karakterlerle sınırlanır. | Karışık dil sayfalarında yanlış pozitifleri azaltır. | + +Bu satırları motoru oluşturduktan hemen sonra ekleyebilirsiniz: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## PNG'den Metin Okuma – Farklı Görüntü Kaynaklarını Yönetme + +Bazen PNG bir veritabanında bulunur veya bir web isteğinden gelir. İşte `byte[]`'den okuyan hızlı bir varyant: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Akışın geri kalanı aynı kalır, bu da **metni nasıl çıkaracağınız**ın kaynağa bakılmaksızın tutarlı olduğu anlamına gelir. + +--- + +## Metni Nasıl Çıkarırsınız – İleri Seçenekler ve Kenar Durumları + +### 1. Çok Sayfalı PDF'ler veya TIFF'ler + +Çok sayfalı bir belgeyi OCR'lamak istiyorsanız, her sayfa üzerinde döngü oluşturun: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Not:** Bu kod parçacığı için `Aspose.PDF` paketine ihtiyacınız olacak. + +### 2. Dili Otomatik Algılama + +Aspose.OCR ayrıca otomatik algılama sunar, ancak daha yavaştır. Görüntünün Arapça mı yoksa başka bir betik mi içerdiğinden emin değilseniz, bunu etkinleştirin: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +Motor her dil modelini deneyecek ve en iyi eşleşmeyi seçecek. + +### 3. Performans İpuçları + +- **`OcrEngine`** nesnesini birden çok görüntü için yeniden kullanın; her seferinde yeni bir örnek oluşturmak ek yük getirir. +- **Paralel çalıştırın** yalnızca her iş parçacığı için ayrı motor örnekleriniz varsa—tek bir örneği paylaşmak yarış koşullarına neden olur. + +## Sonuç + +C#'de **OCR nasıl çalıştırılır** konusunu baştan sona ele aldık, **Arapça metin çıkarma**, **görüntüyü metne dönüştürme**, **PNG'den metin okuma** ve çeşitli senaryolarda **metni nasıl çıkaracağınız** sorusuna yanıt vermeyi gösterdik. Örnek kod eksiksiz, bağımsız ve herhangi bir .NET konsol projesine yapıştırmaya hazır. + +Sonraki adımlar? `OcrLanguage.Arabic`'i Korece ya da Sırp Kiril alfabesiyle değiştirerek kütüphanenin çok dilli gücünü görün. Gürültülü taramalarda doğruluğu artırmak için ön işleme bayraklarıyla deneyler yapın ya da OCR rutinini bir web API'ye entegre edin, böylece kullanıcılar görüntü yükleyip anında metin sonuçları alabilir. + +Kodlamaktan keyif alın ve OCR sonuçlarınız her zaman kristal gibi net olsun! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/turkish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..f40fa5ba --- /dev/null +++ b/ocr/turkish/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,297 @@ +--- +category: general +date: 2026-01-10 +description: Aspose OCR'i C#'ta kullanarak görüntüden metin tanımayı, metin koordinatlarını + çıkarmayı ve fişi JSON'a dönüştürmeyi öğrenin. Adım adım öğretici. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: tr +og_description: Aspose OCR kullanarak C#'de görüntüden metin tanıma. Bu kılavuz, metni + nasıl çıkaracağınızı, koordinatları nasıl alacağınızı ve fişi JSON'a nasıl dönüştüreceğinizi + gösterir. +og_title: görselden metin tanıma – Tam C# OCR Öğreticisi +tags: +- OCR +- C# +- Aspose +title: C#'ta Görüntüden Metin Tanıma – OCR ve JSON İçin Tam Kılavuz +url: /tr/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# görüntüden metin tanıma – Tam C# OCR Öğreticisi + +Görüntüden metin tanıma ihtiyacınız oldu mu ama hangi kütüphaneyi seçeceğinizden emin değildiniz? Yalnız değilsiniz. Gerçek dünyadaki birçok uygulamada—gider takipçileri, fiş tarayıcıları veya belge arşivleyicileri—metni güvenilir bir şekilde çıkarmak ilk engeldir. + +Bu öğreticide **metni nasıl çıkaracağımızı**, sınırlayıcı kutularını nasıl alacağımızı ve sonunda Aspose.OCR for .NET kullanarak **fişi JSON'a dönüştürmeyi** adım adım göstereceğiz. Sonunda, bir fiş fotoğrafını alıp güven puanları ve koordinatlarla düzenli bir JSON dosyası üreten bağımsız bir C# projesine sahip olacaksınız. + +## Gerekenler + +İlerlemeye başlamadan önce, makinenizde aşağıdakilerin yüklü olduğundan emin olun: + +- **.NET 6.0 SDK** (veya daha yeni bir sürüm). Eski framework'ler de çalışır, ancak .NET 6 modern kütüphaneler için ideal noktadır. +- **Visual Studio 2022** veya C# uzantılı VS Code. +- **Aspose.OCR for .NET** NuGet paketi (`Aspose.OCR` ve `Aspose.OCR.Output`). Bunu Package Manager Console üzerinden kurabilirsiniz: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Örnek bir fiş resmi (ör. `receipt.jpg`) daha sonra başvuracağınız bir klasöre yerleştirin. + +Hepsi bu—ekstra SDK yok, yerel ikili dosyalar yok, sadece saf yönetilen kod. + +## Adım 1: Yeni Bir Konsol Projesi Oluşturun + +İlk olarak, bir konsol uygulaması oluşturun. UI yükü olmadan OCR'ı test etmenin en hızlı yoludur. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Pro ipucu:** Proje klasörünü düzenli tutun; `Resources` adlı bir alt klasör oluşturup `receipt.jpg` dosyasını oraya koyun. Böylece yol yönetimi sorunsuz olur. + +## Adım 2: Fiş Resmini Yükleyin + +Şimdi gerçekten **görüntüden metin tanıma** yapıyoruz. İlk adım OCR motorunu dosyaya yönlendirmektir. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Yüklemeyi basit bir varlık kontrolüyle sarmamızın nedeni nedir? Çünkü üretimde, eksik veya bozuk olabilecek kullanıcı yüklemeleriyle sıkça karşılaşırsınız. Sorunu erken yakalamak, ileride belirsiz istisnalardan sizi korur. + +## Adım 3: OCR Gerçekleştir – **görüntüden metin tanıma** + +Resim bellekteyken, Aspose'tan **görüntüden metin tanıma** yapmasını istiyoruz. Bu işlem eşzamanlıdır ve zengin bir sonuç kümesi döndürür. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Arka planda Aspose, milyonlarca karakter üzerinde eğitilmiş bir sinir ağı çalıştırır. Motor `ocrEngine.Text`, `ocrEngine.RecognitionResult` ve koordinatları tutan `OcrRegion` nesnelerinin bir koleksiyonunu doldurur. Bu, bir sonraki adım için tam olarak ihtiyacımız olan şeydir. + +## Adım 4: **Metni Nasıl Çıkarırız** – Ham Dizeyi Almak + +Sadece düz metinle ilgileniyorsanız (belki hızlı bir arama için), motorun sağladığı metni doğrudan alabilirsiniz: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +OCR'ın paragraf sınırlarını algıladığı yerlerde satır sonları göreceksiniz. Birçok fiş tarama senaryosunda ham dize, basit regex'ler kullanarak toplamları, tarihleri veya satıcı adlarını çıkarmak için yeterlidir. + +## Adım 5: **Metin Koordinatlarını Çıkarma** – Her Kelime İçin Sınırlayıcı Kutular + +Çoğu zaman bir metin parçasının görüntüde *nerede* olduğunu bilmeniz gerekir—örneğin, UI'da toplam tutarı vurgulamak için. Aspose bunu `OcrRegion` nesneleri aracılığıyla sağlar. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Her tanınan segment için **metin koordinatlarını çıkarma** döngüsü yaptığımızı fark edin. Koordinatlar orijinal görüntüye göre görecelidir, bu yüzden bir grafik kanvasına veya HTML `` öğesine yerleştirebilirsiniz. + +## Adım 6: **Fişi JSON'a Dönüştürme** – Ayrıntılı Sonuçları Kaydetme + +Şimdi her şeyi bir araya getiren kısma geliyoruz: metin, güven puanları ve sınırlayıcı kutuları içeren makine‑okunur bir yapı istiyoruz. Aspose, bunu kolaylaştıran `JsonSaveOptions` ile birlikte gelir. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Oluşan dosya aşağıdaki gibi görünür (kısaltılmıştır): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Artık **fişi JSON'a dönüştürme** artefaktına sahipsiniz; bu, gider‑rapor API'leri, analiz boru hatları veya her kelimenin etrafına dikdörtgen çizen basit bir UI gibi aşağı akış hizmetlerine beslenebilir. + +## Tam Çalışan Örnek + +Tüm parçaları bir araya getirerek, projenize kopyalayıp yapıştırabileceğiniz tam `Program.cs` dosyasını aşağıda bulabilirsiniz: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Programı çalıştırın (`dotnet run`) ve konsol çıktısını izleyin. Yapıyı doğrulamak için `Resources/receipt.json` dosyasını açın. + +## Yaygın Sorular & Kenar Durumları + +- **Resim bulanıktaysa ne olur?** + Aspose OCR, 300 dpi veya daha yüksek çözünürlükte en iyi performansı gösterir. Düşük güven puanları alırsanız, görüntüyü motorun önüne göndermeden önce bir keskinleştirme filtresi uygulamayı düşünün. + +- **Birden fazla dili tanıyabilir miyim?** + Evet. `Recognize()` çağırmadan önce `ocrEngine.Language = Language.English | Language.Spanish;` şeklinde ayarlayın. + +- **Çıktıyı sadece sayılarla (ör. toplamlar) sınırlamak nasıl yapılır?** + Düz metni elde ettikten sonra `ocrEngine.Text` üzerinde `\d+\.\d{2}` gibi bir regex çalıştırın. Zaten koordinatlara sahip olduğumuz için eşleşen dizeyi görsel vurgulama için bölgesine geri haritalayabilirsiniz. + +- **JSON formatı özelleştirilebilir mi?** + `JsonSaveOptions` sınıfı birkaç bayrak sunar. Tamamen özel bir şema gerekiyorsa, `ocrEngine.RecognitionResult.Regions` üzerinde döngü yapıp nesneleri `System.Text.Json` ile kendiniz serileştirebilirsiniz. + +## Sonuç + +Aspose.OCR kullanarak C#'ta **görüntüden metin tanıma**, **metni çıkarma**, **metin koordinatlarını çıkarma** ve sonunda **fişi JSON'a dönüştürme** nasıl yapılır gösterdik. Tüm akış tek bir, çalıştırması kolay konsol uygulamasında yer alır; bu da prototipler için ya da daha büyük sistemlerde bir yapı taşı olarak mükemmeldir. + +Sonraki adımlar? JSON'ı sınırlayıcı kutuları çizen bir ön‑yüze beslemeyi deneyin veya çıktıyı bir gider‑rapor hizmetine bağlayın. Ayrıca farklı görüntü formatları (PNG, TIFF) ile deney yapabilir veya bir klasördeki fişleri toplu işleyebilirsiniz. + +OCR, Aspose veya JSON işleme hakkında daha fazla sorunuz mu var? Aşağıya yorum bırakın, iyi kodlamalar! + +![Görüntüden metin tanıma örnek fiş görüntüsü](receipt.jpg "Fiş görüntüsü örneği") + +{{< /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/net/ocr-configuration/_index.md b/ocr/vietnamese/net/ocr-configuration/_index.md index 4fbea5fd..d2097f59 100644 --- a/ocr/vietnamese/net/ocr-configuration/_index.md +++ b/ocr/vietnamese/net/ocr-configuration/_index.md @@ -39,9 +39,11 @@ Khai phá sức mạnh của nhận dạng hình ảnh OCR trong .NET với Aspo Mở khóa các khả năng OCR mạnh mẽ với Aspose.OCR cho .NET. Trích xuất văn bản từ hình ảnh một cách liền mạch. ### [OCRHoạt động với danh sách trong nhận dạng hình ảnh OCR](./ocr-operation-with-list/) Mở khóa tiềm năng của Aspose.OCR cho .NET. Dễ dàng thực hiện nhận dạng hình ảnh OCR bằng danh sách. Tăng năng suất và trích xuất dữ liệu trong các ứng dụng của bạn. +### [Đọc tài nguyên nhúng trong .NET – Hướng dẫn đầy đủ để thiết lập giấy phép Aspose](./read-embedded-resource-in-net-complete-guide-to-set-aspose-l/) +Hướng dẫn chi tiết cách đọc tài nguyên nhúng và thiết lập giấy phép Aspose trong ứng dụng .NET. {{< /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/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md b/ocr/vietnamese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md new file mode 100644 index 00000000..9be3eefe --- /dev/null +++ b/ocr/vietnamese/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/_index.md @@ -0,0 +1,238 @@ +--- +category: general +date: 2026-01-10 +description: Đọc tài nguyên nhúng và thiết lập giấy phép Aspose trong C#. Tìm hiểu + cách sử dụng GetManifestResourceStream, nhúng tệp giấy phép và lấy assembly đang + thực thi .NET trong một hướng dẫn duy nhất. +draft: false +keywords: +- read embedded resource +- set aspose license +- use getmanifestresourcestream +- how to embed license +- get executing assembly .net +language: vi +og_description: Đọc tài nguyên nhúng trong .NET và thiết lập giấy phép Aspose nhanh + chóng. Hướng dẫn từng bước bao gồm GetManifestResourceStream, nhúng giấy phép và + sử dụng assembly đang thực thi. +og_title: Đọc tài nguyên nhúng – Cài đặt giấy phép Aspose trong .NET +tags: +- C# +- .NET +- Aspose OCR +- Embedded Resources +title: Đọc tài nguyên nhúng trong .NET – Hướng dẫn đầy đủ để thiết lập giấy phép Aspose +url: /vi/net/ocr-configuration/read-embedded-resource-in-net-complete-guide-to-set-aspose-l/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Đọc Tài Nguyên Nhúng – Hướng Dẫn Đầy Đủ Đặt Giấy Phép Aspose + +Bạn đã bao giờ cần **đọc tài nguyên nhúng** khi chạy và tự hỏi làm thế nào để cấp giấy phép cho thư viện Aspose OCR mà không phải mã cứng đường dẫn? Bạn không phải là người duy nhất. Trong nhiều ứng dụng doanh nghiệp, tệp giấy phép nằm bên trong assembly nên bạn không cần phải chuyển các tệp bổ sung hoặc lo lắng về quyền truy cập bị thiếu. Hướng dẫn này sẽ chỉ cho bạn cách đọc tài nguyên nhúng và thiết lập giấy phép Aspose bằng phương thức .NET `GetManifestResourceStream`. + +Chúng tôi sẽ hướng dẫn từng bước những gì bạn cần: nhúng tệp `.lic`, lấy nó ra bằng `GetExecutingAssembly`, và cuối cùng áp dụng vào lớp `License` của Aspose OCR. Khi kết thúc, bạn sẽ có một giải pháp tự chứa hoạt động trên bất kỳ dự án .NET nào — không cần tệp bên ngoài. + +## Những Điều Bạn Sẽ Học + +- **Cách nhúng một tệp giấy phép** vào dự án .NET sao cho nó trở thành một phần của DLL đã biên dịch. +- Cách **sử dụng GetManifestResourceStream** đúng để đọc tài nguyên nhúng đó. +- Cách **đặt giấy phép Aspose** bằng chương trình mà không cần chạm vào hệ thống tệp. +- Mẹo xử lý các vấn đề thường gặp như tên tài nguyên bị viết sai hoặc hành động build bị thiếu. +- Một mẫu mã hoàn chỉnh, có thể chạy được mà bạn có thể đưa vào giải pháp của mình. + +### Yêu Cầu Trước + +- .NET 6.0 hoặc mới hơn (mã cũng hoạt động trên .NET Framework 4.x, chỉ cần điều chỉnh file dự án cho phù hợp). +- Gói NuGet Aspose.OCR đã được cài đặt (`dotnet add package Aspose.OCR`). +- Kiến thức cơ bản về C# và Visual Studio (hoặc IDE yêu thích của bạn). + +Nếu bạn đã có những thành phần trên, tuyệt vời — hãy bắt đầu. + +## Bước 1: Nhúng Tệp Giấy Phép Aspose Vào Assembly Của Bạn + +Điều đầu tiên bạn cần là tệp giấy phép thực tế (`Aspose.OCR.lic`). Thay vì sao chép nó bên cạnh file thực thi, bạn sẽ nhúng nó như một **tài nguyên**. + +1. Thêm tệp `.lic` vào dự án của bạn (ví dụ: tạo một thư mục `Resources` và đặt tệp vào đó). +2. Trong thuộc tính của tệp, đặt **Build Action** thành `Embedded Resource`. + *Pro tip:* giữ cấu trúc thư mục đơn giản; tên tài nguyên đầy đủ sẽ là `YourNamespace.Resources.Aspose.OCR.lic`. + +```text +MyApp/ + └─ Resources/ + └─ Aspose.OCR.lic ← Build Action = Embedded Resource +``` + +Tại sao phải nhúng? Bởi vì assembly giờ đã mang giấy phép bên trong, loại bỏ rủi ro thiếu tệp trên máy chủ sản xuất. + +## Bước 2: Lấy Tài Nguyên Nhúng Bằng GetExecutingAssembly + +Bây giờ giấy phép đã nằm trong DLL, bạn cần một cách để **đọc tài nguyên nhúng** khi chạy. Lớp .NET `Assembly` cung cấp chính xác chức năng này. + +```csharp +using System.Reflection; + +// Get the assembly that contains the embedded resource +Assembly currentAssembly = Assembly.GetExecutingAssembly(); +``` + +Phương thức `GetExecutingAssembly` trả về assembly đang chạy — hoàn hảo để định vị các tài nguyên nằm cùng với mã của bạn. + +## Bước 3: Mở Luồng Giấy Phép Bằng GetManifestResourceStream + +Với tham chiếu assembly trong tay, bạn có thể gọi `GetManifestResourceStream`. Phương thức này trả về một `Stream` mà bạn có thể truyền trực tiếp cho Aspose. + +```csharp +// Build the fully qualified resource name +string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + +// Attempt to open the resource stream +using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + +if (licenseStream == null) +{ + throw new InvalidOperationException( + $"Unable to locate embedded resource '{resourceName}'. " + + "Check the namespace and Build Action settings."); +} +``` + +Lưu ý chúng ta sử dụng câu lệnh **null‑conditional** `using` (`using Stream?`) để đảm bảo luồng được giải phóng tự động. Nếu tên sai, chúng ta ném ra một ngoại lệ rõ ràng — giúp bạn tránh các lỗi im lặng sau này. + +## Bước 4: Áp Dụng Giấy Phép Cho Aspose OCR + +Lớp `License` của Aspose yêu cầu một `Stream`. Chúng ta đã có sẵn, vì vậy bước cuối cùng rất đơn giản. + +```csharp +using Aspose.OCR; + +// Create a License instance and set the license from the stream +License ocrLicense = new License(); +ocrLicense.SetLicense(licenseStream); +``` + +Xong rồi! Engine Aspose OCR giờ đã được cấp giấy phép đầy đủ và sẵn sàng xử lý ảnh mà không có watermark dùng thử. + +## Ví Dụ Hoàn Chỉnh Hoạt Động + +Dưới đây là một chương trình hoàn chỉnh, có thể sao chép‑dán, minh họa toàn bộ quy trình. Nó bao gồm các `using` cần thiết, xử lý lỗi, và một lời gọi OCR đơn giản để chứng minh giấy phép đã hoạt động. + +```csharp +// Program.cs +using System; +using System.IO; +using System.Reflection; +using Aspose.OCR; + +namespace MyApp +{ + class Program + { + static void Main() + { + try + { + // Step 1: Get the current executing assembly + Assembly currentAssembly = Assembly.GetExecutingAssembly(); + + // Step 2: Build the resource name (adjust namespace/folder as needed) + const string resourceName = "MyApp.Resources.Aspose.OCR.lic"; + + // Step 3: Retrieve the embedded license stream + using Stream? licenseStream = currentAssembly.GetManifestResourceStream(resourceName); + if (licenseStream == null) + { + Console.WriteLine($"Failed to locate embedded resource: {resourceName}"); + return; + } + + // Step 4: Apply the license + License ocrLicense = new License(); + ocrLicense.SetLicense(licenseStream); + Console.WriteLine("Aspose OCR license applied successfully."); + + // Optional: Quick test – recognize text from a sample image + var ocrEngine = new OcrEngine(); + ocrEngine.Image = ImageStream.FromFile("sample.png"); // replace with your image path + if (ocrEngine.Process()) + { + Console.WriteLine("OCR Result:"); + Console.WriteLine(ocrEngine.Text); + } + else + { + Console.WriteLine("OCR processing failed."); + } + } + catch (Exception ex) + { + Console.WriteLine($"Error: {ex.Message}"); + } + } + } +} +``` + +### Kết Quả Dự Kiến + +Khi bạn chạy chương trình trên máy có giấy phép hợp lệ được nhúng, bạn sẽ thấy: + +``` +Aspose OCR license applied successfully. +OCR Result: +[Detected text from sample.png] +``` + +Nếu không tìm thấy luồng giấy phép, console sẽ báo tên tài nguyên bị thiếu, hướng bạn kiểm tra lại **Build Action** và namespace. + +## Các Vấn Đề Thường Gặp & Cách Khắc Phục + +| Vấn đề | Nguyên nhân | Cách khắc phục | +|-------|-------------|----------------| +| **Tên tài nguyên không khớp** | .NET tạo tên tài nguyên dựa trên namespace mặc định + đường dẫn thư mục. | Sử dụng `Assembly.GetManifestResourceNames()` để liệt kê các tên có sẵn và xác nhận chuỗi chính xác. | +| **Tệp giấy phép không được đặt làm Embedded Resource** | Hành động Build mặc định là `Content`. | Thay đổi thành `Embedded Resource` trong thuộc tính tệp. | +| **Chạy từ một assembly khác** | Nếu gọi mã từ một thư viện lớp, `GetExecutingAssembly()` có thể trả về thư viện thay vì exe chính. | Dùng `Assembly.GetEntryAssembly()` hoặc truyền explicit assembly đúng. | +| **Luồng bị giải phóng trước khi sử dụng** | Sử dụng khối `using` đóng luồng quá sớm. | Giữ `using` quanh lời gọi `SetLicense`, như trong ví dụ trên. | +| **Phiên bản Aspose.OCR không tương thích** | Các phiên bản mới có thể yêu cầu định dạng giấy phép khác. | Luôn tải giấy phép mới nhất từ tài khoản Aspose và nhúng lại. | + +## Áp Dụng Kỹ Thuật Tương Tự Cho Các Tệp Nhúng Khác + +Mẫu này — **đọc tài nguyên nhúng**, sau đó **sử dụng GetManifestResourceStream** — hoạt động cho bất kỳ loại tệp nào: cấu hình JSON, hình ảnh, thậm chí DLL gốc. Chỉ cần điều chỉnh `resourceName` và cách bạn tiêu thụ luồng. + +```csharp +// Example: Load an embedded JSON config +string jsonName = "MyApp.Resources.Config.appsettings.json"; +using var jsonStream = Assembly.GetExecutingAssembly() + .GetManifestResourceStream(jsonName); +using var reader = new StreamReader(jsonStream); +string json = await reader.ReadToEndAsync(); +``` + +## Tổng Quan Trực Quan + +![Sơ đồ minh họa cách đọc tài nguyên nhúng và thiết lập giấy phép Aspose](read-embedded-resource-diagram.png) + +*Alt text:* đọc tài nguyên nhúng – sơ đồ cho thấy quá trình nhúng, lấy bằng GetManifestResourceStream, và áp dụng giấy phép Aspose. + +## Tóm Tắt + +Chúng ta đã đề cập cách **đọc tài nguyên nhúng** trong một assembly .NET, các bước chính xác để **sử dụng GetManifestResourceStream**, và cách sạch sẽ để **đặt giấy phép Aspose** mà không để lộ tệp trên đĩa. Bằng việc nhúng giấy phép, bạn loại bỏ các rắc rối khi triển khai và giữ cho ứng dụng di động. + +## Tiếp Theo? + +- **Tự động cập nhật giấy phép:** Viết một script thời gian build nhỏ để thay thế tệp `.lic` nhúng khi bạn gia hạn đăng ký Aspose. +- **Bảo mật tài nguyên:** Xem xét mã hoá giấy phép trước khi nhúng và giải mã tại thời gian chạy để tăng bảo vệ. +- **Khám phá các sản phẩm Aspose khác:** Cùng một cách tiếp cận hoạt động cho Aspose.Words, Aspose.PDF, v.v., mỗi sản phẩm có lớp `License` riêng. + +Hãy thoải mái thử nghiệm — có thể bạn sẽ nhúng nhiều giấy phép cho các module khác nhau, hoặc chuyển sang tên tài nguyên dựa trên cấu hình. Không giới hạn gì cả. + +--- + +*Chúc lập trình vui! Nếu gặp khó khăn, hãy để lại bình luận bên dưới hoặc kiểm tra diễn đàn Aspose để tìm thêm ví dụ.* + +{{< /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/net/skew-angle-calculation/_index.md b/ocr/vietnamese/net/skew-angle-calculation/_index.md index cd2f340e..a2bfe108 100644 --- a/ocr/vietnamese/net/skew-angle-calculation/_index.md +++ b/ocr/vietnamese/net/skew-angle-calculation/_index.md @@ -40,9 +40,12 @@ Khám phá Aspose.OCR cho .NET, một giải pháp OCR mạnh mẽ để nhận Giải phóng sức mạnh của Aspose.OCR cho .NET, một giải pháp mạnh mẽ để nhận dạng hình ảnh. Tìm hiểu cách tính góc nghiêng một cách dễ dàng. ### [Tính toán góc nghiêng từ URI trong nhận dạng hình ảnh OCR](./calculate-skew-angle-from-uri/) Khám phá Aspose.OCR cho .NET để dễ dàng tính toán các góc nghiêng trong nhận dạng hình ảnh OCR. Nâng cao dự án của bạn với độ chính xác và hiệu quả. +### [Cách chỉnh nghiêng ảnh trong C# – Hướng dẫn xử lý trước OCR đầy đủ](./how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/) +Hướng dẫn chi tiết cách loại bỏ độ nghiêng của ảnh trong C# để cải thiện độ chính xác 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/vietnamese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md b/ocr/vietnamese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md new file mode 100644 index 00000000..4cba7dea --- /dev/null +++ b/ocr/vietnamese/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-01-10 +description: Cách chỉnh nghiêng ảnh và cải thiện kết quả OCR với Aspose.OCR. Tìm hiểu + cách tiền xử lý ảnh cho OCR, loại bỏ nhiễu từ bản quét và nhận dạng văn bản từ bản + quét. +draft: false +keywords: +- how to deskew image +- preprocess image for ocr +- recognize text from scan +- how to use ocr +- remove noise from scan +language: vi +og_description: Cách chỉnh nghiêng ảnh và nâng cao độ chính xác OCR. Hướng dẫn này + chỉ cách tiền xử lý ảnh cho OCR, loại bỏ nhiễu trong bản quét và nhận dạng văn bản + từ bản quét bằng Aspose.OCR. +og_title: Cách loại bỏ nghiêng ảnh trong C# – Hướng dẫn xử lý trước OCR toàn diện +tags: +- OCR +- C# +- Image Processing +title: Cách chỉnh nghiêng ảnh trong C# – Hướng dẫn xử lý trước OCR toàn diện +url: /vi/net/skew-angle-calculation/how-to-deskew-image-in-c-complete-ocr-pre-processing-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách chỉnh nghiêng ảnh trong C# – Hướng dẫn xử lý trước OCR toàn diện + +Bạn đã bao giờ tự hỏi **cách chỉnh nghiêng ảnh** trước khi đưa chúng vào bộ máy OCR chưa? Bạn không phải là người duy nhất. Các tài liệu được quét thường bị lệch, nhiễu hoặc độ tương phản thấp, và điều đó làm rối loạn mọi nỗ lực nhận dạng văn bản. + +Trong hướng dẫn này, chúng ta sẽ đi qua một ví dụ đầy đủ, có thể chạy được mà **tiền xử lý ảnh cho OCR**, loại bỏ nhiễu từ bản quét, và cuối cùng **nhận dạng văn bản từ bản quét** bằng thư viện Aspose.OCR. Khi kết thúc, bạn sẽ có một bức tranh rõ ràng về **cách sử dụng OCR** trong C# đồng thời giữ cho mã ngắn gọn và dễ hiểu. + +> **Mẹo chuyên nghiệp:** Ngay cả một góc quay nhỏ (5‑10°) cũng có thể làm giảm độ chính xác của OCR tới 30 % hoặc hơn. Việc chỉnh nghiêng là bước đầu tiên bạn không bao giờ nên bỏ qua. + +## Những gì bạn cần + +- **.NET 6+** (mã vẫn chạy trên .NET Framework, nhưng .NET 6 là phiên bản LTS hiện tại) +- **Aspose.OCR for .NET** – bạn có thể tải nó từ NuGet (`Install-Package Aspose.OCR`) +- Một mẫu ảnh TIFF/PNG/JPEG bị quay hoặc nhiễu (chúng tôi sẽ dùng `noisy_rotated.tif` trong ví dụ) +- Bất kỳ IDE nào bạn thích – Visual Studio, Rider, hoặc VS Code đều được + +Đó là tất cả. Không cần thư viện bổ sung, không có dịch vụ bên ngoài. + +## Bước 1 – Tải ảnh nguồn (Tại sao lại quan trọng) + +Trước khi chúng ta có thể **chỉnh nghiêng ảnh**, chúng ta cần đọc nó vào một `ImageStream` của Aspose. Đối tượng này trừu tượng hoá việc I/O tệp và cung cấp cho engine OCR một giao diện nhất quán. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +// Load the original scan – replace the path with your own file +var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + +// Quick sanity check – make sure the image loaded +if (sourceImage == null) +{ + Console.WriteLine("Failed to load the image. Check the path and file permissions."); + return; +} +``` + +*Tại sao phải tải trước?* Bởi vì tất cả các bộ lọc tiếp theo hoạt động trên ảnh trong bộ nhớ. Nếu không thể đọc tệp, toàn bộ pipeline sẽ sụp đổ. + +## Bước 2 – Xây dựng pipeline tiền xử lý (Chỉnh nghiêng + Loại bỏ nhiễu + Tăng độ tương phản) + +Một quy trình OCR mạnh mẽ thường nối chuỗi nhiều bộ lọc. Đây là nơi chúng ta **tiền xử lý ảnh cho OCR** và, quan trọng hơn, **cách tự động chỉnh nghiêng ảnh**. + +```csharp +// Create a pipeline that will run three filters in order +var preprocessPipeline = new PreprocessPipeline() +{ + // 1️⃣ DeskewFilter – detects rotation up to 30° and corrects it + new DeskewFilter { MaxAngle = 30 }, + + // 2️⃣ DenoiseFilter – smooths out speckles while keeping edges + new DenoiseFilter { Strength = 0.8 }, + + // 3️⃣ ContrastBoostFilter – makes faint characters pop + new ContrastBoostFilter { Level = 1.3 } +}; +``` + +**Tại sao lại chọn ba bộ lọc này?** +- **DeskewFilter** giải quyết vấn đề “cách chỉnh nghiêng ảnh” một cách tự động; bạn không cần đoán góc. +- **DenoiseFilter** giải quyết yêu cầu “loại bỏ nhiễu từ bản quét”, nếu không sẽ tạo ra các ký tự ảo. +- **ContrastBoostFilter** giúp engine OCR phân biệt chữ đậm tối với nền sáng, một vấn đề cổ điển khi bạn *tiền xử lý ảnh cho OCR*. + +## Bước 3 – Áp dụng pipeline (Xem sự biến đổi) + +Bây giờ chúng ta thực sự chạy các bộ lọc. `processedImage` trả về là ảnh sẽ được đưa vào engine OCR. + +```csharp +// Apply all filters – the result is a cleaned‑up bitmap +var processedImage = preprocessPipeline.Apply(sourceImage); + +// Optional: Save the cleaned image for visual verification +processedImage.Save("cleaned_output.tif"); +Console.WriteLine("Image preprocessing complete – cleaned_output.tif saved."); +``` + +Nếu bạn mở `cleaned_output.tif`, bạn sẽ thấy văn bản thẳng hàng, ít hạt hơn và có độ tương phản cao hơn. Kiểm tra trực quan này hữu ích khi bạn *loại bỏ nhiễu từ bản quét* và muốn xác nhận việc chỉnh nghiêng đã thành công. + +## Bước 4 – Tạo và cấu hình engine OCR (Cách sử dụng OCR) + +Với một ảnh sạch sẽ trong tay, chúng ta khởi tạo `OcrEngine`. Đây là lõi của **cách sử dụng OCR** với Aspose. + +```csharp +// Initialize the OCR engine +var ocrEngine = new OcrEngine +{ + // Assign the pre‑processed image + Image = processedImage, + + // Optional: Set language (English is default) + // Language = Language.English, + + // Enable automatic page segmentation (helps with multi‑column scans) + AutoPageSegmentation = true +}; +``` + +*Tại sao đặt `AutoPageSegmentation`?* Bởi vì nhiều bản quét chứa bảng hoặc nhiều cột. Bật tính năng này cho phép engine chia trang một cách thông minh, cải thiện kết quả cuối cùng của **nhận dạng văn bản từ bản quét**. + +## Bước 5 – Chạy quá trình nhận dạng (Cuối cùng là nhận dạng văn bản) + +Bây giờ là thời khắc quyết định: chúng ta yêu cầu engine đọc văn bản. + +```csharp +// Kick off the OCR process +ocrEngine.Recognize(); + +// Retrieve the plain‑text result +string recognizedText = ocrEngine.Text; + +// Show the output in the console +Console.WriteLine("=== Recognized Text ==="); +Console.WriteLine(recognizedText); +``` + +Nếu mọi thứ diễn ra suôn sẻ, bạn sẽ thấy một khối văn bản sạch sẽ khớp với tài liệu gốc. Đó là kết quả của việc **chỉnh nghiêng ảnh** đúng cách, **loại bỏ nhiễu**, và **tiền xử lý ảnh cho OCR**. + +## Bước 6 – Ví dụ hoàn chỉnh (Sẵn sàng sao chép‑dán) + +Dưới đây là chương trình đầy đủ, sẵn sàng biên dịch. Chỉ cần thay đổi đường dẫn tệp và bạn đã sẵn sàng. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Filters; + +class Program +{ + static void Main() + { + // ------------------------------------------------- + // 1️⃣ Load the source image + // ------------------------------------------------- + var sourceImage = ImageStream.FromFile("YOUR_DIRECTORY/noisy_rotated.tif"); + if (sourceImage == null) + { + Console.WriteLine("Unable to load image. Check the path."); + return; + } + + // ------------------------------------------------- + // 2️⃣ Build the preprocessing pipeline + // ------------------------------------------------- + var preprocessPipeline = new PreprocessPipeline() + { + new DeskewFilter { MaxAngle = 30 }, // how to deskew image + new DenoiseFilter { Strength = 0.8 }, // remove noise from scan + new ContrastBoostFilter { Level = 1.3 } // improves OCR accuracy + }; + + // ------------------------------------------------- + // 3️⃣ Apply the pipeline + // ------------------------------------------------- + var processedImage = preprocessPipeline.Apply(sourceImage); + processedImage.Save("cleaned_output.tif"); + Console.WriteLine("Preprocessing finished – cleaned_output.tif saved."); + + // ------------------------------------------------- + // 4️⃣ Configure the OCR engine + // ------------------------------------------------- + var ocrEngine = new OcrEngine + { + Image = processedImage, + AutoPageSegmentation = true // how to use OCR effectively + }; + + // ------------------------------------------------- + // 5️⃣ Recognize text from scan + // ------------------------------------------------- + ocrEngine.Recognize(); + string result = ocrEngine.Text; + + Console.WriteLine("\n=== Recognized Text ==="); + Console.WriteLine(result); + } +} +``` + +**Kết quả mong đợi** (được rút gọn để ngắn gọn): + +``` +=== Recognized Text === +This is a sample scanned document. +It contains several lines of text, +and the OCR engine has correctly read them. +``` + +Nếu kết quả xuất ra bị rối, hãy kiểm tra lại rằng ảnh nguồn không bị quay quá 30°, hoặc tăng giá trị `DeskewFilter.MaxAngle`. + +## Câu hỏi thường gặp (Trường hợp đặc biệt & Biến thể) + +| Question | Answer | +|----------|--------| +| **Nếu bản quét của tôi bị quay 45° thì sao?** | `DeskewFilter` giới hạn ở `MaxAngle`. Tăng giá trị (ví dụ, `MaxAngle = 60`) hoặc quay trước ảnh bằng một thư viện đồ họa trước khi đưa vào pipeline. | +| **Tôi có thể xử lý PDF theo từng trang không?** | Có. Chuyển mỗi trang PDF thành ảnh (ví dụ, dùng `Aspose.Pdf`) và chạy cùng pipeline trên mọi bitmap. | +| **Tài liệu của tôi là tiếng Pháp – có cần thay đổi gì không?** | Đặt `ocrEngine.Language = Language.French;` hoặc tải gói ngôn ngữ tùy chỉnh. Phần còn lại của pipeline không thay đổi. | +| **Có cách nào giữ nguyên độ phân giải gốc không?** | `PreprocessPipeline` hoạt động trên bitmap gốc, giữ nguyên DPI. Chỉ tránh gọi `ImageStream.Resize` trừ khi bạn cần giảm kích thước để tăng hiệu năng. | +| **Tăng độ tương phản ảnh màu ảnh hưởng như thế nào?** | `ContrastBoostFilter` hoạt động trên từng kênh; nó an toàn cho ảnh xám hoặc ảnh màu, nhưng bạn cũng có thể chuyển sang ảnh xám trước bằng `new GrayscaleFilter()`. | + +## Ví dụ hình ảnh (Hỗ trợ trực quan) + +![how to deskew image example](/images/deskew-example.png) + +*Hình ảnh cho thấy trước và sau của một bản quét bị quay 12°, nhiễu, đã được chỉnh nghiêng và làm sạch.* + +## Kết luận + +Chúng tôi đã trình bày **cách chỉnh nghiêng ảnh** bằng Aspose.OCR, minh họa một pipeline **tiền xử lý ảnh cho OCR** đầy đủ, chỉ ra cách **loại bỏ nhiễu từ bản quét**, và cuối cùng **nhận dạng văn bản từ bản quét** chỉ với vài dòng C#. Bằng cách nối chuỗi `DeskewFilter`, `DenoiseFilter` và `ContrastBoostFilter`, bạn sẽ có một bitmap sạch sẽ giúp engine OCR thực hiện công việc mà không bị mắc kẹt với các nhiễu. + +Bước tiếp theo? Hãy thử nghiệm với các mức độ mạnh của bộ lọc, thêm `BinarizationFilter` để có đầu ra đen‑trắng thuần khiết, hoặc đưa ảnh đã làm sạch vào pipeline NLP tiếp theo. Mẫu tương tự áp dụng cho biên lai, hộ chiếu và tài liệu lịch sử. + +Có thêm câu hỏi về **cách sử dụng OCR** trong các ngôn ngữ hoặc framework khác? Hãy để lại bình luận, 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/net/text-recognition/_index.md b/ocr/vietnamese/net/text-recognition/_index.md index 205befde..34dbf591 100644 --- a/ocr/vietnamese/net/text-recognition/_index.md +++ b/ocr/vietnamese/net/text-recognition/_index.md @@ -55,9 +55,22 @@ Nâng cao các ứng dụng .NET của bạn với Aspose.OCR để nhận dạn Khai phá tiềm năng của OCR trong .NET với Aspose.OCR. Trích xuất văn bản từ tệp PDF một cách dễ dàng. Tải xuống ngay để có trải nghiệm tích hợp liền mạch. ### [Nhận dạng bảng trong nhận dạng hình ảnh OCR](./recognize-table/) Khai phá tiềm năng của Aspose.OCR cho .NET với hướng dẫn toàn diện của chúng tôi về nhận dạng bảng trong nhận dạng hình ảnh OCR. +### [Cách chạy OCR trong C# – Hướng dẫn đầy đủ với Aspose OCR](./how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/) +Hướng dẫn chi tiết cách thực hiện OCR trong C# bằng Aspose OCR, bao gồm cài đặt, mã mẫu và tối ưu hoá kết quả. +### [Cách chạy OCR trong C# – Trích xuất văn bản tiếng Ả Rập từ PNG](./how-to-run-ocr-in-c-extract-arabic-text-from-png/) +Hướng dẫn chi tiết cách sử dụng Aspose.OCR trong C# để trích xuất văn bản tiếng Ả Rập từ tệp PNG một cách chính xác. +### [Trích xuất văn bản từ hình ảnh với Aspose OCR – Hướng dẫn đầy đủ C#](./extract-text-from-image-with-aspose-ocr-complete-c-guide/) +Hướng dẫn chi tiết cách trích xuất văn bản từ hình ảnh bằng Aspose OCR trong C#, bao gồm cài đặt và mã mẫu. +### [Tạo PDF có thể tìm kiếm từ PNG trong C# – Hướng dẫn đầy đủ](./create-searchable-pdf-from-png-in-c-complete-guide/) +Hướng dẫn chi tiết cách chuyển đổi tệp PNG thành PDF có thể tìm kiếm bằng Aspose.OCR trong C#, bao gồm cài đặt và mã mẫu. +### [Trích xuất văn bản từ hình ảnh trong C# – Hướng dẫn đầy đủ Aspose OCR](./extract-text-from-image-in-c-complete-aspose-ocr-guide/) +Bước đầu thực hiện OCR trong C# với Aspose OCR, hướng dẫn cài đặt, mã mẫu và tối ưu kết quả trích xuất văn bản. +### [Nhận dạng văn bản từ hình ảnh trong C# – Hướng dẫn đầy đủ về OCR và JSON](./recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/) +Hướng dẫn chi tiết cách nhận dạng văn bản từ hình ảnh trong C# bằng Aspose OCR và xuất kết quả dưới dạng JSON. + {{< /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/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md b/ocr/vietnamese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md new file mode 100644 index 00000000..6c5bd536 --- /dev/null +++ b/ocr/vietnamese/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-01-10 +description: Tạo PDF có thể tìm kiếm từ PNG bằng C#. Học cách chuyển đổi hình ảnh + sang PDF, trích xuất văn bản từ PNG và OCR hình ảnh bằng C# trong một hướng dẫn + dễ dàng. +draft: false +keywords: +- create searchable pdf +- convert image to pdf +- extract text from png +- convert png to pdf +- ocr image c# +language: vi +og_description: Tạo PDF có thể tìm kiếm từ PNG bằng C#. Hướng dẫn này chỉ cách chuyển + đổi hình ảnh sang PDF, trích xuất văn bản từ PNG và OCR hình ảnh bằng C# với Aspose. +og_title: Tạo PDF có thể tìm kiếm từ PNG trong C# – Từng bước +tags: +- Aspose OCR +- C# +- PDF/A +title: Tạo PDF có thể tìm kiếm từ PNG trong C# – Hướng dẫn chi tiết +url: /vi/net/text-recognition/create-searchable-pdf-from-png-in-c-complete-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Tạo PDF có thể tìm kiếm từ PNG trong C# – Hướng dẫn đầy đủ + +Cần **tạo pdf có thể tìm kiếm** từ một tệp PNG trong C#? Bạn không phải là người duy nhất—nhiều nhà phát triển gặp phải rào cản này khi họ muốn hình ảnh đã quét vừa có thể xem được **và** có thể tìm kiếm bằng văn bản. Trong hướng dẫn này, chúng ta sẽ đi qua toàn bộ quy trình: **chuyển đổi hình ảnh sang pdf**, chạy OCR để **trích xuất văn bản từ png**, và cuối cùng lưu mọi thứ dưới dạng tài liệu **PDF/A‑2b** tuân thủ chuẩn tìm kiếm. + +Kết thúc, bạn sẽ có một đoạn mã duy nhất, có thể tái sử dụng, có thể chèn vào bất kỳ dự án .NET nào, cùng với một vài mẹo thực tế sẽ giúp bạn tránh những rắc rối sau này. Không cần dịch vụ bên ngoài, chỉ cần thư viện Aspose OCR và một vài dòng C#. + +> **Yêu cầu trước** +> * .NET 6+ (hoặc .NET Framework 4.7.2+). +> * Visual Studio 2022 hoặc bất kỳ IDE nào hỗ trợ C#. +> * Giấy phép Aspose OCR hợp lệ (hoặc bản dùng thử miễn phí). + +--- + +![Create searchable PDF example](image-placeholder.png){alt="Tạo PDF có thể tìm kiếm từ PNG bằng C#"} + +## Bước 1 – Cài đặt và Tham chiếu Aspose OCR cho C# + +First things first: you need the Aspose OCR NuGet package. Open your terminal (or Package Manager Console) and run: + +```bash +dotnet add package Aspose.OCR +``` + +If you prefer the GUI, right‑click your project → **Manage NuGet Packages…** → search for *Aspose.OCR* and install the latest stable version. + +Why this library? It supports **convert png to pdf**, handles multi‑page images, and can output PDF/A‑2b out of the box—perfect for creating a **searchable pdf** that complies with archival standards. + +> **Pro tip:** Register your license early in `Program.cs` to avoid the evaluation watermark. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Output; + +// Register license (replace with your actual .lic file path) +var license = new License(); +license.SetLicense("Aspose.OCR.lic"); +``` + +## Bước 2 – Tải PNG và Chạy OCR (trích xuất văn bản từ png) + +Now we’ll load the source image. The `ImageStream.FromFile` helper abstracts away the file‑system details and works with any supported raster format. + +```csharp +// Step 2‑1: Create an OCR engine instance +var ocrEngine = new OcrEngine(); + +// Step 2‑2: Point it at the PNG you want to process +ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + +// Step 2‑3: Run the recognition engine +ocrEngine.Recognize(); +``` + +At this point the engine has **extracted text from png** and stored it internally. You can even inspect the raw text via `ocrEngine.Text`, which is handy for debugging or logging. + +```csharp +Console.WriteLine("Detected text:"); +Console.WriteLine(ocrEngine.Text); +``` + +> **What if the image is multi‑page?** +> Aspose OCR treats each page as a separate layer. Just call `ocrEngine.Image = ImageStream.FromFile("multipage.tif");` and the engine will iterate automatically. + +## Bước 3 – Cấu hình tùy chọn PDF/A‑2b (tạo pdf có thể tìm kiếm) + +To turn the OCR result into a **searchable pdf**, we need to tell Aspose how to package the output. PDF/A‑2b is the sweet spot for long‑term preservation and guarantees that the text layer is searchable. + +```csharp +// Step 3‑1: Set up PDF/A‑2b save options +var pdfSaveOptions = new PdfSaveOptions +{ + PdfAStandard = PdfAStandard.PdfA2b, // ensures PDF/A‑2b compliance + // Optional: embed the original image for visual fidelity + EmbedOriginalImage = true +}; +``` + +Why embed the original image? Some compliance checks require the visual representation to match the original scan. This flag makes the file a true **convert image to pdf** operation while preserving searchable text. + +## Bước 4 – Lưu kết quả và Kiểm tra (chuyển đổi png sang pdf) + +Finally, we write the output file. The same `Save` method works for any path you provide. + +```csharp +// Step 4‑1: Save the OCR result as a searchable PDF/A‑2b document +string outputPath = @"C:\Docs\output.pdf"; +ocrEngine.Save(outputPath, pdfSaveOptions); + +Console.WriteLine($"Searchable PDF saved to: {outputPath}"); +``` + +Open the resulting `output.pdf` in Adobe Reader or any PDF viewer and try searching for a word that appears in the original PNG. If the word is highlighted, congratulations—you’ve successfully **create searchable pdf** from a PNG! + +### Quick verification script (optional) + +```csharp +using System.Diagnostics; + +// Open the PDF automatically (Windows only) +Process.Start(new ProcessStartInfo +{ + FileName = outputPath, + UseShellExecute = true +}); +``` + +## Why Use PDF/A‑2b for Searchable PDFs? + +* **An toàn lưu trữ:** PDF/A‑2b đảm bảo tệp có thể được hiển thị giống nhau ngay cả sau nhiều thập kỷ. +* **Tuân thủ quy định:** Nhiều ngành (pháp lý, y tế, tài chính) yêu cầu PDF/A cho việc lưu trữ hồ sơ. +* **Khả năng tìm kiếm:** Lớp văn bản OCR được nhúng cho phép tài liệu được lập chỉ mục bởi các công cụ tìm kiếm trên máy tính để bàn. + +If you don’t need the extra compliance baggage, you can drop the `PdfAStandard` line and simply use `new PdfSaveOptions()`—the output will still be searchable, just not PDF/A‑2b. + +## Common Pitfalls & How to Avoid Them + +| Triệu chứng | Nguyên nhân có thể | Cách khắc phục | +|------------|-------------------|----------------| +| Không có văn bản có thể tìm kiếm xuất hiện | `ocrEngine.Recognize()` chưa được gọi hoặc thất bại mà không báo lỗi | Đảm bảo đường dẫn hình ảnh đúng và giấy phép đã được đăng ký. | +| PDF quá lớn (10 + MB) | PNG gốc có độ phân giải cao và `EmbedOriginalImage` được bật | Giảm kích thước hình ảnh trước khi OCR hoặc đặt `EmbedOriginalImage = false`. | +| Văn bản bị lỗi | Ngôn ngữ không được tự động phát hiện | Đặt `ocrEngine.Language = "eng";` (hoặc ngôn ngữ mục tiêu) trước khi gọi `Recognize()`. | + +## Full Working Example (Copy‑Paste Ready) + +```csharp +// --------------------------------------------------------------- +// Complete C# program: Convert PNG → Searchable PDF/A‑2b +// --------------------------------------------------------------- +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +class Program +{ + static void Main() + { + // 1️⃣ Register license (optional, but removes trial watermark) + var license = new License(); + license.SetLicense("Aspose.OCR.lic"); // <-- update path as needed + + // 2️⃣ Initialize OCR engine + var ocrEngine = new OcrEngine(); + + // 3️⃣ Load PNG (you can also pass a Stream) + ocrEngine.Image = ImageStream.FromFile(@"C:\Docs\input.png"); + + // 4️⃣ Run recognition – this extracts text from png + ocrEngine.Recognize(); + + // Optional: output raw text for debugging + Console.WriteLine("=== Detected Text ==="); + Console.WriteLine(ocrEngine.Text); + Console.WriteLine("====================="); + + // 5️⃣ Configure PDF/A‑2b save options (creates searchable pdf) + var pdfOptions = new PdfSaveOptions + { + PdfAStandard = PdfAStandard.PdfA2b, + EmbedOriginalImage = true + }; + + // 6️⃣ Save as PDF + string outPath = @"C:\Docs\output.pdf"; + ocrEngine.Save(outPath, pdfOptions); + + Console.WriteLine($"✅ Searchable PDF created at: {outPath}"); + } +} +``` + +Run the program, open `output.pdf`, and try searching for words you know exist in `input.png`. If everything lines up, you’ve just mastered the **convert image to pdf** workflow and learned how to **ocr image c#** style. + +## Next Steps & Related Topics + +* **Xử lý hàng loạt:** Lặp qua một thư mục chứa các PNG và hợp nhất kết quả thành một PDF duy nhất. +* **Định dạng đầu ra thay thế:** Aspose OCR cũng có thể xuất ra DOCX, TXT, hoặc PDF/A‑1b có thể tìm kiếm. +* **Tối ưu hiệu năng:** Sử dụng `ocrEngine.RecognitionMode = RecognitionMode.Fast` cho khối lượng lớn khi độ chính xác tuyệt đối không quan trọng. +* **Thư viện khác:** Nếu ngân sách eo hẹp, hãy khám phá Tesseract .NET—mặc dù bạn sẽ mất hỗ trợ PDF/A tích hợp sẵn. + +--- + +### TL;DR + +Chúng tôi đã chỉ cho bạn cách **tạo pdf có thể tìm kiếm** từ một PNG bằng Aspose OCR trong C#. Các bước là: + +1. Cài đặt Aspose OCR (`dotnet add package Aspose.OCR`). +2. Tải PNG và chạy `ocrEngine.Recognize()` (**trích xuất văn bản từ png**). +3. Cấu hình `PdfSaveOptions` cho PDF/A‑2b (**chuyển đổi hình ảnh sang pdf** & **chuyển đổi png sang pdf**). +4. Lưu tệp và kiểm tra lớp có thể tìm kiếm. + +Hãy thử, điều chỉnh các tùy chọn, và bạn sẽ sớm có một quy trình mạnh mẽ để chuyển bất kỳ hình ảnh đã quét nào thành PDF có thể tìm kiếm, sẵn sàng lưu trữ lâu dài. Chúc lập trình vui! + +{{< /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/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md b/ocr/vietnamese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md new file mode 100644 index 00000000..21bb5814 --- /dev/null +++ b/ocr/vietnamese/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-guide/_index.md @@ -0,0 +1,252 @@ +--- +category: general +date: 2026-01-10 +description: Trích xuất văn bản từ hình ảnh bằng Aspose OCR trong C#. Tìm hiểu cách + chuyển đổi văn bản tài liệu đã quét với xử lý hàng loạt và lưu kết quả. +draft: false +keywords: +- extract text from image +- convert scanned document text +- batch OCR processing +- Aspose OCR +- C# OCR tutorial +language: vi +og_description: Trích xuất văn bản từ hình ảnh bằng Aspose OCR trong C#. Hướng dẫn + này cho thấy cách chuyển đổi văn bản tài liệu đã quét bằng xử lý hàng loạt. +og_title: Trích xuất văn bản từ hình ảnh trong C# – Hướng dẫn đầy đủ Aspose OCR +tags: +- OCR +- C# +- Aspose +- Image Processing +title: Trích xuất văn bản từ hình ảnh trong C# – Hướng dẫn đầy đủ về Aspose OCR +url: /vi/net/text-recognition/extract-text-from-image-in-c-complete-aspose-ocr-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ừ Hình ảnh – Hướng dẫn đầy đủ Aspose OCR + +Bạn đã bao giờ cần **trích xuất văn bản từ hình ảnh** nhưng không biết bắt đầu từ đâu? Bạn không đơn độc; nhiều nhà phát triển gặp khó khăn khi làm việc với PDF đã quét, TIFF đa trang, hoặc biên lai chụp ảnh. Tin tốt là với Aspose OCR bạn có thể **chuyển đổi văn bản tài liệu đã quét** chỉ trong vài dòng C#. + +Trong tutorial này chúng ta sẽ đi qua một kịch bản thực tế: lấy một tệp TIFF đa trang, chạy OCR batch trên mỗi trang, và ghi một tệp văn bản duy nhất chứa nội dung của mọi trang. Khi hoàn thành, bạn sẽ có một ứng dụng console sẵn sàng chạy, hiểu tại sao mỗi bước quan trọng, và biết cách điều chỉnh quy trình cho các trường hợp đặc biệt như hình ảnh được bảo vệ bằng mật khẩu hoặc gói ngôn ngữ tùy chỉnh. + +## Yêu cầu trước + +- .NET 6.0 SDK hoặc phiên bản mới hơn (mã hoạt động với .NET Core và .NET Framework cũng được) +- Visual Studio 2022 (hoặc bất kỳ trình chỉnh sửa nào bạn thích) +- Tệp giấy phép Aspose OCR (hoặc bạn có thể dùng chế độ đánh giá miễn phí) +- Tệp hình ảnh đa trang (ví dụ, `multipage.tif`) đặt trong thư mục bạn có thể tham chiếu + +Không cần thêm bất kỳ gói NuGet nào ngoài `Aspose.OCR`; chúng ta sẽ cài đặt nó ở bước đầu tiên. + +## Bước 1 – Cài đặt Aspose  OCR và Thiết lập Dự án + +Để bắt đầu, tạo một dự án console mới và thêm thư viện Aspose OCR. + +```bash +dotnet new console -n ImageTextExtractor +cd ImageTextExtractor +dotnet add package Aspose.OCR +``` + +> **Mẹo chuyên nghiệp:** Nếu bạn có tệp giấy phép (`Aspose.OCR.lic`), sao chép nó vào thư mục gốc của dự án. Thư viện sẽ tự động tải nó lên khi chạy. + +Tại sao cần bước này? Cài đặt gói cho phép bạn truy cập vào `BatchProcessor`, `OcrEngine`, và các lớp tiện ích khác giúp trừu tượng hoá việc xử lý hình ảnh mức thấp. Nó cũng đảm bảo bạn đang sử dụng các thuật toán OCR mới nhất mà Aspose cung cấp. + +## Bước 2 – Tải Hình ảnh Đa Trang bằng BatchProcessor + +`BatchProcessor` được thiết kế riêng cho kịch bản này: lặp qua từng trang của một hình ảnh đa trang mà không cần bạn tự chia tệp. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System.Text; + +// Step 2: Initialize the batch processor with the path to your TIFF +var batchProcessor = new BatchProcessor(@"YOUR_DIRECTORY\multipage.tif"); + +// Verify that pages were loaded +if (batchProcessor.Pages.Count == 0) +{ + Console.WriteLine("No pages found – double‑check the file path."); + return; +} +``` + +`BatchProcessor` đọc tất cả các trang vào bộ nhớ, cung cấp chúng qua `batchProcessor.Pages`. Mỗi đối tượng trang biết số thứ tự của mình (`ocrPage.Number`) mà chúng ta sẽ dùng sau này để tạo tiêu đề rõ ràng. + +## Bước 3 – Chuẩn bị StringBuilder để Tổng hợp Kết quả + +Chúng ta muốn một tệp văn bản duy nhất chứa đầu ra OCR của mọi trang, được ngăn cách bằng tiêu đề. `StringBuilder` là cách hiệu quả nhất để nối chuỗi trong vòng lặp. + +```csharp +// Step 3: Create a StringBuilder to collect OCR results +var extractedText = new StringBuilder(); +``` + +Tại sao lại dùng `StringBuilder`? Nối chuỗi bằng `+` trong vòng lặp sẽ tạo ra một chuỗi mới ở mỗi lần lặp, gây tốn bộ nhớ và làm giảm hiệu năng—đặc biệt với tài liệu lớn. + +## Bước 4 – Lặp Qua Mỗi Trang, Chạy OCR và Thêm Kết quả + +Bây giờ là phần cốt lõi của tutorial: lặp qua từng trang, nhận dạng văn bản, và lưu lại cùng một dấu hiệu trang. + +```csharp +// Step 4: Process each page individually +foreach (var ocrPage in batchProcessor.Pages) +{ + // Create a fresh OcrEngine for every page – this isolates settings + var ocrEngine = new OcrEngine + { + Image = ocrPage + }; + + // Perform recognition + ocrEngine.Recognize(); + + // Append a clear header and the recognized text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + extractedText.AppendLine(ocrEngine.Text); +} +``` + +**Tại sao lại tạo một `OcrEngine` mới cho mỗi trang?** Một số nhà phát triển tái sử dụng cùng một engine và thay đổi thuộc tính `Image`, nhưng điều này có thể giữ lại cài đặt ngôn ngữ hoặc kết quả trước, dẫn đến lỗi khó phát hiện. Tạo một engine mới đảm bảo môi trường sạch sẽ. + +### Xử lý các Trường hợp Cạnh thường gặp + +- **Trang trống:** Nếu một trang không chứa văn bản có thể nhận dạng, `ocrEngine.Text` sẽ là một chuỗi rỗng. Bạn có thể chèn một chỗ giữ chỗ như “(No text detected)”. +- **Lựa chọn ngôn ngữ:** Mặc định Aspose OCR sử dụng tiếng Anh. Để xử lý tiếng Đức hoặc tiếng Pháp, đặt `ocrEngine.Language = Language.German;` trước khi gọi `Recognize()`. +- **Mẹo hiệu năng:** Đối với các tệp TIFF rất lớn, bạn có thể bật `ocrEngine.UseParallelProcessing = true;` để tận dụng đa lõi CPU. + +## Bước 5 – Ghi Đầu ra Kết hợp vào Tệp Văn bản + +Cuối cùng, lưu chuỗi đã tổng hợp lên đĩa. + +```csharp +// Step 5: Save the result to a .txt file +string outputPath = @"YOUR_DIRECTORY\multipage_result.txt"; +File.WriteAllText(outputPath, extractedText.ToString()); + +Console.WriteLine($"OCR complete! Results saved to {outputPath}"); +``` + +Tệp `multipage_result.txt` sẽ trông giống như sau: + +``` +--- Page 1 --- +This is the first page of the scanned document. +It contains a title and some introductory text. + +--- Page 2 --- +Continuation of the report. +Data tables and figures follow. +``` + +Bạn đã **trích xuất văn bản từ hình ảnh** và hiệu quả **chuyển đổi văn bản tài liệu đã quét** thành định dạng có thể tìm kiếm và chỉnh sửa. + +## Bonus – Tổng quan trực quan (Alt Text Hình ảnh) + +Dưới đây là một sơ đồ luồng đơn giản minh họa quy trình. +*Alt text:* “Sơ đồ cho thấy cách trích xuất văn bản từ hình ảnh bằng xử lý batch Aspose OCR trong C#”. + +![OCR Flow Diagram](placeholder-image-url.png) + +*(Nếu bạn đang xuất bản tutorial này trên một trang tĩnh, hãy thay thế placeholder bằng một file SVG hoặc PNG thực tế.)* + +## Frequently Asked Questions + +**Điều này có hoạt động với tệp PDF không?** +Có, Aspose OCR có thể đọc các trang PDF dưới dạng hình ảnh. Bạn chỉ cần chuyển PDF sang hình ảnh trước, hoặc sử dụng `PdfDocument` từ `Aspose.PDF` và truyền mỗi trang đã raster hoá cho `OcrEngine`. + +**Nếu TIFF của tôi được bảo vệ bằng mật khẩu thì sao?** +`BatchProcessor` không xử lý mã hoá trực tiếp. Hãy giải mã tệp bằng một thư viện như `Aspose.Imaging` trước khi đưa nó vào pipeline OCR. + +**Tôi có thể xuất ra JSON thay vì văn bản thuần không?** +Chắc chắn. Thay thế logic `StringBuilder` bằng một bộ serializer JSON (ví dụ, `System.Text.Json`) và lưu văn bản của mỗi trang dưới khóa `pageNumber`. + +## Full Working Example + +Dưới đây là chương trình hoàn chỉnh bạn có thể sao chép‑dán vào `Program.cs`. Nó bao gồm tất cả các chỉ thị using, xử lý lỗi, và chú thích. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Batch; +using System; +using System.IO; +using System.Text; + +namespace ImageTextExtractor +{ + class Program + { + static void Main(string[] args) + { + // Adjust these paths to match your environment + string inputImagePath = @"YOUR_DIRECTORY\multipage.tif"; + string outputTextPath = @"YOUR_DIRECTORY\multipage_result.txt"; + + // 1️⃣ Load the multi‑page image + var batchProcessor = new BatchProcessor(inputImagePath); + if (batchProcessor.Pages.Count == 0) + { + Console.WriteLine("No pages detected – verify the file path."); + return; + } + + // 2️⃣ Prepare a StringBuilder for the final output + var extractedText = new StringBuilder(); + + // 3️⃣ Process each page + foreach (var ocrPage in batchProcessor.Pages) + { + var ocrEngine = new OcrEngine + { + Image = ocrPage, + // Uncomment to change language: + // Language = Language.German, + // UseParallelProcessing = true + }; + + // Run OCR + ocrEngine.Recognize(); + + // Append header and text + extractedText.AppendLine($"--- Page {ocrPage.Number} ---"); + // Guard against empty results + string pageText = string.IsNullOrWhiteSpace(ocrEngine.Text) + ? "(No text detected on this page)" + : ocrEngine.Text; + extractedText.AppendLine(pageText); + } + + // 4️⃣ Write to file + File.WriteAllText(outputTextPath, extractedText.ToString()); + + Console.WriteLine($"✅ Extraction complete. File saved at: {outputTextPath}"); + } + } +} +``` + +Chạy chương trình với: + +```bash +dotnet run +``` + +Bạn sẽ thấy thông báo console xác nhận thành công, và tệp đầu ra sẽ chứa các kết quả OCR đã được ghép lại. + +## Conclusion + +Chúng ta vừa trình bày một cách thực tế để **trích xuất văn bản từ hình ảnh** bằng Aspose OCR, biến bất kỳ tệp quét đa trang nào thành văn bản thuần, có thể tìm kiếm. Bằng cách tận dụng `BatchProcessor` và cấu hình `OcrEngine` sạch sẽ cho mỗi trang, bạn có thể đáng tin cậy **chuyển đổi văn bản tài liệu đã quét** trong khi giữ cho mã nguồn đơn giản và dễ bảo trì. + +Hãy thoải mái thử nghiệm: thay đổi ngôn ngữ, chuyển sang đầu ra JSON, hoặc tích hợp logic này vào một API web xử lý tải lên ngay lập tức. Mẫu cốt lõi vẫn giữ nguyên—tải, nhận dạng, tổng hợp, và lưu trữ. + +Có thêm câu hỏi về OCR, giấy phép Aspose, hoặc xử lý các lô tài liệu khổng lồ? Hãy để lại bình luận bên dưới hoặc tham khảo tài liệu chính thức của Aspose để tìm hiểu sâu hơn. Chúc 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/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md b/ocr/vietnamese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md new file mode 100644 index 00000000..368ba6e5 --- /dev/null +++ b/ocr/vietnamese/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-guide/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-01-10 +description: Trích xuất văn bản từ hình ảnh bằng Aspose OCR trong C#. Tìm hiểu cách + tải hình ảnh cho OCR, nhận dạng văn bản Hindi và thực hiện nhận dạng OCR trong vài + bước đơn giản. +draft: false +keywords: +- extract text from image +- recognize hindi text +- load image for ocr +- run ocr recognition +language: vi +og_description: Trích xuất văn bản từ hình ảnh bằng Aspose OCR trong C#. Thực hiện + theo hướng dẫn từng bước này để tải hình ảnh cho OCR, nhận dạng văn bản Hindi và + chạy nhận dạng OCR. +og_title: Trích xuất văn bản từ hình ảnh bằng Aspose OCR – Hướng dẫn C# hoàn chỉnh +tags: +- Aspose OCR +- C# +- Image Processing +title: Trích xuất văn bản từ hình ảnh bằng Aspose OCR – Hướng dẫn C# đầy đủ +url: /vi/net/text-recognition/extract-text-from-image-with-aspose-ocr-complete-c-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ừ hình ảnh bằng Aspose OCR – Hướng dẫn đầy đủ C# + +Bạn đã bao giờ cần **trích xuất văn bản từ hình ảnh** nhưng không chắc nên dùng thư viện nào? Bạn không đơn độc—nhiều nhà phát triển gặp khó khăn này khi lần đầu tiên làm việc với OCR trong .NET. Tin tốt là Aspose OCR làm cho toàn bộ quá trình trở nên nhẹ nhàng, ngay cả khi bạn phải xử lý các script phức tạp như Hindi. + +Trong hướng dẫn này, chúng ta sẽ đi qua mọi thứ bạn cần để **tải hình ảnh cho OCR**, **nhận dạng văn bản Hindi**, và **chạy nhận dạng OCR** trong C#. Khi hoàn thành, bạn sẽ có một ứng dụng console sẵn sàng chạy và in ra văn bản đã trích xuất ngay trên màn hình. + +## Những gì bạn sẽ xây dựng + +Chúng ta sẽ tạo một ứng dụng console nhỏ gọn thực hiện: + +1. Chỉ định engine OCR tới thư mục chứa các mô hình ngôn ngữ. +2. Tắt việc tải xuống tự động—rất hữu ích cho môi trường bị khóa. +3. Chọn Hindi làm ngôn ngữ mục tiêu. +4. Tải một file JPEG (hoặc PNG) chứa văn bản Hindi. +5. Thực thi pipeline nhận dạng. +6. Ghi chuỗi kết quả ra console. + +Không có dịch vụ bên ngoài, không có khóa cloud, chỉ OCR chạy tại chỗ. + +## Yêu cầu trước + +- **.NET 6.0** trở lên (mã cũng hoạt động trên .NET Framework 4.7+). +- Gói NuGet **Aspose.OCR for .NET** đã được cài đặt. + ```bash + dotnet add package Aspose.OCR + ``` +- Một thư mục có tên `OcrResources` chứa mô hình ngôn ngữ Hindi (`hin.traineddata`). + Bạn có thể tải nó từ trang tải xuống Aspose OCR và đặt vào `YOUR_DIRECTORY/OcrResources`. +- Một file ảnh (`input.jpg`) có văn bản Hindi rõ ràng. + Để minh họa, tưởng tượng một bức ảnh biển hiệu cửa hàng ghi “स्वागत है”. + +> **Mẹo chuyên nghiệp:** Giữ độ phân giải ảnh trên 300 dpi; độ phân giải thấp có thể gây mất ký tự. + +--- + +## Bước 1: Chỉ định Engine OCR tới tài nguyên của bạn – *trích xuất văn bản từ hình ảnh* + +Điều đầu tiên Aspose OCR cần là vị trí các mô hình ngôn ngữ. Nếu bỏ qua bước này, engine sẽ cố gắng tải file tự động—điều mà bạn có thể không muốn trong mạng nội bộ bảo mật. + +```csharp +using Aspose.OCR; +using Aspose.OCR.Config; + +// Step 1: Tell Aspose where the language resources live +OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; +``` + +*Lý do quan trọng:* Bằng cách đặt `ResourcesPath` bạn đảm bảo engine tải đúng dữ liệu đã được huấn luyện cục bộ, giúp tăng tốc lần chạy đầu và loại bỏ bất kỳ lưu lượng mạng bất ngờ nào. + +--- + +## Bước 2: Tắt tải tài nguyên tự động – *tải hình ảnh cho OCR* + +Trong nhiều môi trường doanh nghiệp, truy cập internet ra ngoài bị chặn. Aspose OCR tôn trọng một cờ cho phép ngăn nó tự động tải các file thiếu. + +```csharp +// Step 2: Prevent the engine from reaching out to the internet +OcrEngine.Config.AllowAutomaticResourceDownload = false; +``` + +Nếu bạn quên dòng này và mô hình Hindi không có, engine sẽ ném ngoại lệ dạng “Unable to download required resource”. Đặt cờ `false` sẽ cho bạn một lỗi rõ ràng, có thể xử lý theo cách của mình. + +--- + +## Bước 3: Chọn ngôn ngữ – *nhận dạng văn bản Hindi* + +Aspose OCR hỗ trợ hàng chục ngôn ngữ, nhưng bạn phải chỉ định ngôn ngữ muốn dùng. Hindi được xác định bằng `OcrLanguage.Hindi`. + +```csharp +// Step 3: Create the OCR engine and set the target language +var ocrEngine = new OcrEngine +{ + Language = OcrLanguage.Hindi +}; +``` + +*Nếu bạn cần nhiều ngôn ngữ?* Bạn có thể đặt `Language = OcrLanguage.AutoDetect` để engine tự đoán, nhưng tự động phát hiện chậm hơn và đôi khi nhầm lẫn khi có script hỗn hợp. Đối với Hindi thuần, việc chọn rõ ràng là an toàn nhất. + +--- + +## Bước 4: Tải ảnh của bạn – *tải hình ảnh cho OCR* + +Bây giờ chúng ta đưa ảnh cho engine đọc. Aspose cung cấp helper `ImageStream.FromFile` tiện lợi, trừu tượng hoá các phụ thuộc `System.Drawing` bên dưới. + +```csharp +// Step 4: Load the image containing Hindi text +ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); +``` + +Nếu đường dẫn file sai, Aspose sẽ ném `FileNotFoundException`. Kiểm tra nhanh `File.Exists` trước dòng này có thể cứu bạn khỏi một buổi debug dài. + +--- + +## Bước 5: Chạy Engine OCR – *chạy nhận dạng OCR* + +Với mọi thứ đã được cấu hình, chúng ta cuối cùng khởi động quá trình nhận dạng. Lệnh này đồng bộ và chặn cho đến khi văn bản được trích xuất. + +```csharp +// Step 5: Execute the OCR process +ocrEngine.Recognize(); +``` + +Ở phía sau, Aspose thực hiện nhiều giai đoạn: tiền xử lý (điều chỉnh góc, loại bỏ nhiễu), phân đoạn, phân loại ký tự, và cuối cùng là xử lý hậu kỳ theo ngôn ngữ. Tất cả công việc nặng được thực hiện trong một lời gọi phương thức duy nhất này. + +--- + +## Bước 6: Xuất văn bản đã trích xuất – *trích xuất văn bản từ hình ảnh* + +Kết quả nằm trong thuộc tính `Text` của engine. Chúng ta chỉ cần ghi nó ra console, nhưng bạn cũng có thể lưu vào cơ sở dữ liệu, gửi qua API, hoặc đưa vào pipeline NLP khác. + +```csharp +// Step 6: Print the recognized text +Console.WriteLine("=== OCR RESULT ==="); +Console.WriteLine(ocrEngine.Text); +``` + +**Kết quả mong đợi** (giả sử ảnh chứa “स्वागत है”): + +``` +=== OCR RESULT === +स्वागत है +``` + +Nếu bạn thấy ký tự lộn xộn, hãy kiểm tra lại mô hình Hindi đã được đặt đúng và ảnh không bị nén quá mức. + +--- + +## Ví dụ hoàn chỉnh + +Dưới đây là chương trình đầy đủ bạn có thể sao chép‑dán vào một dự án console mới (`dotnet new console`). Thay `YOUR_DIRECTORY` bằng đường dẫn thực tế trên máy của bạn. + +```csharp +// ------------------------------------------------------------ +// Complete Aspose OCR example – extract text from image +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + // 1️⃣ Set the folder where language models are stored + OcrEngine.Config.ResourcesPath = @"YOUR_DIRECTORY/OcrResources"; + + // 2️⃣ Turn off automatic download – useful for offline builds + OcrEngine.Config.AllowAutomaticResourceDownload = false; + + // 3️⃣ Create the engine and tell it to read Hindi + var ocrEngine = new OcrEngine + { + Language = OcrLanguage.Hindi + }; + + // 4️⃣ Load the image file that contains Hindi text + ocrEngine.Image = ImageStream.FromFile(@"YOUR_DIRECTORY/input.jpg"); + + // 5️⃣ Run the OCR process + ocrEngine.Recognize(); + + // 6️⃣ Output the result to the console + Console.WriteLine("=== OCR RESULT ==="); + Console.WriteLine(ocrEngine.Text); + } +} +``` + +> **Mẹo:** Nếu bạn dự định xử lý nhiều ảnh trong một vòng lặp, hãy khởi tạo một `OcrEngine` duy nhất và tái sử dụng nó—giúp giảm thời gian khởi tạo. + +--- + +## Xử lý các vấn đề thường gặp + +| Vấn đề | Nguyên nhân | Giải pháp nhanh | +|-------|-------------|-----------------| +| **Kết quả rỗng** | Mô hình ngôn ngữ sai hoặc ảnh chất lượng thấp. | Kiểm tra `ResourcesPath`, tăng DPI ảnh, hoặc thử `ocrEngine.Image = ImageStream.FromFile(..., true)` để bật tự động cải thiện. | +| **Ngoại lệ: Resource not found** | Thiếu file `.traineddata` của Hindi. | Tải mô hình Hindi từ Aspose, đặt vào `OcrResources`, và chắc chắn tên file là `hin.traineddata`. | +| **Ký tự rác** | Mã hoá không khớp khi in ra console. | Đặt mã hoá đầu ra console: `Console.OutputEncoding = System.Text.Encoding.UTF8;`. | +| **Chậm hiệu suất** | Ảnh lớn được xử lý mà không thu nhỏ. | Thu nhỏ ảnh trước khi đưa vào OCR, tối đa chiều rộng/chiều cao 2000 px. | + +--- + +## Các bước tiếp theo & Chủ đề liên quan + +- **Xử lý batch:** Đặt mã trong vòng `foreach` để xử lý một thư mục ảnh. +- **Ngôn ngữ khác:** Thay `OcrLanguage.Hindi` bằng `OcrLanguage.English`, `OcrLanguage.Arabic`, v.v. +- **Định dạng đầu ra:** Thay `Console.WriteLine` bằng việc ghi vào file văn bản (`File.WriteAllText("result.txt", ocrEngine.Text);`). +- **Tích hợp với ASP.NET Core:** Cung cấp endpoint API nhận upload ảnh và trả về văn bản đã trích xuất dưới dạng JSON. + +Tất cả các mở rộng này tuân theo cùng một mẫu—cấu hình engine, tải ảnh, nhận dạng, và tiêu thụ kết quả. + +--- + +## Kết luận + +Chúng ta vừa trình bày cách **trích xuất văn bản từ hình ảnh** bằng Aspose OCR trong C#. Hướng dẫn đã bao quát mọi bước bạn cần để **tải hình ảnh cho OCR**, **nhận dạng văn bản Hindi**, và **chạy nhận dạng OCR**—tất cả trong một ứng dụng console tự chứa. + +Hãy thử với những bức ảnh của bạn, khám phá các ngôn ngữ khác, và tự do điều chỉnh đoạn mã cho dịch vụ web hoặc công việc nền. Ý tưởng cốt lõi vẫn không đổi: đặt tài nguyên, chọn ngôn ngữ, đưa ảnh vào, và đọc thuộc tính `Text`. + +Nếu gặp khó khăn, xem bảng khắc phục ở trên hoặc để lại bình luận. Chúc lập trình vui vẻ, và hy vọng kết quả OCR luôn rõ né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/vietnamese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md b/ocr/vietnamese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md new file mode 100644 index 00000000..f46cde6e --- /dev/null +++ b/ocr/vietnamese/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-01-10 +description: Cách chạy OCR trên hình ảnh bằng Aspose OCR trong C#. Học cách trích + xuất văn bản từ hình ảnh, thực hiện OCR trên hình ảnh và tải hình ảnh cho OCR với + tăng tốc GPU. +draft: false +keywords: +- how to run OCR +- extract text from image +- run OCR on image +- load image for OCR +- Aspose OCR tutorial +language: vi +og_description: Cách chạy OCR trên hình ảnh bằng Aspose OCR. Hướng dẫn này chỉ ra + cách trích xuất văn bản từ hình ảnh, chạy OCR trên hình ảnh và tải hình ảnh cho + OCR một cách hiệu quả. +og_title: Cách chạy OCR trong C# – Hướng dẫn chi tiết từng bước +tags: +- OCR +- C# +- Aspose +title: Cách chạy OCR trong C# – Hướng dẫn đầy đủ với Aspose OCR +url: /vi/net/text-recognition/how-to-run-ocr-in-c-complete-guide-with-aspose-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách chạy OCR trong C# – Hướng dẫn đầy đủ với Aspose OCR + +Bạn đã bao giờ tự hỏi **cách chạy OCR** trên một bức ảnh và lấy được văn bản mà không phải rối bời chưa? Bạn không phải là người duy nhất. Dù bạn đang số hoá hoá đơn, quét biên lai, hay chỉ muốn tạo một PDF có thể tìm kiếm, việc trích xuất văn bản từ hình ảnh là nhu cầu hàng ngày của nhiều nhà phát triển. + +Trong tutorial này, chúng ta sẽ đi qua một ví dụ thực tế, từ đầu đến cuối cho thấy **cách chạy OCR trên file ảnh** bằng thư viện Aspose OCR, kèm theo tăng tốc GPU để đạt tốc độ cao. Khi hoàn thành, bạn sẽ biết chính xác cách tải ảnh cho OCR, điều chỉnh việc sử dụng bộ nhớ, và nhận được kết quả văn bản thuần sạch chỉ trong vài phút viết code. + +## Những gì bạn sẽ học + +- Cách khởi tạo engine Aspose OCR trong C# +- Cách **tải ảnh cho OCR** từ đĩa hoặc stream +- Cách bật tăng tốc GPU và giới hạn bộ nhớ GPU +- Cách **trích xuất văn bản từ ảnh** và kiểm tra kết quả +- Những bẫy thường gặp (module GPU thiếu, giới hạn bộ nhớ) và cách khắc phục nhanh + +Bạn không cần kinh nghiệm trước với Aspose OCR; chỉ cần một môi trường .NET hoạt động và một ảnh mẫu. + +--- + +## Cách chạy OCR trên ảnh với Aspose OCR + +Điều đầu tiên bạn cần là một đoạn mã rõ ràng, có thể chạy được, thực hiện toàn bộ công việc. Dưới đây là chương trình đầy đủ mà bạn có thể sao chép, dán và chạy ngay lập tức. + +```csharp +// ------------------------------------------------------------ +// Complete C# program: How to Run OCR with Aspose OCR +// ------------------------------------------------------------ +using System; +using Aspose.OCR; +using Aspose.OCR.Config; +using System.Drawing; // For Image handling (optional) + +// 1️⃣ Initialize the OCR engine +var ocrEngine = new OcrEngine(); + +// 2️⃣ Enable GPU acceleration (requires the Aspose OCR GPU module) +// This speeds up recognition dramatically on supported hardware. +ocrEngine.Config.EnableGpuAcceleration = true; + +// 3️⃣ (Optional) Limit GPU memory usage to 1024 MB to avoid OOM errors +ocrEngine.Config.GpuMemoryLimit = 1024; + +// 4️⃣ Load the image you want to process +// Replace the path with your own image file. +string imagePath = "YOUR_DIRECTORY/sample_skewed.jpg"; +ocrEngine.Image = ImageStream.FromFile(imagePath); + +// 5️⃣ Run the OCR recognition +ocrEngine.Recognize(); + +// 6️⃣ Retrieve the plain‑text result and display it +string recognizedText = ocrEngine.Text; +Console.WriteLine("=== OCR Result ==="); +Console.WriteLine(recognizedText); +``` + +**Kết quả mong đợi** (giả sử ảnh mẫu chứa cụm từ “Hello World”): + +``` +=== OCR Result === +Hello World +``` + +> **Mẹo chuyên nghiệp:** Nếu bạn không thấy bất kỳ văn bản nào, hãy kiểm tra lại rằng module GPU đã được cài đặt và đường dẫn ảnh là chính xác. Phương thức `ImageStream.FromFile` sẽ ném ra một ngoại lệ rõ ràng nếu không tìm thấy file. + +--- + +## Trích xuất văn bản từ ảnh bằng tăng tốc GPU + +Tại sao lại phải dùng GPU? OCR chỉ dùng CPU cũng hoạt động, nhưng có thể rất chậm trên các ảnh lớn hoặc độ phân giải cao. Bật tăng tốc GPU (bước 2 ở trên) sẽ giao phần việc nặng cho card đồ họa, cho phép xử lý hàng ngàn pixel mỗi giây. + +### Khi nào nên dùng GPU + +- **Xử lý hàng loạt** – quét hàng chục hoá đơn một lần. +- **Quét độ phân giải cao** – bất kỳ ảnh nào trên 300 dpi. +- **Ứng dụng thời gian thực** – như một trình quét di động cần phản hồi ngay lập tức. + +Nếu môi trường của bạn không có GPU tương thích, chỉ cần đặt `EnableGpuAcceleration = false;` và engine sẽ tự động chuyển sang chế độ CPU. + +--- + +## Chạy OCR trên ảnh – Tải ảnh đúng cách + +Việc tải ảnh là bước **tải ảnh cho OCR** mà thường làm người dùng gặp khó. Aspose OCR yêu cầu một `ImageStream`, có thể tạo từ file, memory stream, hoặc thậm chí từ URL. Dưới đây là một vài cách thực hiện: + +```csharp +// Load from file (as shown earlier) +ocrEngine.Image = ImageStream.FromFile("path/to/file.jpg"); + +// Load from a byte array (useful for web uploads) +byte[] imageBytes = File.ReadAllBytes("uploaded_image.png"); +ocrEngine.Image = ImageStream.FromBytes(imageBytes); + +// Load from a remote URL (requires internet) +ocrEngine.Image = ImageStream.FromUrl("https://example.com/image.tif"); +``` + +**Trường hợp đặc biệt:** Một số ảnh có kênh alpha (độ trong suốt) khiến engine OCR bối rối. Việc loại bỏ alpha rất đơn giản: + +```csharp +using (var bitmap = new Bitmap(imagePath)) +{ + var nonAlpha = new Bitmap(bitmap.Width, bitmap.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(nonAlpha)) + { + g.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height); + } + ocrEngine.Image = ImageStream.FromBitmap(nonAlpha); +} +``` + +Bây giờ bạn đã nắm được các cách phổ biến nhất để **tải ảnh cho OCR**, đảm bảo engine nhận được định dạng sạch và được hỗ trợ mỗi lần. + +--- + +## Mẹo tải ảnh cho OCR một cách hiệu quả + +1. **Thu nhỏ ảnh lớn** – OCR không cần ảnh 4 K; giảm xuống khoảng ~1500 px chiều rộng sẽ tăng tốc mà không làm giảm độ chính xác. +2. **Chuyển sang grayscale** – giảm nhiễu và có thể cải thiện nhận dạng trên ảnh có độ tương phản thấp. +3. **Tiền xử lý bằng deskew** – nếu ảnh bị nghiêng, tính năng deskew tích hợp của Aspose OCR có thể bật bằng `ocrEngine.Config.EnableDeskew = true;`. + +Những điều chỉnh này đặc biệt hữu ích khi bạn **trích xuất văn bản từ ảnh** hàng loạt. + +--- + +## Những bẫy thường gặp & Cách khắc phục + +| Triệu chứng | Nguyên nhân có thể | Cách khắc phục | +|------------|--------------------|----------------| +| `System.DllNotFoundException: Aspose.OCR.Gpu.dll` | Module GPU chưa được cài đặt | Cài đặt gói Aspose OCR GPU hoặc tắt GPU (`EnableGpuAcceleration = false`). | +| Kết quả trống | Đường dẫn ảnh sai hoặc định dạng không được hỗ trợ | Kiểm tra lại đường dẫn `ImageStream.FromFile`; thử tải từ byte để chắc chắn file được đọc đúng. | +| Lỗi hết bộ nhớ | Giới hạn bộ nhớ GPU quá thấp cho batch lớn | Tăng `GpuMemoryLimit` (ví dụ, 2048) hoặc xử lý ảnh theo các lô nhỏ hơn. | +| Ký tự lộn xộn | Ảnh có nhiễu mạnh hoặc độ tương phản thấp | Tiền xử lý: nhị phân hoá, loại bỏ điểm nhiễu, hoặc tăng DPI trước khi OCR. | + +--- + +## Ví dụ hoàn chỉnh – Kết hợp tất cả + +Dưới đây là một ứng dụng console ngắn gọn, tích hợp các thực tiễn tốt nhất mà chúng ta đã thảo luận: tăng tốc GPU, giới hạn bộ nhớ, tiền xử lý ảnh, và xử lý lỗi. + +```csharp +using System; +using System.Drawing; +using Aspose.OCR; +using Aspose.OCR.Config; + +class Program +{ + static void Main() + { + try + { + // Initialize OCR engine + var ocr = new OcrEngine(); + + // Enable GPU (set false if no GPU) + ocr.Config.EnableGpuAcceleration = true; + ocr.Config.GpuMemoryLimit = 1024; // 1 GB limit + ocr.Config.EnableDeskew = true; // Auto‑deskew + + // Load and optionally preprocess image + string path = "YOUR_DIRECTORY/sample_skewed.jpg"; + using (var original = new Bitmap(path)) + { + // Resize if too large + const int maxWidth = 1500; + Bitmap processed = original.Width > maxWidth + ? new Bitmap(original, new Size(maxWidth, original.Height * maxWidth / original.Width)) + : new Bitmap(original); + + // Convert to grayscale (optional but often helpful) + var gray = new Bitmap(processed.Width, processed.Height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); + using (var g = Graphics.FromImage(gray)) + { + var cm = new System.Drawing.Imaging.ColorMatrix( + new float[][]{ + new float[]{0.3f,0.3f,0.3f,0,0}, + new float[]{0.59f,0.59f,0.59f,0,0}, + new float[]{0.11f,0.11f,0.11f,0,0}, + new float[]{0,0,0,1,0}, + new float[]{0,0,0,0,1}}); + var ia = new System.Drawing.Imaging.ImageAttributes(); + ia.SetColorMatrix(cm); + g.DrawImage(processed, new Rectangle(0,0,processed.Width,processed.Height), + 0,0,processed.Width,processed.Height, GraphicsUnit.Pixel, ia); + } + + // Feed the processed bitmap into OCR + ocr.Image = ImageStream.FromBitmap(gray); + } + + // Run recognition + ocr.Recognize(); + + // Output result + Console.WriteLine("=== Extracted Text ==="); + Console.WriteLine(ocr.Text); + } + catch (Exception ex) + { + Console.Error.WriteLine($"Error during OCR: {ex.Message}"); + } + } +} +``` + +Chạy chương trình này sẽ in ra văn bản sạch được trích xuất từ ảnh của bạn, minh họa cách **trích xuất văn bản từ ảnh** một cách vững chắc ngay cả khi nguồn ảnh không hoàn hảo. + +--- + +## Kết luận + +Chúng ta đã bao quát **cách chạy OCR** trên ảnh bằng Aspose OCR, từ khởi tạo engine, tải ảnh, bật tăng tốc GPU, đến xử lý các trường hợp đặc biệt. Giờ đây bạn có một tài liệu tham khảo đáng tin cậy, có thể sao chép‑dán vào bất kỳ dự án .NET nào và bắt đầu **trích xuất văn bản từ ảnh** ngay lập tức. + +Bước tiếp theo? Hãy thử đưa các trang PDF vào, thử nghiệm các ngôn ngữ khác (đặt `ocrEngine.Config.Language = "spa"` cho tiếng Tây Ban Nha), hoặc tích hợp quy trình này vào một API web xử lý tải lên ngay lập tức. Không có giới hạn, và với các công cụ chúng ta đã thảo luận, bạn đã sẵn sàng đối mặt với bất kỳ thử thách OCR nào. + +Chúc lập trình vui vẻ, và chúc văn bản của bạn luôn sạch sẽ, OCR luôn nhanh chóng! + +{{< /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/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md b/ocr/vietnamese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md new file mode 100644 index 00000000..e7606e7b --- /dev/null +++ b/ocr/vietnamese/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-01-10 +description: Cách chạy OCR nhanh chóng và trích xuất văn bản tiếng Ả Rập từ hình ảnh. + Học cách chuyển đổi hình ảnh thành văn bản, đọc văn bản từ PNG và xem cách trích + xuất văn bản bằng Aspose OCR. +draft: false +keywords: +- how to run OCR +- extract arabic text +- convert image to text +- read text from png +- how to extract text +language: vi +og_description: Cách chạy OCR trong C# và trích xuất văn bản tiếng Ả Rập từ hình ảnh + PNG. Hướng dẫn này cho bạn biết cách chuyển đổi hình ảnh thành văn bản và đọc văn + bản từ PNG từng bước. +og_title: Cách chạy OCR trong C# – Trích xuất văn bản tiếng Ả Rập từ PNG +tags: +- OCR +- C# +- Aspose +title: Cách chạy OCR trong C# – Trích xuất văn bản tiếng Ả Rập từ PNG +url: /vi/net/text-recognition/how-to-run-ocr-in-c-extract-arabic-text-from-png/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách chạy OCR trong C# – Trích xuất văn bản tiếng Ả Rập từ PNG + +Bạn đã bao giờ tự hỏi **cách chạy OCR** trên một bức ảnh chứa ký tự tiếng Ả Rập chưa? 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 họ cần **trích xuất văn bản tiếng Ả Rập** từ một tệp PNG nhưng không biết thư viện nào sẽ xử lý các script từ phải sang trái mà không gặp rắc rối. + +Trong hướng dẫn này, chúng ta sẽ đi qua mọi thứ bạn cần biết để **chuyển đổi hình ảnh thành văn bản**, **đọc văn bản từ PNG**, và cuối cùng **cách trích xuất văn bản** bằng Aspose.OCR trong một ứng dụng console C# sạch sẽ. Khi kết thúc, bạn sẽ có một chương trình sẵn sàng chạy và in ra chuỗi tiếng Ả Rập trực tiếp trên terminal của bạn. + +## Những gì bạn sẽ học + +- Cài đặt và tham chiếu gói NuGet Aspose.OCR. +- Cấu hình engine OCR để hỗ trợ ngôn ngữ tiếng Ả Rập. +- Tải ảnh PNG và chạy quá trình nhận dạng. +- Lấy và hiển thị văn bản đã trích xuất. +- Tinh chỉnh cài đặt để cải thiện độ chính xác và xử lý các vấn đề thường gặp. + +Không yêu cầu kinh nghiệm trước về OCR, chỉ cần hiểu cơ bản về C# và môi trường phát triển .NET (Visual Studio, Rider, hoặc `dotnet` CLI đều được). + +--- + +## Cách chạy OCR – Cài đặt Aspose OCR + +### Bước 1: Thêm gói NuGet Aspose.OCR + +Điều đầu tiên chúng ta cần là thư viện OCR. Aspose.OCR là một sản phẩm thương mại, nhưng nó cung cấp bản dùng thử miễn phí hoạt động hoàn hảo cho mục đích học tập. + +```bash +# Using the .NET CLI +dotnet add package Aspose.OCR +``` + +Hoặc, mở **NuGet Package Manager** trong Visual Studio, tìm kiếm **Aspose.OCR**, và nhấn **Install**. + +> **Mẹo:** Nếu bạn dự định sử dụng thư viện trong pipeline CI, thêm cờ `-v` để khóa phiên bản, ví dụ, `dotnet add package Aspose.OCR -v 23.10`. + +### Bước 2: Tạo một dự án Console mới (nếu bạn chưa có) + +```bash +dotnet new console -n ArabicOcrDemo +cd ArabicOcrDemo +``` + +Bây giờ bạn đã có một tệp `Program.cs` mới sẵn sàng cho mã của chúng ta. + +--- + +## Trích xuất văn bản tiếng Ả Rập – Viết mã OCR + +Dưới đây là chương trình hoàn chỉnh, sẵn sàng chạy. Lưu nó dưới tên `Program.cs` (hoặc thay thế tệp được tự động tạo). + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Config; + +namespace ArabicOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // Step 1: Create an OCR engine instance + // ------------------------------------------------- + var ocrEngine = new OcrEngine(); + + // ------------------------------------------------- + // Step 2: Choose the language for recognition. + // Here we use Arabic. You can swap this for + // OcrLanguage.Korean, OcrLanguage.SerbianCyrillic, etc. + // ------------------------------------------------- + ocrEngine.Language = OcrLanguage.Arabic; + + // ------------------------------------------------- + // Step 3: Load the image containing the text. + // Replace the path with the location of your PNG. + // ------------------------------------------------- + string imagePath = "YOUR_DIRECTORY/arabic_sample.png"; + ocrEngine.Image = ImageStream.FromFile(imagePath); + + // ------------------------------------------------- + // Step 4: Run the OCR process. + // ------------------------------------------------- + ocrEngine.Recognize(); + + // ------------------------------------------------- + // Step 5: Display the extracted text. + // ------------------------------------------------- + Console.WriteLine("=== Extracted Arabic Text ==="); + Console.WriteLine(ocrEngine.Text); + } + } +} +``` + +#### Tại sao mỗi dòng lại quan trọng + +- `OcrEngine`: Lớp trung tâm điều phối việc tải ảnh, chọn ngôn ngữ và nhận dạng. +- `Language = OcrLanguage.Arabic`: Tiếng Ả Rập sử dụng script từ phải sang trái và các glyph độc đáo; việc đặt ngôn ngữ sẽ báo cho engine áp dụng các mô hình ký tự đúng. +- `ImageStream.FromFile`: Xử lý PNG, JPEG, BMP và nhiều định dạng khác. Nếu bạn cần đọc từ `MemoryStream` (ví dụ, tệp được tải lên), hãy thay thế lời gọi này cho phù hợp. +- `Recognize()`: Thực hiện công việc nặng—phân tích pixel, phân đoạn và phân loại ký tự. +- `ocrEngine.Text`: Chuỗi Unicode cuối cùng, sẵn sàng cho việc xử lý tiếp theo, lưu trữ hoặc hiển thị. + +### Kết quả mong đợi + +Nếu `arabic_sample.png` chứa cụm từ “مرحبا بالعالم” (Hello World), console sẽ in ra: + +``` +=== Extracted Arabic Text === +مرحبا بالعالم +``` + +Nếu kết quả bị rối, hãy kiểm tra lại ảnh có rõ ràng, ngôn ngữ đã được đặt là Arabic, và phiên bản engine OCR khớp với tài liệu. + +--- + +## Chuyển đổi hình ảnh thành văn bản – Tinh chỉnh độ chính xác + +Mặc dù cài đặt mặc định hoạt động cho hầu hết các bản quét sạch, nhưng các ảnh thực tế thường cần một chút tinh chỉnh thêm. + +| Cài đặt | Chức năng | Khi nào sử dụng | +|---------|-----------|-----------------| +| `ocrEngine.Config.Preprocess = true` | Bật tự động nhị phân và loại bỏ nhiễu. | Tài liệu quét có bóng. | +| `ocrEngine.Config.Deskew = true` | Xoay ảnh để sửa độ nghiêng nhẹ. | Ảnh chụp góc nghiêng. | +| `ocrEngine.Config.PageSegMode = PageSegMode.SingleBlock` | Xem toàn bộ ảnh như một khối văn bản duy nhất. | Chú thích đơn giản hoặc nhãn một dòng. | +| `ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزس شصضطظعغفقكلمنهوية"` | Giới hạn nhận dạng chỉ các ký tự tiếng Ả Rập. | Giảm các kết quả sai trên các trang hỗn hợp ngôn ngữ. | + +Bạn có thể thêm các dòng này ngay sau khi tạo engine: + +```csharp +ocrEngine.Config.Preprocess = true; +ocrEngine.Config.Deskew = true; +ocrEngine.Config.CharWhitelist = "ءاأإآبتثجحخدذرزسشصضطظعغفقكلمنهوية"; +``` + +--- + +## Đọc văn bản từ PNG – Xử lý các nguồn ảnh khác nhau + +Đôi khi tệp PNG nằm trong cơ sở dữ liệu hoặc đến từ yêu cầu web. Dưới đây là một biến thể nhanh đọc từ `byte[]`: + +```csharp +byte[] pngBytes = File.ReadAllBytes("YOUR_DIRECTORY/arabic_sample.png"); +using var ms = new MemoryStream(pngBytes); +ocrEngine.Image = ImageStream.FromStream(ms); +ocrEngine.Recognize(); +Console.WriteLine(ocrEngine.Text); +``` + +Phần còn lại của quy trình vẫn giống nhau, có nghĩa là **cách trích xuất văn bản** vẫn nhất quán bất kể nguồn. + +--- + +## Cách trích xuất văn bản – Tùy chọn nâng cao & Trường hợp đặc biệt + +### 1. PDF hoặc TIFF đa trang + +Nếu bạn cần OCR một tài liệu đa trang, lặp qua từng trang: + +```csharp +var pdfDoc = new Aspose.Pdf.Document("multi_page.pdf"); +foreach (var page in pdfDoc.Pages) +{ + using var img = page.ConvertToImage(); + ocrEngine.Image = ImageStream.FromBitmap(img); + ocrEngine.Recognize(); + Console.WriteLine($"Page {page.Number}: {ocrEngine.Text}"); +} +``` + +> **Lưu ý:** Bạn sẽ cần gói `Aspose.PDF` cho đoạn mã này. + +### 2. Tự động phát hiện ngôn ngữ + +Aspose.OCR cũng cung cấp tính năng tự động phát hiện, nhưng chậm hơn. Nếu bạn không chắc ảnh chứa tiếng Ả Rập hay script khác, hãy bật tính năng này: + +```csharp +ocrEngine.Language = OcrLanguage.AutoDetect; +``` + +### 3. Mẹo hiệu năng + +- **Tái sử dụng đối tượng `OcrEngine`** cho nhiều ảnh; tạo một thể hiện mới mỗi lần sẽ tăng chi phí. +- **Chạy song song** chỉ khi bạn có các thể hiện engine riêng cho mỗi luồng—chia sẻ một thể hiện sẽ gây ra race condition. + +--- + +## Kết luận + +Chúng tôi đã trình bày **cách chạy OCR** trong C# từ đầu đến cuối, cho bạn thấy cách **trích xuất văn bản tiếng Ả Rập**, **chuyển đổi hình ảnh thành văn bản**, **đọc văn bản từ PNG**, và trả lời **cách trích xuất văn bản** trong nhiều tình huống. Mã mẫu hoàn chỉnh, độc lập và sẵn sàng để bạn dán vào bất kỳ dự án console .NET nào. + +Bước tiếp theo? Hãy thử thay `OcrLanguage.Arabic` bằng Korean hoặc Serbian Cyrillic để xem sức mạnh đa ngôn ngữ của thư viện. Thử nghiệm các cờ tiền xử lý để nâng cao độ chính xác trên các bản quét nhiễu, hoặc tích hợp quy trình OCR vào một API web để người dùng có thể tải lên ảnh và nhận kết quả văn bản ngay lập tức. + +Chúc lập trình vui vẻ, và hy vọng kết quả OCR của bạn luôn rõ ràng như pha lê! + +{{< /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/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md b/ocr/vietnamese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md new file mode 100644 index 00000000..4e10fe4d --- /dev/null +++ b/ocr/vietnamese/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/_index.md @@ -0,0 +1,293 @@ +--- +category: general +date: 2026-01-10 +description: Học cách nhận dạng văn bản từ hình ảnh, trích xuất tọa độ văn bản và + chuyển đổi biên lai sang JSON bằng Aspose OCR trong C#. Hướng dẫn từng bước. +draft: false +keywords: +- recognize text from image +- how to extract text +- extract text coordinates +- convert receipt to json +language: vi +og_description: Nhận dạng văn bản từ hình ảnh trong C# bằng Aspose OCR. Hướng dẫn + này cho thấy cách trích xuất văn bản, lấy tọa độ và chuyển biên lai sang JSON. +og_title: Nhận dạng văn bản từ hình ảnh – Hướng dẫn OCR đầy đủ bằng C# +tags: +- OCR +- C# +- Aspose +title: Nhận dạng văn bản từ hình ảnh trong C# – Hướng dẫn toàn diện về OCR và JSON +url: /vi/net/text-recognition/recognize-text-from-image-in-c-complete-guide-to-ocr-and-jso/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Nhận dạng văn bản từ hình ảnh – Hướng dẫn OCR C# đầy đủ + +Bạn đã bao giờ cần nhận dạng văn bản từ hình ảnh nhưng không chắc thư viện nào nên chọn? Bạn không phải là người duy nhất. Trong nhiều ứng dụng thực tế—trình theo dõi chi phí, máy quét biên lai, hoặc lưu trữ tài liệu—việc trích xuất văn bản một cách đáng tin cậy là rào cản đầu tiên. + +Trong hướng dẫn này, chúng ta sẽ đi qua **cách trích xuất văn bản**, lấy các hộp bao quanh, và cuối cùng **chuyển đổi biên lai sang JSON** bằng Aspose.OCR cho .NET. Khi kết thúc, bạn sẽ có một dự án C# độc lập, cho phép chụp ảnh biên lai và xuất ra một tệp JSON gọn gàng với các điểm tin cậy và tọa độ. + +## Những gì bạn cần + +- **.NET 6.0 SDK** (hoặc bất kỳ phiên bản nào mới hơn). Các framework cũ cũng hoạt động, nhưng .NET 6 là lựa chọn tối ưu cho các thư viện hiện đại. +- **Visual Studio 2022** hoặc VS Code với phần mở rộng C#. +- **Aspose.OCR for .NET** gói NuGet (`Aspose.OCR` và `Aspose.OCR.Output`). Bạn có thể cài đặt nó qua Package Manager Console: + +```powershell +Install-Package Aspose.OCR +Install-Package Aspose.OCR.Output +``` + +- Một hình ảnh biên lai mẫu (ví dụ, `receipt.jpg`) được đặt trong thư mục mà bạn sẽ tham chiếu sau. +- Đó là tất cả—không cần SDK bổ sung, không có binary gốc, chỉ mã quản lý thuần túy. + +## Bước 1: Tạo dự án Console mới + +Đầu tiên, tạo một ứng dụng console. Đây là cách nhanh nhất để thử OCR mà không cần giao diện người dùng. + +```csharp +// Program.cs +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // We'll fill this in later. + } + } +} +``` + +> **Mẹo:** Giữ thư mục dự án gọn gàng; tạo một thư mục con tên `Resources` và đặt `receipt.jpg` vào đó. Điều này giúp việc xử lý đường dẫn trở nên dễ dàng. + +## Bước 2: Tải hình ảnh biên lai + +Bây giờ chúng ta thực sự **nhận dạng văn bản từ hình ảnh**. Bước đầu tiên là chỉ định engine OCR tới tệp. + +```csharp +// Inside Main() +string imagePath = @"Resources/receipt.jpg"; +if (!System.IO.File.Exists(imagePath)) +{ + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; +} + +// Initialise the OCR engine +OcrEngine ocrEngine = new OcrEngine +{ + Image = ImageStream.FromFile(imagePath) +}; + +Console.WriteLine("✅ Image loaded successfully."); +``` + +Tại sao chúng ta bao bọc việc tải trong một kiểm tra tồn tại đơn giản? Bởi vì trong môi trường thực tế, bạn thường xử lý các tệp tải lên của người dùng có thể bị thiếu hoặc hỏng. Phát hiện sớm vấn đề sẽ giúp tránh các ngoại lệ khó hiểu sau này. + +## Bước 3: Thực hiện OCR – **nhận dạng văn bản từ hình ảnh** + +Khi hình ảnh đã có trong bộ nhớ, chúng ta yêu cầu Aspose **nhận dạng văn bản từ hình ảnh**. Thao tác này đồng bộ và trả về một tập kết quả phong phú. + +```csharp +// Still inside Main() +try +{ + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); +} +catch (Exception ex) +{ + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; +} +``` + +Trong hậu trường, Aspose chạy một mạng nơ-ron được huấn luyện trên hàng triệu ký tự. Engine sẽ điền vào `ocrEngine.Text`, `ocrEngine.RecognitionResult`, và một tập hợp các đối tượng `OcrRegion` chứa tọa độ. Đó chính là những gì chúng ta cần cho bước tiếp theo. + +## Bước 4: **Cách trích xuất văn bản** – Lấy chuỗi thô + +Nếu bạn chỉ quan tâm đến văn bản thuần (có thể cho việc tìm kiếm nhanh), bạn có thể lấy trực tiếp từ engine: + +```csharp +string plainText = ocrEngine.Text; +Console.WriteLine("\n--- Extracted Text ---"); +Console.WriteLine(plainText); +``` + +Bạn sẽ thấy các ngắt dòng ở nơi OCR phát hiện ranh giới đoạn văn. Trong nhiều trường hợp quét biên lai, chuỗi thô đủ để trích xuất tổng tiền, ngày tháng, hoặc tên nhà cung cấp bằng các biểu thức chính quy đơn giản. + +## Bước 5: **trích xuất tọa độ văn bản** – Hộp bao quanh cho mỗi từ + +Thường bạn cần biết *ở đâu* trên hình ảnh một đoạn văn bản cụ thể nằm—ví dụ, để làm nổi bật tổng tiền trong giao diện người dùng. Aspose cung cấp thông tin này qua các đối tượng `OcrRegion`. + +```csharp +Console.WriteLine("\n--- Text Coordinates (extract text coordinates) ---"); +foreach (var region in ocrEngine.RecognitionResult.Regions) +{ + // Each region represents a word or a line depending on the engine settings. + string word = region.Text; + var bounds = region.BoundingBox; // X, Y, Width, Height + Console.WriteLine($"Word: \"{word}\" | Box: X={bounds.X}, Y={bounds.Y}, W={bounds.Width}, H={bounds.Height}"); +} +``` + +Lưu ý chúng ta đang lặp qua **trích xuất tọa độ văn bản** cho mỗi đoạn được nhận dạng. Các tọa độ là tương đối so với hình ảnh gốc, vì vậy bạn có thể phủ lên chúng trong một canvas đồ họa hoặc phần tử HTML ``. + +## Bước 6: **chuyển đổi biên lai sang JSON** – Lưu kết quả chi tiết + +Bây giờ là phần kết nối mọi thứ lại với nhau: chúng ta muốn một cấu trúc máy đọc được, bao gồm văn bản, điểm tin cậy và các hộp bao quanh. Aspose cung cấp `JsonSaveOptions` giúp việc này trở nên dễ dàng. + +```csharp +// Define where the JSON will be saved +string jsonPath = @"Resources/receipt.json"; + +// Configure JSON options to keep confidence and bounding boxes +JsonSaveOptions jsonOptions = new JsonSaveOptions +{ + IncludeConfidence = true, + IncludeBoundingBoxes = true +}; + +// Save the OCR result +ocrEngine.Save(jsonPath, jsonOptions); +Console.WriteLine($"\n💾 Detailed OCR results saved to {jsonPath}"); +``` + +Tệp kết quả trông giống như sau (được rút gọn để ngắn gọn): + +```json +{ + "Regions": [ + { + "Text": "Store", + "Confidence": 0.99, + "BoundingBox": { "X": 45, "Y": 120, "Width": 80, "Height": 20 } + }, + { + "Text": "Total", + "Confidence": 0.97, + "BoundingBox": { "X": 300, "Y": 560, "Width": 70, "Height": 22 } + } + // ... more regions ... + ] +} +``` + +Bây giờ bạn có một artefact **chuyển đổi biên lai sang JSON** có thể đưa vào các dịch vụ hạ nguồn—ví dụ API báo cáo chi phí, pipeline phân tích, hoặc thậm chí một giao diện đơn giản vẽ hình chữ nhật quanh mỗi từ. + +## Ví dụ Hoạt động đầy đủ + +Kết hợp tất cả các phần lại, đây là file `Program.cs` hoàn chỉnh mà bạn có thể sao chép và dán vào dự án của mình: + +```csharp +using System; +using Aspose.OCR; +using Aspose.OCR.Output; + +namespace ReceiptOcrDemo +{ + class Program + { + static void Main(string[] args) + { + // ------------------------------------------------- + // 1️⃣ Load the image + // ------------------------------------------------- + string imagePath = @"Resources/receipt.jpg"; + if (!System.IO.File.Exists(imagePath)) + { + Console.WriteLine($"❌ Image not found at {imagePath}"); + return; + } + + OcrEngine ocrEngine = new OcrEngine + { + Image = ImageStream.FromFile(imagePath) + }; + Console.WriteLine("✅ Image loaded."); + + // ------------------------------------------------- + // 2️⃣ Run OCR – recognize text from image + // ------------------------------------------------- + try + { + ocrEngine.Recognize(); + Console.WriteLine("🧠 OCR completed."); + } + catch (Exception ex) + { + Console.WriteLine($"❗ OCR failed: {ex.Message}"); + return; + } + + // ------------------------------------------------- + // 3️⃣ Extract plain text (how to extract text) + // ------------------------------------------------- + Console.WriteLine("\n--- Extracted Text ---"); + Console.WriteLine(ocrEngine.Text); + + // ------------------------------------------------- + // 4️⃣ Get coordinates (extract text coordinates) + // ------------------------------------------------- + Console.WriteLine("\n--- Text Coordinates ---"); + foreach (var region in ocrEngine.RecognitionResult.Regions) + { + var box = region.BoundingBox; + Console.WriteLine($"Word: \"{region.Text}\" | Box: X={box.X}, Y={box.Y}, W={box.Width}, H={box.Height}"); + } + + // ------------------------------------------------- + // 5️⃣ Save detailed JSON (convert receipt to json) + // ------------------------------------------------- + string jsonPath = @"Resources/receipt.json"; + JsonSaveOptions jsonOptions = new JsonSaveOptions + { + IncludeConfidence = true, + IncludeBoundingBoxes = true + }; + ocrEngine.Save(jsonPath, jsonOptions); + Console.WriteLine($"\n💾 JSON saved at {jsonPath}"); + } + } +} +``` + +Chạy chương trình (`dotnet run`) và quan sát đầu ra console. Mở `Resources/receipt.json` để kiểm tra cấu trúc. + +## Câu hỏi Thường gặp & Trường hợp Đặc biệt + +- **Nếu hình ảnh mờ?** + Aspose OCR hoạt động tốt nhất với độ phân giải 300 dpi hoặc cao hơn. Nếu bạn nhận được điểm tin cậy thấp, hãy cân nhắc áp dụng bộ lọc làm nét trước khi đưa hình ảnh vào engine. + +- **Tôi có thể nhận dạng nhiều ngôn ngữ không?** + Có. Đặt `ocrEngine.Language = Language.English | Language.Spanish;` trước khi gọi `Recognize()`. + +- **Làm sao để giới hạn đầu ra chỉ là số (ví dụ, tổng tiền)?** + Sau khi có văn bản thuần, chạy một regex như `\d+\.\d{2}` trên `ocrEngine.Text`. Vì chúng ta đã có tọa độ, bạn có thể ánh xạ chuỗi khớp lại với vùng của nó để làm nổi bật trực quan. + +- **Định dạng JSON có thể tùy chỉnh không?** + Lớp `JsonSaveOptions` cung cấp một vài cờ. Nếu bạn cần một schema hoàn toàn tùy chỉnh, bạn có thể lặp qua `ocrEngine.RecognitionResult.Regions` và tự serialize các đối tượng bằng `System.Text.Json`. + +## Kết luận + +Chúng tôi vừa trình diễn cách **nhận dạng văn bản từ hình ảnh** trong C# bằng Aspose.OCR, **cách trích xuất văn bản**, lấy **trích xuất tọa độ văn bản**, và cuối cùng **chuyển đổi biên lai sang JSON**. Toàn bộ quy trình nằm trong một ứng dụng console đơn giản, dễ chạy, phù hợp cho các nguyên mẫu hoặc làm khối xây dựng trong các hệ thống lớn hơn. + +Bước tiếp theo? Hãy thử đưa JSON vào giao diện front‑end để vẽ các hộp bao quanh, hoặc kết nối đầu ra với dịch vụ báo cáo chi phí. Bạn cũng có thể thử nghiệm với các định dạng hình ảnh khác (PNG, TIFF) hoặc xử lý hàng loạt một thư mục các biên lai. + +Có thêm câu hỏi về OCR, Aspose, hoặc xử lý JSON? Hãy để lại bình luận bên dưới, và chúc bạn lập trình vui vẻ! + +![Ví dụ hình ảnh biên lai cho nhận dạng văn bản từ hình ảnh](receipt.jpg "Ví dụ hình ảnh biên lai") + +{{< /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