From 9cd8d8816e02e0dddb09eb26b165d400be3485e6 Mon Sep 17 00:00:00 2001 From: Muhammad Adil Date: Mon, 27 Apr 2026 01:39:37 +0000 Subject: [PATCH] Add 10 ocr python-java tutorials MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Categories: general Source: AI Search API Tutorials: - extract text from image with Python – Multilingual OCR Guide - Extract Header Text OCR with Python Aspose OCR – Step‑by‑Step Guide - how to extract ocr in Python – Step‑by‑Step Tutorial - how to use OCR – Extract Text from PDF with Python - How to Run OCR and Preprocess Images – Extract Text from Scanned Forms - How to Use Threading to Load Image for OCR - How to Set License in Aspose OCR – Quick Python Guide - How to Batch OCR – Extract Text from Scans Efficiently - How to Create OCR in Python – Extract Text from Image - how to ocr python – Basic OCR Example for Extracting Text Auto-generated by Professionalize.Tutorials Agent --- .../_index.md | 247 +++++++++++++++++ .../_index.md | 227 ++++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 241 +++++++++++++++++ .../_index.md | 208 +++++++++++++++ .../_index.md | 194 ++++++++++++++ .../_index.md | 182 +++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 211 +++++++++++++++ .../_index.md | 239 +++++++++++++++++ .../_index.md | 225 ++++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 240 +++++++++++++++++ .../_index.md | 206 ++++++++++++++ .../_index.md | 191 +++++++++++++ .../_index.md | 179 +++++++++++++ .../_index.md | 193 ++++++++++++++ .../_index.md | 229 ++++++++++++++++ .../_index.md | 208 +++++++++++++++ .../_index.md | 248 +++++++++++++++++ .../_index.md | 227 ++++++++++++++++ .../_index.md | 234 ++++++++++++++++ .../_index.md | 240 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 194 ++++++++++++++ .../_index.md | 181 +++++++++++++ .../_index.md | 196 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 244 +++++++++++++++++ .../_index.md | 228 ++++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 242 +++++++++++++++++ .../_index.md | 211 +++++++++++++++ .../_index.md | 193 ++++++++++++++ .../_index.md | 182 +++++++++++++ .../_index.md | 199 ++++++++++++++ .../_index.md | 232 ++++++++++++++++ .../_index.md | 211 +++++++++++++++ .../_index.md | 247 +++++++++++++++++ .../_index.md | 226 ++++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 242 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 194 ++++++++++++++ .../_index.md | 181 +++++++++++++ .../_index.md | 197 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 249 +++++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 235 ++++++++++++++++ .../_index.md | 242 +++++++++++++++++ .../_index.md | 211 +++++++++++++++ .../_index.md | 194 ++++++++++++++ .../_index.md | 183 +++++++++++++ .../_index.md | 198 ++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 248 +++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 234 ++++++++++++++++ .../_index.md | 242 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 182 +++++++++++++ .../_index.md | 198 ++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 248 +++++++++++++++++ .../_index.md | 228 ++++++++++++++++ .../_index.md | 234 ++++++++++++++++ .../_index.md | 244 +++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 182 +++++++++++++ .../_index.md | 198 ++++++++++++++ .../_index.md | 234 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 248 +++++++++++++++++ .../_index.md | 223 ++++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 243 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 194 ++++++++++++++ .../_index.md | 182 +++++++++++++ .../_index.md | 198 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 243 +++++++++++++++++ .../_index.md | 213 +++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 240 +++++++++++++++++ .../_index.md | 206 ++++++++++++++ .../_index.md | 191 +++++++++++++ .../_index.md | 179 +++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 229 ++++++++++++++++ .../_index.md | 208 +++++++++++++++ .../_index.md | 251 ++++++++++++++++++ .../_index.md | 217 +++++++++++++++ .../_index.md | 235 ++++++++++++++++ .../_index.md | 242 +++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 192 ++++++++++++++ .../_index.md | 183 +++++++++++++ .../_index.md | 199 ++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 248 +++++++++++++++++ .../_index.md | 228 ++++++++++++++++ .../_index.md | 235 ++++++++++++++++ .../_index.md | 244 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 193 ++++++++++++++ .../_index.md | 183 +++++++++++++ .../_index.md | 198 ++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 250 +++++++++++++++++ .../_index.md | 228 ++++++++++++++++ .../_index.md | 235 ++++++++++++++++ .../_index.md | 242 +++++++++++++++++ .../_index.md | 211 +++++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 182 +++++++++++++ .../_index.md | 196 ++++++++++++++ .../_index.md | 232 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 245 +++++++++++++++++ .../_index.md | 228 ++++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 239 +++++++++++++++++ .../_index.md | 206 ++++++++++++++ .../_index.md | 189 +++++++++++++ .../_index.md | 176 ++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 229 ++++++++++++++++ .../_index.md | 208 +++++++++++++++ .../_index.md | 247 +++++++++++++++++ .../_index.md | 215 +++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 240 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 193 ++++++++++++++ .../_index.md | 180 +++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 249 +++++++++++++++++ .../_index.md | 229 ++++++++++++++++ .../_index.md | 234 ++++++++++++++++ .../_index.md | 241 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 193 ++++++++++++++ .../_index.md | 181 +++++++++++++ .../_index.md | 198 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 249 +++++++++++++++++ .../_index.md | 227 ++++++++++++++++ .../_index.md | 235 ++++++++++++++++ .../_index.md | 243 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 194 ++++++++++++++ .../_index.md | 181 +++++++++++++ .../_index.md | 198 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 248 +++++++++++++++++ .../_index.md | 230 ++++++++++++++++ .../_index.md | 234 ++++++++++++++++ .../_index.md | 243 +++++++++++++++++ .../_index.md | 211 +++++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 182 +++++++++++++ .../_index.md | 198 ++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 249 +++++++++++++++++ .../_index.md | 228 ++++++++++++++++ .../_index.md | 234 ++++++++++++++++ .../_index.md | 243 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 181 +++++++++++++ .../_index.md | 196 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 211 +++++++++++++++ .../_index.md | 247 +++++++++++++++++ .../_index.md | 229 ++++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 241 +++++++++++++++++ .../_index.md | 208 +++++++++++++++ .../_index.md | 194 ++++++++++++++ .../_index.md | 175 ++++++++++++ .../_index.md | 197 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 211 +++++++++++++++ .../_index.md | 240 +++++++++++++++++ .../_index.md | 229 ++++++++++++++++ .../_index.md | 233 ++++++++++++++++ .../_index.md | 242 +++++++++++++++++ .../_index.md | 210 +++++++++++++++ .../_index.md | 193 ++++++++++++++ .../_index.md | 180 +++++++++++++ .../_index.md | 197 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 209 +++++++++++++++ .../_index.md | 248 +++++++++++++++++ .../_index.md | 242 +++++++++++++++++ .../_index.md | 234 ++++++++++++++++ .../_index.md | 242 +++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 195 ++++++++++++++ .../_index.md | 183 +++++++++++++ .../_index.md | 196 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 212 +++++++++++++++ .../_index.md | 250 +++++++++++++++++ .../_index.md | 232 ++++++++++++++++ .../_index.md | 236 ++++++++++++++++ .../_index.md | 243 +++++++++++++++++ .../_index.md | 208 +++++++++++++++ .../_index.md | 193 ++++++++++++++ .../_index.md | 181 +++++++++++++ .../_index.md | 198 ++++++++++++++ .../_index.md | 231 ++++++++++++++++ .../_index.md | 210 +++++++++++++++ 229 files changed, 49737 insertions(+) create mode 100644 ocr/arabic/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/arabic/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/arabic/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/arabic/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/arabic/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/arabic/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/arabic/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/arabic/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/arabic/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/arabic/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/chinese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/chinese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/chinese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/chinese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/chinese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/chinese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/chinese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/chinese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/chinese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/chinese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/czech/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/czech/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/czech/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/czech/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/czech/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/czech/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/czech/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/czech/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/czech/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/dutch/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/dutch/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/dutch/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/dutch/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/dutch/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/dutch/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/dutch/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/dutch/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/dutch/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/dutch/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/english/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/english/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/english/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/english/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/english/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/english/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/english/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/english/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/english/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/english/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/french/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/french/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/french/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/french/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/french/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/french/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/french/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/french/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/french/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/french/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/german/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/german/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/german/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/german/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/german/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/german/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/german/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/german/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/german/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/german/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/greek/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/greek/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/greek/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/greek/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/greek/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/greek/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/greek/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/greek/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/greek/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/greek/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/hindi/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/hindi/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/hindi/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/hindi/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/hindi/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/hindi/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/hindi/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/hindi/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/hindi/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/hindi/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/hongkong/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/hongkong/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/hongkong/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/hongkong/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/hongkong/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/hongkong/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/hongkong/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/hongkong/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/hongkong/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/hongkong/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/hungarian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/hungarian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/hungarian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/hungarian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/hungarian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/hungarian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/hungarian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/hungarian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/hungarian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/hungarian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/indonesian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/indonesian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/indonesian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/indonesian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/indonesian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/indonesian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/indonesian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/indonesian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/indonesian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/indonesian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/italian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/italian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/italian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/italian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/italian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/italian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/italian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/italian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/italian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/italian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/japanese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/japanese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/japanese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/japanese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/japanese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/japanese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/japanese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/japanese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/japanese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/japanese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/korean/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/korean/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/korean/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/korean/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/korean/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/korean/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/korean/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/korean/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/korean/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/korean/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/polish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/polish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/polish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/polish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/polish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/polish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/polish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/polish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/polish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/polish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/portuguese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/portuguese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/portuguese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/portuguese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/portuguese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/portuguese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/portuguese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/portuguese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/portuguese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/portuguese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/russian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/russian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/russian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/russian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/russian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/russian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/russian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/russian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/russian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/russian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/spanish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/spanish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/spanish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/spanish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/spanish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/spanish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/spanish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/spanish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/spanish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/spanish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/swedish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/swedish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/swedish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/swedish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/swedish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/swedish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/swedish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/swedish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/swedish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/swedish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/thai/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/thai/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/thai/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/thai/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/thai/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/thai/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/thai/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/thai/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/thai/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/thai/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/turkish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/turkish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/turkish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/turkish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/turkish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/turkish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/turkish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/turkish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/turkish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/turkish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md create mode 100644 ocr/vietnamese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md create mode 100644 ocr/vietnamese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md create mode 100644 ocr/vietnamese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md create mode 100644 ocr/vietnamese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md create mode 100644 ocr/vietnamese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md create mode 100644 ocr/vietnamese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md create mode 100644 ocr/vietnamese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md create mode 100644 ocr/vietnamese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md create mode 100644 ocr/vietnamese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md create mode 100644 ocr/vietnamese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md diff --git a/ocr/arabic/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/arabic/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..99ff5701d --- /dev/null +++ b/ocr/arabic/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-04-26 +description: استخراج نص العنوان باستخدام OCR في Python مع Aspose OCR. تعلم كيفية استخراج + نص منطقة محددة من الصور بسرعة وموثوقية. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: ar +og_description: استخراج نص العنوان باستخدام OCR بسرعة. يوضح هذا الدليل كيفية استخراج + نص منطقة محددة باستخدام Aspose OCR في بايثون في بضع أسطر فقط. +og_title: استخراج نص العنوان باستخدام OCR في بايثون Aspose OCR – دليل شامل +tags: +- OCR +- Python +- Aspose +title: استخراج نص العنوان باستخدام OCR في بايثون Aspose OCR – دليل خطوة بخطوة +url: /ar/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# استخراج نص العنوان باستخدام OCR – دليل كامل بلغة Python Aspose OCR + +هل احتجت يوماً إلى **استخراج نص العنوان باستخدام OCR** من فاتورة ممسوحة ضوئياً دون الحاجة لمعالجة الصفحة بأكملها؟ لست وحدك. في العديد من خطوط الأنابيب الواقعية يحتوي العنوان على أهم المعلومات—رقم الفاتورة، التاريخ، اسم المورد—واستخرجها بسرعة يمكن أن يوفر الكثير من العمل اللاحق. + +في هذا الدرس سنعرض لك حلاً جاهزاً للتنفيذ **يستخرج نص منطقة محددة** باستخدام مكتبة **Python Aspose OCR**. لا مراجع غامضة للوثائق الخارجية، بل سكريبت كامل، شرح واضح لكل سطر، ونصائح ستستفيد منها غداً. + +## ما ستتعلمه + +- كيفية تثبيت واستيراد حزمة Aspose OCR للغة Python. +- كيفية تحميل صورة وتعريف **منطقة الاهتمام (ROI)** التي تعزل العنوان. +- كيفية تشغيل محرك OCR على تلك الـ ROI واسترجاع النص النظيف. +- الأخطاء الشائعة (مثل عدم توافق DPI) وكيفية تجنبها. +- ما هو الشكل المتوقع للمخرجات لتتمكن من التحقق من صحة العملية. + +بنهاية هذا الدرس ستتمكن من إدراج هذا الكود في أي مشروع يحتاج إلى **استخراج نص العنوان باستخدام OCR** من الفواتير أو الإيصالات أو أي مستند ذو تخطيط متوقع. + +## المتطلبات المسبقة + +- Python 3.8 أو أحدث مثبت على جهازك. +- ترخيص صالح لـ Aspose OCR for Python (الإصدار التجريبي المجاني يكفي للتقييم). +- ملف صورة (`invoice.png`) يحتوي على منطقة عنوان واضحة. +- إلمام أساسي بدوال Python ومسارات الملفات. + +> **نصيحة احترافية:** إذا كنت تختبر على مسح منخفض الدقة، قم بزيادة DPI قبل إرساله إلى Aspose OCR – ذلك يحسن الدقة بشكل كبير. + +--- + +## الخطوة 1: تثبيت حزمة Aspose OCR + +أولاً، أضف المكتبة إلى بيئتك. الحزمة الرسمية هي `aspose-ocr`. نفّذ هذا الأمر مرة واحدة: + +```bash +pip install aspose-ocr +``` + +إذا كنت تستخدم بيئة افتراضية (مستحسن جداً)، فعّلها قبل التثبيت. هذا يضمن أن الحزمة لن تتصادم مع مشاريع أخرى. + +## الخطوة 2: استيراد الفئات المطلوبة وتحميل الصورة + +الآن نستدعي الفئات الضرورية في السكريبت ونحمّل صورة الفاتورة. لاحظ استخدام **المسارات الكاملة**؛ المسارات النسبية تعمل أيضاً، لكن المسارات المطلقة تزيل الغموض عندما يُشغَّل السكريبت على خادم. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **لماذا هذا مهم:** تهيئة `OcrEngine` مرة واحدة وإعادة استخدامها لعدة صور أكثر كفاءة من إنشاء محرك جديد في كل مرة. + +## الخطوة 3: تعريف منطقة العنوان (ROI) + +عادةً ما يكون العنوان في أعلى الصفحة، لكن إحداثياته قد تختلف. هنا نعرّف مستطيلًا (`x`, `y`, `width`, `height`) يغطي العنوان. عدّل الأرقام لتتناسب مع تخطيط مستندك. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **كيف يعمل:** عند استدعاء `set_roi`، يقتصر محرك OCR على تحليل هذا المستطيل، ما يسرّع المعالجة بشكل كبير ويقلل الضوضاء من باقي الصفحة. + +## الخطوة 4: تطبيق الـ ROI وتشغيل OCR + +نخبر المحرك بالتركيز على منطقة العنوان ثم ننفّذ عملية OCR. يحتوي كائن النتيجة على النص المُعترف به وبيانات وصفية إضافية (نقاط الثقة، اللغة، إلخ). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +إذا فشل OCR (مثلاً، تنسيق صورة غير مدعوم)، سيكون `ocr_result` مساويًا لـ `None`. يمكن إضافة شرط حماية بسيط لجعل السكريبت أكثر صلابة: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## الخطوة 5: استرجاع وطباعة نص العنوان المستخرج + +أخيرًا، نستخرج النص من كائن النتيجة ونعرضه. يمكنك أيضًا كتابته إلى ملف أو تمريره إلى دالة أخرى لمزيد من التحليل. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### المخرجات المتوقعة + +عند إعداد كل شيء بشكل صحيح، يجب أن ترى شيئًا مشابهًا لـ: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +إذا كان المخرجات مشوشة، أعد فحص إحداثيات الـ ROI وتأكد من أن الصورة الأصلية ذات تباين عالي. + +--- + +## التنويعات والحالات الخاصة + +### 1. عناوين متعددة في مستند واحد + +أحيانًا يحتوي ملف PDF على عدة صفحات، كل منها يحمل عنوانًا خاصًا. يمكن حلقة عبر الصفحات وتعديل الـ ROI لكل صفحة: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. التعامل مع المسحات المائلة + +إذا كانت الفاتورة مائلة قليلًا، عالج الصورة مسبقًا باستخدام OpenCV قبل تمريرها إلى Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. تغيير إعدادات اللغة + +يمكن لـ Aspose OCR اكتشاف اللغة تلقائيًا، لكن يمكنك فرض الإنجليزية للحصول على نتائج أسرع: + +```python +ocr_engine.language = "en" +``` + +--- + +## مثال كامل يعمل + +فيما يلي السكريبت الكامل الذي يمكنك نسخه ولصقه في ملف باسم `extract_header.py`. لا تنسَ استبدال مسار الصورة بالمسار الخاص بك. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +تشغيل هذا السكريبت يجب أن يُظهر سطور العنوان تمامًا كما هو موضح أعلاه. لا تتردد في تعديل قيم `roi` لتتناسب مع قالب الفاتورة الخاص بك. + +--- + +## أسئلة شائعة + +**س: هل يعمل هذا مع ملفات PDF مباشرة؟** +ج: ليس مباشرة. حوّل كل صفحة PDF إلى صورة (مثلاً باستخدام `pdf2image`) ثم مرّر PNG/JPG إلى السكريبت. + +**س: ماذا إذا كان العنوان يحتوي على شعار ونص معًا؟** +ج: يركز Aspose OCR على المحتوى النصي. بالنسبة للشعارات، استخدم مكتبة التعرف على الصور مثل `opencv` أو `tesseract` مع نموذج مخصص. + +**س: هل التجربة المجانية محدودة؟** +ج: التجربة تسمح بما يصل إلى 10 صفحات شهريًا. للإنتاج، اشترِ ترخيصًا لإزالة الحد وتفعيل إعدادات دقة أعلى. + +--- + +## الخلاصة + +أصبح لديك الآن دليل **متكامل وقابل للاقتباس** لاستخدام **استخراج نص العنوان باستخدام OCR** عبر **Python Aspose OCR**. غطى الدرس كل شيء من التثبيت إلى التعامل مع الحالات الخاصة، وقدّم لك دالة قابلة لإعادة الاستخدام يمكنك إدراجها في سير عمل أكبر. + +بعد ذلك، قد تستكشف **استخراج نص مناطق محددة** لأجزاء أخرى مثل التذييل أو بنود الفاتورة، أو تجمع هذا النهج مع محول PDF‑إلى‑صورة لأتمتة خطوط الأنابيب الكاملة. الاحتمالات لا حصر لها—فقط تأكد من دقة إحداثيات الـ ROI وصورك ذات دقة عالية. + +هل لديك تخطيط صعب؟ شاركه في التعليقات وسنقوم بضبط الـ ROI معًا. برمجة سعيدة! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/arabic/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..398c6f9cf --- /dev/null +++ b/ocr/arabic/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-04-26 +description: استخراج النص من الصورة باستخدام Aspose OCR في بايثون. تعلم كيفية استخراج + النص، تحويل الصورة إلى نص، وتحميل الصورة للتعرف الضوئي على الأحرف مع دعم متعدد اللغات. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: ar +og_description: استخراج النص من الصورة فورًا. يوضح هذا الدليل كيفية استخراج النص، + تحويل الصورة إلى نص، وتحميل الصورة للتعرف الضوئي على الأحرف باستخدام Aspose OCR + في بايثون. +og_title: استخراج النص من الصورة باستخدام بايثون – دليل OCR متعدد اللغات الكامل +tags: +- OCR +- Python +- Aspose +title: استخراج النص من الصورة باستخدام بايثون – دليل OCR متعدد اللغات +url: /ar/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# استخراج النص من الصورة باستخدام بايثون – دليل OCR متعدد اللغات + +هل احتجت يوماً إلى **استخراج النص من صورة** لكن لم تكن متأكدًا أي مكتبة يمكنها التعامل مع صفحات متعددة اللغات؟ لست وحدك. في العديد من التطبيقات الواقعية—مثل معالجة الفواتير، مراقبة وسائل التواصل الاجتماعي، أو أرشفة المستندات متعددة اللغات—ستصادف صورًا تحتوي على أحرف لاتينية وسيريلية معًا. + +الخبر السار؟ مع Aspose OCR للبايثون يمكنك **استخراج النص**، **تحويل الصورة إلى نص**، و**تحميل الصورة لـ OCR** في بضع أسطر فقط، مع السماح للمحرك باكتشاف اللغة تلقائيًا. في هذا الدرس سنستعرض مثالًا كاملاً قابلًا للتنفيذ، نشرح لماذا كل خطوة مهمة، ونغطي بعض الحالات الخاصة التي قد تواجهها. + +> **ما ستستفيده** +> * برنامج جاهز للتنفيذ يقرأ النص من صورة PNG متعددة اللغات. +> * فهم كيفية ضبط OCR متعدد اللغات في بايثون. +> * نصائح للتعامل مع الملفات الكبيرة، صيغ الصور المختلفة، وتصحيح الأخطاء الشائعة. + +## المتطلبات المسبقة + +- بايثون 3.8 أو أحدث (الكود يستخدم f‑strings). +- حزمة `asposeocr` مثبتة (`pip install asposeocr`). +- ملف صورة (مثال: `mixed_lang.png`) يحتوي على نص بأكثر من نظام كتابة. +- معرفة أساسية باستيراد بايثون وواجهات برمجة التطبيقات الكائنية. + +لا توجد تبعيات ثقيلة، ولا خدمات خارجية—فقط تثبيت واحد عبر pip وستكون جاهزًا. + +--- + +## الخطوة 1 – تثبيت واستيراد مكتبة Aspose OCR + +قبل أن نتمكن من **تحميل الصورة لـ OCR**، نحتاج إلى المكتبة نفسها. الحزمة تتضمن محرك OCR الأساسي ومحمّل صور خفيف الوزن. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*لماذا هذا مهم*: استيراد الفئات المحددة يبقي مساحة الأسماء منظمة ويجعل الكود اللاحق أكثر وضوحًا. إذا استوردت فقط `asposeocr`، سيتعين عليك تأهيل كل استدعاء (`aocr.OcrEngine()`)، مما يضيف ضوضاء. + +--- + +## الخطوة 2 – إنشاء محرك OCR وتمكين الكشف متعدد اللغات + +يمكن لـ Aspose OCR تخمين اللغة (اللغات) الموجودة في الصورة تلقائيًا. ضبط `Language.AUTO` يغطي اللاتينية، السيريلية، العربية، والعديد غيرها. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*نصيحة محترف*: إذا كنت تعرف مجموعة اللغات مسبقًا، يمكنك تعيين `Language.ENGLISH` أو `Language.RUSSIAN` للحصول على تحسين طفيف في الأداء. لكن بالنسبة للمستندات المختلطة حقًا، فإن `AUTO` هو الخيار الأكثر أمانًا. + +--- + +## الخطوة 3 – تحميل الصورة التي تريد معالجتها + +هنا نـ **نحمّل الصورة لـ OCR**. يدعم Aspose صيغ PNG، JPEG، BMP، TIFF، وحتى صفحات PDF التي تُعامل كصور. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **نصيحة**: إذا كانت صورتك أكبر من 2 ميغابايت، فكر في تصغير حجمها مسبقًا. الصور الكبيرة تستهلك ذاكرة أكثر ويمكن أن تبطئ خطوة الكشف. + +--- + +## الخطوة 4 – تشغيل عملية OCR والتقاط النتيجة + +استدعاء `process()` يقوم بالعمل الشاق: كشف النص، تحليل التخطيط، وفك تشفير اللغة. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +كائن `ocr_result` المعاد يحتوي على عدة خصائص مفيدة: + +| الخاصية | الوصف | +|----------|-------------| +| `text` | سلسلة نصية عادية للنص المعترف به (ما ستستخدمه في الأغلب). | +| `confidence` | درجة الثقة العامة (0‑100). | +| `lines` | قائمة كائنات `OcrLine` مع بيانات الموقع (مفيد للـ PDFs). | + +--- + +## الخطوة 5 – عرض النص المستخرج + +أخيرًا، نطبع النتيجة. في تطبيق حقيقي قد تكتبها إلى قاعدة بيانات أو تمررها إلى واجهة برمجة تطبيقات ترجمة. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**الناتج المتوقع** (مثال لصورة متعددة اللغات): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +إذا ظهرت رموز غير مفهومة، تحقق من أن الصورة غير تالفة وأنك تستخدم أحدث نسخة من `asposeocr` (v23.7 في وقت كتابة هذا الدليل). + +--- + +## الخطوة 6 – السكريبت الكامل يمكنك نسخه ولصقه + +جمع كل الأجزاء معًا يزيل الالتباس حول "من أين يبدأ الكود؟". احفظ هذا الملف باسم `multilingual_ocr.py` وشغّله من سطر الأوامر. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +شغّله: + +```bash +python multilingual_ocr.py +``` + +يجب أن ترى السلاسل المستخرجة مطبوعة في وحدة التحكم. هذا كل شيء—**تحويل الصورة إلى نص** ببضع أسطر فقط. + +--- + +## أسئلة شائعة ومعالجة الحالات الخاصة + +### ماذا لو كانت صورتي تحتوي على كتابة يدوية؟ +Aspose OCR مخصص للنص المطبوع. النصوص المكتوبة يدويًا غالبًا ما تحتاج نموذجًا مخصصًا (مثل Azure Read أو Google Vision). يمكنك تجربة `Language.AUTO`، لكن توقع ثقة أقل. + +### كيف أحسن الدقة في المسحات الضوضائية؟ +1. عالج الصورة مسبقًا (تحويل إلى أبيض-أسود، إزالة البقع). +2. زد DPI إلى ما لا يقل عن 300 ppi قبل تمريرها للمحرك. +3. اضبط `ocr_engine.config.deskew = True` إذا كانت الصورة مائلة. + +```python +ocr_engine.config.deskew = True +``` + +### هل يمكن استخراج النص من PDF دون تحويله إلى صورة أولًا؟ +نعم—Aspose OCR يمكنه فتح صفحات PDF مباشرة: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +تذكر أن كل صفحة تُعامل كصورة داخليًا، لذا تنطبق نفس اعتبارات الجودة. + +--- + +## الخلاصة + +أصبح لديك الآن وصفة شاملة من البداية إلى النهاية **لاستخراج النص من الصورة** باستخدام Aspose OCR في بايثون، مع دعم متعدد اللغات. يوضح السكريبت كيفية **تحميل الصورة لـ OCR**، **تحويل الصورة إلى نص**، وكيفية التعامل مع أكثر المشكلات شيوعًا. + +من هنا يمكنك: + +- دمج الدالة في خدمة ويب تستقبل تحميلات المستخدمين. +- ربط النص المستخرج بمكتبة كشف لغة لتوجيهه إلى محرك الترجمة المناسب. +- تجربة خيارات `ocr_engine.config` (مثل `max_recognition_time`، `text_orientation`) لضبط الأداء بدقة. + +برمجة سعيدة، ولتكن خطوط OCR دائمًا دقيقة! + +--- + +![Screenshot of extracted multilingual text – extract text from image example](image-placeholder.png "extract text from 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/arabic/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/arabic/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..0cb8f4097 --- /dev/null +++ b/ocr/arabic/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: كيفية تنفيذ OCR دفعي لمستنداتك واستخراج النص من المسحات الضوئية باستخدام + بايثون. تعلم معالجة الدفعات خطوة بخطوة مع OcrEngine للحصول على مخرجات بصيغة JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: ar +og_description: كيفية تنفيذ OCR دفعي لملفاتك الممسوحة واستخراج النص من المسحات في + سكريبت واحد. الكود الكامل، النصائح، ومعالجة الحالات الخاصة. +og_title: كيفية تنفيذ OCR دفعيًا – دليل بايثون السريع +tags: +- OCR +- Python +- Automation +title: كيفية تنفيذ التعرف الضوئي على الحروف على دفعات – استخراج النص من المسحات بفعالية +url: /ar/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيف تقوم بعملية OCR دفعة واحدة – استخراج النص من المسح الضوئي بفعالية + +هل تساءلت يوماً **كيف تقوم بعملية OCR دفعة واحدة** على جبل من ملفات PDF الممسوحة دون أن تفقد أعصابك؟ لست وحدك—المطورون يسألون باستمرار، *“كيف يمكنني استخراج النص من المسحات الضوئية مرة واحدة؟”* الخبر السار هو أن بضع أسطر من بايثون يمكن أن تحول هذه المهمة المملة إلى خط أنابيب آلي سلس. + +في هذا الدرس سنستعرض حلًا كاملاً جاهزًا للتنفيذ **يستخرج النص من المسحات الضوئية**، يحفظ النتائج بصيغة JSON، ويعطيك فحصًا سريعًا في النهاية. لا خدمات خارجية، لا سحر—فقط بايثون عادي، فئة `OcrEngine`، وقليل من التعامل مع المجلدات. + +## ما ستحصل عليه بعد الانتهاء + +- سكربت كامل الوظيفة **يقوم بعملية OCR دفعة واحدة** على أي مجلد من الصور. +- شروحات واضحة *لماذا* يوجد كل سطر، وليس فقط *ماذا* يفعل. +- نصائح للتعامل مع المجلدات الفارغة، الملفات غير الصورية، والدفعات الكبيرة. +- طريقة للتحقق من أن مخرجات JSON تحتوي فعليًا على النص المستخرج. + +### المتطلبات المسبقة (الحد الأدنى) + +| المتطلب | لماذا هو مهم | +|-------------|----------------| +| Python 3.8+ | الصياغة الحديثة وتلميحات الأنواع | +| مكتبة `OcrEngine` (أو غلاف متوافق) | الوظيفة الأساسية للـ OCR | +| دليل يحتوي على ملفات صور ممسوحة (PNG, JPG, TIFF) | بيانات الإدخال | +| صلاحيات كتابة لمجلد الإخراج | حفظ نتائج JSON | + +إذا كان لديك هذه المتطلبات، رائع—لنبدأ. + +![how to batch OCR workflow](image-placeholder.png){alt="مخطط سير عمل OCR دفعة واحدة"} + +## الخطوة 1 – تهيئة محرك OCR (كيف تقوم بعملية OCR دفعة واحدة) + +قبل أن نتمكن من معالجة أي شيء، نحتاج إلى مثال (instance) من محرك OCR. فكر فيه كـ “العقل” الذي سيقرأ كل صورة ويُخرج النص. تهيئته مرة واحدة وإعادة استخدامها عبر الدفعة كلها هو النمط الأكثر كفاءة. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **لماذا نعيد استخدام نفس المثيل؟** +> إنشاء محرك جديد لكل ملف سيؤدي إلى تحميل نماذج ثقيلة في الذاكرة مرارًا، مما يبطئ الدفعة بشكل كبير. المثيل الواحد يبقي النموذج في الذاكرة ويسمح لك بمعالجة آلاف الصور دون تباطؤ ملحوظ. + +## الخطوة 2 – تحديد مسار مجلد المسحات الضوئية (استخراج النص من المسحات الضوئية) + +مسحاتك موجودة في مكان ما على القرص. دعنا نخبر السكربت أين يجدها. استخدام المسارات المطلقة يتجنب مفاجآت “الملف غير موجود” عندما يُشغل السكربت من دليل عمل مختلف. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **نصيحة احترافية:** +> إذا كنت على نظام Windows، فإن الشرطات المائلة (`/`) تعمل بشكل جيد مع `os.path.abspath`، لذا لا تحتاج إلى الهروب من الشرطات العكسية. + +## الخطوة 3 – اختيار مكان حفظ نتائج JSON + +من المحتمل أنك تريد مجلدًا منظمًا لنتائج OCR. إبقاء المخرجات منفصلة عن المصدر يجعل من السهل تنظيفها لاحقًا أو تمرير JSON إلى خط أنابيب آخر. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **لماذا ننشئ المجلد برمجيًا؟** +> يضمن ذلك أن السكربت لن يتعطل إذا كان الدليل غير موجود، وتُجعل الخاصية `exist_ok=True` العملية غير متكررة—يمكن تشغيل السكربت عدة مرات دون أخطاء. + +## الخطوة 4 – تشغيل عملية الدفعة (كيف تقوم بعملية OCR دفعة واحدة) + +الآن نصل إلى جوهر الموضوع: إخبار `ocr_engine` بالمرور على كل ملف في `input_dir`، تشغيل OCR، وإسقاط JSON في `output_dir`. علم `format="json"` يُخبر المحرك بترميز النتيجة بطريقة منظمة يحبها الأدوات اللاحقة. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### ما الذي يحدث خلف الكواليس؟ + +1. **اكتشاف الملفات** – يقوم المحرك بمسح `input_folder` بصورة متكررة، متجاهلًا الملفات المخفية. +2. **تحقق من صحة الملف** – تُرسل فقط امتدادات الصور المدعومة (`.png`, `.jpg`, `.tif`, إلخ) إلى نموذج OCR. +3. **تنفيذ OCR** – تُرسل كل صورة إلى محرك OCR؛ يُلتقط النص، درجات الثقة، وبيانات التخطيط. +4. **ترميز JSON** – تُكتب النتيجة في ملف يحمل نفس الاسم الأساسي لكن بامتداد `.json` داخل `output_folder`. + +> **معالجة الحالات الخاصة:** +> - **مجلد فارغ:** يسجل المحرك “No files found” ويعود بنعومة. +> - **صورة تالفة:** يتخطى الملف، يسجل إدخال خطأ في `batch_errors.log`، ويستمر. +> - **دفعة ضخمة (أكثر من 10k ملف):** يبقى استهلاك الذاكرة منخفضًا لأن كل صورة تُعالج بشكل مستقل. + +## الخطوة 5 – تأكيد انتهاء التحويل + +عبارة `print` بسيطة تعطي تغذية راجعة فورية في وحدة التحكم. في خطوط الأنابيب الإنتاجية قد تستبدلها بنداء تسجيل (logging) أو إشعار بريد إلكتروني. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +عند رؤية هذا السطر، يمكنك فحص مجلد `json_output` بأمان. كل ملف JSON سيبدو تقريبًا هكذا: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +يمكنك الآن تمرير هذه الملفات JSON إلى قاعدة بيانات، فهرس بحث، أو أي أداة تحليلية لاحقة. + +## الأسئلة المتكررة (مع إجابات سريعة) + +**س: ماذا لو احتجت لمعالجة ملفات PDF بدلاً من الصور؟** +ج: حوّل كل صفحة PDF إلى صورة أولًا (مثلاً باستخدام `pdf2image`) وضع ملفات PNG/JPG الناتجة في `input_dir`. منطق OCR الدفعي يبقى دون تغيير. + +**س: هل يمكنني تغيير صيغة الإخراج إلى نص عادي؟** +ج: بالتأكيد. استبدل `format="json"` بـ `format="txt"` وسيكتب المحرك ملف `.txt` يحتوي فقط على النص المستخرج. + +**س: مسحاتي موجودة في عدة مجلدات فرعية—هل السكربت يتعمق؟** +ج: نعم. `batch_process` يتجول في شجرة الدليل افتراضيًا. إذا أردت مخرجات مسطحة، اضبط `flatten=True` (إذا كانت المكتبة تدعم ذلك) أو عالج أسماء ملفات JSON لاحقًا. + +**س: كيف أتعامل مع النصوص غير اللاتينية؟** +ج: ابدأ `OcrEngine` بمعامل لغة، مثل `OcrEngine(lang="spa+eng")`. حلقة الدفعة نفسها لا تحتاج أي تعديل. + +## نصائح احترافية ومخاطر شائعة + +- **حجم الدفعة مهم:** إذا لاحظت ارتفاعًا في استهلاك المعالج، قلل السرعة باستخدام `time.sleep(0.1)` بين الملفات. +- **التسجيل:** استبدل نداء `print` بوحدة `logging` في بايثون لتسجيل الطوابع الزمنية ومستويات الأخطاء. +- **تصادم أسماء الملفات:** إذا كان لملفين مسح ضوئي نفس الاسم الأساسي لكن في مجلدات فرعية مختلفة، قد تُستبدل ملفات JSON بعضها البعض. أضف تجزئة (hash) للمسار النسبي إلى اسم الإخراج لتجنب ذلك. +- **تسرب الذاكرة:** بعض محركات OCR تحتفظ بموارد أصلية. استدعِ `ocr_engine.close()` في نهاية السكربت إذا وفرت المكتبة طريقة تنظيف. + +## السكربت الكامل – جاهز للنسخ واللصق + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**الناتج المتوقع في وحدة التحكم** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +يمكنك التحقق من JSON بفتح أي ملف في `json_output` باستخدام محرر نصوص أو بتحميله في بايثون: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +سترى النص الخام المستخرج من OCR يُطبع في وحدة التحكم. + +## الخلاصة + +لقد غطينا الآن **كيفية تنفيذ OCR دفعة واحدة** على دليل كامل من الصور الممسوحة و**استخراج النص من المسحات الضوئية** إلى ملفات JSON نظيفة قابلة للقراءة آليًا. النهج بسيط عمدًا: إعداد المحرك مرة واحدة، توجيهه إلى مجلد، وترك المكتبة تتولى العمل الشاق. من هنا يمكنك: + +- ربط JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/arabic/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..fc9ecf743 --- /dev/null +++ b/ocr/arabic/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-04-26 +description: كيفية إنشاء OCR بسرعة وبشكل موثوق. تعلم استخراج النص من الصورة، تحميل + الصورة للـ OCR، وتشغيل OCR على ملف PNG باستخدام قاموس مخصص. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: ar +og_description: كيفية إنشاء OCR في بايثون واستخراج النص من الصورة. يوضح هذا الدليل + كيفية تحميل الصورة للتعرف الضوئي على الأحرف، تشغيل OCR على ملفات PNG، واستخدام قاموس + مخصص. +og_title: كيفية إنشاء OCR في بايثون – استخراج النص بسرعة +tags: +- OCR +- Python +- Image Processing +title: كيفية إنشاء OCR في بايثون – استخراج النص من الصورة +url: /ar/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية إنشاء OCR في بايثون – دليل خطوة بخطوة + +هل تساءلت يومًا **كيف تنشئ OCR** يمكنه قراءة ملفات PDF الممسوحة ضوئيًا، لقطات الشاشة، أو الملاحظات المكتوبة يدويًا؟ لست وحدك. في العديد من المشاريع الواقعية نحتاج إلى *استخراج النص من ملفات الصورة*، لكن المحركات الجاهزة غالبًا ما تتعثر مع الكلمات المتخصصة. + +في هذا الدرس سترى مثالًا كاملًا وقابلًا للتنفيذ يقوم بتحميل صورة للـ OCR، يطبق قاموسًا مخصصًا، وأخيرًا **تشغيل OCR على ملفات PNG**. بحلول النهاية ستتمكن من استخراج النص من أي صورة وتكييف المحرك مع مصطلحاتك الخاصة. + +## ما يغطيه هذا الدرس + +* تثبيت حزمة `aocr` الصغيرة ولكن القوية (أو أي مكتبة متوافقة). +* تكوين **قاموس مخصص** بحيث يتم التعرف على مصطلحات مثل `aspocorp` أو `licensekey`. +* **تحميل صورة للـ OCR**، سواء كانت PNG أو JPEG أو صفحة PDF ممسوحة. +* تشغيل عملية الـ OCR وطباعة النتيجة. + +لا روابط توثيق خارجية، مجرد حل مستقل يمكنك نسخه‑ولصقه وتشغيله اليوم. + +### المتطلبات المسبقة + +* Python 3.8 أو أحدث (الكود يستخدم f‑strings). +* إلمام أساسي بسطر الأوامر – ستكتب بضع أوامر `pip install`. +* ملف صورة (`technical_doc.png` في المثال) موجود في مكان يمكنك الإشارة إليه. + +إذا استوفيت هذه العناصر الثلاثة، فأنت جاهز للبدء. + +--- + +## الخطوة 1: تثبيت مكتبة OCR + +أولاً، نحتاج إلى محرك OCR يدعم كائن تكوين قابل للبرمجة. حزمة `aocr` هي غلاف خفيف الوزن حول محرك OCR أصلي وتعمل جيدًا للعرض. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **نصيحة احترافية:** إذا كنت على نظام Windows وصادفت خطأ تجميع، جرّب `pip install aocr‑binary` الذي يوفّر حزمًا مسبقة البناء. + +### لماذا تثبيت هذه المكتبة؟ + +`aocr` يوفّر لنا وصولًا مباشرًا إلى كائن `config` حيث يمكننا حقن **قاموس مخصص**. هذه هي الصلصة السرية لتحسين الدقة في المفردات المتخصصة. + +--- + +## الخطوة 2: إنشاء مثيل محرك OCR وإضافة قاموس مخصص + +الآن نقوم بتشغيل المحرك ونخبره بالكلمات التي يجب أن يعتبرها معروفة. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### لماذا القاموس المخصص مهم + +نماذج OCR القياسية تُدرب على مجموعات نصية عامة. عندما يرى النموذج كلمة “aspocorp”، قد يقسمها إلى “aspo corp” أو يحذف حروفًا تمامًا. من خلال تزويد القائمة المخصصة، نُوجه المُعرّف نحو التهجئة الدقيقة التي نحتاجها، مما يقلل بشكل كبير من جهد ما بعد المعالجة. + +--- + +## الخطوة 3: تحميل الصورة التي تريد معالجتها + +هنا نُحمِّل **الصورة للـ OCR**. طريقة `Image.load` تقبل سلسلة مسار وتحدد نوع الملف تلقائيًا. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **حالة خاصة:** إذا كان المصدر ملف PDF متعدد الصفحات، حوِّل كل صفحة إلى PNG أولاً (مثلاً باستخدام `pdf2image`) وقدمها واحدةً تلو الأخرى إلى المحرك. + +### نصائح لتحسين جودة الصورة + +* حافظ على الدقة على الأقل 300 dpi. +* تأكد من أن الصورة في وضعية صحيحة؛ قم بالتدوير باستخدام `Pillow` إذا لزم الأمر. +* حوِّل المسحات الملونة إلى تدرج الرمادي لتقليل الضوضاء. + +--- + +## الخطوة 4: تشغيل عملية OCR على ملف PNG + +مع تكوين المحرك وتحميل الصورة، نُنفّذ أخيرًا **OCR على PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +نداء `process()` يُعيد كائنًا يحتوي على النص المُعترف به، درجات الثقة، ومربعات الإحاطة لكل كلمة. + +--- + +## الخطوة 5: إخراج النص المُعترف به + +أسهل طريقة لرؤية ما وجده المحرك هي طباعة الخاصية `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### النتيجة المتوقعة + +إذا كان ملف `technical_doc.png` يحتوي على الجملة *“The Aspocorp licensekey expires on 2025‑12‑31.”*، يجب أن يعرض الطرفية: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +لاحظ كيف حافظ القاموس المخصص على اسم العلامة التجارية دون تعديل—شيء قد يُشوّه في OCR العادي. + +--- + +## مثال كامل يعمل (جاهز للنسخ واللصق) + +فيما يلي السكريبت الكامل، جاهز للحفظ كملف `run_ocr.py`. فقط استبدل مسار العنصر النائب بموقع صورتك. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +شغّله من الطرفية: + +```bash +python run_ocr.py +``` + +يجب أن ترى النص المستخرج يُطبع في الطرفية، تمامًا كما هو موضح في المثال السابق. + +--- + +## الأسئلة المتكررة (FAQ) + +| السؤال | الجواب | +|----------|--------| +| **هل يمكنني استخراج النص من PDF ممسوح ضوئيًا؟** | نعم. حوّل كل صفحة إلى PNG (أو TIFF) أولاً، ثم قدّم الصور إلى نفس السكريبت. | +| **ماذا لو كانت صورتي JPEG بدلاً من PNG؟** | طريقة `Image.load` تدعم JPEG و BMP و TIFF و PNG مباشرة. فقط غيّر امتداد الملف. | +| **كيف أحسن الدقة في المسحات منخفضة التباين؟** | قم بالمعالجة المسبقة باستخدام `Pillow` – زيادة التباين، تطبيق التثنائي، أو استخدم `opencv` لتصحيح الميل. | +| **هل هناك طريقة للحصول على درجات الثقة لكل كلمة؟** | `ocr_result` يتضمن `words` – كل كلمة لها خاصية `confidence` يمكنك التكرار عليها. | +| **هل يمكن تشغيل هذا على خادم بدون واجهة رسومية؟** | بالطبع. `aocr` لا يعتمد على واجهة رسومية، مما يجعله مثاليًا لأنابيب CI. | + +--- + +## الخطوات التالية والمواضيع ذات الصلة + +الآن بعد أن عرفت **كيفية إنشاء OCR** و **استخراج النص من ملفات الصورة**، فكر في استكشاف: + +* **تقنيات ما قبل المعالجة** – `load image for OCR` هي الخطوة الأولى فقط؛ استخدم `opencv` لإزالة الضوضاء أو تحسين الحدة. +* **المعالجة الدفعية** – تكرار عبر مجلد PNGs لإنشاء أرشيف قابل للبحث. +* **دعم متعدد اللغات** – أضف حزم اللغة إلى المحرك إذا كنت بحاجة لقراءة مستندات بالفرنسية أو الألمانية. +* **التكامل مع Elasticsearch** – فهرسة النص المستخرج للبحث النصي الكامل عبر الأصول الممسوحة. + +كل من هذه الإضافات يبنى على النمط الأساسي الذي غطيناه، لذا ستجد الانتقال سهلًا. + +--- + +## الخلاصة + +في بضع دقائق أجبنا على **كيفية إنشاء OCR** الذي يستخرج النص من ملفات الصورة بشكل موثوق، خاصة PNGs، وأظهرنا لك كيفية **تحميل صورة للـ OCR**، تطبيق **قاموس مخصص**، و **تشغيل OCR على PNG** دون أي خدمات خارجية. + +جرّب السكريبت، عدّل القاموس ليتناسب مع مصطلحاتك، وستحصل على أساس قوي لأي مشروع رقمنة مستندات. + +إذا واجهت أي مشاكل، اترك تعليقًا أدناه—سعيد بالمساعدة. ولا تنس مشاركة قصص نجاحك؛ المجتمع يتعلم أفضل من الأمثلة الواقعية. + +**هل أنت مستعد لأتمتة أوراقك؟** احصل على الكود، عدّله، وابدأ بتحويل البكسلات إلى نص قابل للبحث اليوم! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/arabic/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..b0f78184b --- /dev/null +++ b/ocr/arabic/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-04-26 +description: كيفية استخراج OCR من الصور باستخدام بايثون – مثال على OCR في بايثون يوضح + كيفية تحميل الصورة لاستخدام OCR واستخراج النص من الفاتورة. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: ar +og_description: كيفية استخراج OCR من الصور باستخدام بايثون. تعلّم مثال OCR بايثون، + حمّل صورة للـ OCR، واستخراج النص من الفاتورة في دقائق. +og_title: كيفية استخراج OCR في بايثون – دليل كامل +tags: +- OCR +- Python +- Image Processing +title: كيفية استخراج OCR في بايثون – دليل خطوة بخطوة +url: /ar/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية استخراج OCR في بايثون – دليل كامل + +هل تساءلت يومًا **كيفية استخراج OCR** من إيصال غير واضح أو فاتورة ممسوحة ضوئيًا؟ لست وحدك — المطورون يواجهون صعوبة مستمرة عندما يحتاجون إلى نص نظيف وقابل للقراءة آليًا من الصور. الخبر السار؟ ببضع أسطر فقط من بايثون يمكنك تحويل صورة إيصال إلى نص عالي الثقة وقابل للبحث. + +في هذا الدرس سنستعرض **مثال python ocr** يوضح **كيفية تحميل صورة للـ OCR**، تشغيل المحرك، والاحتفاظ فقط بالحروف التي تتجاوز عتبة الثقة بنسبة 85 ٪. في النهاية ستكون قادرًا على **استخراج النص من إيصالات** دون الحاجة للبحث في الوثائق أو تخمين معلمات الـ API. + +## ما ستحتاجه + +- Python 3.9 أو أحدث (الصياغة التي نستخدمها تعمل على 3.8+) +- حزمة `aocr` (أو أي مكتبة OCR توفر فئة `OcrEngine`). قم بتثبيتها باستخدام: + +```bash +pip install aocr +``` + +- صورة إيصال نموذجية (`receipt.png`) موجودة في مجلد يمكنك الإشارة إليه. +- محرر نصوص أو بيئة تطوير متكاملة — VS Code، PyCharm، أو حتى دفتر ملاحظات بسيط يكفي. + +هذا كل شيء. لا أطر عمل ثقيلة، لا خدمات خارجية، فقط بايثون نقي. + +![نتيجة OCR عالية الثقة – كيفية استخراج OCR من إيصال](/images/ocr-high-confidence.png) + +*نص بديل للصورة: كيفية استخراج OCR من إيصال باستخدام Python OCR* + +## الخطوة 1 – إنشاء مثيل محرك OCR (كيفية استخراج OCR) + +أول شيء نقوم به هو تشغيل محرك OCR. فكر فيه كالعقل الذي سيقرأ البكسلات لنا. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**لماذا؟** إنشاء كائن `OcrEngine` يمنحك كائن إعدادات جديد. يمكنك لاحقًا تعديل نماذج اللغة، إعدادات DPI، أو خطوات ما قبل المعالجة — كل ذلك دون لمس حلقة المعالجة الأساسية. + +## الخطوة 2 – تحميل الصورة للـ OCR + +بعد ذلك نوجه المحرك إلى الصورة التي نريد تحليلها. هنا يأتي دور كلمة **load image for ocr**. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **نصيحة احترافية:** إذا كانت صورتك موجودة في دليل مختلف، استخدم `os.path.join` لإنشاء مسار مستقل عن النظام. + +**لماذا تحميل الصورة بهذه الطريقة؟** أداة المساعدة `Image.load` تقرأ الملف إلى صيغة يفهمها المحرك، وتتعامل تلقائيًا مع الصيغ الشائعة (PNG، JPEG، TIFF). تخطي هذه الخطوة أو تمرير بايتات خام سيؤدي إلى رفع `ValueError`. + +## الخطوة 3 – تشغيل عملية OCR + +الآن نقوم فعليًا بتشغيل OCR. طريقة `process` تُعيد كائن نتيجة غني يحتوي على الرموز المُعترف بها، درجات الثقة، ومربعات الإحاطة. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**ماذا يحتوي `ocr_result`؟** في معظم المكتبات يتضمن: + +- `text`: السلسلة المجمعة الخام. +- `symbol_confidences`: قائمة من أزواج `(char, confidence)`. +- `boxes`: إحداثيات كل حرف (مفيدة لتصحيح الأخطاء بصريًا). + +الوصول إلى ثقة كل حرف ضروري للخطوة التالية. + +## الخطوة 4 – الاحتفاظ فقط بالرموز عالية الثقة (≥ 85 %) + +غالبًا ما يحتوي الإيصال على بقع، طباعة باهتة، أو ضوضاء خلفية. من خلال تصفية الرموز ذات الثقة المنخفضة نحسن بشكل كبير عملية التحليل اللاحقة. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**لماذا 85 %؟** تجريبيًا، عتبة حوالي 0.85 توازن بين الاستدعاء والدقة لمعظم الإيصالات المطبوعة. إذا لاحظت أرقامًا مفقودة، خفّض العتبة؛ إذا حصلت على نص غير مفهوم، ارتقِ بها. + +## الخطوة 5 – إخراج النص المستخرج عالي الثقة + +أخيرًا، نطبع (أو نخزن) السلسلة المنقحة. هذا هو جوهر سير عمل **extract text from receipt** الخاص بنا. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +المخرجات النموذجية تبدو هكذا: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +يمكنك الآن تمرير هذه السلسلة إلى كاتب CSV، قاعدة بيانات، أو أي خط أنابيب تحليلي لاحق. + +## البرنامج الكامل الجاهز للتنفيذ + +فيما يلي مقتطف الكود الكامل الذي يمكنك نسخه ولصقه في `ocr_receipt.py` وتشغيله فورًا. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +احفظ الملف، تأكد من وجود `receipt.png`، ثم نفّذ: + +```bash +python ocr_receipt.py +``` + +يجب أن ترى نص الإيصال المنقح يُطبع على وحدة التحكم. + +## الحالات الخاصة وسيناريوهات ماذا‑لو + +| الحالة | الإصلاح المقترح | +|-----------|----------------| +| **ثقة منخفضة جدًا في جميع العناصر** | معالجة مسبقة للصورة: زيادة التباين، تحويل إلى تدرج الرمادي، أو تطبيق مرشح إزالة الضوضاء (`cv2.GaussianBlur`). | +| **حروف غير لاتينية** | تمرير نموذج لغة إلى `OcrEngine` (مثال: `ocr_engine.language = "spa"` للغة الإسبانية). | +| **إيصالات متعددة في صورة واحدة** | تشغيل OCR على الصورة بالكامل، ثم تقسيم النتيجة باستخدام تعبيرات نمطية تكتشف `\n\n+` (فواصل سطر مزدوجة). | +| **الحاجة إلى النص الأصلي للـ OCR أيضًا** | الاحتفاظ بـ `ocr_result.text` إلى جانب النسخة المصفاة للتصحيح. | + +## الأخطاء الشائعة (وكيفية تجنبها) + +- **نسيان تثبيت المكتبة** – يجب أن ينجح `pip install aocr` قبل الاستيراد. +- **استخدام فاصل المسار الخطأ** على Windows (`\` مقابل `/`). استخدم `os.path.join`. +- **تحديد عتبة الثقة بشكل ثابت** دون اختبار – دائمًا قم بإجراء فحص بصري سريع على بعض الإيصالات أولاً. +- **تجاهل تطبيع Unicode** – بعض الإيصالات تحتوي على أحرف شرطة خاصة؛ شغّل `unicodedata.normalize('NFKC', text)` إذا كنت تخطط لتخزين النتيجة. + +## الخطوات التالية – التقدم إلى ما بعد الأساسيات + +الآن بعد أن عرفت **كيفية استخراج OCR** من إيصال واحد، قد ترغب في: + +1. **معالجة مجموعة من الإيصالات في مجلد** – تكرار جميع ملفات PNG/JPG وكتابة كل نتيجة إلى CSV. +2. **التكامل مع قاعدة بيانات** – تخزين `high_confidence_text` في SQLite للبحث السريع. +3. **تطبيق التحليل اللغوي الطبيعي** – استخدم regex أو `dateutil` لاستخراج التواريخ، الإجماليات، ومبالغ الضرائب. +4. **تجربة مكتبات بديلة** – `pytesseract`، `easyocr`، أو خدمات سحابية (Google Vision، Azure OCR) إذا كنت تحتاج إلى دعم متعدد اللغات أو دقة أعلى. + +كل من هذه المواضيع يدمج بطبيعية كلماتنا المفتاحية الثانوية: *python ocr example*، *extract text from receipt*، *load image for ocr*، و *how to use OCR*. + +## الخلاصة + +لقد استعرضنا للتو مثالًا كاملًا **python ocr example** يوضح **كيفية استخراج 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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/arabic/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..74c3c2f93 --- /dev/null +++ b/ocr/arabic/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-04-26 +description: 'كيفية OCR في بايثون: تعلم استخراج النص من الصورة وقراءة ملف TIFF باستخدام + بايثون عبر مثال OCR أساسي. كود سريع قابل للتنفيذ مرفق.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: ar +og_description: 'كيفية التعرف الضوئي على الأحرف باستخدام بايثون: دليل خطوة بخطوة يوضح + كيفية استخراج النص من الصورة، قراءة ملف TIFF باستخدام بايثون، وتحويل نص الصورة الممسوحة + ضوئياً باستخدام سكريبت بسيط قابل للتنفيذ.' +og_title: كيفية تنفيذ OCR في بايثون – مثال أساسي لاستخراج النص +tags: +- OCR +- Python +- Image Processing +title: كيفية OCR في بايثون – مثال أساسي لاستخراج النص +url: /ar/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيف تستخدم OCR في بايثون – مثال أساسي لاستخراج النص + +هل تساءلت يومًا **how to ocr python** عندما يكون لديك ملف TIFF ممسوح ضائع على مكتبك؟ لست الوحيد الذي ينظر إلى مجموعة من ملفات الصور ويسأل: “كيف أحصل على الكلمات من هذا؟” الخبر السار هو أن تحويل صورة إلى نص عادي أمر سهل للغاية مع المكتبة المناسبة وبعض الخطوات الواضحة. + +في هذا الدرس سنستعرض **مثال OCR أساسي** يقرأ ملف TIFF، يستخرج النص، ويطبعه على وحدة التحكم. بنهاية الدرس ستعرف بالضبط كيف **extract text from image** من ملفات الصور، وكيفية التعامل مع خصائص تنسيق TIFF، وما الذي يمكنك تعديلّه إذا احتجت **convert scanned image text** إلى شيء أكثر فائدة. لا سحر مخفي—فقط بايثون مباشر يمكنك نسخه‑ولصقه وتشغيله اليوم. + +## ما ستحتاجه + +قبل أن نبدأ، تأكد من وجود ما يلي: + +- Python 3.9+ مثبت (أفضل نسخة مستقرة حديثة). +- مكتبة OCR قابلة للتثبيت عبر pip. في هذا الدليل سنستخدم حزمة خيالية `aocr` تحاكي أدوات شائعة مثل Tesseract؛ يمكنك استبدالها بـ `pytesseract` أو `easyocr` لاحقًا. +- صورة TIFF تريد معالجتها – سميها `input.tiff` وضعها في مجلد ستشير إليه في الكود. +- إلمام أساسي بسطر الأوامر (فقط لتثبيت الحزمة). + +هذا كل شيء. لا تبعيات ثقيلة، لا حاويات Docker، فقط بضع أسطر من الكود. + +## الخطوة 1 – تثبيت واستيراد الاعتمادات (how to ocr python) + +أولًا، احصل على حزمة OCR. افتح الطرفية وشغّل: + +```bash +pip install aocr +``` + +إذا كنت تفضّل مكتبة حقيقية، استبدل `aocr` بـ `pytesseract` وثبّت محرك Tesseract بشكل منفصل. + +الآن استورد ما نحتاجه. فئة `Path` من `pathlib` تعطيك طريقة نظيفة للعمل مع مسارات الملفات عبر أنظمة التشغيل. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*لماذا نستخدم `Path`؟* لأنها تُجرد الفروقات بين الشرطتين (`/` مقابل `\`) وتسمح لك بدمج الأدلة دون القلق بشأن نظام التشغيل الأساسي. هذه التفاصيل الصغيرة غالبًا ما توفر صداعًا عندما تنقل السكريبت إلى خادم CI لاحقًا. + +## الخطوة 2 – إنشاء نسخة من محرك OCR (basic ocr example) + +بعد ذلك، شغّل محرك OCR. فكر في `OcrEngine` كالعقل الذي سيقرأ الصورة ويُخرج الأحرف. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +معظم مكتبات OCR تسمح لك بتعديل اللغة، DPI، أو عتبات الثقة هنا. لهذا **basic OCR example** سنبقى على الإعدادات الافتراضية، لكن يمكنك استكشاف `ocr_engine.config` لاحقًا إذا احتجت معالجة مستندات متعددة اللغات. + +## الخطوة 3 – تحميل صورة TIFF الخاصة بك (read tiff file python) + +هنا يأتي دور **read tiff file python**. يمكن أن تكون ملفات TIFF متعددة الصفحات، لكن `Image.load` سيجلب الصفحة الأولى افتراضيًا—مناسب للمسح بصفحة واحدة. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +استبدل `"YOUR_DIRECTORY"` بالمجلد الفعلي الذي يحتوي على `input.tiff`. إذا لم تكن متأكدًا من مكان تشغيل السكريبت، فإن `Path.cwd()` يطبع دليل العمل الحالي—مفيد لتصحيح مشاكل المسار. + +## الخطوة 4 – تشغيل عملية OCR (extract text from image) + +الآن يحدث السحر. استدعاء `process()` يرسل الصورة عبر خط أنابيب OCR ويعيد كائن نتيجة. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +خلف الكواليس قد يقوم المحرك بتحويل الصورة إلى تدرج رمادي، تطبيق عتبة، وإدخالها في شبكة عصبية. لا تحتاج لإدارة هذه الخطوات؛ المكتبة تتولى ذلك. + +## الخطوة 5 – طباعة النص المُعترف به (convert scanned image text) + +أخيرًا، اعرض النص. في المشاريع الحقيقية قد تكتب النتيجة إلى ملف أو قاعدة بيانات، لكن الطباعة تبقي المثال بسيطًا. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +عند تشغيل السكريبت، يجب أن ترى شيئًا مثل: + +``` +Hello, world! +This is a sample scanned document. +``` + +إذا كان الإخراج مشوشًا، تحقق من وضوح الصورة الأصلية وأن لغة OCR تتطابق مع النص. + +## السكريبت الكامل العامل + +بجمع كل ما سبق، إليك البرنامج الكامل الجاهز للتنفيذ: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### النتيجة المتوقعة + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +إذا أردت **convert scanned image text** إلى PDF قابل للبحث، يمكنك تمرير `ocr_result.text` إلى مولد PDF مثل `reportlab`—لكن ذلك درس كامل بحد ذاته. + +## المشكلات الشائعة والنصائح الاحترافية + +- **المسحات منخفضة الدقة**: يواجه OCR صعوبة تحت 150 DPI. إذا كان TIFF غير واضح، قم بزيادة الدقة أولًا باستخدام Pillow (`Image.open(...).resize(...)`). +- **الصفحات المتعددة**: للـ TIFF متعدد الصفحات، كرّر عبر `Image.load_multi_page()` (إن كانت مكتبتك تدعم ذلك) وادمج النتائج. +- **دعم اللغات**: معظم المحركات تفترض الإنجليزية افتراضيًا. عيّن `ocr_engine.language = "spa"` للإسبانية، على سبيل المثال. +- **معالجة الفراغات**: غالبًا ما يضيف OCR فواصل سطر عشوائية. استخدم `str.splitlines()` أو تعبيرات نمطية لتنظيف الإخراج. +- **الأداء**: للمعالجة الجماعية، أعد استخدام نسخة واحدة من `OcrEngine` بدلاً من إنشاء نسخة جديدة لكل ملف. + +## توسيع المثال + +الآن بعد أن أتقنت **how to ocr python** لصورة واحدة، فكر في الخطوات التالية: + +1. **معالجة دفعات** – كرّر عبر مجلد من ملفات TIFF واكتب كل نتيجة إلى ملف `.txt`. +2. **التكامل مع Pandas** – احفظ النص المستخرج مع البيانات الوصفية لتحليل سريع. +3. **نهج هجين** – اجمع OCR مع مكتبات NLP مثل `spaCy` لاستخراج الكيانات (أسماء، تواريخ، مبالغ) من الفواتير الممسوحة. +4. **صيغ ملفات بديلة** – استبدل `Image.load` بـ `Image.from_bytes` للتعامل مع الصور الواردة من API أو قاعدة بيانات. + +جميع هذه الأفكار تبني على الفكرة الأساسية لـ **extract text from image** و **convert scanned image text** إلى ما يمكن للآلات فهمه. + +## الخلاصة + +استعرضنا مثالًا واضحًا وشاملًا لـ **basic OCR example** يوضح **how to ocr python**، وكيف **read tiff file python**، وكيف **extract text from image** باستخدام بضع أسطر فقط. السكريبت مستقل، يتضمن معالجة أخطاء، ويطبع النتيجة مباشرة، مما يجعله أساسًا قويًا لأي مشروع يحتاج إلى تحويل المستندات الممسوحة إلى نص قابل للتحرير. + +لا تتردد في التجربة—غيّر محرك OCR، عدّل المعالجة المسبقة، أو اربط الناتج بسير عمل لاحق. السماء هي الحد عندما يمكنك بثقة **convert scanned image text** إلى بيانات قابلة للبحث. + +هل لديك أسئلة حول حالات الحافة، حزم اللغات، أو تحسين الأداء؟ اترك تعليقًا أدناه، وبرمجة سعيدة! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/arabic/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..ef1d3a5dc --- /dev/null +++ b/ocr/arabic/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-04-26 +description: كيفية تشغيل OCR على نموذج ممسوح ضوئياً، وتعلم كيفية معالجة الصورة مسبقاً + لتقليل الضوضاء، واستخراج النص من الصورة بسرعة. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: ar +og_description: كيفية تشغيل التعرف الضوئي على الأحرف في المستندات الممسوحة ضوئياً، + ومعالجة الصور مسبقًا، وتقليل الضوضاء، واستخراج النص بكفاءة. +og_title: كيفية تشغيل التعرف الضوئي على الأحرف ومعالجة الصور مسبقًا – دليل سريع +tags: +- OCR +- image processing +- Python +title: كيفية تشغيل التعرف الضوئي على الأحرف ومعالجة الصور مسبقًا – استخراج النص من + النماذج الممسوحة ضوئيًا +url: /ar/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تشغيل OCR – دليل كامل لاستخراج النص من الصور + +هل تساءلت يومًا **كيف تشغّل OCR** على نموذج ممسوح فوضوي وتحصل على نص نظيف وقابل للبحث؟ لست وحدك. في العديد من المشاريع الواقعية تكون الصورة الأصلية مليئة بالبقع، إضاءة غير متساوية، وميزات أخرى تجعل OCR الجاهز يتعثر. + +الخبر السار؟ ببضع أسطر من Python وخط معالجة مسبقة ذكي، يمكنك رفع دقة التعرف بشكل كبير، **تقليل الضوضاء**، واستخراج الكلمات الدقيقة التي تحتاجها. في هذا الدرس سنستعرض كل خطوة—من تحميل الصورة إلى طباعة السلسلة النهائية—حتى تحصل على مقتطف جاهز يمكنك تكييفه مع الفواتير، الإيصالات، أو أي مستند ممسوح. + +## ما ستبنيه + +- كائن `OcrEngine` يتواصل مع مكتبة OCR الأساسية. +- سلسلة معالجة مسبقة **تُثنّي** الصورة وتطبق **تمويه متوسط** لتنعيم البقع. +- استدعاء بسيط لـ `process()` يُعيد كائن يحتوي على `text`، النص المستخرج. + +بنهاية الدرس ستحصل على سكريبت مستقل يمكنك تشغيله على أي ملف صورة وسترى النص المستخرج مباشرة في وحدة التحكم. + +## المتطلبات المسبقة + +- Python 3.9+ (الصياغة المستخدمة هنا تتطابق مع أحدث إصدار ثابت). +- الحزمة الخيالية `aocr` – فكر فيها كغلاف خفيف حول Tesseract أو أي محرك OCR حديث. ثبّتها باستخدام `pip install aocr`. +- صورة ممسوحة (`scanned_form.jpg`) موجودة في مجلد يمكنك الإشارة إليه. + +إذا كنت تستخدم مكتبة OCR حقيقية مثل `pytesseract`، يمكنك استبدال `OcrEngine` بالفئة المناسبة—كل شيء آخر يبقى كما هو. + +![](how-to-run-ocr-example.png "how to run OCR example showing a scanned form and extracted text") + +*نص بديل: كيفية تشغيل OCR على مستند ممسوح وعرض النص المستخرج.* + +--- + +## الخطوة 1: كيفية تشغيل OCR – تهيئة المحرك + +قبل أن يتمكن المحرك من قراءة أي شيء، نحتاج إلى إنشاء نسخة. فكر في `OcrEngine` كالعقل الذي سيفسر لاحقًا البيانات البصرية. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **لماذا هذا مهم:** إنشاء نسخة من المحرك يجهّز النماذج الداخلية، يحمل حزم اللغات، ويُعد بيئة التشغيل. تخطي هذه الخطوة غالبًا ما يؤدي إلى خطأ `NoneType` عندما تستدعي `process()` لاحقًا. + +--- + +## الخطوة 2: كيفية معالجة الصورة – تحميل النموذج الممسوح + +الآن بعد أن أصبح العقل جاهزًا، نُغذّيه بصورة. يمكن أن تكون الصورة بأي صيغة يدعمها `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **نصيحة احترافية:** استخدم المسارات المطلقة أثناء التطوير لتجنب مفاجآت “الملف غير موجود” عندما يُشغَّل السكريبت من دليل عمل مختلف. + +--- + +## الخطوة 3: كيفية تقليل الضوضاء – تطبيق التثنّي والتمويه المتوسط + +المسحات الخام غالبًا ما تحتوي على نقاط عشوائية، خلفية غير متساوية، أو ظلال خفيفة. خدعتان كلاسيكيتان—**التثنّي** و**التمويه المتوسط**—تنظفان الصورة دون التضحية بالحواف التي تُعرّف الأحرف. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### الغوص أعمق + +- **التثنّي**: القيمة `threshold=180` تخبر الخوارزمية: “أي شيء أفتح من 180 يصبح أبيض؛ كل ما هو أقل يصبح أسود.” عدّل هذا الرقم إذا كانت مسحتك داكنة جدًا أو فاتحة جدًا. +- **التمويه المتوسط**: نصف القطر `2` يعني أن الفلتر ينظر إلى نافذة 5×5 بكسل ويستبدل البكسل المركزي بالقيمة المتوسطة. هذا يُزيل البقع المعزولة مع الحفاظ على ضربات الحروف. + +> **حالة خاصة:** إذا كان المستند يحتوي على تظليل ملون، قد يمحو العتبة الثنائية البسيطة هذه التظليلات. في هذه الحالة، فكر باستخدام `aocr.ImageFilters.adaptive_threshold()` بدلاً من ذلك—فهذا يتكيّف مع القيم محليًا عبر الصورة. + +--- + +## الخطوة 4: كيفية استخراج النص – تشغيل عملية OCR + +مع صورة نظيفة في اليد، نسمح للمحرك الآن بأداء سحره. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **ماذا يحدث خلف الكواليس؟** المحرك يُشغِّل شبكة عصبية (أو مطابقة نمط قديمة) على مصفوفة البكسلات، يترجم كل رمز مُعترف به إلى أحرف Unicode، ويجمعها في أسطر وفقرات. + +--- + +## الخطوة 5: كيفية استخراج النص – طباعة النتيجة + +كائن `ocr_result` يُظهر خاصية `text` المريحة. لنرى ما حصلنا عليه. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### النتيجة المتوقعة + +إذا كان النموذج الممسوح يحتوي على: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +يجب أن ترى شيئًا مثل: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +لاحظ كيف أزالت خطوة المعالجة المسبقة النقاط العشوائية التي كانت تحول كلمة “Amount” إلى “Am0unt”. هذه هي قوة **تقليل الضوضاء** قبل OCR. + +--- + +## الأخطاء الشائعة وكيفية إصلاحها + +| العَرَض | السبب المحتمل | الحل السريع | +|---------|--------------|-----------| +| أحرف مشوشة (مثل “@#%”) | الصورة داكنة جدًا أو فاتحة جدًا | اضبط `threshold` في `binarize()`؛ جرّب `adaptive_threshold`. | +| كلمات مفقودة | لا تزال الضوضاء موجودة | زد `radius` في `median_blur` أو أضف فلتر `gaussian_blur`. | +| لغة خاطئة (مثل تحول الحروف الإنجليزية إلى صينية) | تم تحميل حزمة لغة خاطئة | مرّر `language="eng"` عند إنشاء `OcrEngine()` إذا كانت المكتبة تدعم ذلك. | +| معالجة بطيئة على ملفات كبيرة | دقة عالية | قلّص حجم الصورة أولًا: `aocr.ImageFilters.resize(width=1200)` قبل التثنّي. | + +--- + +## التعمق – الخطوات التالية والمواضيع ذات الصلة + +- **المعالجة الدفعية**: غلف المنطق أعلاه داخل حلقة للتعامل مع عشرات الملفات تلقائيًا. +- **الإخراج المنظم**: استخدم تعبيرات نمطية على `ocr_result.text` لاستخراج حقول مثل التواريخ أو المبالغ. +- **مكتبات بديلة**: استبدل `aocr` بـ `pytesseract`—التغييرات تقتصر فقط على خطوة تهيئة المحرك. +- **كيفية معالجة الصور للـ PDFs**: حوّل كل صفحة PDF إلى صورة، ثم طبّق نفس خط الأنابيب. + +هذه الإضافات تسمح لك بتوسيع الحل من نموذج واحد إلى خط أنابيب استيعاب مستندات على مستوى المؤسسة. + +--- + +## الخاتمة + +غطّينا **كيفية تشغيل 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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/arabic/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..bf38bb9f8 --- /dev/null +++ b/ocr/arabic/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: تعلم كيفية تعيين الترخيص في Aspose OCR وكيفية التحقق من صحة الترخيص باستخدام + برنامج Python مختصر. اتبع التعليمات خطوة بخطوة لتفعيل سهل وخالٍ من المتاعب. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: ar +og_description: كيفية تعيين الترخيص في Aspose OCR وكيفية التحقق من الترخيص باستخدام + بايثون. احصل على مثال كامل وقابل للتنفيذ في دقائق. +og_title: كيفية تعيين الترخيص في Aspose OCR – دليل سريع للبايثون +tags: +- Aspose OCR +- Python +- Licensing +title: كيفية تعيين الترخيص في Aspose OCR – دليل سريع بايثون +url: /ar/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية تعيين الترخيص في Aspose OCR – دليل Python السريع + +هل تساءلت يومًا **كيفية تعيين الترخيص** لـ Aspose OCR دون أن تشعر بالإحباط؟ لست وحدك. يواجه معظم المطورين عائقًا في المرة الأولى التي يحاولون فيها فتح القوة الكاملة للمكتبة، فقط ليظهر لهم علامة مائية “نسخة تجريبية”. الخبر السار هو أن الحل بسيط إلى حد ما، ويمكنك التحقق منه فورًا. + +في هذا البرنامج التعليمي سنستعرض **كيفية تعيين الترخيص** *و* **كيفية التحقق من الترخيص** باستخدام سكريبت Python صغير. في النهاية ستحصل على مثال عملي يطبع “License OK”، بالإضافة إلى مجموعة من النصائح لتجنب الأخطاء الشائعة. + +## المتطلبات المسبقة + +- Python 3.8+ مثبت (الكود يعمل على 3.9، 3.10، والإصدارات الأحدث). +- ملف ترخيص Aspose OCR نشط لـ Java (أو .NET) – عادةً ما يكون اسمه `Aspose.OCR.Java.lic`. +- حزمة `asposeocr` مثبتة عبر `pip install asposeocr`. +- إلمام أساسي بتشغيل سكريبتات Python من سطر الأوامر. + +هل لديك كل ذلك؟ رائع—لنبدأ. + +## كيفية تعيين الترخيص في Aspose OCR (الخطوة 1) + +تعيين الترخيص هو في الأساس عملية من ثلاث أسطر، لكن كل سطر له هدف. سنقسمها لك لتفهم *لماذا* نفعل ما نقوم به. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**لماذا نستورد `License`؟** +فئة `License` هي البوابة التي تخبر محرك Aspose OCR أنك قد دفعت ثمن المنتج. بدون إنشاء كائن، ستستمر المكتبة في افتراض أنك تستخدم النسخة التجريبية. + +**لماذا ننشئ كائنًا من `License`؟** +إنشاء الكائن يمنحك كائنًا (`license_obj`) يمكنه احتواء مسار ملف `.lic` الخاص بك ومن ثم تطبيقه على وقت التشغيل. + +## كيفية تعيين الترخيص في Aspose OCR – توفير ملف الترخيص + +الآن نوجه الكائن إلى ملف الترخيص الفعلي على القرص. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**نصائح وحيل:** + +- **المسار المطلق مقابل النسبي** – إذا شغلت السكريبت من مجلد مختلف، فإن المسار المطلق (`C:/licenses/...`) يزيل أخطاء “الملف غير موجود”. +- **متغيرات البيئة** – تخزين المسار في متغير بيئي (`OCR_LICENSE_PATH`) يحافظ على السرية بعيدًا عن التحكم بالمصدر: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## كيفية التحقق من الترخيص – التأكد من أنه تم بنجاح + +تعيين الترخيص هو نصف المعركة فقط؛ تحتاج إلى التأكد من أن المكتبة قبلته. هنا يبرز دور خطوة التحقق. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +إذا كان ملف الترخيص مفقودًا أو معطوبًا أو غير متطابق، فإن `validate()` سيطلق استثناء. التقاط هذا الاستثناء يمنحك طريقة نظيفة للإبلاغ عن المشكلات. + +## مثال كامل يعمل (جميع الخطوات مجمعة) + +فيما يلي السكريبت الكامل الجاهز للتنفيذ. شغله من الطرفية (`python set_license.py`) ويجب أن ترى “License OK” مطبوعًا. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**المخرجات المتوقعة** + +``` +License OK +``` + +إذا حدث خطأ ما، سترى شيئًا مثل: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +تلك الرسالة تخبرك بالضبط ما الذي يجب إصلاحه—بدون الحاجة للتخمين. + +## كيفية التحقق من الترخيص – التعامل مع الحالات الحدية الشائعة + +حتى مع السكريبت أعلاه، هناك بعض السيناريوهات التي قد تسبب لك مشاكل: + +| الحالة | ما يحدث | كيفية الإصلاح | +|-----------|--------------|------------| +| **خطأ إملائي في مسار الملف** | `FileNotFoundError` من `set_license` | تحقق مرة أخرى من المسار؛ استخدم `os.path.abspath()` للتصحيح. | +| **نوع ملف غير صحيح** | التحقق يرمي “Invalid license format” | تأكد من أنك تستخدم ملف `.lic` الذي يتطابق مع نسخة المنتج الخاصة بك. | +| **انتهاء الترخيص** | التحقق يرفع “License expired” | جدد الترخيص عبر دعم Aspose واستبدل الملف. | +| **التشغيل في بيئة مقيدة** (مثل AWS Lambda) | خطأ في الصلاحيات | امنح صلاحية القراءة للمجلد أو دمج الترخيص في حزمة النشر. | + +نصيحة احترافية: غلف استدعاء `set_license` بكتلة `try/except` خاصة إذا أردت التمييز بين أخطاء “الملف غير موجود” و “تنسيق غير صالح”. + +## ملخص بصري + +![كيفية تعيين الترخيص في Aspose OCR مثال](/images/aspose-ocr-license.png "how to set license in Aspose OCR example") + +*تُظهر لقطة الشاشة أن السكريبت يطبع “License OK” بعد تفعيل ناجح.* + +## الأخطاء الشائعة وأفضل الممارسات + +- **لا تقم أبدًا بارتكاب ملف الترخيص إلى مستودع عام.** استخدم متغيرات البيئة أو مديري الأسرار (GitHub Secrets، Azure Key Vault) بدلاً من ذلك. +- **تحقق مبكرًا.** وضع `license_obj.validate()` مباشرة بعد `set_license` يلتقط الأخطاء قبل بدء أي عمل OCR. +- **أعد استخدام كائن الترخيص.** تحتاج إلى تعيين الترخيص مرة واحدة فقط لكل عملية؛ المكالمات اللاحقة لـ OCR ستستخدم الترخيص المفعل تلقائيًا. +- **سجّل مسار الترخيص (بدون اسم الملف) في بيئة الإنتاج** للمساعدة في التصحيح دون كشف الملف الفعلي. + +## الخطوات التالية – توسيع سير عمل OCR الخاص بك + +الآن بعد أن عرفت **كيفية تعيين الترخيص** و **كيفية التحقق من الترخيص**، يمكنك الانتقال إلى مهام OCR الأساسية: + +- **كيفية قراءة الصورة** – `Image.load("sample.png")` +- **كيفية استخراج النص** – `ocr_engine.recognize(image)` +- **كيفية تكوين خيارات OCR** – ضبط إعدادات `OcrEngine` للغة، الدقة، إلخ. + +كل من هذه المواضيع يبنى على محرك مرخص بنجاح، لذا لن ترى علامة الماء التجريبية مرة أخرى. + +## الخلاصة + +لقد غطينا العملية الكاملة **لتعيين الترخيص** لـ Aspose OCR، وأظهرنا **كيفية التحقق من الترخيص**، وقدمنا لك سكريبتًا كاملًا قابلًا للتنفيذ يطبع “License OK”. من خلال معالجة الأخطاء مسبقًا واستخدام متغيرات البيئة، تحافظ على تطبيقك آمنًا وقويًا. + +هل لديك المزيد من الأسئلة حول OCR أو الترخيص أو دمج Aspose في خط أنابيب أكبر؟ اترك تعليقًا، وبرمجة سعيدة! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/arabic/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/arabic/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..b1c76c571 --- /dev/null +++ b/ocr/arabic/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: كيفية استخدام تقنية OCR على ملفات PDF الممسوحة ضوئياً، استخراج النص من + PDF، تشغيل OCR على PDF، وتحويل PDF الممسوح إلى ملفات قابلة للبحث في بضع خطوات. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: ar +og_description: 'كيفية استخدام OCR في بايثون: تعلم كيفية استخراج النص من ملفات PDF، + تشغيل OCR على ملفات PDF، وتحويل ملفات PDF الممسوحة ضوئياً إلى مستندات قابلة للبحث.' +og_title: كيفية استخدام OCR – دليل سريع لاستخراج النص من PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: كيفية استخدام OCR – استخراج النص من PDF باستخدام بايثون +url: /ar/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيفية استخدام OCR – استخراج النص من PDF باستخدام Python + +هل تساءلت يومًا **كيف تستخدم OCR** لاستخراج النص من عقد ممسوح ضوئيًا أو إيصال أو كتاب إلكتروني؟ لست وحدك. في العديد من المشاريع الواقعية يكون ملف PDF الذي تتلقاه مجرد صورة، وبدون OCR لا يمكنك البحث أو الفهرسة أو تحليل محتوياته. + +في هذا الدرس سنستعرض مثالًا كاملاً وقابلًا للتنفيذ يوضح **كيف تستخدم OCR**، وكيف **استخراج النص من PDF**، ولماذا قد ترغب في **تحويل PDF الممسوح** إلى مستندات قابلة للبحث. سنغطي أيضًا فن **تحميل PDF كصورة** حتى يتمكن محرك OCR من رؤية كل صفحة بوضوح. + +> **معاينة سريعة:** في النهاية ستحصل على سكريبت يحمل PDF متعدد الصفحات، يُجري OCR على كل صفحة، ويطبع النص المُعترف به – دون الحاجة إلى خدمات خارجية. + +## ما ستحتاجه + +- Python 3.9+ (أي نسخة حديثة تعمل) +- حزمة `aocr` (أو أي مكتبة OCR متوافقة توفر `OcrEngine` و `Image.load`) +- ملف PDF ممسوح ضوئيًا تريد معالجته (مثال: `contract.pdf`) +- كمية معتدلة من الذاكرة (≈ 200 ميغابايت لكل 100 صفحة عادةً ما تكون كافية) + +إذا لم تقم بتثبيت مكتبة OCR بعد، نفّذ: + +```bash +pip install aocr +``` + +> **نصيحة احترافية:** استخدم بيئة افتراضية للحفاظ على تنظيم الاعتمادات. + +## الخطوة 1: تحميل PDF كصورة – القطعة الأولى من اللغز + +قبل أن يحدث أي OCR، يجب تمثيل PDF كصورة. هنا يأتي دور الكلمة المفتاحية الثانوية **load pdf as image**. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*لماذا هذا مهم:* `aocr.Image.load` تقوم داخليًا بتحويل كل صفحة PDF إلى صورة نقطية يستطيع محرك OCR فهمها. إذا تخطيت هذه الخطوة ومررت ملف PDF الأصلي، سيظهر خطأ لأن المحرك يتوقع بيانات بكسل، وليس بيانات متجهية. + +> **ملاحظة:** يمكن أن يكون المسار مطلقًا أو نسبيًا. تأكد من أن الملف قابل للقراءة؛ وإلا ستحصل على `FileNotFoundError`. + +## الخطوة 2: تشغيل OCR على PDF – تحويل البكسلات إلى أحرف + +الآن بعد أن أصبح PDF صورة، يمكننا أخيرًا **run OCR on PDF**. المقتطف التالي يعالج جميع الصفحات دفعة واحدة: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*ما الذي يحدث خلف الكواليس؟* `process_all_pages` يمر عبر الصفحات المحوّلة، يطبق نموذج OCR، ويعيد قائمة من كائنات النتيجة — واحدة لكل صفحة. كل نتيجة تحتوي على النص المعترف به، درجات الثقة، ومربعات الإحاطة (إذا احتجتها لاحقًا). + +## الخطوة 3: استخراج النص من PDF – سحب السلاسل النصية + +مع نتائج OCR في المتناول، يصبح استخراج النص العادي أمرًا بسيطًا. سن iterates عبر الصفحات ونطبع النتيجة، مظهرين الكلمة المفتاحية الثانوية **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**الناتج المتوقع** (مقتطع للاختصار): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +إذا كنت تحتاج النص في سلسلة واحدة، ما عليك سوى دمجه: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +الآن لقد نجحت في **extracted text from PDF** باستخدام OCR. + +## الخطوة 4: تحويل PDF ممسوح – جعله قابلًا للبحث + +العديد من الأدوات اللاحقة (مثل Elasticsearch أو SharePoint) تتوقع PDF قابلًا للبحث بدلاً من تفريغ نصي عادي. يمكنك دمج ناتج OCR مرة أخرى في PDF الأصلي، وبالتالي **convert scanned PDF** إلى نسخة قابلة للبحث. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*لماذا ذلك؟* PDF القابل للبحث يحتفظ بالتخطيط الأصلي والصور مع السماح باختيار النص وفهرسته — فوز للإنسان والآلة معًا. + +## المشكلات الشائعة والحالات الخاصة + +### ملفات PDF متعددة الصفحات أكبر من الذاكرة + +إذا كان PDF يحتوي على مئات الصفحات، قد يستهلك تحميل كل شيء مرة واحدة كل الذاكرة. مكتبة `aocr` تدعم التحميل الكسول: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +ثم عالج الصفحات واحدةً تلو الأخرى: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### مسحات منخفضة الجودة + +دقة OCR تنخفض بشكل كبير مع الصور الضبابية أو ذات التباين المنخفض. قبل تمرير الصورة إلى المحرك، فكر في المعالجة المسبقة: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### دعم اللغات + +بشكل افتراضي، يفترض المحرك أن اللغة إنجليزية. لت **run OCR on PDF** بلغة أخرى، عيّن رمز اللغة: + +```python +ocr_engine.language = "spa" # Spanish +``` + +تأكد من تثبيت نموذج اللغة المقابل. + +## مثال كامل يعمل + +بجمع كل ما سبق، إليك سكريبت مستقل يمكنك وضعه في ملف اسمه `ocr_pdf.py` وتشغيله فورًا: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +شغّله هكذا: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +سترى النص يُطبع على وحدة التحكم، وإذا أضفت الخيار `-o`، سيظهر PDF قابل للبحث بجوار الملف الأصلي. + +## نصائح احترافية وأفضل الممارسات + +- **معالجة دفعات:** عند التعامل مع عشرات ملفات PDF، غلف المنطق أعلاه في حلقة وسجّل نجاح/فشل كل ملف. +- **تصفية الثقة:** كل `page_result` يتضمن مقياس ثقة. احذف أو علم الصفحات ذات الثقة المنخفضة للمراجعة اليدوية. +- **التوازي:** إذا كان معالجك متعدد النوى، فكر في استخدام `concurrent.futures` لمعالجة الصفحات بشكل متوازي — مع مراعاة استهلاك الذاكرة. +- **قفل الإصدار:** واجهة `aocr` قد تتطور. قم بتثبيت نسخة محددة في `requirements.txt` (مثال: `aocr==2.3.1`) لتجنب التغييرات المفاجئة. + +## الخلاصة + +استعرضنا **how to use OCR** لـ **extract text from PDF**، **run OCR on PDF**، **load PDF as image**، وحتى **convert scanned PDF** إلى صيغة قابلة للبحث. الكود كامل، والشروحات تغطي الـ *what* والـ *why*، والآن لديك نمط قابل لإعادة الاستخدام لأي مشروع يتعامل مع PDFs مبنية على الصور. + +ما التالي؟ جرّب إمداد النص المستخرج إلى خط أنابيب معالجة لغة طبيعية، أو فهرسة PDFs القابلة للبحث باستخدام Elasticsearch، أو تجربة محركات OCR مختلفة مثل Tesseract أو Azure Computer Vision. السماء هي الحد، والأدوات بين يديك. + +برمجة سعيدة، ولتكن ملفات PDF الخاصة بك دائمًا قابلة للبحث! + +![مثال على كيفية استخدام OCR](/images/ocr_workflow.png "كيفية استخدام 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/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/arabic/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..ff9dc4d6e --- /dev/null +++ b/ocr/arabic/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-04-26 +description: كيفية استخدام الخيوط لتحميل الصورة للتعرف الضوئي على الأحرف (OCR) في + بايثون. تعلّم معالجة OCR غير المتزامنة باستخدام ردود النداء، الخيوط الخلفية، وتحميل + الصور في بضع خطوات فقط. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: ar +og_description: كيفية استخدام الخيوط لتحميل الصورة للتعرف الضوئي على الأحرف في بايثون. + يوضح هذا الدليل مثالًا كاملاً قابلاً للتنفيذ مع ردود النداء والتنفيذ في الخلفية. +og_title: كيفية استخدام الـ Threading لتحميل الصورة للتعرف الضوئي على الأحرف +tags: +- Python +- Threading +- OCR +- Image Processing +title: كيفية استخدام الـ Threading لتحميل الصورة للتعرف الضوئي على الأحرف +url: /ar/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# كيف تستخدم الـ Threading لتحميل صورة للتعرف الضوئي على الأحرف (OCR) + +هل تساءلت يومًا **كيف تستخدم الـ threading** لتحميل صورة للتعرف الضوئي على الأحرف (OCR) دون تجميد تطبيقك؟ هذا سيناريو يظهر سواء كنت تبني ماسحًا مكتبيًا، أو خدمة ويب، أو سكربت بسيط يعالج صورًا ضخمة. الخبر السار؟ بضع أسطر من بايثون والنمط الصحيح للـ threading سيجعل واجهة المستخدم سريعة بينما يعمل محرك الـ OCR بسحره. + +في هذا الدرس سنستعرض مثالًا كاملًا من البداية إلى النهاية: تحميل ملف PNG كبير، تشغيل الـ OCR على خيط خلفي، ومعالجة النتيجة عبر رد نداء (callback). في النهاية لن تعرف فقط **كيف تستخدم الـ threading** بل أيضًا **كيفية تحميل صورة للتعرف الضوئي على الأحرف (OCR)** بطريقة نظيفة وقابلة لإعادة الاستخدام. + +## ما ستحتاجه + +- Python 3.9+ (الصياغة التي نستخدمها تعمل على أي نسخة حديثة) +- `pillow` لمعالجة الصور (`pip install pillow`) +- `pytesseract` كغلاف خفيف حول Tesseract OCR (`pip install pytesseract`) +- محرك Tesseract OCR مثبت على جهازك (حمّله من [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- ملف صورة كبير تريد معالجته (`large_image.png` في هذا الدليل) + +لا أطر إضافية، لا async/await — فقط `threading` الكلاسيكي ورد نداء (callback). + +## الخطوة 1: استيراد وحدة الـ Threading (مطلوبة للتنفيذ في الخلفية) + +أول شيء نفعله هو استيراد وحدة `threading`. تُعطينا فئة `Thread` التي تسمح لنا بتشغيل أي دالة في خيط نظام تشغيل منفصل. + +```python +import threading +``` + +*لماذا هذا مهم*: إذا شغّلت الـ OCR على الخيط الرئيسي، سيتجمد برنامجك (خاصةً واجهة المستخدم) حتى ينتهي الـ OCR. بتفويض العمل إلى خيط خلفي، يبقى الخيط الرئيسي حرًا لتحديث الواجهة، ومعالجة إدخال المستخدم، أو بدء مهام أخرى. + +## الخطوة 2: تعريف رد نداء (Callback) سيتم استدعاؤه عند انتهاء الـ OCR + +رد النداء هو ببساطة دالة يستدعيها جزء آخر من الشيفرة عندما ينتهي. هنا سنطبع النص المُعترف به، لكن يمكنك تخزينه، إرساله عبر الشبكة، أو تحديث عنصر واجهة المستخدم. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*نصيحة احترافية*: اجعل رد النداء خفيفًا. المعالجة الثقيلة داخل رد النداء تُفقد الفائدة من الـ threading لأنه سيظل يحجز الخيط الذي استدعاه (غالبًا الخيط الرئيسي). + +## الخطوة 3: تحميل الصورة التي تريد معالجتها + +تحميل الصورة أمر منفصل عن الـ OCR، لكنه لا يزال جزءًا من سير العمل العام. استخدام Pillow يجعل ذلك سهلًا. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*لماذا نفعل ذلك هنا*: إذا كانت الصورة ضخمة، قد يسبب تحميلها على الخيط الرئيسي تباطؤًا. في العديد من التطبيقات الواقعية قد تفرغ التحميل إلى خيط، لكن للوضوح نحتفظ به متزامنًا. + +## الخطوة 4: إنشاء غلاف بسيط لمحرك الـ OCR + +المقتطف الأصلي استخدم `engine.process_async`. سنحاكي ذلك بفئة صغيرة تبدأ خيطًا داخليًا وتستدعي رد النداء المزوَّد عند الانتهاء. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*شرح*: +- `_run_ocr` يقوم بالعمل الشاق. +- `process_async` ينشئ كائن `Thread`، يضعه كـ daemon (حتى يتمكن المفسر من الخروج حتى لو كان الخيط لا يزال يعمل)، ويبدأه. +- رد النداء يتلقى إما نص الـ OCR أو رسالة خطأ. + +## الخطوة 5: ربط كل شيء معًا والقيام بأعمال أخرى أثناء تشغيل الـ OCR + +الآن نقوم بتنظيم التدفق بالكامل: تحميل الصورة، إنشاء المحرك، إطلاق الـ OCR غير المتزامن، وإبقاء الخيط الرئيسي مشغولًا بشيء آخر (هنا نطبع رسالة فقط). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**الناتج المتوقع (مقتطع للاختصار):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +إذا فشل الـ OCR، سيطبع رد النداء رسالة خطأ بدلًا من النص. + +--- + +## لماذا يعمل هذا النهج أفضل من حلقة بسيطة + +- **الاستجابة**: الخيط الرئيسي لا يُحجز أبدًا عند استدعاء الـ OCR، والذي قد يستغرق ثوانٍ للصور الكبيرة. +- **القابلية للتوسع**: يمكنك تشغيل عدة نسخ من `SimpleOcrEngine`، كل واحدة في خيطها الخاص، لمعالجة دفعة من الصور بشكل متزامن. +- **فصل المسؤوليات**: التحميل، المعالجة، ومعالجة النتيجة مفصولة بوضوح، مما يجعل الشيفرة أسهل للاختبار والصيانة. + +## الأخطاء الشائعة وكيفية تجنّبها + +| المشكلة | ما يحدث | الحل | +|---------|----------|------| +| نسيان وضع الخيط كـ *daemon* | يبقى السكربت معلقًا بعد انتهاء العمل الرئيسي لأن خيط الـ OCR لا يزال حيًا. | عيّن `worker.daemon = True` **أو** استدعِ `join()` للخيط قبل الخروج. | +| استخدام متغيّر عام للنتيجة بدون أقفال | قد تتسبب حالات السباق في فساد البيانات عندما يكتب عدة خيوط في آن واحد. | مرّر النتيجة عبر رد نداء (كما نفعل) أو استخدم حاويات آمنة للـ threading مثل `queue.Queue`. | +| تحميل صورة ضخمة على الخيط الرئيسي | تتجمد واجهة المستخدم قبل أن يبدأ الـ OCR في الخلفية. | فرّغ تحميل الصورة إلى خيط أيضًا، أو استخدم تقنيات التحميل الكسول. | +| عدم معالجة الاستثناءات داخل خيط العامل | الاستثناءات غير الملتقطة تقتل الخيط صامتًا، وتتركك بدون نتيجة. | غلف منطق الـ OCR بـ `try/except` ومرّر الخطأ إلى رد النداء. | + +## توسيع هذا النمط + +- **تقارير التقدم**: استخدم `queue.Queue` مشترك لدفع نسب التقدم المتوسطة من خيط الـ OCR إلى الخيط الرئيسي. +- **مجموعة الخيوط (Thread Pool)**: للمعالجة الدفعية، استبدل كائنات `Thread` الفردية بـ `concurrent.futures.ThreadPoolExecutor`. +- **دمج مع واجهة المستخدم**: في تطبيق Tkinter أو PyQt، جدولة رد النداء باستخدام `after()` (Tkinter) أو `QTimer.singleShot` (Qt) لضمان حدوث تحديثات الواجهة على الخيط الرئيسي. + +## مثال كامل يعمل (جاهز للنسخ واللصق) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/chinese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..ac3c067dc --- /dev/null +++ b/ocr/chinese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-04-26 +description: 使用 Python Aspose OCR 提取标题文本。了解如何快速、可靠地从图像中提取特定区域的文本。 +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: zh +og_description: 快速提取标题文本 OCR。本指南展示如何使用 Python Aspose OCR 仅用几行代码提取特定区域的文本。 +og_title: 使用 Python Aspose OCR 提取标题文本 – 完整教程 +tags: +- OCR +- Python +- Aspose +title: 使用 Python Aspose OCR 提取标题文本 – 步骤指南 +url: /zh/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 提取标题文本 OCR – 完整 Python Aspose OCR 教程 + +是否曾需要从扫描的发票中 **提取标题文本 OCR**,但又不想处理整页?你并非唯一。 在许多实际流水线中,标题包含最关键的信息——发票号、日期、供应商名称——因此快速提取它可以节省大量后续工作。 + +在本教程中,我们将展示一个可直接运行的解决方案,使用 **Python Aspose OCR** 库 **提取特定区域文本**。没有模糊的外部文档引用,只有完整的脚本、每行代码的清晰解释,以及你明天就能用上的技巧。 + +## 您将学习 + +- 如何安装并导入 Aspose OCR 的 Python 包。 +- 如何加载图像并定义一个 **感兴趣区域 (ROI)** 来隔离标题。 +- 如何在该 ROI 上运行 OCR 引擎并获取干净的文本。 +- 常见陷阱(例如 DPI 不匹配)以及如何避免它们。 +- 预期输出的样子,以便你验证一切正常。 + +通过本教程,你将能够将此代码直接嵌入任何需要 **提取标题文本 OCR** 的发票、收据或具有可预测布局的文档项目中。 + +## 前置条件 + +- 已在机器上安装 Python 3.8 或更高版本。 +- 有效的 Aspose OCR for Python 许可证(免费试用可用于评估)。 +- 包含清晰标题区域的图像文件(`invoice.png`)。 +- 对 Python 函数和文件路径有基本了解。 + +> **专业提示:** 如果你在低分辨率扫描上测试,请在将图像传递给 Aspose OCR 之前提升 DPI——这会显著提升准确率。 + +--- + +## Step 1: Install the Aspose OCR Package + +首先,将库添加到你的环境中。官方包名为 `aspose-ocr`。运行一次: + +```bash +pip install aspose-ocr +``` + +如果你使用虚拟环境(强烈推荐),请在安装前激活它。这可以确保该包不会与其他项目冲突。 + +## Step 2: Import Required Classes and Load the Image + +现在我们将必要的类导入脚本并加载发票图像。请注意使用 **完整路径**;相对路径也可工作,但绝对路径在服务器上运行时可消除歧义。 + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **为什么重要:** 将 `OcrEngine` 初始化一次并在多张图像间复用,比每次创建新引擎更高效。 + +## Step 3: Define the Header Region (ROI) + +标题通常位于页面顶部,但其精确坐标可能有所不同。这里我们定义一个矩形(`x`, `y`, `width`, `height`)来覆盖标题。根据你的文档布局调整数值。 + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **工作原理:** 调用 `set_roi` 后,OCR 引擎仅分析该矩形区域,从而大幅加快处理速度并减少页面其余部分的噪声。 + +## Step 4: Apply the ROI and Run OCR + +现在我们指示引擎聚焦于标题区域,然后执行 OCR 过程。结果对象包含识别的文本以及额外的元数据(置信度分数、语言等)。 + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +如果 OCR 失败(例如不支持的图像格式),`ocr_result` 将为 `None`。加入快速的防护代码可以让脚本更健壮: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Step 5: Retrieve and Print the Extracted Header Text + +最后,我们从结果对象中提取文本并打印。你也可以将其写入文件或传递给其他函数进行进一步解析。 + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Expected Output + +当一切配置正确时,你应看到类似如下的输出: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +如果输出出现乱码,请再次检查 ROI 坐标并确保源图像对比度高。 + +--- + +## Variations & Edge Cases + +### 1. Multiple Headers in One Document + +有时 PDF 包含多页,每页都有自己的标题。遍历页面并为每页调整 ROI: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Dealing with Skewed Scans + +如果发票略有旋转,可在将图像传递给 Aspose OCR 之前使用 OpenCV 进行预处理: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Changing Language Settings + +Aspose OCR 能自动检测语言,但你可以强制使用英语以获得更快的结果: + +```python +ocr_engine.language = "en" +``` + +## Full Working Example + +下面是完整脚本,你可以复制粘贴到名为 `extract_header.py` 的文件中。记得将图像路径替换为你自己的路径。 + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +运行此脚本应会输出标题行,完全与前面示例相同。随意调整 `roi` 值以匹配你的特定发票模板。 + +## Common Questions Answered + +**Q: Does this work with PDFs directly?** +A: Not out‑of‑the‑box. Convert each PDF page to an image (e.g., using `pdf2image`) then feed the PNG/JPG to the script. + +**Q: What if my header contains a logo and text together?** +A: Aspose OCR focuses on textual content. For logos, consider using a separate image‑recognition library like `opencv` or `tesseract` with a custom model. + +**Q: Is the free trial limited?** +A: The trial allows up to 10 pages per month. For production, purchase a license to remove the limit and unlock higher accuracy settings. + +## Conclusion + +你现在拥有一份 **完整、可引用** 的 **提取标题文本 OCR** 使用 **Python Aspose OCR** 的指南。教程涵盖了从安装到处理边缘情况的全部内容,并提供了一个可复用的函数,方便你嵌入更大的工作流。 + +接下来,你可以探索 **提取特定区域文本** 用于页脚或行项目等其他区域,或将此方法与 PDF‑to‑image 转换器结合,实现全文档自动化流水线。可能性无限——只需确保 ROI 坐标准确、图像分辨率高。 + +遇到复杂布局?在评论区分享,我们一起微调 ROI。祝编码愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/chinese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..0daf8c076 --- /dev/null +++ b/ocr/chinese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,225 @@ +--- +category: general +date: 2026-04-26 +description: 使用 Aspose OCR 在 Python 中从图像提取文本。了解如何提取文本、将图像转换为文本,以及加载图像进行 OCR,并支持多语言。 +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: zh +og_description: 即时从图像中提取文本。本指南展示了如何提取文本、将图像转换为文本,以及使用 Aspose OCR 在 Python 中加载图像进行 + OCR。 +og_title: 使用 Python 从图像提取文本 – 完整多语言 OCR 教程 +tags: +- OCR +- Python +- Aspose +title: 使用 Python 从图像中提取文本 – 多语言 OCR 指南 +url: /zh/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 Python 提取图像文本 – 多语言 OCR 指南 + +是否曾需要**从图像中提取文本**却不确定哪个库能处理混合语言的页面?你并不孤单。在许多实际应用中——比如发票处理、社交媒体监控或多语言文档归档——你会遇到同时包含拉丁字母和西里尔字母的图片。 + +好消息是?使用 Aspose OCR for Python,你可以**提取文本**、**将图像转换为文本**,并**加载图像进行 OCR**,只需几行代码,且引擎会自动检测语言。在本教程中,我们将演示一个完整、可运行的示例,解释每一步的意义,并覆盖你在实践中可能遇到的几个边缘情况。 + +> **你将收获** +> * 一个可直接运行的脚本,能够从混合语言的 PNG 中提取文本。 +> * 如何在 Python 中配置多语言 OCR 的理解。 +> * 处理大文件、不同图像格式以及调试常见陷阱的技巧。 + +## 前置条件 + +- Python 3.8 或更高(代码使用 f‑strings)。 +- 已安装 `asposeocr` 包(`pip install asposeocr`)。 +- 一张包含多种文字脚本的图像文件(例如 `mixed_lang.png`)。 +- 对 Python 导入和面向对象 API 有基本了解。 + +没有繁重的依赖,没有外部服务——只需一次 pip 安装,即可开始。 + +--- + +## 第 1 步 – 安装并导入 Aspose OCR 库 + +在我们能够**加载图像进行 OCR**之前,需要先获取库本身。该包自带核心 OCR 引擎和轻量级图像加载器。 + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*为什么重要*:导入特定类可以保持命名空间整洁,使后续代码更清晰。如果只导入 `asposeocr`,则每次调用都需要加前缀(`aocr.OcrEngine()`),代码会显得冗长。 + +--- + +## 第 2 步 – 创建 OCR 引擎并启用多语言检测 + +Aspose OCR 能自动猜测图像中出现的语言。将 `Language.AUTO` 设置为覆盖拉丁文、西里尔文、阿拉伯文等多种语言。 + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*小贴士*:如果事先知道语言集合,可以使用 `Language.ENGLISH` 或 `Language.RUSSIAN` 来获得轻微的性能提升。但对于真正的混合文档,`AUTO` 是最安全的选择。 + +--- + +## 第 3 步 – 加载要处理的图像 + +这里我们**加载图像进行 OCR**。Aspose 支持 PNG、JPEG、BMP、TIFF,甚至将 PDF 页面视作图像加载。 + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **提示**:如果图像大于 2 MB,建议事先进行缩放。大图会增加内存占用并减慢检测步骤。 + +--- + +## 第 4 步 – 运行 OCR 过程并获取结果 + +调用 `process()` 完成核心工作:文本检测、版面分析以及语言解码。 + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +返回的 `ocr_result` 对象包含多个有用属性: + +| 属性 | 描述 | +|----------|-------------| +| `text` | 识别出的纯文本字符串(最常用)。 | +| `confidence` | 整体置信度分数(0‑100)。 | +| `lines` | 包含位置信息的 `OcrLine` 对象列表(对 PDF 很有帮助)。 | + +--- + +## 第 5 步 – 显示提取的文本 + +最后,我们打印输出。在实际应用中,你可能会将其写入数据库或传递给翻译 API。 + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**预期输出**(混合语言图像示例): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +如果出现乱码,请确认图像未损坏且使用的是最新版本的 `asposeocr`(撰写时为 v23.7)。 + +--- + +## 第 6 步 – 完整脚本,可直接复制粘贴 + +将所有步骤整合在一起,消除“代码从哪开始”的困惑。将此文件保存为 `multilingual_ocr.py` 并在命令行运行。 + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +运行方式: + +```bash +python multilingual_ocr.py +``` + +你应该会在控制台看到提取的字符串。这就是使用少量代码**将图像转换为文本**的全部过程。 + +--- + +## 常见问题与边缘情况处理 + +### 如果图像中包含手写文字怎么办? +Aspose OCR 针对印刷体文本进行优化。手写文字通常需要专用模型(如 Azure Read 或 Google Vision)。你仍可尝试 `Language.AUTO`,但置信度可能较低。 + +### 如何提升噪声扫描的准确率? +1. 预处理图像(二值化、去噪)。 +2. 将 DPI 提升至至少 300 ppi 再送入引擎。 +3. 若图像倾斜,显式设置 `ocr_engine.config.deskew = True`。 + +```python +ocr_engine.config.deskew = True +``` + +### 能否直接从 PDF 提取文本,而无需先转换为图像? +可以——Aspose OCR 能直接打开 PDF 页面: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +只需记住,每页在内部仍被视作图像处理,因此同样的质量考虑仍然适用。 + +--- + +## 结论 + +现在,你已经掌握了使用 Aspose OCR 在 Python 中**从图像提取文本**的完整端到端方案,并支持多语言。该脚本演示了如何**加载图像进行 OCR**、**将图像转换为文本**,以及如何处理最常见的陷阱。 + +接下来,你可以: + +- 将该函数集成到接受用户上传的 Web 服务中。 +- 将提取的文本与语言检测库结合,以路由到合适的翻译引擎。 +- 试验 `ocr_engine.config` 选项(如 `max_recognition_time`、`text_orientation`)以微调性能。 + +祝编码愉快,愿你的 OCR 流程始终精准! + +--- + +![Screenshot of extracted multilingual text – extract text from image example](image-placeholder.png "extract text from 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/chinese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/chinese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..22c793e91 --- /dev/null +++ b/ocr/chinese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: 如何在 Python 中批量 OCR 文档并从扫描件中提取文本。学习使用 OcrEngine 进行逐步批处理以获取 JSON 输出。 +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: zh +og_description: 如何批量对扫描文件进行 OCR,并在单个脚本中提取扫描文本。完整代码、技巧及边缘案例处理。 +og_title: 如何批量 OCR – 快速 Python 指南 +tags: +- OCR +- Python +- Automation +title: 如何批量进行 OCR——高效提取扫描文本 +url: /zh/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何批量 OCR – 高效从扫描件提取文本 + +有没有想过 **如何批量 OCR** 那么多扫描的 PDF,却不让自己抓狂?你并不是唯一的——开发者们经常会问,*“怎么一次性从扫描件中提取文本?”* 好消息是,只需几行 Python 代码,就能把这项繁琐的工作变成流畅的自动化流水线。 + +在本教程中,我们将逐步演示一个完整、可直接运行的方案,**从扫描件中提取文本**,将结果保存为 JSON,并在最后给出一个快速的 sanity check。无需外部服务,也不需要魔法——仅使用纯 Python、`OcrEngine` 类以及一点文件夹操作。 + +## 你将收获什么 + +- 一个能够 **批量 OCR** 任意图像文件夹的完整脚本。 +- 对每行代码 *为什么* 存在的清晰解释,而不仅仅是 *它做了什么*。 +- 处理空文件夹、非图像文件以及大批量文件的技巧。 +- 验证 JSON 输出确实包含提取文本的方法。 + +### 前置条件(最低要求) + +| Requirement | Why it matters | +|-------------|----------------| +| Python 3.8+ | 现代语法与类型提示 | +| `OcrEngine` library (or a compatible wrapper) | 核心 OCR 功能 | +| A directory with scanned image files (PNG, JPG, TIFF) | 输入数据 | +| Write permissions for the output folder | 保存 JSON 结果 | + +如果你已经具备这些条件,太好了——让我们开始吧。 + +![how to batch OCR workflow](image-placeholder.png){alt="批量 OCR 工作流"} + +## 步骤 1 – 初始化 OCR 引擎(how to batch OCR) + +在处理任何内容之前,我们需要一个 OCR 引擎实例。可以把它想象成读取每张图像并输出文本的“大脑”。一次初始化并在整个批处理中复用它是最高效的模式。 + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **为什么要复用同一个实例?** +> 为每个文件创建新引擎会反复将庞大的模型加载到内存中,导致批处理速度大幅下降。使用同一个实例可以让模型常驻 RAM,处理成千上万张图像时几乎没有明显的性能下降。 + +## 步骤 2 – 指定扫描文件夹(extract text from scans) + +你的扫描文件存放在磁盘的某个位置。我们需要告诉脚本去哪里找它们。使用绝对路径可以避免在脚本从不同工作目录启动时出现 “文件未找到” 的意外。 + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **小技巧:** +> 在 Windows 上,使用正斜杠(`/`)配合 `os.path.abspath` 完全没问题,这样就不必对反斜杠进行转义。 + +## 步骤 3 – 选择 JSON 结果的输出位置 + +你可能希望为 OCR 结果准备一个整洁的文件夹。将输出与源文件分离,便于后期清理或将 JSON 送入其他流水线。 + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **为什么要用代码创建文件夹?** +> 这样可以确保当目录不存在时脚本不会崩溃,且 `exist_ok=True` 使操作具备幂等性——多次运行脚本也不会报错。 + +## 步骤 4 – 运行批处理(how to batch OCR) + +现在进入关键环节:让 `ocr_engine` 遍历 `input_dir` 中的每个文件,执行 OCR,并将 JSON 写入 `output_dir`。`format="json"` 参数指示引擎以结构化的方式序列化结果,方便下游工具使用。 + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### 背后发生了什么? + +1. **文件发现** – 引擎递归扫描 `input_folder`,忽略隐藏文件。 +2. **文件校验** – 仅将受支持的图像扩展名(`.png`、`.jpg`、`.tif` 等)送入 OCR 模型。 +3. **OCR 执行** – 每张图像被发送到 OCR 引擎;文本、置信度分数以及布局数据被捕获。 +4. **JSON 序列化** – 结果写入 `output_folder` 中同名但扩展名为 `.json` 的文件。 + +> **边缘情况处理:** +> - **空文件夹:** 引擎记录 “No files found” 并优雅返回。 +> - **损坏的图像:** 跳过该文件,在 `batch_errors.log` 中记录错误条目,然后继续。 +> - **超大批次(10k+ 文件):** 内存占用保持低水平,因为每张图像都是独立处理的。 + +## 步骤 5 – 确认转换完成 + +一个简单的 `print` 语句即可在控制台即时反馈。对于生产流水线,你可以将其替换为日志调用或邮件通知。 + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +当看到该行输出时,你可以安全地检查 `json_output` 文件夹。每个 JSON 文件大致如下所示: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +随后,你可以将这些 JSON 文件导入数据库、搜索索引,或任何下游分析工具。 + +## 常见问题(快速解答) + +**Q: 如果需要处理 PDF 而不是图像怎么办?** +A: 先将每页 PDF 转为图像(例如使用 `pdf2image`),并将生成的 PNG/JPG 文件放入 `input_dir`。批量 OCR 逻辑保持不变。 + +**Q: 能把输出格式改成纯文本吗?** +A: 完全可以。将 `format="json"` 替换为 `format="txt"`,引擎就会生成仅包含提取文本的 `.txt` 文件。 + +**Q: 我的扫描文件分布在多个子文件夹——脚本会递归吗?** +A: 会的。`batch_process` 默认递归遍历目录树。如果想要平铺输出,可设置 `flatten=True`(若库支持)或在后处理阶段统一 JSON 文件名。 + +**Q: 如何处理非拉丁文字?** +A: 在初始化 `OcrEngine` 时传入语言参数,例如 `OcrEngine(lang="spa+eng")`。批处理循环本身无需任何改动。 + +## 专业技巧与常见坑点 + +- **批次大小很重要:** 如果出现 CPU 峰值,可在文件之间加入 `time.sleep(0.1)` 限速。 +- **日志记录:** 用 Python 的 `logging` 模块替换 `print`,以捕获时间戳和错误级别。 +- **文件命名冲突:** 若两个扫描在不同子文件夹下却拥有相同的基名,生成的 JSON 会相互覆盖。可在输出名中追加相对路径的哈希值以避免冲突。 +- **内存泄漏:** 某些 OCR 后端会保留本地资源。若库提供清理方法,请在脚本末尾调用 `ocr_engine.close()`。 + +## 完整脚本 – 直接复制粘贴 + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**预期的控制台输出** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +你可以通过文本编辑器打开 `json_output` 中的任意文件,或在 Python 中加载来验证 JSON: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +你应该会在控制台看到原始的 OCR 提取文本。 + +## 结语 + +我们刚刚介绍了 **如何批量 OCR** 整个扫描图像目录,并将 **从扫描件中提取文本** 保存为干净、机器可读的 JSON 文件。整个思路刻意保持简洁:一次性创建引擎实例,指向目标文件夹,让库负责繁重的工作。接下来,你可以: + +- 将 JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/chinese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..4d7ed8fa7 --- /dev/null +++ b/ocr/chinese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-04-26 +description: 如何快速可靠地创建 OCR。学习从图像中提取文本、加载用于 OCR 的图像,并使用自定义词典对 PNG 进行 OCR。 +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: zh +og_description: 如何在 Python 中创建 OCR 并从图像中提取文本。本指南展示了如何加载用于 OCR 的图像、在 PNG 上运行 OCR,以及使用自定义词典。 +og_title: 如何在 Python 中创建 OCR – 快速文本提取 +tags: +- OCR +- Python +- Image Processing +title: 如何在Python中创建OCR – 从图像中提取文本 +url: /zh/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中创建 OCR – 步骤指南 + +是否曾好奇 **如何创建 OCR** 来读取你的扫描 PDF、截图或手写笔记?你并不孤单。在许多实际项目中,我们需要 *从图像中提取文本*,但开箱即用的引擎往往在领域专有词汇上表现不佳。 + +在本教程中,你将看到一个完整、可直接运行的示例:加载用于 OCR 的图像、应用自定义词典,最后 **在 PNG 文件上运行 OCR**。完成后,你将能够从任意图像中提取文本,并根据自己的术语对引擎进行适配。 + +## 本教程涵盖内容 + +我们将逐步演示你需要的每一步: + +* 安装体积小巧却功能强大的 `aocr` 包(或任何兼容库)。 +* 配置 **自定义词典**,让 `aspocorp`、`licensekey` 等词汇被识别。 +* **加载用于 OCR 的图像**,支持 PNG、JPEG 或扫描的 PDF 页面。 +* 运行 OCR 过程并打印结果。 + +无需外部文档链接,只需一个可复制粘贴、立即运行的完整解决方案。 + +### 前置条件 + +* Python 3.8 或更高(代码使用 f‑string)。 +* 基本的命令行使用经验——你需要输入几条 `pip install` 命令。 +* 一张图像文件(示例中的 `technical_doc.png`),放在可引用的位置。 + +满足以上三点,即可开始。 + +--- + +## 第一步:安装 OCR 库 + +首先,需要一个支持可编程配置对象的 OCR 引擎。`aocr` 包是对原生 OCR 引擎的轻量封装,演示效果极佳。 + +```bash +# Install the library (run once) +pip install aocr +``` + +> **小技巧:** 如果你在 Windows 上遇到编译错误,尝试 `pip install aocr‑binary`,该包提供预编译的 wheel。 + +### 为什么要安装这个库? + +`aocr` 让我们可以直接访问 `config` 对象,并注入 **自定义词典**。这正是提升特定词汇识别准确率的关键。 + +--- + +## 第二步:创建 OCR 引擎实例并添加自定义词典 + +现在启动引擎,并告诉它哪些词应该被视为已知。 + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### 为什么自定义词典重要 + +标准 OCR 模型基于通用语料库训练。当模型遇到 “aspocorp” 时,可能会把它拆成 “aspo corp” 或直接漏掉字母。通过提供自定义列表,我们可以将识别器偏向我们需要的精确拼写,从而大幅降低后处理工作量。 + +--- + +## 第三步:加载待处理的图像 + +这里是 **加载用于 OCR 的图像** 的环节。`Image.load` 方法接受路径字符串,并自动判断文件类型。 + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **特殊情况:** 如果你的源文件是多页 PDF,请先使用 `pdf2image` 等工具将每页转换为 PNG,再逐页喂入引擎。 + +### 提升图像质量的技巧 + +* 分辨率至少保持在 300 dpi。 +* 确保图像方向正确,必要时使用 `Pillow` 进行旋转。 +* 将彩色扫描转换为灰度,以降低噪声。 + +--- + +## 第四步:在 PNG 文件上运行 OCR 过程 + +在引擎配置完成、图像加载后,我们最终 **在 PNG 上运行 OCR**。 + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +`process()` 调用会返回一个对象,包含识别出的文本、置信度分数以及每个单词的边界框。 + +--- + +## 第五步:输出识别的文本 + +查看引擎结果的最简方式是打印 `text` 属性。 + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### 预期输出 + +如果 `technical_doc.png` 中包含句子 *“The Aspocorp licensekey expires on 2025‑12‑31.”*,控制台应显示: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +可以看到自定义词典保留了品牌名称——这是普通 OCR 可能会弄乱的地方。 + +--- + +## 完整可运行示例(复制粘贴即用) + +下面是完整脚本,保存为 `run_ocr.py` 即可。只需将占位路径替换为你的图像实际位置。 + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +在终端运行: + +```bash +python run_ocr.py +``` + +你将看到提取的文本打印在控制台,完全与前面的示例一致。 + +--- + +## 常见问题解答 (FAQ) + +| Question | Answer | +|----------|--------| +| **Can I extract text from a scanned PDF?** | Yes. Convert each page to PNG (or TIFF) first, then feed the images to the same script. | +| **What if my image is a JPEG instead of PNG?** | The `Image.load` method supports JPEG, BMP, TIFF, and PNG out of the box. Just change the file extension. | +| **How do I improve accuracy on low‑contrast scans?** | Pre‑process with `Pillow` – increase contrast, apply binarization, or use `opencv` to deskew. | +| **Is there a way to get confidence scores for each word?** | `ocr_result` includes `words` – each word has a `confidence` attribute you can iterate over. | +| **Can I run this on a headless server?** | Absolutely. `aocr` has no GUI dependencies, making it perfect for CI pipelines. | + +--- + +## 后续步骤与相关主题 + +既然已经掌握 **如何创建 OCR** 并 **从图像中提取文本**,可以进一步探索: + +* **预处理技术** – `load image for OCR` 只是第一步,使用 `opencv` 去噪或锐化。 +* **批量处理** – 循环遍历 PNG 目录,生成可搜索的存档。 +* **多语言支持** – 如需读取法语或德语文档,可为引擎添加语言包。 +* **与 Elasticsearch 集成** – 将提取的文本索引,实现对扫描资产的全文检索。 + +这些扩展都基于我们刚才的核心模式,迁移过程轻松无阻。 + +--- + +## 小结 + +短短几分钟,我们已经解答了 **如何创建 OCR**,并可靠地 **从图像文件中提取文本**(尤其是 PNG),演示了如何 **加载用于 OCR 的图像**、应用 **自定义词典**,以及 **在 PNG 上运行 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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/chinese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..3f5cca561 --- /dev/null +++ b/ocr/chinese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-04-26 +description: 如何使用 Python 从图像中提取 OCR —— 一个 Python OCR 示例,展示如何加载图像进行 OCR 并从收据中提取文本。 +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: zh +og_description: 如何使用 Python 从图像中提取 OCR。学习一个 Python OCR 示例,加载图像进行 OCR,并在几分钟内从收据中提取文本。 +og_title: 如何在 Python 中提取 OCR – 完整指南 +tags: +- OCR +- Python +- Image Processing +title: 如何在 Python 中提取 OCR – 步骤教程 +url: /zh/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中提取 OCR – 完整指南 + +Ever wondered **how to extract ocr** from a blurry receipt or a scanned invoice? You're not the only one—developers constantly hit the wall when they need clean, machine‑readable text from images. The good news? With just a few lines of Python you can turn a picture of a receipt into high‑confidence, searchable text. + +在本教程中,我们将演示一个 **python ocr example**,展示 **how to load image for ocr**,运行引擎,并仅保留置信度达到 85 % 的字符。完成后,你将能够 **extract text from receipt** 图像,而无需在文档中搜索或猜测 API 参数。 + +## 所需环境 + +- Python 3.9 或更高版本(我们使用的语法在 3.8+ 也可工作) +- `aocr` 包(或任何提供 `OcrEngine` 类的 OCR 库)。使用以下方式安装: + +```bash +pip install aocr +``` + +- 示例收据图像(`receipt.png`),放在可引用的文件夹中。 +- 文本编辑器或 IDE——VS Code、PyCharm,甚至是简单的 notebook 都可以。 + +就这么简单。无需重量级框架、外部服务,仅仅是纯 Python。 + +![高置信度 OCR 结果 – 如何从收据中提取 OCR](/images/ocr-high-confidence.png) + +*图片说明:使用 Python OCR 从收据中提取 OCR* + +## 步骤 1 – 创建 OCR 引擎实例 (how to extract ocr) + +我们首先要启动一个 OCR 引擎。可以把它想象成读取像素的“大脑”。 + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Why?** 实例化 `OcrEngine` 会得到一个全新的配置对象。之后你可以调整语言模型、DPI 设置或预处理步骤——全部无需修改核心处理循环。 + +## 步骤 2 – 加载用于 OCR 的图像 + +接下来我们将引擎指向要分析的图像。这就是 **load image for ocr** 关键字发挥作用的地方。 + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tip:** 如果你的图像位于不同的目录,请使用 `os.path.join` 构建跨平台的路径。 + +**Why load the image this way?** `Image.load` 辅助函数会将文件读取为引擎可理解的格式,自动处理常见格式(PNG、JPEG、TIFF)。跳过此步骤或直接提供原始字节会抛出 `ValueError`。 + +## 步骤 3 – 运行 OCR 过程 + +现在我们真正运行 OCR。`process` 方法返回一个丰富的结果对象,包含识别的符号、置信度分数和边界框。 + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**What does `ocr_result` contain?** 在大多数库中,它包括: + +- `text`:原始的拼接字符串。 +- `symbol_confidences`:`(char, confidence)` 元组的列表。 +- `boxes`:每个字符的坐标(用于可视化调试)。 + +获取每个字符的置信度对于下一步至关重要。 + +## 步骤 4 – 仅保留高置信度符号 (≥ 85 %) + +收据常常有污渍、淡印或背景噪声。通过过滤低置信度符号,我们可以显著提升后续解析的效果。 + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Why 85 %?** 实际经验表明,约 0.85 的阈值在大多数印刷收据上能够平衡召回率和精确率。如果发现数字缺失,可降低阈值;如果出现乱码,则提高阈值。 + +## 步骤 5 – 输出高置信度提取文本 + +最后,我们打印(或保存)已清理的字符串。这就是我们 **extract text from receipt** 工作流的核心。 + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +典型的输出如下: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +现在你可以将该字符串输入到 CSV 写入器、数据库或任何后续分析管道中。 + +## 完整、可直接运行的脚本 + +下面是完整的代码片段,你可以复制粘贴到 `ocr_receipt.py` 并立即运行。 + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +保存文件,确保 `receipt.png` 存在,然后执行: + +```bash +python ocr_receipt.py +``` + +你应该会在控制台看到已清理的收据文本。 + +## 边缘情况与应对方案 + +| Situation | Suggested Fix | +|-----------|----------------| +| **整体置信度非常低** | 对图像进行预处理:提升对比度、转换为灰度,或使用去噪滤波器(`cv2.GaussianBlur`)。 | +| **非拉丁字符** | 向 `OcrEngine` 传入语言模型(例如 `ocr_engine.language = "spa"` 表示西班牙语)。 | +| **单张图像中包含多张收据** | 对整张图像运行 OCR,然后使用检测 `\n\n+`(双换行)的正则表达式拆分结果。 | +| **同时需要原始 OCR 文本** | 保留 `ocr_result.text` 与过滤后的版本一起用于调试。 | + +## 常见陷阱(以及如何避免) + +- **忘记安装库** – 在导入之前必须成功执行 `pip install aocr`。 +- **在 Windows 上使用错误的路径分隔符**(`\` 与 `/`),请使用 `os.path.join`。 +- **硬编码置信度阈值** 而未进行测试 —— 首先在几张收据上进行快速的可视化检查。 +- **忽略 Unicode 正规化** —— 某些收据包含特殊的破折号字符;如果计划存储输出,请运行 `unicodedata.normalize('NFKC', text)`。 + +## 下一步 – 超越基础 + +既然你已经了解了如何从单张收据中 **how to extract ocr** 数据,接下来可能想要: + +1. **批量处理收据文件夹** – 循环遍历所有 PNG/JPG 文件,并将每个结果写入 CSV。 +2. **与数据库集成** – 将 `high_confidence_text` 存入 SQLite,以便快速查询。 +3. **应用自然语言解析** – 使用正则或 `dateutil` 提取日期、总额和税额。 +4. **尝试其他库** – 如果需要多语言支持或更高精度,可使用 `pytesseract`、`easyocr` 或云服务(Google Vision、Azure OCR)。 + +上述每个主题自然都包含我们的次要关键词:*python ocr example*、*extract text from receipt*、*load image for ocr* 和 *how to use OCR*。 + +## 结论 + +我们刚刚完整演示了一个 **python ocr example**,展示了如何 **how to extract 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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/chinese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..2998329a1 --- /dev/null +++ b/ocr/chinese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-04-26 +description: 如何在 Python 中进行 OCR:学习使用基本 OCR 示例从图像提取文本并读取 TIFF 文件。附带快速可运行的代码。 +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: zh +og_description: 如何使用 Python 进行 OCR:一步步指南,展示如何从图像中提取文本、在 Python 中读取 TIFF 文件,以及使用简单可运行的脚本转换扫描图像文本。 +og_title: 如何使用 Python 进行 OCR – 基础 OCR 示例,提取文本 +tags: +- OCR +- Python +- Image Processing +title: 如何在 Python 中进行 OCR – 基本 OCR 示例用于提取文本 +url: /zh/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to ocr python – 基础 OCR 示例:提取文本 + +有没有想过 **how to ocr python**,当你桌面上摆着一张扫描的 TIFF 时该怎么做?你并不是唯一一个盯着一堆图像文件并自问“怎么把文字取出来?”的人。好消息是,只要使用合适的库并遵循几个清晰的步骤,把图片转换成纯文本其实轻而易举。 + +在本教程中,我们将演示一个 **basic OCR example**,读取 TIFF 文件,提取文本,并将其打印到控制台。完成后,你将清楚地知道如何 **extract text from image** 文件,如何处理 TIFF 格式的特殊情况,以及在需要 **convert scanned image text** 为更有用的形式时该如何调整。没有隐藏的魔法——只有可以直接复制粘贴并立即运行的 Python 代码。 + +## 你需要准备的东西 + +在开始之前,请确保你已经拥有: + +- 已安装 Python 3.9+(推荐使用最新的稳定版)。 +- 一个可以通过 pip 安装的 OCR 库。本指南使用一个虚构的 `aocr` 包,它模拟了 Tesseract 等流行工具的行为;你以后可以换成 `pytesseract` 或 `easyocr`。 +- 一张你想处理的 TIFF 图像——命名为 `input.tiff` 并放入代码中引用的文件夹。 +- 对命令行有基本的了解(仅用于安装包)。 + +就这些。没有笨重的依赖,没有 Docker 容器,只需几行代码。 + +## 第一步 – 安装并导入依赖(how to ocr python) + +首先,获取 OCR 包。打开终端并运行: + +```bash +pip install aocr +``` + +如果你更倾向于使用真实的库,只需将 `aocr` 替换为 `pytesseract`,并单独安装 Tesseract 引擎。 + +接下来导入我们需要的内容。`pathlib` 中的 `Path` 类为跨操作系统处理文件路径提供了简洁的方式。 + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*为什么使用 `Path`?* 因为它抽象了斜杠(`/` 与 `\`)的差异,让你在拼接目录时无需担心底层操作系统。这一点在后期将脚本迁移到 CI 服务器时常常能省去很多麻烦。 + +## 第二步 – 创建 OCR 引擎实例(basic ocr example) + +接下来,实例化 OCR 引擎。把 `OcrEngine` 想象成读取图片并输出字符的大脑。 + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +大多数 OCR 库都允许你在此处调整语言、DPI 或置信度阈值。对于这个 **basic OCR example**,我们使用默认设置,但如果需要处理多语言文档,可以稍后探索 `ocr_engine.config`。 + +## 第三步 – 加载你的 TIFF 图像(read tiff file python) + +这一步对应 **read tiff file python** 的部分。TIFF 可以是多页的,但 `Image.load` 默认只读取第一页——这正好适用于单页扫描。 + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +将 `"YOUR_DIRECTORY"` 替换为实际存放 `input.tiff` 的文件夹。如果不确定脚本的运行目录,`Path.cwd()` 会打印当前工作目录,便于调试路径问题。 + +## 第四步 – 运行 OCR 过程(extract text from image) + +现在魔法开始了。调用 `process()` 会把图像送入 OCR 流程并返回一个结果对象。 + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +在幕后,引擎可能会先将图像转为灰度、应用阈值处理,然后送入神经网络。你无需管理这些步骤,库已经帮你抽象掉了。 + +## 第五步 – 打印识别出的文本(convert scanned image text) + +最后,输出文本。在真实项目中,你可能会把它写入文件或数据库,但这里直接打印可以让示例保持简洁。 + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +运行脚本后,你应该会看到类似如下的输出: + +``` +Hello, world! +This is a sample scanned document. +``` + +如果输出乱码,请再次确认源图像是否清晰,以及 OCR 语言是否与文本匹配。 + +## 完整可运行脚本 + +将上述所有代码组合起来,就是下面这段完整、可直接运行的程序: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### 预期输出 + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +如果你需要 **convert scanned image text** 为可搜索的 PDF,可以将 `ocr_result.text` 通过 `reportlab` 等 PDF 生成器进行管道处理——但这又是另一个完整的教程了。 + +## 常见坑点与专业提示 + +- **低分辨率扫描**:OCR 在低于 150 DPI 时表现不佳。如果你的 TIFF 模糊,请先使用 Pillow (`Image.open(...).resize(...)`) 进行上采样。 +- **多页文件**:对于多页 TIFF,遍历 `Image.load_multi_page()`(如果你的库支持)并将结果拼接起来。 +- **语言支持**:多数引擎默认英文。比如将 `ocr_engine.language = "spa"` 设置为西班牙语。 +- **空白处理**:OCR 常会产生多余的换行。可使用 `str.splitlines()` 或正则表达式清理输出。 +- **性能**:批量处理时,复用同一个 `OcrEngine` 实例,而不是为每个文件重新创建。 + +## 扩展示例 + +既然已经掌握了单张图片的 **how to ocr python**,可以尝试以下进阶: + +1. **批量处理** – 循环遍历一个 TIFF 文件夹,将每个结果写入对应的 `.txt` 文件。 +2. **与 Pandas 集成** – 将提取的文本与元数据一起存入 DataFrame,便于快速分析。 +3. **混合方案** – 将 OCR 与 `spaCy` 等 NLP 库结合,抽取发票中的实体(姓名、日期、金额)等信息。 +4. **其他文件格式** – 将 `Image.load` 替换为 `Image.from_bytes`,以处理来自 API 或数据库的图像数据。 + +所有这些都基于 **extract text from image** 与 **convert scanned image text** 的核心思路,将扫描的文档转化为机器可读的内容。 + +## 结论 + +我们完整演示了一个清晰的 **basic OCR example**,展示了 **how to ocr python**、**read tiff file python** 以及 **extract text from image** 的完整流程,仅需几行代码。该脚本自包含、带有错误处理,并直接打印结果,是任何需要将扫描文档转换为可编辑文本的项目的坚实基础。 + +欢迎随意实验——更换 OCR 后端、调整预处理步骤,或将输出接入下游工作流。只要能够可靠地 **convert scanned image text** 为可搜索的数据,想象空间就无限。 + +有关于边缘案例、语言包或性能调优的问题吗?在下方留言吧,祝编码愉快! + +![如何使用 OCR Python 示例](/images/ocr-python-example.png "how to ocr python 脚本输出的截图") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/chinese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..11437d224 --- /dev/null +++ b/ocr/chinese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,179 @@ +--- +category: general +date: 2026-04-26 +description: 如何对扫描表单进行 OCR,学习如何预处理图像以降低噪声,并快速从图像中提取文本。 +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: zh +og_description: 如何对扫描文档进行 OCR,预处理图像,降低噪声,并高效提取文本。 +og_title: 如何运行 OCR 并预处理图像 — 快速指南 +tags: +- OCR +- image processing +- Python +title: 如何运行 OCR 并预处理图像——从扫描表单中提取文本 +url: /zh/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何运行 OCR – 提取图像中文本的完整指南 + +是否曾好奇 **如何运行 OCR** 在一张凌乱的扫描表单上并获得干净、可搜索的文本?你并不是唯一有此疑问的人。在许多真实项目中,原始图像充满斑点、光照不均以及其他导致开箱即用的 OCR 失效的怪异情况。 + +好消息是?只需几行 Python 代码和一个智能的预处理管道,你就能显著提升识别准确率,**降低噪声**,并提取出所需的精确文字。在本教程中,我们将逐步演示从加载图片到打印最终字符串的每一步,让你获得一段可直接用于发票、收据或任何扫描文档的即用代码片段。 + +## 你将构建的内容 + +- 一个与底层 OCR 库通信的 `OcrEngine` 实例。 +- 一个 **二值化** 图像并应用 **中值模糊** 来平滑斑点的预处理链。 +- 一个简单的 `process()` 调用,返回包含 `text` 属性的对象,即提取的字符串。 + +完成后,你将拥有一个自包含的脚本,能够对任意图像文件运行并立即在控制台中看到提取的文本。 + +## 前置条件 + +- Python 3.9+(此处使用的语法对应最新稳定版)。 +- 虚构的 `aocr` 包——可以把它视为 Tesseract 或任何现代 OCR 引擎的轻量包装器。使用 `pip install aocr` 安装。 +- 一个放置在可引用文件夹中的扫描图像(`scanned_form.jpg`)。 + +如果你使用的是实际的 OCR 库,如 `pytesseract`,只需将 `OcrEngine` 替换为相应的类——其他代码保持不变。 + +![](how-to-run-ocr-example.png "如何运行 OCR 示例,展示扫描表单及提取的文本") + +*Alt text: 如何在扫描文档上运行 OCR 并查看提取的文本。* + +--- + +## 步骤 1:如何运行 OCR – 初始化引擎 + +在引擎能够读取任何内容之前,我们需要创建一个实例。把 `OcrEngine` 当作后续解释视觉数据的大脑。 + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **为何重要:** 实例化引擎会设置内部模型、加载语言包并准备运行时环境。跳过此步骤通常会在后续调用 `process()` 时导致 `NoneType` 错误。 + +--- + +## 步骤 2:如何预处理图像 – 加载你的扫描表单 + +大脑准备就绪后,我们将图片喂给它。该图像可以是 `aocr.Image` 支持的任意格式。 + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **专业提示:** 开发阶段使用绝对路径,可避免脚本在不同工作目录下运行时出现 “文件未找到” 的意外。 + +--- + +## 步骤 3:如何降低噪声 – 应用二值化 & 中值模糊 + +原始扫描常常包含杂散点、背景不均或淡淡的阴影。两种经典技巧——**二值化** 和 **中值模糊**——能够在不牺牲字符边缘的前提下清理图像。 + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### 深入了解 + +- **二值化**:`threshold=180` 的数值告诉算法:“亮度高于 180 的像素设为白色,其余设为黑色”。如果你的扫描过暗或过亮,可相应调整此数值。 +- **中值模糊**:半径为 `2` 表示滤波器查看一个 5×5 像素窗口,并用中值替换中心像素。这样既能平滑孤立的斑点,又能保持字母笔画的完整。 + +> **边缘情况:** 若文档中有彩色高亮,简单的二值阈值可能会将其抹掉。此时可考虑使用 `aocr.ImageFilters.adaptive_threshold()`——它会在图像局部自适应阈值。 + +--- + +## 步骤 4:如何提取文本 – 运行 OCR 过程 + +手握干净的图像后,终于让引擎施展魔法。 + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **内部发生了什么?** 引擎在像素矩阵上运行神经网络(或传统模式匹配器),将每个识别出的字形转换为 Unicode 字符,并将其组装成行和段落。 + +--- + +## 步骤 5:如何提取文本 – 打印结果 + +`ocr_result` 对象提供了一个便利的 `text` 属性。让我们看看得到了什么。 + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### 预期输出 + +如果扫描表单包含: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +你应该会看到类似如下的输出: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +注意,预处理步骤消除了之前把 “Amount” 误识为 “Am0unt” 的杂散点。这正是 **在 OCR 前降低噪声** 的威力所在。 + +--- + +## 常见陷阱与解决方案 + +| 症状 | 可能原因 | 快速解决方案 | +|------|----------|--------------| +| 字符乱码(例如 “@#%”) | 图像过暗或过亮 | 调整 `binarize()` 中的 `threshold`;尝试 `adaptive_threshold`。 | +| 缺失单词 | 噪声仍然存在 | 增大 `median_blur` 的 `radius`,或添加 `gaussian_blur` 滤镜。 | +| 语言错误(例如英文字符变成中文) | 加载了错误的语言包 | 在创建 `OcrEngine()` 时传入 `language="eng"`(如果库支持)。 | +| 大文件处理慢 | 分辨率过高 | 在二值化前先下采样图像:`aocr.ImageFilters.resize(width=1200)`。 | + +--- + +## 进一步探索 – 后续步骤与相关主题 + +- **批量处理**:将上述逻辑封装在循环中,自动处理数十个文件。 +- **结构化输出**:对 `ocr_result.text` 使用正则表达式提取日期、金额等字段。 +- **替代库**:将 `aocr` 替换为 `pytesseract`——仅在引擎初始化步骤更改代码。 +- **PDF 图像预处理**:将每页 PDF 转为图像后,套用相同的管道。 + +这些扩展可以让你把解决方案从单个表单扩展到企业级文档摄取流水线。 + +--- + +## 结论 + +我们已经从头到尾完整演示了 **如何运行 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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/chinese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..2c8da971d --- /dev/null +++ b/ocr/chinese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-04-26 +description: 了解如何在 Aspose OCR 中设置许可证以及如何使用简洁的 Python 脚本验证许可证。按照一步一步的说明,轻松完成激活。 +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: zh +og_description: 如何在 Aspose OCR 中设置许可证以及如何使用 Python 验证许可证。几分钟内获取完整的可运行示例。 +og_title: 如何在 Aspose OCR 中设置许可证 – 快速 Python 指南 +tags: +- Aspose OCR +- Python +- Licensing +title: 如何在 Aspose OCR 中设置许可证 – 快速 Python 指南 +url: /zh/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Aspose OCR 中设置许可证 – 快速 Python 指南 + +有没有想过 **如何为 Aspose OCR 设置许可证** 而不抓狂?你并不是唯一的。大多数开发者在第一次尝试解锁库的全部功能时都会遇到障碍,结果被 “Trial version” 水印困扰。好消息是解决办法相当简单,你可以立即验证。 + +在本教程中,我们将通过一个小型 Python 脚本演示 **如何设置许可证** *以及* **如何验证许可证**。结束时,你将拥有一个打印 “License OK” 的可运行示例,并附带一些避免常见陷阱的提示。 + +## 前置条件 + +- 已安装 Python 3.8+(代码在 3.9、3.10 及更高版本上均可运行)。 +- 有效的 Aspose OCR for Java(或 .NET)许可证文件——通常命名为 `Aspose.OCR.Java.lic`。 +- 已通过 `pip install asposeocr` 安装 `asposeocr` 包。 +- 对在命令行运行 Python 脚本有基本了解。 + +全部准备好了吗?太好了——让我们开始吧。 + +## 如何在 Aspose OCR 中设置许可证(步骤 1) + +设置许可证本质上是一个三行操作,但每行都有其目的。我们将逐行拆解,让你了解我们为何如此操作。 + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**为什么要导入 `License`?** +`License` 类是向 Aspose OCR 引擎表明你已购买产品的入口。如果不创建实例,库将始终假设你在使用试用版。 + +**为什么要实例化 `License`?** +实例化会生成一个对象(`license_obj`),它可以保存 `.lic` 文件的路径,并随后将其应用于运行时。 + +## 如何在 Aspose OCR 中设置许可证 – 提供许可证文件 + +现在我们将对象指向磁盘上的实际许可证文件。 + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**技巧与提示:** + +- **绝对路径 vs. 相对路径** – 如果从不同文件夹运行脚本,使用绝对路径(`C:/licenses/...`)可消除 “file not found” 错误。 +- **环境变量** – 将路径存放在环境变量(`OCR_LICENSE_PATH`)中可避免将机密信息提交到源码管理: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## 如何验证许可证 – 确认是否生效 + +设置许可证只是成功的一半;你还需要确认库已接受该许可证。这时验证步骤就显得尤为重要。 + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +如果许可证文件缺失、损坏或不匹配,`validate()` 将抛出异常。捕获该异常可以让你以干净的方式报告问题。 + +## 完整可运行示例(所有步骤合并) + +下面是完整的可直接运行的脚本。通过终端运行它(`python set_license.py`),你应该会看到打印出的 “License OK”。 + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**预期输出** + +``` +License OK +``` + +如果出现问题,你会看到类似如下信息: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +该信息会明确指出需要修复的地方——无需猜测。 + +## 如何验证许可证 – 处理常见边缘情况 + +即使使用上述脚本,仍有一些情况可能会让你卡住: + +| 情况 | 会发生什么 | 如何解决 | +|-----------|--------------|------------| +| **文件路径拼写错误** | 来自 `set_license` 的 `FileNotFoundError` | 仔细检查路径;使用 `os.path.abspath()` 进行调试。 | +| **文件类型错误** | 验证抛出 “Invalid license format” | 确保使用与产品版本匹配的 `.lic` 文件。 | +| **许可证已过期** | 验证抛出 “License expired” | 向 Aspose 支持续订许可证并替换文件。 | +| **在受限环境中运行**(例如 AWS Lambda) | 权限错误 | 为目录授予读取权限,或将许可证嵌入部署包中。 | + +专业提示:如果想区分 “file not found” 与 “invalid format” 错误,可将 `set_license` 调用包装在单独的 `try/except` 块中。 + +## 可视化概览 + +![在 Aspose OCR 中设置许可证的示例](/images/aspose-ocr-license.png "在 Aspose OCR 中设置许可证的示例") + +*该截图显示脚本在成功激活后输出 “License OK”。* + +## 常见陷阱与最佳实践 + +- **绝不要将许可证文件提交到公共仓库。** 请改用环境变量或密钥管理器(GitHub Secrets、Azure Key Vault)来存放。 +- **尽早验证。** 在 `set_license` 之后立即调用 `license_obj.validate()`,可在任何 OCR 操作开始前捕获错误。 +- **复用 License 对象。** 每个进程只需设置一次许可证;后续的 OCR 调用会自动使用已激活的许可证。 +- **在生产环境中记录许可证路径(不含文件名)**,以便调试而不泄露实际文件。 + +## 下一步 – 扩展你的 OCR 工作流 + +现在你已经了解 **如何设置许可证** 和 **如何验证许可证**,可以继续进行核心 OCR 任务: + +- **如何读取图像** – `Image.load("sample.png")` +- **如何提取文本** – `ocr_engine.recognize(image)` +- **如何配置 OCR 选项** – 调整 `OcrEngine` 的语言、精度等设置。 + +上述每个主题都基于已成功授权的引擎,因此你再也不会看到试用水印。 + +## 结论 + +我们已经完整介绍了在 Aspose OCR 中 **如何设置许可证** 的全过程,演示了 **如何验证许可证**,并提供了一个完整的可运行脚本,可打印 “License OK”。通过提前处理错误并使用环境变量,你的应用既安全又稳健。 + +对 OCR、许可证或将 Aspose 集成到更大流水线还有疑问吗?欢迎留言,祝编码愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/chinese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/chinese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..921054a09 --- /dev/null +++ b/ocr/chinese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-04-26 +description: 如何在扫描的PDF上使用OCR,提取PDF文本,运行PDF的OCR,并在几步内将扫描的PDF转换为可搜索的文件。 +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: zh +og_description: 如何在 Python 中使用 OCR:学习如何从 PDF 中提取文本,对 PDF 进行 OCR,以及将扫描的 PDF 转换为可搜索的文档。 +og_title: 如何使用 OCR – 提取 PDF 文本的快速指南 +tags: +- OCR +- Python +- PDF +- Text Extraction +title: 如何使用 OCR – 用 Python 从 PDF 中提取文本 +url: /zh/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 OCR – 使用 Python 从 PDF 中提取文本 + +是否曾想过 **如何使用 OCR** 从扫描的合同、收据或电子书中提取文本?你并不孤单。在许多实际项目中,你收到的 PDF 仅仅是图像,如果没有 OCR,就无法搜索、索引或分析其内容。 + +在本教程中,我们将演示一个完整且可运行的示例,展示 **如何使用 OCR**、**从 PDF 中提取文本** 的方法,以及为何你可能想要 **将扫描的 PDF** 转换为可搜索的文档。我们还会涉及 **将 PDF 加载为图像** 的细微技巧,以便 OCR 引擎能够清晰地看到每一页。 + +> **快速预览:** 完成后,你将拥有一个脚本,能够加载多页 PDF,对每页运行 OCR,并打印识别出的文本——无需任何外部服务。 + +## 你需要的环境 + +- Python 3.9+(任何近期版本均可) +- `aocr` 包(或任何提供 `OcrEngine` 和 `Image.load` 的兼容 OCR 库) +- 要处理的扫描 PDF 文件(例如 `contract.pdf`) +- 适量的内存(每 100 页 PDF 大约 200 MB 通常足够) + +如果你还没有安装 OCR 库,请运行: + +```bash +pip install aocr +``` + +> **专业提示:** 使用虚拟环境来保持依赖整洁。 + +## 第一步:将 PDF 加载为图像 – 拼图的第一块 + +在进行任何 OCR 之前,必须先将 PDF 表示为图像。这正是次要关键词 **load pdf as image** 发挥作用的地方。 + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*为何这一步重要:* `aocr.Image.load` 会在内部将每页 PDF 光栅化为位图,供 OCR 引擎识别。如果跳过此步骤直接传入原始 PDF,引擎会报错,因为它期望的是像素数据,而不是矢量数据。 + +> **注意:** 路径可以是绝对路径或相对路径。确保文件可读,否则会触发 `FileNotFoundError`。 + +## 第二步:在 PDF 上运行 OCR – 将像素转化为字符 + +现在 PDF 已经以图像形式存在,我们终于可以 **在 PDF 上运行 OCR**。下面的代码片段一次性处理所有页面: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*内部到底发生了什么?* `process_all_pages` 会遍历光栅化后的页面,调用 OCR 模型,并返回一个结果对象列表——每页一个。每个结果包含识别的文本、置信度分数以及(如果需要)边界框信息。 + +## 第三步:从 PDF 中提取文本 – 把字符串拉出来 + +有了 OCR 结果,提取纯文本变得非常简单。我们将遍历各页并打印输出,以演示次要关键词 **extract text from pdf**。 + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**预期输出**(为简洁起见已截断): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +如果需要将文本合并为单个字符串,只需连接即可: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +至此,你已经成功 **使用 OCR 从 PDF 中提取文本**。 + +## 第四步:转换扫描的 PDF – 让它可搜索 + +许多下游工具(如 Elasticsearch 或 SharePoint)期望的是可搜索的 PDF,而不是纯文本转储。你可以将 OCR 输出嵌入原始 PDF,从而 **将扫描的 PDF** 转换为可搜索的版本。 + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*为何要这样做?* 可搜索的 PDF 保留了原始布局和图像,同时支持文本选择和索引——对人和机器都是双赢。 + +## 常见陷阱与边缘情况 + +### 大于内存的多页 PDF + +如果你的 PDF 有数百页,一次性加载全部可能会耗尽内存。`aocr` 库支持惰性加载: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +然后逐页处理: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### 低质量扫描 + +模糊或低对比度的扫描会显著降低 OCR 准确率。在将图像送入引擎之前,考虑进行预处理: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### 语言支持 + +默认情况下引擎假设文本为英文。若要 **在 PDF 上运行 OCR** 并使用其他语言,请设置语言代码: + +```python +ocr_engine.language = "spa" # Spanish +``` + +确保已安装相应的语言模型。 + +## 完整工作示例 + +将所有内容组合在一起,下面是一个可直接保存为 `ocr_pdf.py` 并立即运行的自包含脚本: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +运行方式如下: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +你将在控制台看到打印的文本,如果提供了 `-o` 参数,还会在原文件旁生成一个可搜索的 PDF。 + +## 专业技巧与最佳实践 + +- **批量处理:** 在处理数十个 PDF 时,将上述逻辑包装在循环中,并记录每个文件的成功/失败。 +- **置信度过滤:** 每个 `page_result` 包含置信度指标。对置信度低的页面进行丢弃或标记,以便人工审查。 +- **并行处理:** 如果 CPU 有多个核心,考虑使用 `concurrent.futures` 并行处理页面——但要注意内存使用。 +- **版本锁定:** `aocr` API 可能会变化。在 `requirements.txt` 中固定版本(例如 `aocr==2.3.1`),以避免破坏性更改。 + +## 结论 + +我们已经完整演示了 **如何使用 OCR** 来 **从 PDF 中提取文本**、**在 PDF 上运行 OCR**、**将 PDF 加载为图像**,以及 **将扫描的 PDF** 转换为可搜索的格式。代码已完整,解释覆盖了 *做什么* 与 *为什么*,现在你拥有了一个可复用的模式,适用于任何基于图像的 PDF 项目。 + +接下来可以尝试将提取的文本喂入自然语言处理流水线,用 Elasticsearch 索引可搜索的 PDF,或尝试不同的 OCR 后端,如 Tesseract 或 Azure Computer Vision。天地无限,工具尽在指尖。 + +祝编码愉快,愿你的 PDF 永远可搜索! + +![如何使用 OCR 示例](/images/ocr_workflow.png "如何使用 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/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/chinese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..2cb8423a8 --- /dev/null +++ b/ocr/chinese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-04-26 +description: 如何在 Python 中使用线程加载图像进行 OCR。只需几步,即可学习使用回调、后台线程和图像加载的异步 OCR 处理。 +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: zh +og_description: 如何在 Python 中使用线程加载图像进行 OCR。本指南展示了一个完整的可运行示例,包含回调和后台执行。 +og_title: 如何使用线程加载图像进行 OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: 如何使用线程加载图像进行 OCR +url: /zh/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用线程加载图像进行 OCR + +是否曾想过 **如何使用线程** 在不冻结应用的情况下加载图像进行 OCR?无论你是在构建桌面扫描仪、Web 服务,还是处理海量图片的简单脚本,这种情况都会出现。好消息是?只需几行 Python 代码和正确的线程模式,就能在 OCR 引擎工作时保持 UI 的流畅。 + +在本教程中,我们将演示一个完整的端到端示例:加载大型 PNG, 在后台线程中启动 OCR,并使用回调处理结果。完成后,你不仅会了解 **如何使用线程**,还会掌握 **如何为 OCR 加载图像** 的清晰、可复用方法。 + +## 你需要的环境 + +- Python 3.9+(我们使用的语法在任何近期版本都适用) +- `pillow` 用于图像处理(`pip install pillow`) +- `pytesseract` 作为 Tesseract OCR 的轻量包装(`pip install pytesseract`) +- 已在机器上安装 Tesseract OCR 引擎(从 [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract) 下载) +- 你想要处理的大图像文件(本指南中的 `large_image.png`) + +无需额外框架,也不使用 async/await——只需经典的 `threading` 和回调。 + +## 步骤 1:导入 threading 模块(后台执行所需) + +我们首先导入 `threading` 模块。它提供了 `Thread` 类,使我们能够在独立的操作系统线程中运行任意函数。 + +```python +import threading +``` + +*为什么这很重要*:如果在主线程上运行 OCR,程序(尤其是 GUI)会在 OCR 完成前冻结。将工作委派给后台线程后,主线程可以自由更新 UI、处理用户输入或启动其他任务。 + +## 步骤 2:定义 OCR 完成时调用的回调函数 + +回调就是在另一段代码完成后被调用的函数。这里我们会打印识别出的文本,但你也可以将其保存、通过网络发送,或更新 UI 控件。 + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*专业提示*:保持回调轻量。回调内部进行大量处理会抵消线程的意义,因为它仍会阻塞调用它的线程(通常是主线程)。 + +## 步骤 3:加载要处理的图像 + +加载图像与 OCR 是独立的关注点,但仍是整体工作流的一部分。使用 Pillow 可以轻松完成此操作。 + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*为什么在这里加载*:如果图像很大,在主线程加载可能已经导致卡顿。在许多实际应用中,你也会将加载工作交给线程,但为保持清晰,这里保持同步。 + +## 步骤 4:创建一个小型 OCR 引擎包装器 + +原始代码片段使用了 `engine.process_async`。我们将使用一个小类来模拟,它在内部启动线程,并在完成后调用提供的回调。 + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*解释*: +- `_run_ocr` 执行繁重的工作。 +- `process_async` 创建一个 `Thread` 对象,将其标记为 daemon(即使线程仍在运行,解释器也能退出),并启动它。 +- 回调会收到 OCR 文本或错误信息。 + +## 步骤 5:将所有内容整合并在 OCR 运行时执行其他工作 + +现在我们编排整个流程:加载图像、实例化引擎、触发异步 OCR,并让主线程忙于其他任务(这里我们仅打印一条信息)。 + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**预期输出(为简洁起见已截断):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +如果 OCR 失败,回调会打印错误信息而不是文本。 + +--- + +## 为什么这种方法比简单循环更好 + +- **响应性**:主线程永不在 OCR 调用上阻塞,而 OCR 对于大图像可能需要数秒。 +- **可扩展性**:可以启动多个 `SimpleOcrEngine` 实例,每个实例在独立线程上并发处理一批图像。 +- **关注点分离**:加载、处理和结果处理清晰分离,使代码更易于测试和维护。 + +## 常见陷阱及规避方法 + +| 陷阱 | 会发生什么 | 解决方案 | +|------|------------|----------| +| 忘记将线程标记为 *daemon* | 脚本在主工作完成后挂起,因为 OCR 线程仍在运行。 | 设置 `worker.daemon = True` **或** 在退出前 `join()` 线程。 | +| 在没有锁的情况下使用全局变量存放结果 | 当多个线程同时写入时,竞争条件可能导致数据损坏。 | 通过回调传递结果(如本例),或使用线程安全的容器,如 `queue.Queue`。 | +| 在主线程加载巨大的图像 | UI 在后台 OCR 启动前就冻结。 | 同样将图像加载交给线程,或使用惰性加载技术。 | +| 未在工作线程内部处理异常 | 未捕获的异常会悄悄终止线程,导致没有结果返回。 | 在 OCR 逻辑中使用 `try/except` 包裹,并将错误转发给回调。 | + +## 扩展此模式 + +- **进度报告**:使用共享的 `queue.Queue` 将 OCR 线程的中间进度百分比推送到主线程。 +- **线程池**:对于批量处理,可将单个 `Thread` 对象替换为 `concurrent.futures.ThreadPoolExecutor`。 +- **GUI 集成**:在 Tkinter 或 PyQt 应用中,使用 `after()`(Tkinter)或 `QTimer.singleShot`(Qt)调度回调,以确保 UI 更新在主线程上进行。 + +## 完整可运行示例(复制粘贴即可) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/czech/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..484d67e22 --- /dev/null +++ b/ocr/czech/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-04-26 +description: Extrahujte text záhlaví pomocí OCR v Pythonu s Aspose OCR. Naučte se + rychle a spolehlivě extrahovat text z konkrétní oblasti obrázků. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: cs +og_description: Rychle extrahujte text záhlaví pomocí OCR. Tento návod ukazuje, jak + extrahovat text z konkrétní oblasti pomocí Python Aspose OCR během několika řádků. +og_title: Extrahování textu záhlaví OCR pomocí Pythonu a Aspose OCR – Kompletní tutoriál +tags: +- OCR +- Python +- Aspose +title: Extrahování textu hlavičky pomocí OCR v Pythonu s Aspose OCR – krok za krokem + průvodce +url: /cs/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrahování textu hlavičky OCR – Kompletní tutoriál Python Aspose OCR + +Už jste někdy potřebovali **extrahovat text hlavičky OCR** ze skenované faktury, ale nechtěli zpracovávat celou stránku? Nejste v tom sami. V mnoha reálných pipelinech hlavička obsahuje nejdůležitější informace—číslo faktury, datum, název dodavatele—takže její rychlé vytažení může ušetřit spoustu následné práce. + +V tomto tutoriálu vám ukážeme připravené řešení, které **extrahuje text konkrétní oblasti** pomocí knihovny **Python Aspose OCR**. Žádné vágní odkazy na externí dokumentaci, jen kompletní skript, jasné vysvětlení každého řádku a tipy, které skutečně použijete zítra. + +## Co se naučíte + +- Jak nainstalovat a importovat balíček Aspose OCR pro Python. +- Jak načíst obrázek a definovat **oblast zájmu (ROI)**, která izoluje hlavičku. +- Jak spustit OCR engine na této ROI a získat čistý text. +- Běžné úskalí (např. nesoulad DPI) a jak se jim vyhnout. +- Jak vypadá očekávaný výstup, abyste mohli ověřit, že vše funguje. + +Na konci budete schopni vložit tento kód do jakéhokoli projektu, který potřebuje **extrahovat text hlavičky OCR** z faktur, účtenek nebo jakéhokoli dokumentu s předvídatelným rozložením. + +## Požadavky + +- Python 3.8 nebo novější nainstalovaný na vašem počítači. +- Platná licence Aspose OCR pro Python (bezplatná zkušební verze funguje pro hodnocení). +- Soubor obrázku (`invoice.png`), který obsahuje jasnou oblast hlavičky. +- Základní znalost funkcí v Pythonu a souborových cest. + +> **Pro tip:** Pokud testujete na nízkém rozlišení skenu, zvyšte DPI před předáním Aspose OCR – výrazně to zlepšuje přesnost. + +--- + +## Krok 1: Instalace balíčku Aspose OCR + +Nejprve přidejte knihovnu do svého prostředí. Oficiální balíček je `aspose-ocr`. Spusťte to jednou: + +```bash +pip install aspose-ocr +``` + +Pokud používáte virtuální prostředí (vysoce doporučeno), aktivujte jej před instalací. Tím zajistíte, že balíček nebude kolidovat s jinými projekty. + +## Krok 2: Import požadovaných tříd a načtení obrázku + +Nyní přineseme potřebné třídy do našeho skriptu a načteme obrázek faktury. Všimněte si použití **úplných cest**; relativní cesty také fungují, ale absolutní cesty odstraňují nejasnosti, když skript běží na serveru. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Proč je to důležité:** Inicializace `OcrEngine` jednou a její opakované používání pro více obrázků je efektivnější než vytváření nového enginu pokaždé. + +## Krok 3: Definice oblasti hlavičky (ROI) + +Hlavička se obvykle nachází v horní části stránky, ale její přesné souřadnice se mohou lišit. Zde definujeme obdélník (`x`, `y`, `width`, `height`), který pokrývá hlavičku. Přizpůsobte čísla tak, aby odpovídala rozložení vašeho dokumentu. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Jak to funguje:** Voláním `set_roi` OCR engine omezuje svou analýzu na tento obdélník, což výrazně zrychluje zpracování a snižuje šum z ostatní části stránky. + +## Krok 4: Aplikace ROI a spuštění OCR + +Nyní řekneme enginu, aby se zaměřil na oblast hlavičky, a poté spustíme proces OCR. Objekt výsledku obsahuje rozpoznaný text a další metadata (skóre důvěry, jazyk atd.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Pokud OCR selže (např. nepodporovaný formát obrázku), `ocr_result` bude `None`. Rychlá ochranná podmínka může váš skript učinit robustnějším: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Krok 5: Získání a vytištění extrahovaného textu hlavičky + +Nakonec vytáhneme text z objektu výsledku a zobrazíme jej. Můžete jej také zapsat do souboru nebo předat jiné funkci pro další zpracování. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Očekávaný výstup + +Když je vše nastaveno správně, měli byste vidět něco jako: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Pokud výstup vypadá poškozeně, zkontrolujte souřadnice ROI a ujistěte se, že zdrojový obrázek má vysoký kontrast. + +--- + +## Variace a okrajové případy + +### 1. Více hlaviček v jednom dokumentu + +Někdy PDF obsahuje několik stránek, každou s vlastní hlavičkou. Procházejte stránky a upravujte ROI pro každou stránku: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Zpracování nakloněných skenů + +Pokud je faktura mírně otočená, předzpracujte obrázek pomocí OpenCV před předáním Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Změna nastavení jazyka + +Aspose OCR může automaticky detekovat jazyk, ale můžete vynutit angličtinu pro rychlejší výsledky: + +```python +ocr_engine.language = "en" +``` + +--- + +## Kompletní funkční příklad + +Níže je kompletní skript, který můžete zkopírovat a vložit do souboru pojmenovaného `extract_header.py`. Nezapomeňte nahradit cestu k obrázku svou vlastní. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Spuštěním tohoto skriptu by se měly vypsat řádky hlavičky přesně tak, jak byly uvedeny dříve. Klidně upravte hodnoty `roi`, aby odpovídaly vašemu konkrétnímu šabloně faktury. + +--- + +## Často kladené otázky + +**Q: Funguje to přímo s PDF?** +A: Ne, není to připravené „out‑of‑the‑box“. Převěďte každou stránku PDF na obrázek (např. pomocí `pdf2image`) a pak předávejte PNG/JPG skriptu. + +**Q: Co když moje hlavička obsahuje logo a text dohromady?** +A: Aspose OCR se zaměřuje na textový obsah. Pro loga zvažte použití samostatné knihovny pro rozpoznávání obrázků, jako je `opencv` nebo `tesseract` s vlastním modelem. + +**Q: Je bezplatná zkušební verze omezena?** +A: Zkušební verze umožňuje až 10 stránek za měsíc. Pro produkci zakupte licenci, která odstraní limit a odemkne nastavení vyšší přesnosti. + +--- + +## Závěr + +Nyní máte **kompletní, citovatelný** návod pro **extrahování textu hlavičky OCR** pomocí **Python Aspose OCR**. Tutoriál pokryl vše od instalace po řešení okrajových případů a poskytl vám znovupoužitelnou funkci, kterou můžete vložit do větších pracovních postupů. + +Dále můžete zkoumat **extrahování textu konkrétní oblasti** pro jiné zóny, jako jsou patičky nebo řádky položek, nebo zkombinovat tento přístup s konvertorem PDF‑na‑obrázek pro automatizaci celých dokumentových pipeline. Možnosti jsou nekonečné—jen si pamatujte, aby vaše souřadnice ROI byly přesné a obrázky vysokého rozlišení. + +Máte složité rozložení? Sdílejte ho v komentářích a společně upravíme ROI. Šť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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/czech/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..24ff1bea6 --- /dev/null +++ b/ocr/czech/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-04-26 +description: Extrahovat text z obrázku pomocí Aspose OCR v Pythonu. Naučte se, jak + extrahovat text, převést obrázek na text a načíst obrázek pro OCR s vícejazyčnou + podporou. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: cs +og_description: okamžitě extrahujte text z obrázku. Tento návod ukazuje, jak extrahovat + text, převést obrázek na text a načíst obrázek pro OCR pomocí Aspose OCR v Pythonu. +og_title: extrahování textu z obrázku pomocí Pythonu – Kompletní vícejazyčný OCR tutoriál +tags: +- OCR +- Python +- Aspose +title: extrahování textu z obrázku pomocí Pythonu – Průvodce vícejazyčným OCR +url: /cs/python-java/general/extract-text-from-image-with-python-multilingual-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 pomocí Pythonu – Průvodce vícejazyčným OCR + +Už jste někdy potřebovali **extrahovat text z obrázku**, ale nebyli jste si jisti, která knihovna zvládne stránky s více jazyky? Nejste v tom sami. V mnoha reálných aplikacích – například při zpracování faktur, monitorování sociálních médií nebo archivaci vícejazyčných dokumentů – narazíte na obrázky, které obsahují jak latinské, tak cyrilické znaky. + +Dobrá zpráva? S Aspose OCR pro Python můžete **extrahovat text**, **převést obrázek na text** a **načíst obrázek pro OCR** během několika řádků kódu, přičemž engine automaticky detekuje jazyk. V tomto tutoriálu projdeme kompletní, spustitelný příklad, vysvětlíme, proč je každý krok důležitý, a podíváme se na několik okrajových případů, na které můžete narazit. + +> **Co si odnesete** +> * Připravený skript, který získá text z PNG s více jazyky. +> * Porozumění tomu, jak nakonfigurovat vícejazyčné OCR v Pythonu. +> * Tipy pro práci s velkými soubory, různými formáty obrázků a ladění běžných problémů. + +## Prerequisites + +- Python 3.8 nebo novější (kód používá f‑stringy). +- Balíček `asposeocr` nainstalovaný (`pip install asposeocr`). +- Soubor s obrázkem (např. `mixed_lang.png`), který obsahuje text ve více než jednom skriptu. +- Základní znalost importů v Pythonu a objektově orientovaných API. + +Žádné těžké závislosti, žádné externí služby – jen jediná instalace pip a můžete začít. + +--- + +## Step 1 – Install & import the Aspose OCR library + +Před tím, než můžeme **načíst obrázek pro OCR**, potřebujeme samotnou knihovnu. Balíček obsahuje jádro OCR enginu a lehký načítač obrázků. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Why this matters*: Importování konkrétních tříd udržuje jmenný prostor přehledný a činí pozdější kód srozumitelnějším. Pokud importujete jen `asposeocr`, budete muset u každého volání uvádět plnou cestu (`aocr.OcrEngine()`), což může být hlučné. + +--- + +## Step 2 – Create the OCR engine and enable multilingual detection + +Aspose OCR dokáže automaticky odhadnout jazyk(y) přítomné na obrázku. Nastavení `Language.AUTO` pokrývá latinčinu, cyrilici, arabštinu a mnoho dalších. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Pro tip*: Pokud znáte jazykovou sadu předem, můžete přiřadit `Language.ENGLISH` nebo `Language.RUSSIAN` pro malý nárůst výkonu. Pro skutečně smíšené dokumenty je však `AUTO` nejbezpečnější volba. + +--- + +## Step 3 – Load the image you want to process + +Zde **načteme obrázek pro OCR**. Aspose podporuje PNG, JPEG, BMP, TIFF a dokonce i PDF stránky, které jsou zpracovány jako obrázky. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Tip**: Pokud je váš obrázek větší než 2 MB, zvažte jeho předchozí zmenšení. Velké obrázky zvyšují spotřebu paměti a mohou zpomalit krok detekce. + +--- + +## Step 4 – Run the OCR process and capture the result + +Volání `process()` provádí těžkou práci: detekci textu, analýzu rozvržení a dekódování jazyka. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +Vrácený objekt `ocr_result` obsahuje několik užitečných vlastností: + +| Property | Description | +|----------|-------------| +| `text` | Prostý řetězec rozpoznaného textu (co nejčastěji použijete). | +| `confidence` | Celkové skóre důvěry (0‑100). | +| `lines` | Seznam objektů `OcrLine` s pozičními údaji (užitečné pro PDF). | + +--- + +## Step 5 – Display the extracted text + +Nakonec výstup vytiskneme. Ve skutečné aplikaci jej můžete uložit do databáze nebo předat překladovému API. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Expected output** (příklad pro obrázek s více jazyky): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Pokud vidíte poškozené znaky, zkontrolujte, že obrázek není poškozený a že používáte nejnovější verzi `asposeocr` (v23.7 v době psaní). + +--- + +## Step 6 – Full script you can copy‑paste + +Sestavením všeho dohromady odstraníte zmatek typu „kde kód začíná?“. Uložte tento soubor jako `multilingual_ocr.py` a spusťte jej z příkazové řádky. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Spusťte jej: + +```bash +python multilingual_ocr.py +``` + +Měli byste vidět extrahované řetězce vytištěné v konzoli. To je vše – **převést obrázek na text** pomocí několika řádků kódu. + +--- + +## Common questions & edge‑case handling + +### What if my image contains handwriting? +Aspose OCR je optimalizováno pro tištěný text. Ručně psané skripty často vyžadují dedikovaný model (např. Azure Read nebo Google Vision). Stále můžete zkusit `Language.AUTO`, ale očekávejte nižší důvěru. + +### How do I improve accuracy on noisy scans? +1. Předzpracujte obrázek (binarizace, odstraňování šumu). +2. Zvyšte DPI alespoň na 300 ppi před předáním enginu. +3. Explicitně nastavte `ocr_engine.config.deskew = True`, pokud je obrázek nakloněný. + +```python +ocr_engine.config.deskew = True +``` + +### Can I extract text from a PDF without converting it to an image first? +Ano – Aspose OCR může otevřít PDF stránky přímo: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Jen si pamatujte, že každá stránka je interně zpracována jako obrázek, takže platí stejné požadavky na kvalitu. + +--- + +## Conclusion + +Nyní máte solidní, end‑to‑end recept na **extrahování textu z obrázku** pomocí Aspose OCR v Pythonu, včetně podpory více jazyků. Skript ukazuje, jak **načíst obrázek pro OCR**, **převést obrázek na text** a jak řešit nejčastější problémy. + +Od sem můžete: + +- Integrovat funkci do webové služby, která přijímá nahrané soubory od uživatelů. +- Spojit extrahovaný text s knihovnou pro detekci jazyka a směrovat jej k správnému překladovému enginu. +- Experimentovat s možnostmi `ocr_engine.config` (např. `max_recognition_time`, `text_orientation`) pro jemné doladění výkonu. + +Šťastné programování a ať jsou vaše OCR pipeline vždy přesné! + +--- + +![Screenshot of extracted multilingual text – extract text from image example](image-placeholder.png "extract text from 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/czech/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/czech/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..fc85c2353 --- /dev/null +++ b/ocr/czech/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-04-26 +description: Jak dávkově provádět OCR vašich dokumentů a extrahovat text ze skenů + v Pythonu. Naučte se krok za krokem dávkové zpracování s OcrEngine pro výstup ve + formátu JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: cs +og_description: Jak hromadně provést OCR vašich naskenovaných souborů a extrahovat + text ze skenů v jediném skriptu. Kompletní kód, tipy a řešení okrajových případů. +og_title: Jak provádět dávkové OCR – Rychlý průvodce Pythonem +tags: +- OCR +- Python +- Automation +title: Jak provádět hromadné OCR – Efektivně extrahovat text ze skenů +url: /cs/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak provádět hromadné OCR – Efektivně extrahovat text ze skenů + +Už jste se někdy zamýšleli **jak provádět hromadné OCR** na hromadě naskenovaných PDF, aniž byste ztratili rozum? Nejste jediní — vývojáři se neustále ptají, *„Jak mohu extrahovat text ze skenů najednou?“* Dobrou zprávou je, že několik řádků Pythonu může tuto nudnou práci proměnit v plynulý, automatizovaný proces. + +V tomto tutoriálu projdeme kompletním, připraveným řešením, které **extrahuje text ze skenů**, uloží výsledky jako JSON a na konci vám poskytne rychlou kontrolu. Žádné externí služby, žádná magie — jen čistý Python, třída `OcrEngine` a trochu práce se složkami. + +## Co si z toho odnesete + +- Plně funkční skript, který **provádí hromadné OCR** nad libovolnou složkou s obrázky. +- Jasná vysvětlení *proč* každá řádka existuje, nejen *co* dělá. +- Tipy pro práci s prázdnými složkami, soubory, které nejsou obrázky, a velkými dávkami. +- Způsob, jak ověřit, že výstupní JSON skutečně obsahuje extrahovaný text. + +### Předpoklady (minimum) + +| Požadavek | Proč je důležitý | +|-------------|----------------| +| Python 3.8+ | Moderní syntaxe a typové nápovědy | +| `OcrEngine` library (or a compatible wrapper) | Knihovna `OcrEngine` (nebo kompatibilní obal) – Základní OCR funkčnost | +| A directory with scanned image files (PNG, JPG, TIFF) | Adresář s naskenovanými soubory obrázků (PNG, JPG, TIFF) – Vstupní data | +| Write permissions for the output folder | Oprávnění k zápisu do výstupní složky – Ukládání výsledků JSON | + +Pokud už to máte, skvělé — ponořme se do toho. + +![workflow hromadného OCR](image-placeholder.png){alt="workflow hromadného OCR"} + +## Krok 1 – Inicializace OCR enginu (jak provádět hromadné OCR) + +Než budeme moci něco zpracovat, potřebujeme instanci OCR enginu. Považujte ji za „mozek“, který přečte každý obrázek a vypíše text. Jednorázová inicializace a opakované používání během celé dávky je nejefektivnější vzor. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Proč znovu použít stejnou instanci?** +> Vytváření nového enginu pro každý soubor by opakovaně načítalo těžké modely do paměti, což by výrazně zpomalilo dávku. Jedna instance udržuje model v RAM a umožní vám zpracovat tisíce obrázků bez znatelného zpomalení. + +## Krok 2 – Nastavte složku se skeny (extrahovat text ze skenů) + +Vaše skeny jsou uložené někde na disku. Řekněme skriptu, kde je najde. Použití absolutních cest zabraňuje překvapením typu „soubor nenalezen“, když je skript spuštěn z jiného pracovního adresáře. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Tip:** +> Pokud používáte Windows, lomítka (`/`) fungují naprosto v pořádku s `os.path.abspath`, takže nemusíte escapovat zpětná lomítka. + +## Krok 3 – Vyberte, kam mají jít výsledky JSON + +Pravděpodobně chcete mít uklizenou složku pro OCR výsledky. Udržení výstupu odděleně od zdrojů usnadňuje pozdější úklid nebo předání JSONu do dalšího pipeline. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Proč vytvořit složku programově?** +> Zajišťuje, že skript nespadne, pokud adresář chybí, a `exist_ok=True` dělá operaci idempotentní — spusťte skript několikrát bez chyb. + +## Krok 4 – Spusťte hromadný proces (jak provádět hromadné OCR) + +Nyní jádro věci: říct `ocr_engine`, aby procházel každý soubor v `input_dir`, spustil OCR a uložil JSON do `output_dir`. Příznak `format="json"` říká enginu, aby výsledek serializoval strukturovaným způsobem, který milují downstream nástroje. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Co se děje pod kapotou? + +1. **Objevování souborů** – Engine rekurzivně prohledává `input_folder`, ignoruje skryté soubory. +2. **Validace souborů** – Do OCR modelu jsou předány jen podporované přípony obrázků (`.png`, `.jpg`, `.tif` atd.). +3. **Spuštění OCR** – Každý obrázek je odeslán do OCR enginu; zachytí se text, skóre důvěry a data o rozložení. +4. **Serializace do JSON** – Výsledek je zapsán do souboru se stejným základním názvem, ale s příponou `.json` ve `output_folder`. + +> **Zvládání okrajových případů:** +> - **Prázdná složka:** Engine zaznamená „No files found“ a vrátí se elegantně. +> - **Poškozený obrázek:** Přeskočí soubor, zaznamená chybu do `batch_errors.log` a pokračuje. +> - **Obrovská dávka (10 000+ souborů):** Spotřeba paměti zůstává nízká, protože každý obrázek je zpracován samostatně. + +## Krok 5 – Potvrďte, že konverze byla dokončena + +Jednoduchý příkaz `print` poskytne okamžitou zpětnou vazbu v konzoli. Pro produkční pipeline můžete nahradit tento výpis voláním logování nebo e‑mailovým upozorněním. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Když uvidíte tento řádek, můžete bezpečně prozkoumat složku `json_output`. Každý JSON soubor bude vypadat zhruba takto: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Nyní můžete tyto JSON soubory vložit do databáze, vyhledávacího indexu nebo jakéhokoli downstream analytického nástroje. + +## Často kladené otázky (a rychlé odpovědi) + +**Q: Co když potřebuji zpracovávat PDF místo obrázků?** +A: Nejprve převést každou stránku PDF na obrázek (např. pomocí `pdf2image`) a umístit vzniklé PNG/JPG soubory do `input_dir`. Logika hromadného OCR zůstane beze změny. + +**Q: Můžu změnit výstupní formát na prostý text?** +A: Rozhodně. Nahraďte `format="json"` za `format="txt"` a engine zapíše soubor `.txt` obsahující pouze extrahovaný text. + +**Q: Mé skeny jsou v několika podadresářích — bude skript procházet rekurzivně?** +A: Ano. `batch_process` standardně prochází strom adresářů. Pokud chcete plochý výstup, nastavte `flatten=True` (pokud knihovna podporuje) nebo po‑zpracujte názvy JSON souborů. + +**Q: Jak zacházet s ne-latinskými skripty?** +A: Inicializujte `OcrEngine` s parametrem jazyka, např. `OcrEngine(lang="spa+eng")`. Samotná smyčka dávky nevyžaduje žádné změny. + +## Profesionální tipy a běžné úskalí + +- **Velikost dávky má význam:** Pokud zaznamenáte špičky CPU, omezte proces jednoduchým `time.sleep(0.1)` mezi soubory. +- **Logování:** Vyměňte volání `print` za Python modul `logging` pro zachycení časových razítek a úrovní chyb. +- **Kolize názvů souborů:** Pokud dva skeny mají stejný základní název, ale jsou v různých podadresářích, JSON soubory se přepíší. Přidejte hash relativní cesty k výstupnímu názvu, abyste tomu předešli. +- **Úniky paměti:** Některé OCR backendy drží nativní zdroje. Na konci skriptu zavolejte `ocr_engine.close()`, pokud knihovna poskytuje metodu pro úklid. + +## Kompletní skript – připravený ke zkopírování a vložení + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Očekávaný výstup v konzoli** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Můžete ověřit JSON otevřením libovolného souboru v `json_output` v textovém editoru nebo načtením v Pythonu: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Měli byste vidět surový OCR‑extrahovaný text vytištěný v konzoli. + +## Závěr + +Právě jsme probrali **jak provádět hromadné OCR** na celém adresáři naskenovaných obrázků a **extrahovat text ze skenů** do čistých, strojově čitelných JSON souborů. Přístup je úmyslně jednoduchý: nastavit engine jednou, nasměrovat ho na složku a nechat knihovnu udělat těžkou práci. Odtud můžete: + +- Připojit JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/czech/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..c9d442dad --- /dev/null +++ b/ocr/czech/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-04-26 +description: Jak rychle a spolehlivě vytvořit OCR. Naučte se extrahovat text z obrázku, + načíst obrázek pro OCR a spustit OCR na PNG s vlastním slovníkem. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: cs +og_description: Jak vytvořit OCR v Pythonu a extrahovat text z obrázku. Tento průvodce + ukazuje, jak načíst obrázek pro OCR, spustit OCR na PNG a použít vlastní slovník. +og_title: Jak vytvořit OCR v Pythonu – Rychlé získávání textu +tags: +- OCR +- Python +- Image Processing +title: Jak vytvořit OCR v Pythonu – Extrahovat text z obrázku +url: /cs/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak vytvořit OCR v Pythonu – krok za krokem průvodce + +Už jste se někdy zamýšleli **jak vytvořit OCR**, které dokáže číst vaše naskenované PDF, snímky obrazovky nebo ručně psané poznámky? Nejste v tom sami. V mnoha reálných projektech potřebujeme *extrahovat text z obrázku* souborů, ale výchozí enginy často selhávají u slov specifických pro danou doménu. + +V tomto tutoriálu uvidíte kompletní, spustitelný příklad, který načte obrázek pro OCR, použije vlastní slovník a nakonec **spustí OCR na PNG** souborech. Na konci budete schopni extrahovat text z libovolného obrázku a přizpůsobit engine vaší vlastní terminologii. + +## Co tento tutoriál pokrývá + +* Instalace malého, ale výkonného balíčku `aocr` (nebo jakékoli kompatibilní knihovny). +* Konfigurace **vlastního slovníku**, aby byly rozpoznány termíny jako `aspocorp` nebo `licensekey`. +* **Načtení obrázku pro OCR**, ať už jde o PNG, JPEG nebo naskenovanou stránku PDF. +* Spuštění OCR procesu a vytištění výsledku. + +Žádné externí odkazy na dokumentaci, jen samostatné řešení, které můžete dnes zkopírovat a spustit. + +### Požadavky + +* Python 3.8 nebo novější (kód používá f‑stringy). +* Základní znalost příkazové řádky – budete zadávat několik příkazů `pip install`. +* Soubor s obrázkem (`technical_doc.png` v příkladu) umístěný na místě, na které můžete odkazovat. + +Pokud splňujete tyto tři položky, můžete začít. + +--- + +## Krok 1: Instalace OCR knihovny + +Nejprve potřebujeme OCR engine, který podporuje programovatelný konfigurační objekt. Balíček `aocr` je lehký wrapper kolem nativního OCR engine a dobře se hodí pro ukázky. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Tip:** Pokud používáte Windows a narazíte na chybu při kompilaci, zkuste `pip install aocr‑binary`, který poskytuje předkompilované balíčky. + +### Proč instalovat tuto knihovnu? + +`aocr` nám poskytuje přímý přístup k objektu `config`, kde můžeme vložit **vlastní slovník**. To je tajná ingredience pro zlepšení přesnosti u specifických slovníků. + +--- + +## Krok 2: Vytvoření instance OCR engine a přidání vlastního slovníku + +Nyní spustíme engine a řekneme mu, která slova má považovat za známá. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Proč je vlastní slovník důležitý + +Standardní OCR modely jsou trénovány na obecných korpusech. Když model uvidí „aspocorp“, může jej rozdělit na „aspo corp“ nebo úplně vynechat písmena. Poskytnutím vlastního seznamu nasměrujeme rozpoznávač k přesnému pravopisu, který potřebujeme, a výrazně snížíme úsilí při post‑zpracování. + +--- + +## Krok 3: Načtení obrázku, který chcete zpracovat + +Zde **načteme obrázek pro OCR**. Metoda `Image.load` přijímá řetězec cesty a automaticky určuje typ souboru. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Hraniční případ:** Pokud je vaším zdrojem více‑stránkový PDF, nejprve převeďte každou stránku na PNG (např. pomocí `pdf2image`) a podávejte je po jedné engine. + +### Tipy pro lepší kvalitu obrázku + +* Udržujte rozlišení alespoň 300 dpi. +* Zajistěte, aby byl obrázek ve správné orientaci; v případě potřeby otočte pomocí `Pillow`. +* Převádějte barevné skeny na odstíny šedi, aby se snížil šum. + +--- + +## Krok 4: Spuštění OCR procesu na PNG souboru + +S nakonfigurovaným engine a načteným obrázkem konečně **spustíme OCR na PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +Volání `process()` vrací objekt, který obsahuje rozpoznaný text, skóre důvěry a ohraničující rámečky pro každé slovo. + +--- + +## Krok 5: Výstup rozpoznaného textu + +Nejjednodušší způsob, jak zjistit, co engine našel, je vytisknout atribut `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Očekávaný výstup + +Pokud `technical_doc.png` obsahuje větu *„The Aspocorp licensekey expires on 2025‑12‑31.“*, měla by konzole zobrazit: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Všimněte si, jak vlastní slovník zachoval název značky beze změny – něco, co by základní OCR mohlo zkomolit. + +--- + +## Kompletní funkční příklad (připravený ke kopírování) + +Níže je celý skript, připravený k uložení jako `run_ocr.py`. Stačí nahradit zástupnou cestu umístěním vašeho obrázku. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Run it from the terminal: + +```bash +python run_ocr.py +``` + +Měli byste vidět extrahovaný text vytištěný v konzoli, přesně tak, jak je uvedeno v předchozím příkladu. + +--- + +## Často kladené otázky (FAQ) + +| Question | Answer | +|----------|--------| +| **Mohu extrahovat text ze skenovaného PDF?** | Ano. Nejprve převeďte každou stránku na PNG (nebo TIFF) a poté načtěte obrázky do stejného skriptu. | +| **Co když je můj obrázek JPEG místo PNG?** | Metoda `Image.load` podporuje JPEG, BMP, TIFF i PNG přímo. Stačí změnit příponu souboru. | +| **Jak zlepšit přesnost u skenů s nízkým kontrastem?** | Předzpracujte pomocí `Pillow` – zvýšte kontrast, aplikujte binarizaci nebo použijte `opencv` k vyrovnání. | +| **Je možné získat skóre důvěry pro každé slovo?** | `ocr_result` obsahuje `words` – každé slovo má atribut `confidence`, který můžete iterovat. | +| **Mohu to spustit na serveru bez grafického rozhraní?** | Rozhodně. `aocr` nemá žádné GUI závislosti, což ho činí ideálním pro CI pipeline. | + +--- + +## Další kroky a související témata + +Nyní, když víte **jak vytvořit OCR** a **extrahovat text z obrázku**, zvažte prozkoumání: + +* **Techniky předzpracování** – `load image for OCR` je jen první krok; použijte `opencv` k odšumu nebo zaostření. +* **Dávkové zpracování** – projděte adresář PNG souborů a vytvořte prohledávatelný archiv. +* **Podpora více jazyků** – přidejte jazykové balíčky do engine, pokud potřebujete číst francouzské nebo německé dokumenty. +* **Integrace s Elasticsearch** – indexujte extrahovaný text pro full‑textové vyhledávání napříč skenovanými zdroji. + +Každé z těchto rozšíření staví na základním vzoru, který jsme právě pokryli, takže přechod bude bezproblémový. + +--- + +## Závěr + +Během několika minut jsme odpověděli na otázku **jak vytvořit OCR**, které spolehlivě **extrahuje text z obrázku**, zejména PNG, a ukázali jsme vám, jak **načíst obrázek pro OCR**, použít **vlastní slovník** a **spustit OCR na PNG** bez jakýchkoli externích služeb. + +Vyzkoušejte skript, upravte slovník tak, aby odpovídal vašemu vlastnímu žargonu, a získáte pevný základ pro jakýkoli projekt digitalizace dokumentů. + +Pokud narazíte na problémy, zanechte komentář níže – rádi pomůžeme. A nezapomeňte sdílet své úspěšné příběhy; komunita se nejlépe učí z reálných příkladů. + +**Připravení automatizovat papírování?** Vezměte si kód, upravte ho a začněte dnes převádět pixely na prohledávatelný text! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/czech/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..772a036dc --- /dev/null +++ b/ocr/czech/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: jak extrahovat OCR z obrázků pomocí Pythonu – příklad OCR v Pythonu, + který ukazuje, jak načíst obrázek pro OCR a extrahovat text z účtenky. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: cs +og_description: jak extrahovat OCR z obrázků pomocí Pythonu. Naučte se příklad OCR + v Pythonu, načtěte obrázek pro OCR a během několika minut extrahujte text z účtenky. +og_title: Jak extrahovat OCR v Pythonu – kompletní průvodce +tags: +- OCR +- Python +- Image Processing +title: Jak extrahovat OCR v Pythonu – krok za krokem tutoriál +url: /cs/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# jak extrahovat OCR v Pythonu – kompletní průvodce + +Už jste se někdy zamysleli **jak extrahovat OCR** z rozmazaného účtenky nebo naskenované faktury? Nejste v tom sami — vývojáři často narazí na problém, když potřebují čistý, strojově čitelný text z obrázků. Dobrá zpráva? Pouhých několik řádků Pythonu vám umožní převést fotografii účtenky na vysoce spolehlivý, prohledávatelný text. + +V tomto tutoriálu projdeme **python OCR příklad**, který ukazuje **jak načíst obrázek pro OCR**, spustí engine a ponechá jen znaky, které splňují prahovou hodnotu důvěry 85 %. Na konci budete schopni **extrahovat text z účtenky** obrázků bez prohledávání dokumentace nebo hádání parametrů API. + +## Co budete potřebovat + +- Python 3.9 nebo novější (syntaxe, kterou používáme, funguje na 3.8+) +- Balíček `aocr` (nebo jakákoli OCR knihovna, která poskytuje třídu `OcrEngine`). Nainstalujte jej pomocí: + +```bash +pip install aocr +``` + +- Vzorový obrázek účtenky (`receipt.png`) umístěný ve složce, na kterou můžete odkazovat. +- Textový editor nebo IDE — VS Code, PyCharm nebo i jednoduchý notebook bude stačit. + +To je vše. Žádné těžkopádné frameworky, žádné externí služby, jen čistý Python. + +![Výsledek OCR s vysokou důvěrou – jak extrahovat OCR z účtenky](/images/ocr-high-confidence.png) + +*Alt text obrázku: jak extrahovat OCR z účtenky pomocí Python OCR* + +## Krok 1 – Vytvoření instance OCR enginu (jak extrahovat OCR) + +Prvním krokem je spustit OCR engine. Představte si ho jako mozek, který bude číst pixely za nás. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Proč?** Vytvoření instance `OcrEngine` vám poskytne čerstvý konfigurační objekt. Později můžete ladit jazykové modely, nastavení DPI nebo předzpracování — vše bez zásahu do hlavní smyčky zpracování. + +## Krok 2 – Načtení obrázku pro OCR + +Dále nasměrujeme engine na obrázek, který chceme analyzovat. Zde vstupuje do hry klíčové slovo **načíst obrázek pro OCR**. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Tip:** Pokud se váš obrázek nachází v jiném adresáři, použijte `os.path.join` k vytvoření platformově nezávislé cesty. + +**Proč načítat obrázek tímto způsobem?** Pomocná funkce `Image.load` načte soubor do formátu, který engine rozumí, a automaticky zpracuje běžné formáty (PNG, JPEG, TIFF). Přeskočení tohoto kroku nebo předání surových bajtů by vyvolalo `ValueError`. + +## Krok 3 – Spuštění OCR procesu + +Nyní skutečně spustíme OCR. Metoda `process` vrací bohatý objekt výsledku obsahující rozpoznané symboly, skóre důvěry a ohraničující rámečky. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Co obsahuje `ocr_result`?** Ve většině knihoven zahrnuje: + +- `text`: surový spojený řetězec. +- `symbol_confidences`: seznam n-tic `(char, confidence)`. +- `boxes`: souřadnice pro každý znak (užitečné pro vizuální ladění). + +Přístup k důvěře na úrovni jednotlivých znaků je nezbytný pro další krok. + +## Krok 4 – Zachování pouze vysoce důvěryhodných symbolů (≥ 85 %) + +Účtenka často obsahuje rozmazání, slabý tisk nebo šum na pozadí. Filtrováním nízkodůvěryhodných symbolů výrazně zlepšujeme následné parsování. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Proč 85 %?** Empiricky prahová hodnota kolem 0,85 vyvažuje recall a precision pro většinu tištěných účtenek. Pokud vám chybí čísla, snižte práh; pokud dostáváte nesmysly, zvýšte ho. + +## Krok 5 – Výstup vysoce důvěryhodného extrahovaného textu + +Nakonec vytiskneme (nebo uložíme) vyčištěný řetězec. To je jádro našeho workflow **extrahovat text z účtenky**. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Typický výstup vypadá takto: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Nyní můžete tento řetězec předat CSV zapisovači, databázi nebo jakémukoli dalšímu analytickému pipeline. + +## Kompletní, připravený ke spuštění skript + +Níže je kompletní úryvek kódu, který můžete zkopírovat a vložit do `ocr_receipt.py` a okamžitě spustit. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Uložte soubor, ujistěte se, že `receipt.png` existuje, a spusťte: + +```bash +python ocr_receipt.py +``` + +Měli byste vidět vyčištěný text účtenky vytištěný v konzoli. + +## Okrajové případy a scénáře „co‑když“ + +| Situation | Suggested Fix | +|-----------|----------------| +| **Velmi nízká důvěra napříč všemi** | Předzpracujte obrázek: zvýšte kontrast, převedte na odstíny šedi nebo použijte filtr odstraňující šum (`cv2.GaussianBlur`). | +| **Ne-latinské znaky** | Předávejte jazykový model do `OcrEngine` (např. `ocr_engine.language = "spa"` pro španělštinu). | +| **Více účtenek na jednom obrázku** | Spusťte OCR na celém obrázku, pak rozdělte výsledek pomocí regulárních výrazů detekujících `\n\n+` (dvojité zalomení řádku). | +| **Potřebujete také surový OCR text** | Uchovejte `ocr_result.text` vedle filtrované verze pro ladění. | + +Tyto varianty zajišťují, že vaše znalosti **jak používat OCR** se rozšiřují i mimo nejjednodušší případ. + +## Běžné úskalí (a jak se jim vyhnout) + +- **Zapomenout nainstalovat knihovnu** – `pip install aocr` musí úspěšně proběhnout před importem. +- **Použití nesprávného oddělovače cesty** ve Windows (`\` vs `/`). Použijte `os.path.join`. +- **Pevně zakódovaný práh důvěry** bez testování – vždy nejprve proveďte rychlou vizuální kontrolu na několika účtenkách. +- **Ignorování Unicode normalizace** – některé účtenky obsahují speciální pomlčky; spusťte `unicodedata.normalize('NFKC', text)`, pokud plánujete výstup ukládat. + +## Další kroky – Přesahování základů + +Nyní, když víte **jak extrahovat OCR** data z jedné účtenky, můžete chtít: + +1. **Dávkové zpracování složky s účtenkami** — procházet všechny soubory PNG/JPG a zapisovat každý výsledek do CSV. +2. **Integrace s databází** — uložit `high_confidence_text` do SQLite pro rychlé vyhledávání. +3. **Použití zpracování přirozeného jazyka** — použít regex nebo `dateutil` k získání dat, částek a daňových částek. +4. **Experimentovat s alternativními knihovnami** — `pytesseract`, `easyocr` nebo cloudové služby (Google Vision, Azure OCR), pokud potřebujete vícejazyčnou podporu nebo vyšší přesnost. + +Každé z těchto témat přirozeně zahrnuje naše sekundární klíčová slova: *python OCR example*, *extract text from receipt*, *load image for OCR*, a *how to use OCR*. + +## Závěr + +Právě jsme prošli kompletním **python OCR příkladem**, který ukazuje **jak extrahovat OCR** text z obrázku účtenky, filtrovat nízkodůvěryhodné symboly a výstupovat čisté výsledky. Kroky jsou jednoduché, kód je samostatný a přístup je dostatečně flexibilní pro rozšíření na větší projekty. + +Vyzkoušejte to na svých vlastních účtenkách, upravte prahovou hodnotu důvěry a poté přejděte na dávkové zpracování. Pokud narazíte na podivnosti — například slabé logo nebo neobvyklé písmo — pamatujte na výše uvedené tipy pro okrajové případy. Šťastné programování a ať jsou vaše OCR pipeline vždy přesné! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/czech/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..0bbccb537 --- /dev/null +++ b/ocr/czech/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-04-26 +description: 'jak na OCR v Pythonu: Naučte se extrahovat text z obrázku a číst TIFF + soubory v Pythonu pomocí základního příkladu OCR. Rychlý, spustitelný kód je zahrnut.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: cs +og_description: 'jak na OCR v Pythonu: krok za krokem průvodce, který ukazuje, jak + extrahovat text z obrázku, číst TIFF soubor v Pythonu a převést text naskenovaného + obrázku pomocí jednoduchého spustitelného skriptu.' +og_title: jak na OCR v Pythonu – Základní příklad OCR pro extrakci textu +tags: +- OCR +- Python +- Image Processing +title: jak na OCR v Pythonu – Základní příklad OCR pro extrakci textu +url: /cs/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to ocr python – Basic OCR Example for Extracting Text + +Už jste se někdy zamýšleli **jak provést OCR v Pythonu**, když máte na stole naskenovaný soubor TIFF? Nejste jediní, kdo se dívá na hromadu obrázkových souborů a ptá se: „Jak z toho dostanu slova?“ Dobrou zprávou je, že převést obrázek na prostý text je hračka s vhodnou knihovnou a několika jasnými kroky. + +V tomto tutoriálu projdeme **základní OCR příklad**, který načte soubor TIFF, vytáhne text a vypíše jej do konzole. Na konci budete přesně vědět, jak **extrahovat text z obrázku**, jak zacházet s vlastnostmi formátu TIFF a co upravit, pokud potřebujete **převést naskenovaný text obrázku** na něco užitečnějšího. Žádná skrytá magie – jen přímý Python, který můžete dnes zkopírovat‑vložit a spustit. + +## What You’ll Need + +Než se pustíme dál, ujistěte se, že máte: + +- Python 3.9+ nainstalovaný (nejlépe nejnovější stabilní verzi). +- OCR knihovnu instalovatelnou přes pip. V tomto průvodci použijeme fiktivní balíček `aocr`, který napodobuje populární nástroje jako Tesseract; později jej můžete nahradit `pytesseract` nebo `easyocr`. +- TIFF obrázek, který chcete zpracovat – pojmenujte jej `input.tiff` a umístěte do složky, na kterou budete v kódu odkazovat. +- Základní orientaci v příkazové řádce (jen pro instalaci balíčku). + +A to je vše. Žádné těžké závislosti, žádné Docker kontejnery, jen pár řádků kódu. + +## Step 1 – Install and Import Dependencies (how to ocr python) + +Nejprve nainstalujte OCR balíček. Otevřete terminál a spusťte: + +```bash +pip install aocr +``` + +Pokud dáváte přednost reálné knihovně, zaměňte `aocr` za `pytesseract` a nainstalujte samostatně Tesseract engine. + +Nyní importujte, co potřebujeme. Třída `Path` z `pathlib` nám poskytuje čistý způsob práce s cestami napříč operačními systémy. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Proč používat `Path`?* Protože abstrahuje rozdíly ve zpětných lomítcích (`/` vs `\`) a umožňuje spojovat adresáře, aniž byste se museli starat o podkladový OS. Ten malý detail často zachraňuje před hlavolamy, když později přesunete skript na CI server. + +## Step 2 – Create the OCR Engine Instance (basic ocr example) + +Dále vytvořte instanci OCR enginu. Představte si `OcrEngine` jako mozek, který bude číst obrázek a vracet znaky. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +Většina OCR knihoven umožňuje zde ladit jazyk, DPI nebo prahy důvěry. Pro tento **základní OCR příklad** zůstaneme u výchozích nastavení, ale později můžete prozkoumat `ocr_engine.config`, pokud potřebujete pracovat s vícejazyčnými dokumenty. + +## Step 3 – Load Your TIFF Image (read tiff file python) + +Tady přichází část **read tiff file python**. TIFF soubory mohou mít více stránek, ale `Image.load` načte první stránku ve výchozím nastavení – ideální pro jednostránkový sken. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Nahraďte `"YOUR_DIRECTORY"` skutečnou složkou, kde se nachází `input.tiff`. Pokud si nejste jisti, kde skript běží, `Path.cwd()` vypíše aktuální pracovní adresář – užitečné pro ladění problémů s cestami. + +## Step 4 – Run the OCR Process (extract text from image) + +Nyní se děje magie. Volání `process()` pošle obrázek skrz OCR pipeline a vrátí objekt s výsledkem. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Za scénou může engine převádět obrázek na odstíny šedi, aplikovat prahování a předávat jej neuronové síti. Nemusíte se starat o tyto kroky; knihovna je abstrahuje. + +## Step 5 – Print the Recognized Text (convert scanned image text) + +Nakonec výstup textu. V reálných projektech byste ho pravděpodobně zapisovali do souboru nebo databáze, ale výpis do konzole udržuje příklad přehledný. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Po spuštění skriptu byste měli vidět něco jako: + +``` +Hello, world! +This is a sample scanned document. +``` + +Pokud výstup vypadá poškozeně, zkontrolujte, že zdrojový obrázek je ostrý a že jazyk OCR odpovídá textu. + +## Full Working Script + +Sestavením všech částí získáte kompletní, připravený program: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Expected Output + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Pokud potřebujete **převést naskenovaný text obrázku** do prohledávatelného PDF, můžete `ocr_result.text` předat generátoru PDF jako `reportlab` – ale to už je samostatný tutoriál. + +## Common Pitfalls & Pro Tips + +- **Nízké rozlišení skenů**: OCR selhává pod 150 DPI. Pokud je váš TIFF rozmazaný, nejprve jej up‑samplujte pomocí Pillow (`Image.open(...).resize(...)`). +- **Více stránek**: Pro více‑stránkové TIFFy iterujte přes `Image.load_multi_page()` (pokud vaše knihovna podporuje) a výsledky spojte. +- **Podpora jazyků**: Mnoho enginů má jako výchozí jazyk angličtinu. Nastavte `ocr_engine.language = "spa"` pro španělštinu, například. +- **Zpracování bílých znaků**: OCR často přidává nadbytečné zalomení řádků. Použijte `str.splitlines()` nebo regulární výrazy pro vyčištění výstupu. +- **Výkon**: Pro hromadné zpracování znovu použijte jedinou instanci `OcrEngine` místo vytváření nové pro každý soubor. + +## Extending the Example + +Nyní, když ovládáte **how to ocr python** pro jeden obrázek, zvažte další kroky: + +1. **Dávkové zpracování** – Procházejte adresář s TIFFy a zapisujte každý výsledek do souboru `.txt`. +2. **Integrace s Pandas** – Ukládejte extrahovaný text spolu s metadaty pro rychlou analýzu. +3. **Hybridní přístup** – Kombinujte OCR s NLP knihovnami jako `spaCy` pro extrakci entit (jména, data, částky) ze skenovaných faktur. +4. **Alternativní formáty souborů** – Zaměňte `Image.load` za `Image.from_bytes` pro zpracování obrázků přicházejících z API nebo databáze. + +Všechny tyto rozšíření staví na jádru **extrahovat text z obrázku** a **převést naskenovaný text obrázku** do podoby, kterou stroje pochopí. + +## Conclusion + +Prošli jsme jasným, end‑to‑end **základním OCR příkladem**, který ukazuje **how to ocr python**, **read tiff file python** a **extrahovat text z obrázku** pomocí několika řádků kódu. Skript je samostatný, obsahuje ošetření chyb a přímo vypisuje výsledek, což z něj dělá solidní základ pro jakýkoli projekt, který potřebuje převést naskenované dokumenty na editovatelný text. + +Klidně experimentujte – zaměňte OCR backend, upravte předzpracování nebo napojte výstup do dalšího workflow. Možnosti jsou neomezené, když můžete spolehlivě **převést naskenovaný text obrázku** do prohledávatelných dat. + +Máte otázky ohledně okrajových případů, jazykových balíčků nebo ladění výkonu? Zanechte komentář níže a šťastné programování! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/czech/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..a97225013 --- /dev/null +++ b/ocr/czech/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,181 @@ +--- +category: general +date: 2026-04-26 +description: Jak spustit OCR na naskenovaném formuláři, naučit se, jak předzpracovat + obrázek ke snížení šumu, a rychle extrahovat text z obrázku. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: cs +og_description: Jak spustit OCR na naskenovaných dokumentech, předzpracovat obrázky, + snížit šum a efektivně extrahovat text. +og_title: Jak spustit OCR a předzpracovat obrázky – rychlý průvodce +tags: +- OCR +- image processing +- Python +title: Jak spustit OCR a předzpracovat obrázky – Extrahovat text ze skenovaných formulářů +url: /cs/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak spustit OCR – Kompletní průvodce pro extrakci textu z obrázků + +Už jste se někdy zamýšleli **jak spustit OCR** na nepořádném naskenovaném formuláři a získat čistý, prohledávatelný text? Nejste v tom sami. V mnoha reálných projektech je surový obrázek plný špiček, nerovnoměrného osvětlení a dalších zvláštností, které způsobují, že OCR fungující „out‑of‑the‑box“ selhává. + +Dobrá zpráva? Pouhých několik řádků Pythonu a chytrý předzpracovatelský pipeline vám umožní dramaticky zvýšit přesnost rozpoznávání, **snížit šum** a získat přesně ta slova, která potřebujete. V tomto tutoriálu projdeme každý krok – od načtení obrázku po vytištění finálního řetězce – takže si odnesete připravený úryvek kódu, který můžete přizpůsobit fakturám, účtenkám nebo jakémukoli naskenovanému dokumentu. + +## Co si vytvoříte + +- Instanci `OcrEngine`, která komunikuje s podkladovou OCR knihovnou. +- Řetězec předzpracování, který **binarizuje** obrázek a aplikuje **median blur** pro vyhlazení špiček. +- Jednoduché volání `process()`, které vrací objekt s atributem `text`, extrahovaný řetězec. + +Na konci budete mít samostatný skript, který můžete spustit na libovolném souboru obrázku a okamžitě uvidíte extrahovaný text v konzoli. + +## Požadavky + +- Python 3.9+ (syntaxe použitá zde odpovídá nejnovější stabilní verzi). +- Fiktivní balíček `aocr` – představte si jej jako tenký obal kolem Tesseract nebo jakéhokoli moderního OCR enginu. Nainstalujte jej pomocí `pip install aocr`. +- Naskenovaný obrázek (`scanned_form.jpg`) umístěný ve složce, na kterou můžete odkazovat. + +Pokud používáte skutečnou OCR knihovnu jako `pytesseract`, můžete zaměnit `OcrEngine` za odpovídající třídu – vše ostatní zůstane stejné. + +![](how-to-run-ocr-example.png "příklad, jak spustit OCR, zobrazující naskenovaný formulář a extrahovaný text") + +*Alt text: jak spustit OCR na naskenovaném dokumentu a zobrazit extrahovaný text.* + +--- + +## Krok 1: Jak spustit OCR – Inicializace enginu + +Než může engine něco číst, musíme vytvořit instanci. Představte si `OcrEngine` jako mozek, který později interpretuje vizuální data. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Proč je to důležité:** Vytvoření instance enginu nastaví interní modely, načte jazykové balíčky a připraví běhové prostředí. Přeskočení tohoto kroku obvykle vede k chybě `NoneType`, když později zavoláte `process()`. + +--- + +## Krok 2: Jak předzpracovat obrázek – Načtěte svůj naskenovaný formulář + +Nyní, když je mozek připraven, nasytíme jej obrázkem. Obrázek může být v libovolném formátu podporovaném `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Tip:** Používejte absolutní cesty během vývoje, abyste se vyhnuli překvapením typu „soubor nenalezen“, když skript běží z jiného pracovního adresáře. + +--- + +## Krok 3: Jak snížit šum – Aplikovat binarizaci a median blur + +Surové skeny často obsahují rozptýlené tečky, nerovnoměrné pozadí nebo slabé stíny. Dva klasické triky – **binarizace** a **median blur** – vyčistí obrázek, aniž by poškozovaly hrany definující znaky. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Hlubší pohled + +- **Binarizace**: Hodnota `threshold=180` říká algoritmu: „Všechno, co je jasnější než 180, se stane bílým; vše ostatní se změní na černé.“ Upravit toto číslo, pokud je váš sken příliš tmavý nebo světlý. +- **Median Blur**: Poloměr `2` znamená, že filtr se dívá na okno 5×5 pixelů a nahradí středový pixel mediánovou hodnotou. Tím se vyhladí izolované špičky a zároveň se zachovají tahy písmen. + +> **Okrajový případ:** Pokud má váš dokument barevné zvýraznění, jednoduchý binární práh jej může smazat. V takovém případě zvažte použití `aocr.ImageFilters.adaptive_threshold()` – tento přizpůsobí práh lokálně po celém obrázku. + +--- + +## Krok 4: Jak extrahovat text – Spustit OCR proces + +S čistým obrázkem v ruce konečně necháme engine udělat své kouzlo. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Co se děje pod kapotou?** Engine spustí neuronovou síť (nebo starší vzorový matcher) nad maticí pixelů, přeloží každý rozpoznaný glyf do znaků Unicode a sestaví je do řádků a odstavců. + +--- + +## Krok 5: Jak extrahovat text – Vytisknout výsledek + +Objekt `ocr_result` poskytuje pohodlný atribut `text`. Podívejme se, co jsme získali. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Očekávaný výstup + +Pokud naskenovaný formulář obsahuje: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Měli byste vidět něco jako: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Všimněte si, jak krok předzpracování odstranil rozptýlené tečky, které dříve změnily „Amount“ na „Am0unt“. To je síla **snížení šumu** před OCR. + +--- + +## Časté problémy a jak je opravit + +| Příznak | Pravděpodobná příčina | Rychlá oprava | +|---------|-----------------------|---------------| +| Zkreslené znaky (např. “@#%”) | Obrázek je příliš tmavý nebo příliš světlý | Upravte `threshold` v `binarize()`; zkuste `adaptive_threshold`. | +| Chybějící slova | Šum stále přítomen | Zvyšte `radius` pro `median_blur` nebo přidejte filtr `gaussian_blur`. | +| Špatný jazyk (např. anglická písmena se změní na čínská) | Načten nesprávný jazykový balíček | Při vytváření `OcrEngine()` předávejte `language="eng"`, pokud knihovna podporuje. | +| Pomalé zpracování velkých souborů | Vysoké rozlišení | Nejprve zmenšete obrázek: `aocr.ImageFilters.resize(width=1200)` před binarizací. | + +--- + +## Dále – Další kroky a související témata + +- **Dávkové zpracování**: Zabalte výše uvedenou logiku do smyčky, která automaticky zpracuje desítky souborů. +- **Strukturovaný výstup**: Použijte regulární výrazy na `ocr_result.text` k získání polí jako datum nebo částka. +- **Alternativní knihovny**: Zaměňte `aocr` za `pytesseract` – kód se mění jen v kroku inicializace enginu. +- **Jak předzpracovat obrázek pro PDF**: Převěďte každou stránku PDF na obrázek a poté aplikujte stejný pipeline. + +Tyto rozšíření vám umožní škálovat řešení od jednoho formuláře po podnikovou úroveň pipeline pro ingestování dokumentů. + +--- + +## Závěr + +Probrali jsme **jak spustit OCR** od začátku do konce, ukázali **jak předzpracovat obrázek** k **snížení šumu** a demonstrovali **jak extrahovat text z obrázku** pomocí čistého, reprodukovatelného skriptu. Hlavní výsledek? Několik jednoduchých filtrů – binarizace a median blur – může proměnit špinavý sken na spolehlivý zdroj dat, čímž vám ušetří hodiny ručního čištění. + +Vyzkoušejte skript na svých vlastních dokumentech, upravte prahy a sledujte, jak se přesnost zvyšuje. Až budete připraveni, prozkoumejte dávkové zpracování nebo integrujte výstup do databáze pro prohledávatelné archivy. Šťastné kódování a ať je vaše OCR vždy přesné! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/czech/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..ab354f713 --- /dev/null +++ b/ocr/czech/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-04-26 +description: Naučte se, jak nastavit licenci v Aspose OCR a jak ověřit licenci pomocí + stručného skriptu v Pythonu. Postupujte podle krok‑za‑krokem instrukcí pro bezproblémovou + aktivaci. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: cs +og_description: Jak nastavit licenci v Aspose OCR a jak ověřit licenci pomocí Pythonu. + Získejte kompletní, spustitelný příklad během několika minut. +og_title: Jak nastavit licenci v Aspose OCR – rychlý průvodce pro Python +tags: +- Aspose OCR +- Python +- Licensing +title: Jak nastavit licenci v Aspose OCR – Rychlý průvodce v Pythonu +url: /cs/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak nastavit licenci v Aspose OCR – Rychlý průvodce pro Python + +Už jste se někdy zamýšleli **jak nastavit licenci** pro Aspose OCR, aniž byste si trhali vlasy? Nejste v tom jediní. Většina vývojářů narazí na problém hned při prvním pokusu odemknout plný výkon knihovny a setkají se s vodoznakem „Trial version“. Dobrá zpráva je, že oprava je poměrně jednoduchá a můžete ji ověřit okamžitě. + +V tomto tutoriálu vás provedeme **nastavením licence** *a* **validací licence** pomocí malého Python skriptu. Na konci budete mít funkční příklad, který vypíše „License OK“, a také několik tipů, jak se vyhnout běžným úskalím. + +## Požadavky + +- Nainstalovaný Python 3.8+ (kód funguje na 3.9, 3.10 a novějších). +- Aktivní licenční soubor Aspose OCR pro Java (nebo .NET) – obvykle pojmenovaný `Aspose.OCR.Java.lic`. +- Balíček `asposeocr` nainstalovaný pomocí `pip install asposeocr`. +- Základní znalost spouštění Python skriptů z příkazové řádky. + +Máte vše připravené? Skvělé — pojďme na to. + +## Jak nastavit licenci v Aspose OCR (Krok 1) + +Nastavení licence je v podstatě operace o třech řádcích, ale každý řádek má svůj účel. Rozložíme to, abyste pochopili *proč* děláme to, co děláme. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Proč importovat `License`?** +Třída `License` je brána, která říká motoru Aspose OCR, že jste za produkt zaplatili. Bez vytvoření instance bude knihovna nadále předpokládat, že používáte trial verzi. + +**Proč vytvořit instanci `License`?** +Instanciace vám poskytne objekt (`license_obj`), který může uchovávat cestu k vašemu souboru `.lic` a následně ji použít během běhu. + +## Jak nastavit licenci v Aspose OCR – Poskytnutí licenčního souboru + +Nyní nasměrujeme objekt na skutečný licenční soubor na disku. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Tipy a triky:** + +- **Absolutní vs. relativní cesta** – Pokud spouštíte skript z jiného adresáře, absolutní cesta (`C:/licenses/...`) eliminuje chyby „file not found“. +- **Proměnné prostředí** – Uložení cesty do env var (`OCR_LICENSE_PATH`) udržuje tajemství mimo správu zdrojového kódu: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Jak validovat licenci – Ověření, že funguje + +Nastavení licence je jen polovina boje; musíte potvrdit, že knihovna licenci přijala. Právě zde se hodí validační krok. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Pokud licenční soubor chybí, je poškozený nebo neodpovídá, `validate()` vyvolá výjimku. Zachycení této výjimky vám poskytne čistý způsob, jak hlásit problémy. + +## Kompletní funkční příklad (všechny kroky dohromady) + +Níže je kompletní, připravený ke spuštění skript. Spusťte jej z terminálu (`python set_license.py`) a měli byste vidět vytištěné „License OK“. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Očekávaný výstup** + +``` +License OK +``` + +Pokud se něco pokazí, uvidíte něco jako: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Tato zpráva vám přesně řekne, co opravit — žádné hádání není potřeba. + +## Jak validovat licenci – Řešení běžných okrajových případů + +I přes výše uvedený skript vás může několik scénářů překvapit: + +| Situace | Co se stane | Jak opravit | +|-----------|--------------|------------| +| **Chybná cesta k souboru** | `FileNotFoundError` from `set_license` | Zkontrolujte cestu; použijte `os.path.abspath()` pro ladění. | +| **Špatný typ souboru** | Validation throws “Invalid license format” | Ujistěte se, že používáte soubor `.lic`, který odpovídá edici vašeho produktu. | +| **Expirovaná licence** | Validation raises “License expired” | Obnovte licenci u podpory Aspose a nahraďte soubor. | +| **Běh v omezeném prostředí** (např. AWS Lambda) | Permission error | Udělejte čtecí přístup k adresáři nebo vložte licenci do balíčku nasazení. | + +Tip: zabalte volání `set_license` do vlastního `try/except` bloku, pokud chcete rozlišovat mezi chybami „file not found“ a „invalid format“. + +## Vizualizovaný souhrn + +![how to set license in Aspose OCR example](/images/aspose-ocr-license.png "how to set license in Aspose OCR example") + +*Snímek obrazovky ukazuje, že skript po úspěšné aktivaci vypisuje „License OK“. * + +## Běžné úskalí a osvědčené postupy + +- **Nikdy neukládejte licenční soubor do veřejného repozitáře.** Místo toho použijte proměnné prostředí nebo správce tajemství (GitHub Secrets, Azure Key Vault). +- **Validujte co nejdříve.** Umístění `license_obj.validate()` hned po `set_license` zachytí chyby před zahájením jakékoli OCR práce. +- **Znovu použijte objekt License.** Licenci je potřeba nastavit jen jednou na proces; následné volání OCR automaticky použije aktivovanou licenci. +- **Logujte cestu k licenci (bez názvu souboru) v produkci**, aby se usnadnilo ladění, aniž byste odhalili samotný soubor. + +## Další kroky – Rozšíření vašeho OCR workflow + +Nyní, když víte **jak nastavit licenci** a **jak validovat licenci**, můžete přejít k hlavním OCR úkolům: + +- **jak načíst obrázek** – `Image.load("sample.png")` +- **jak extrahovat text** – `ocr_engine.recognize(image)` +- **jak konfigurovat OCR možnosti** – upravte nastavení `OcrEngine` pro jazyk, přesnost atd. + +Každé z těchto témat staví na úspěšně licencovaném enginu, takže už nikdy neuvidíte vodotisk trial verze. + +## Závěr + +Probrali jsme celý proces **nastavení licence** pro Aspose OCR, ukázali **validaci licence** a poskytli vám kompletní spustitelný skript, který vypíše „License OK“. Díky předběžnému zpracování chyb a používání proměnných prostředí udržíte svou aplikaci bezpečnou i robustní. + +Máte další otázky ohledně OCR, licencování nebo integrace Aspose do většího pipeline? 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/czech/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..e3435180a --- /dev/null +++ b/ocr/czech/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: jak používat OCR na naskenovaných PDF, extrahovat text z PDF, spustit + OCR na PDF a převést naskenované PDF na prohledávatelné soubory během několika kroků +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: cs +og_description: 'jak používat OCR v Pythonu: naučte se, jak extrahovat text z PDF, + spustit OCR na PDF a převést naskenované PDF na prohledávatelné dokumenty.' +og_title: Jak používat OCR – Rychlý průvodce extrakcí textu z PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: jak použít OCR – extrahovat text z PDF pomocí Pythonu +url: /cs/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# jak použít OCR – Extrahovat text z PDF pomocí Pythonu + +Už jste se někdy zamysleli **jak použít OCR** k vytažení textu ze skenovaného kontraktu, účtenky nebo e-knihy? Nejste v tom sami. V mnoha reálných projektech je PDF, které obdržíte, jen obrázek a bez OCR nemůžete jeho obsah vyhledávat, indexovat ani analyzovat. + +V tomto tutoriálu projdeme kompletním, spustitelným příkladem, který ukazuje **jak použít OCR**, jak **extrahovat text z PDF** a proč byste mohli chtít **převést skenované PDF** soubory na prohledávatelné dokumenty. Také se podíváme na jemné umění **načítání PDF jako obrázku**, aby OCR engine viděl každou stránku jasně. + +> **Rychlý náhled:** Na konci budete mít skript, který načte více‑stránkové PDF, spustí OCR na každé stránce a vytiskne rozpoznaný text – bez nutnosti externích služeb. + +## Co budete potřebovat + +- Python 3.9+ (jakákoli recentní verze funguje) +- `aocr` package (nebo jakákoli kompatibilní OCR knihovna, která poskytuje `OcrEngine` a `Image.load`) +- Skenovaný PDF soubor, který chcete zpracovat (např. `contract.pdf`) +- Přiměřené množství RAM (≈ 200 MB na 100‑stránkové PDF je obvykle v pořádku) + +Pokud jste ještě nenainstalovali OCR knihovnu, spusťte: + +```bash +pip install aocr +``` + +> **Tip:** Použijte virtuální prostředí, aby vaše závislosti byly přehledné. + +## Krok 1: Načíst PDF jako obrázek – První část skládačky + +Než může proběhnout jakékoli OCR, musí být PDF reprezentováno jako obrázek. Zde přichází do hry sekundární klíčové slovo **load pdf as image**. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Proč je to důležité:* `aocr.Image.load` interně rasterizuje každou stránku PDF do bitmapy, kterou OCR engine dokáže pochopit. Pokud tento krok přeskočíte a předáte surové PDF, engine vyhodí chybu, protože očekává pixelová data, nikoli vektorová. + +> **Poznámka:** Cesta může být absolutní nebo relativní. Ujistěte se, že soubor je čitelný; jinak narazíte na `FileNotFoundError`. + +## Krok 2: Spustit OCR na PDF – Převod pixelů na znaky + +Nyní, když PDF existuje jako obrázek, můžeme konečně **spustit OCR na PDF**. Následující úryvek zpracuje každou stránku najednou: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Co se děje pod kapotou?* `process_all_pages` prochází rasterizované stránky, aplikuje OCR model a vrací seznam objektů výsledků – jeden na stránku. Každý výsledek obsahuje rozpoznaný text, skóre důvěry a ohraničující rámečky (pokud je budete později potřebovat). + +## Krok 3: Extrahovat text z PDF – Vytahování řetězců + +S výsledky OCR v ruce se extrahování čistého textu stává triviálním. Projdeme stránky a vytiskneme výstup, čímž demonstrujeme sekundární klíčové slovo **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Očekávaný výstup** (zkrácený pro stručnost): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Pokud potřebujete text v jediném řetězci, stačí jej spojit: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Nyní jste úspěšně **extrahovali text z PDF** pomocí OCR. + +## Krok 4: Převést skenované PDF – Udělat jej prohledávatelným + +Mnoho nástrojů v následném zpracování (např. Elasticsearch nebo SharePoint) očekává prohledávatelné PDF místo čistého textového výpisu. Můžete vložit výstup OCR zpět do původního PDF, čímž efektivně **convert scanned PDF** na prohledávatelnou verzi. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Proč to dělat?* Prohledávatelné PDF zachovává původní rozložení a obrázky a zároveň umožňuje výběr textu a indexaci – výhra pro lidi i stroje. + +## Časté úskalí a okrajové případy + +### Vícestránková PDF větší než paměť + +Pokud má vaše PDF stovky stránek, načtení všeho najednou může vyčerpat RAM. Knihovna `aocr` podporuje líné načítání: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Pak zpracovávejte stránky po jedné: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Špatná kvalita skenů + +Přesnost OCR dramaticky klesá u rozmazaných nebo nízkokontrastních skenů. Před předáním obrázku engine zvažte předzpracování: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Podpora jazyků + +Ve výchozím nastavení engine předpokládá angličtinu. Pro **run OCR on PDF** v jiném jazyce nastavte kód jazyka: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Ujistěte se, že odpovídající jazykový model je nainstalován. + +## Kompletní funkční příklad + +Spojením všeho dohromady získáte samostatný skript, který můžete vložit do souboru nazvaného `ocr_pdf.py` a spustit okamžitě: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Spusťte jej takto: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Uvidíte text vytištěný do konzole a pokud jste zadali `-o`, objeví se prohledávatelné PDF vedle původního souboru. + +## Tipy a osvědčené postupy + +- **Batch processing:** Při zpracování desítek PDF obalte výše uvedenou logiku smyčkou a zaznamenávejte úspěch/selhání každého souboru. +- **Confidence filtering:** Každý `page_result` obsahuje metriku důvěry. Odstraňte nebo označte stránky s nízkou důvěrou pro ruční revizi. +- **Parallelism:** Pokud má váš CPU více jader, zvažte použití `concurrent.futures` k paralelnímu zpracování stránek – jen dbejte na využití paměti. +- **Version lock:** API `aocr` se může vyvíjet. Uzamkněte verzi v `requirements.txt` (např. `aocr==2.3.1`), abyste se vyhnuli nekompatibilním změnám. + +## Závěr + +Prošli jsme **jak použít OCR** k **extrahování textu z PDF**, **spuštění OCR na PDF**, **načítání PDF jako obrázku** a dokonce **convert scanned PDF** do prohledávatelného formátu. Kód je kompletní, vysvětlení pokrývají jak *co*, tak *proč*, a nyní máte znovupoužitelný vzor pro jakýkoli projekt pracující s PDF založenými na obrázcích. + +Co dál? Zkuste předat extrahovaný text do pipeline pro zpracování přirozeného jazyka, indexovat prohledávatelná PDF pomocí Elasticsearch, nebo experimentovat s různými OCR backendy jako Tesseract či Azure Computer Vision. Možnosti jsou neomezené a nástroje máte přímo po ruce. + +Šťastné programování a ať jsou vaše PDF vždy prohledávatelná! + +![příklad jak použít OCR](/images/ocr_workflow.png "jak použít 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/dutch/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/dutch/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..d62058bc9 --- /dev/null +++ b/ocr/dutch/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-04-26 +description: Extraheer headertekst met OCR in Python Aspose OCR. Leer hoe je snel + en betrouwbaar tekst uit een specifiek gebied van afbeeldingen kunt extraheren. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: nl +og_description: Haal headertekst snel uit met OCR. Deze gids laat zien hoe je tekst + uit een specifiek gebied kunt extraheren met Python Aspose OCR in slechts een paar + regels. +og_title: Koptekst extraheren met OCR in Python Aspose OCR – Volledige handleiding +tags: +- OCR +- Python +- Aspose +title: Koptekst extraheren met OCR in Python Aspose OCR – Stap‑voor‑stap gids +url: /nl/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Kopteksttekst OCR – Volledige Python Aspose OCR Tutorial + +Heb je ooit **headertekst OCR** moeten **extraheren** van een gescande factuur, maar wilde je niet de hele pagina verwerken? Je bent niet de enige. In veel real‑world pipelines bevat de header de meest kritische informatie—factuurnummer, datum, leveranciersnaam—dus het snel eruit halen kan veel downstream werk besparen. + +In deze tutorial laten we je een kant‑klaar oplossing zien die **specifieke gebiedstekst extraheren** met behulp van de **Python Aspose OCR** bibliotheek. Geen vage verwijzingen naar externe documentatie, alleen een compleet script, een duidelijke uitleg van elke regel, en tips die je morgen echt kunt gebruiken. + +## Wat je zult leren + +- Hoe je het Aspose OCR‑pakket voor Python installeert en importeert. +- Hoe je een afbeelding laadt en een **region of interest (ROI)** definieert die de header isoleert. +- Hoe je de OCR‑engine op die ROI uitvoert en schone tekst ophaalt. +- Veelvoorkomende valkuilen (bijv. DPI‑mismatches) en hoe je ze kunt vermijden. +- Hoe de verwachte output eruitziet zodat je kunt verifiëren dat alles werkt. + +Aan het einde kun je deze code in elk project gebruiken dat **headertekst OCR moet extraheren** van facturen, bonnen, of elk document met een voorspelbare lay-out. + +## Vereisten + +- Python 3.8 of nieuwer geïnstalleerd op je machine. +- Een geldige Aspose OCR voor Python‑licentie (de gratis proefversie werkt voor evaluatie). +- Een afbeeldingsbestand (`invoice.png`) dat een duidelijk header‑gebied bevat. +- Basiskennis van Python‑functies en bestandspaden. + +> **Pro tip:** Als je test met een low‑resolution scan, verhoog dan de DPI voordat je het aan Aspose OCR doorgeeft – dit verbetert de nauwkeurigheid drastisch. + +--- + +## Stap 1: Installeer het Aspose OCR‑pakket + +Eerst voeg je de bibliotheek toe aan je omgeving. Het officiële pakket is `aspose-ocr`. Voer dit één keer uit: + +```bash +pip install aspose-ocr +``` + +Als je een virtuele omgeving gebruikt (sterk aanbevolen), activeer deze dan vóór het installeren. Dit zorgt ervoor dat het pakket niet conflicteert met andere projecten. + +## Stap 2: Importeer vereiste klassen en laad de afbeelding + +Nu brengen we de benodigde klassen in ons script en laden we de factuurafbeelding. Let op het gebruik van **full paths**; relatieve paden werken ook, maar absolute paden verwijderen ambiguïteit wanneer het script op een server draait. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Waarom dit belangrijk is:** Het initialiseren van `OcrEngine` één keer en hergebruiken voor meerdere afbeeldingen is efficiënter dan elke keer een nieuwe engine te maken. + +## Stap 3: Definieer het header‑gebied (ROI) + +De header bevindt zich meestal bovenaan de pagina, maar de exacte coördinaten kunnen variëren. Hier definiëren we een rechthoek (`x`, `y`, `width`, `height`) die de header bedekt. Pas de getallen aan om overeen te komen met de lay-out van je document. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Hoe het werkt:** Door `set_roi` aan te roepen beperkt de OCR‑engine zijn analyse tot dit rechthoek, wat de verwerking aanzienlijk versnelt en ruis van de rest van de pagina vermindert. + +## Stap 4: Pas de ROI toe en voer OCR uit + +Nu vertellen we de engine zich te concentreren op het header‑gebied en vervolgens het OCR‑proces uit te voeren. Het resultaatobject bevat de herkende tekst en extra metadata (vertrouwensscores, taal, enz.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Als de OCR mislukt (bijv. niet‑ondersteund afbeeldingsformaat), zal `ocr_result` `None` zijn. Een snelle guard‑clausule kan je script robuuster maken: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Stap 5: Haal de geëxtraheerde header‑tekst op en print deze + +Tot slot halen we de tekst uit het resultaatobject en tonen we deze. Je kunt het ook naar een bestand schrijven of doorgeven aan een andere functie voor verdere parsing. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Verwachte output + +Wanneer alles correct is ingesteld, zou je iets moeten zien als: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Als de output er rommelig uitziet, controleer dan de ROI‑coördinaten en zorg ervoor dat de bronafbeelding hoog contrast heeft. + +--- + +## Variaties & randgevallen + +### 1. Meerdere headers in één document + +Soms bevat een PDF meerdere pagina's, elk met een eigen header. Loop over de pagina's en pas de ROI per pagina aan: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Omgaan met scheve scans + +Als de factuur licht gedraaid is, pre‑process de afbeelding met OpenCV voordat je deze aan Aspose OCR doorgeeft: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Taalinstellingen wijzigen + +Aspose OCR kan de taal automatisch detecteren, maar je kunt Engels forceren voor snellere resultaten: + +```python +ocr_engine.language = "en" +``` + +--- + +## Volledig werkend voorbeeld + +Hieronder staat het volledige script dat je kunt copy‑pasten in een bestand genaamd `extract_header.py`. Vergeet niet het afbeeldingspad te vervangen door jouw eigen pad. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Het uitvoeren van dit script zou de header‑regels exact moeten weergeven zoals eerder getoond. Voel je vrij om de `roi`‑waarden aan te passen aan jouw specifieke factuursjabloon. + +## Veelgestelde vragen beantwoord + +**Q: Werkt dit direct met PDF's?** +A: Niet direct out‑of‑the‑box. Converteer elke PDF‑pagina naar een afbeelding (bijv. met `pdf2image`) en geef de PNG/JPG aan het script. + +**Q: Wat als mijn header een logo en tekst samen bevat?** +A: Aspose OCR richt zich op tekstuele inhoud. Voor logo's kun je een aparte beeldherkenningsbibliotheek gebruiken zoals `opencv` of `tesseract` met een aangepast model. + +**Q: Is de gratis proefversie beperkt?** +A: De proefversie staat tot 10 pagina's per maand toe. Voor productie, koop een licentie om de limiet te verwijderen en hogere nauwkeurigheidsinstellingen te ontgrendelen. + +## Conclusie + +Je hebt nu een **volledige, citeerbare** gids voor **headertekst OCR extraheren** met **Python Aspose OCR**. De tutorial behandelde alles van installatie tot het omgaan met randgevallen, en gaf je een herbruikbare functie die je in grotere workflows kunt gebruiken. + +Vervolgens kun je **specifieke gebiedstekst extraheren** verkennen voor andere zones zoals voetteksten of regel‑items, of deze aanpak combineren met een PDF‑naar‑afbeelding converter om volledige‑document‑pijplijnen te automatiseren. De mogelijkheden zijn eindeloos—onthoud alleen om je ROI‑coördinaten nauwkeurig te houden en je afbeeldingen in hoge resolutie. + +Heb je een lastige lay-out? Deel deze in de reacties en we passen de ROI samen aan. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/dutch/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..cf1fcccae --- /dev/null +++ b/ocr/dutch/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-04-26 +description: Tekst extraheren uit een afbeelding met Aspose OCR in Python. Leer hoe + je tekst kunt extraheren, een afbeelding naar tekst kunt converteren en een afbeelding + kunt laden voor OCR met meertalige ondersteuning. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: nl +og_description: tekst direct uit een afbeelding extraheren. Deze gids laat zien hoe + je tekst kunt extraheren, een afbeelding naar tekst kunt converteren en een afbeelding + kunt laden voor OCR met Aspose OCR in Python. +og_title: tekst uit afbeelding halen met Python – Complete meertalige OCR‑tutorial +tags: +- OCR +- Python +- Aspose +title: tekst uit afbeelding halen met Python – Meertalige OCR‑gids +url: /nl/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# tekst uit afbeelding extraheren met Python – Meertalige OCR-gids + +Heb je ooit **tekst uit afbeelding** moeten extraheren, maar wist je niet welke bibliotheek gemengde‑taalpagina's aankan? Je bent niet de enige. In veel real‑world toepassingen—denk aan factuurverwerking, social‑media monitoring of meertalige documentarchivering—kom je afbeeldingen tegen die zowel Latijnse als Cyrillische tekens bevatten. + +Het goede nieuws? Met Aspose OCR voor Python kun je **tekst extraheren**, **afbeelding naar tekst converteren** en **afbeelding laden voor OCR** in slechts een paar regels, terwijl de engine automatisch de taal detecteert. In deze tutorial lopen we een volledig, uitvoerbaar voorbeeld door, leggen we uit waarom elke stap belangrijk is, en behandelen we een paar randgevallen die je onderweg kunt tegenkomen. + +> **Wat je mee krijgt** +> * Een kant‑klaar script dat tekst haalt uit een gemengde‑taal PNG. +> * Inzicht in hoe je meertalige OCR configureert in Python. +> * Tips voor het omgaan met grote bestanden, verschillende afbeeldingsformaten en het debuggen van veelvoorkomende valkuilen. + +## Vereisten + +- Python 3.8 of nieuwer (de code gebruikt f‑strings). +- `asposeocr`‑pakket geïnstalleerd (`pip install asposeocr`). +- Een afbeeldingsbestand (bijv. `mixed_lang.png`) dat tekst bevat in meer dan één schrift. +- Basiskennis van Python‑imports en object‑georiënteerde API’s. + +Geen zware afhankelijkheden, geen externe services—slechts één pip‑installatie en je bent klaar om te gaan. + +--- + +## Stap 1 – Installeer & importeer de Aspose OCR‑bibliotheek + +Voordat we **afbeelding laden voor OCR** kunnen, hebben we de bibliotheek zelf nodig. Het pakket wordt geleverd met de kern‑OCR‑engine en een lichtgewicht afbeeldingslader. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Waarom dit belangrijk is*: Het importeren van de specifieke klassen houdt de namespace netjes en maakt de latere code duidelijker. Als je alleen `asposeocr` importeert, moet je elke aanroep kwalificeren (`aocr.OcrEngine()`), wat rommelig kan worden. + +--- + +## Stap 2 – Maak de OCR‑engine en schakel meertalige detectie in + +Aspose OCR kan automatisch de taal‑(en) in de afbeelding raden. Het instellen van `Language.AUTO` dekt Latijn, Cyrillisch, Arabisch en nog veel meer. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Pro tip*: Als je de taalset van tevoren kent, kun je `Language.ENGLISH` of `Language.RUSSIAN` toewijzen voor een kleine prestatie‑boost. Maar voor echt gemengde documenten is `AUTO` de veiligste keuze. + +--- + +## Stap 3 – Laad de afbeelding die je wilt verwerken + +Hier laden we **afbeelding voor OCR**. Aspose ondersteunt PNG, JPEG, BMP, TIFF en zelfs PDF‑pagina's die als afbeeldingen worden behandeld. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Tip**: Als je afbeelding groter is dan 2 MB, overweeg dan om deze van tevoren te verkleinen. Grote afbeeldingen verhogen het geheugenverbruik en kunnen de detectiestap vertragen. + +--- + +## Stap 4 – Voer het OCR‑proces uit en vang het resultaat op + +Het aanroepen van `process()` doet het zware werk: tekstdetectie, lay-outanalyse en taaldecodering. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +Het geretourneerde `ocr_result`‑object bevat verschillende handige eigenschappen: + +| Eigenschap | Beschrijving | +|------------|--------------| +| `text` | Platte tekenreeks van de herkende tekst (wat je het vaakst zult gebruiken). | +| `confidence` | Algemene vertrouwensscore (0‑100). | +| `lines` | Lijst van `OcrLine`‑objecten met positionele data (handig voor PDF’s). | + +--- + +## Stap 5 – Toon de geëxtraheerde tekst + +Tot slot printen we de output. In een echte applicatie zou je deze naar een database kunnen schrijven of doorvoeren naar een vertaal‑API. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Verwachte output** (voorbeeld voor een gemengde‑taal afbeelding): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Als je onleesbare tekens ziet, controleer dan of de afbeelding niet corrupt is en of je de nieuwste versie van `asposeocr` gebruikt (v23.7 op het moment van schrijven). + +--- + +## Stap 6 – Volledig script dat je kunt copy‑pasten + +Alles samenvoegen elimineert de “waar begint de code?”‑verwarring. Sla dit op als `multilingual_ocr.py` en voer het uit vanaf de commandoregel. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Voer het uit: + +```bash +python multilingual_ocr.py +``` + +Je zou de geëxtraheerde strings in de console moeten zien verschijnen. Dat is alles—**afbeelding naar tekst converteren** met slechts een handvol regels. + +--- + +## Veelgestelde vragen & rand‑case handling + +### Wat als mijn afbeelding handgeschreven tekst bevat? +Aspose OCR is afgestemd op gedrukte tekst. Handgeschreven scripts hebben vaak een dedicated model nodig (bijv. Azure Read of Google Vision). Je kunt nog steeds `Language.AUTO` proberen, maar verwacht een lagere vertrouwensscore. + +### Hoe verbeter ik de nauwkeurigheid bij ruisende scans? +1. Pre‑process de afbeelding (binarisatie, despeckling). +2. Verhoog de DPI tot minimaal 300 ppi voordat je deze aan de engine geeft. +3. Stel expliciet `ocr_engine.config.deskew = True` in als de afbeelding scheef staat. + +```python +ocr_engine.config.deskew = True +``` + +### Kan ik tekst uit een PDF extraheren zonder deze eerst naar een afbeelding te converteren? +Ja—Aspose OCR kan PDF‑pagina's direct openen: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Onthoud wel dat elke pagina intern als afbeelding wordt behandeld, dus dezelfde kwaliteitsoverwegingen gelden. + +--- + +## Conclusie + +Je hebt nu een solide, end‑to‑end recept om **tekst uit afbeelding** te extraheren met Aspose OCR in Python, compleet met meertalige ondersteuning. Het script laat zien hoe je **afbeelding laadt voor OCR**, **afbeelding naar tekst converteert** en de meest voorkomende valkuilen aanpakt. + +Vanaf hier kun je: + +- De functie integreren in een webservice die gebruikersuploads accepteert. +- De geëxtraheerde tekst koppelen aan een taal‑detectiebibliotheek om deze naar de juiste vertaal‑engine te routeren. +- Experimenteren met `ocr_engine.config`‑opties (bijv. `max_recognition_time`, `text_orientation`) om de prestaties fijn af te stemmen. + +Veel programmeerplezier, en moge je OCR‑pijplijnen altijd accuraat zijn! + +--- + +![Screenshot of extracted multilingual text – extract text from image example](image-placeholder.png "voorbeeld van tekst uit afbeelding") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/dutch/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..c3db3f35a --- /dev/null +++ b/ocr/dutch/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: Hoe je documenten in batch OCR't en tekst uit scans haalt in Python. + Leer stap‑voor‑stap batchverwerking met OcrEngine voor JSON‑output. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: nl +og_description: Hoe je batch‑OCR uitvoert op je gescande bestanden en tekst uit scans + haalt in één script. Complete code, tips en afhandeling van randgevallen. +og_title: Hoe batch-OCR uit te voeren – Snelle Python-gids +tags: +- OCR +- Python +- Automation +title: Hoe batch-OCR – Tekst efficiënt uit scans extraheren +url: /nl/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe batch-OCR uit te voeren – Tekst uit scans efficiënt extraheren + +Heb je je ooit afgevraagd **hoe je batch-OCR** kunt toepassen op een berg gescande PDF's zonder je verstand te verliezen? Je bent niet de enige—ontwikkelaars vragen voortdurend, *“Hoe kan ik tekst uit scans in één keer extraheren?”* Het goede nieuws is dat een paar regels Python die saaie klus kunnen omtoveren tot een soepel, geautomatiseerd pipeline. In deze tutorial lopen we stap voor stap door een complete, kant‑klaar oplossing die **tekst uit scans** extraheert, de resultaten opslaat als JSON, en je aan het einde een snelle sanity‑check geeft. Geen externe services, geen tovenarij—gewoon pure Python, de `OcrEngine`‑klasse, en een beetje map‑beheer. + +## Wat je na afloop hebt + +- Een volledig functioneel script dat **batch-OCR** uitvoert over elke map met afbeeldingen. +- Duidelijke uitleg over *waarom* elke regel bestaat, niet alleen *wat* hij doet. +- Tips voor het omgaan met lege mappen, niet‑afbeeldingsbestanden en grote batches. +- Een manier om te verifiëren dat de JSON‑output daadwerkelijk de geëxtraheerde tekst bevat. + +### Vereisten (het absolute minimum) + +| Vereiste | Waarom het belangrijk is | +|-------------|----------------| +| Python 3.8+ | Moderne syntaxis & type‑hints | +| `OcrEngine` library (or a compatible wrapper) | Kern‑OCR‑functionaliteit | +| A directory with scanned image files (PNG, JPG, TIFF) | Invoergegevens | +| Write permissions for the output folder | JSON‑resultaten opslaan | + +Als je deze al hebt, geweldig—laten we erin duiken. + +![how to batch OCR workflow](image-placeholder.png){alt="workflow voor batch OCR"} + +## Stap 1 – Initialiseer de OCR‑engine (hoe batch-OCR) + +Voordat we iets kunnen verwerken, hebben we een OCR‑engine‑instance nodig. Beschouw het als het “brein” dat elke afbeelding leest en tekst genereert. Het één keer initialiseren en hergebruiken gedurende de hele batch is het meest efficiënte patroon. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Waarom dezelfde instantie hergebruiken?** +> Het creëren van een nieuwe engine voor elk bestand zou telkens zware modellen in het geheugen laden, waardoor de batch drastisch vertraagt. Eén instantie houdt het model in RAM en laat je duizenden afbeeldingen verwerken zonder merkbare vertraging. + +## Stap 2 – Verwijs naar je scans‑map (tekst uit scans extraheren) + +Je scans staan ergens op de schijf. Laten we het script vertellen waar ze te vinden zijn. Het gebruik van absolute paden voorkomt “bestand niet gevonden” verrassingen wanneer het script vanuit een andere werkmap wordt gestart. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Pro tip:** +> Als je op Windows werkt, werken schuine strepen (`/`) prima met `os.path.abspath`, zodat je backslashes niet hoeft te escapen. + +## Stap 3 – Kies waar de JSON‑resultaten naartoe moeten + +Je wilt waarschijnlijk een nette map voor de OCR‑resultaten. Het scheiden van output en bron maakt het later gemakkelijk om op te ruimen of de JSON in een andere pipeline te voeren. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Waarom de map programmatisch aanmaken?** +> Het garandeert dat het script niet crasht als de map ontbreekt, en `exist_ok=True` maakt de operatie idempotent—voer het script meerdere keren uit zonder fouten. + +## Stap 4 – Voer het batch‑proces uit (hoe batch-OCR) + +Nu het hart van de zaak: `ocr_engine` instrueren om door elk bestand in `input_dir` te lopen, OCR uit te voeren, en JSON weg te schrijven naar `output_dir`. De `format="json"`‑vlag vertelt de engine om het resultaat te serialiseren in een gestructureerde vorm die downstream‑tools waarderen. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Wat gebeurt er onder de motorkap? + +1. **Bestandsdetectie** – De engine scant `input_folder` recursief en negeert verborgen bestanden. +2. **Bestandsvalidatie** – Alleen ondersteunde afbeeldingsextensies (`.png`, `.jpg`, `.tif`, etc.) worden aan het OCR‑model gevoed. +3. **OCR‑uitvoering** – Elke afbeelding wordt naar de OCR‑engine gestuurd; tekst, vertrouwensscores en lay-outgegevens worden vastgelegd. +4. **JSON‑serialisatie** – Het resultaat wordt weggeschreven naar een bestand met dezelfde basisnaam maar een `.json`‑extensie in `output_folder`. + +> **Afhandeling van randgevallen:** +> - **Lege map:** De engine logt “No files found” en keert netjes terug. +> - **Beschadigde afbeelding:** Hij slaat het bestand over, registreert een foutmelding in een `batch_errors.log`, en gaat door. +> - **Grote batch (10k+ bestanden):** Het geheugenverbruik blijft laag omdat elke afbeelding onafhankelijk wordt verwerkt. + +## Stap 5 – Bevestig dat de conversie voltooid is + +Een eenvoudige `print`‑statement geeft directe feedback in de console. Voor productiepipelines kun je dit vervangen door een logging‑call of een e‑mailnotificatie. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Wanneer je die regel ziet, kun je veilig de `json_output`‑map inspecteren. Elk JSON‑bestand zal er ongeveer zo uitzien: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Je kunt deze JSON‑bestanden nu invoeren in een database, een zoekindex, of een andere downstream‑analytics‑tool. + +## Veelgestelde vragen (en snelle antwoorden) + +**Q: Wat als ik PDF's moet verwerken in plaats van afbeeldingen?** +A: Converteer elke PDF‑pagina eerst naar een afbeelding (bijv. met `pdf2image`) en plaats de resulterende PNG/JPG‑bestanden in `input_dir`. De batch‑OCR‑logica blijft ongewijzigd. + +**Q: Kan ik het uitvoerformaat wijzigen naar platte tekst?** +A: Zeker. Vervang `format="json"` door `format="txt"` en de engine schrijft een `.txt`‑bestand dat alleen de geëxtraheerde tekst bevat. + +**Q: Mijn scans staan in meerdere sub‑mappen—zal het script recursief zoeken?** +A: Ja. `batch_process` doorloopt standaard de mapboom. Als je een platte output wilt, stel `flatten=True` in (indien de bibliotheek dit ondersteunt) of verwerk de JSON‑bestandsnamen achteraf. + +**Q: Hoe ga ik om met niet‑Latijnse scripts?** +A: Initialise `OcrEngine` met een taalparameter, bijv. `OcrEngine(lang="spa+eng")`. De batch‑lus zelf vereist geen aanpassingen. + +## Pro‑tips & veelvoorkomende valkuilen + +- **Batch‑grootte is belangrijk:** Als je CPU‑pieken ziet, beperk het proces met een eenvoudige `time.sleep(0.1)` tussen bestanden. +- **Logging:** Vervang de `print`‑call door Python’s `logging`‑module om tijdstempels en foutniveaus vast te leggen. +- **Bestandsnaam‑conflicten:** Als twee scans dezelfde basisnaam hebben maar in verschillende sub‑mappen staan, zullen de JSON‑bestanden elkaar overschrijven. Voeg een hash van het relatieve pad toe aan de uitvoernaam om dit te voorkomen. +- **Geheugenlekken:** Sommige OCR‑back‑ends houden native resources vast. Roep `ocr_engine.close()` aan het einde van je script aan als de bibliotheek een opruimmethode biedt. + +## Volledig script – Klaar om te kopiëren & plakken + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Verwachte console‑output** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Je kunt de JSON verifiëren door een willekeurig bestand in `json_output` te openen met een teksteditor of door het in Python te laden: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Je zou de ruwe OCR‑geëxtraheerde tekst in de console moeten zien verschijnen. + +## Afronding + +We hebben zojuist **hoe je batch-OCR** kunt toepassen op een volledige map met gescande afbeeldingen en **tekst uit scans** kunt extraheren naar schone, machine‑leesbare JSON‑bestanden. De aanpak is opzettelijk simpel: initialiseert de engine één keer, wijs een map aan, en laat de bibliotheek het zware werk doen. Vanaf hier kun je: + +- Plug the JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/dutch/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..41d80f1e2 --- /dev/null +++ b/ocr/dutch/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-26 +description: Hoe OCR snel en betrouwbaar te maken. Leer tekst uit een afbeelding te + extraheren, een afbeelding te laden voor OCR, en OCR uit te voeren op een PNG met + een aangepast woordenboek. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: nl +og_description: Hoe OCR te maken in Python en tekst uit een afbeelding te extraheren. + Deze gids laat zien hoe je een afbeelding laadt voor OCR, OCR uitvoert op PNG en + een aangepast woordenboek gebruikt. +og_title: Hoe OCR te maken in Python – Snelle Tekstextractie +tags: +- OCR +- Python +- Image Processing +title: Hoe OCR in Python te maken – Tekst uit afbeelding extraheren +url: /nl/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe OCR te maken in Python – Stapsgewijze gids + +Heb je je ooit afgevraagd **hoe je OCR kunt maken** die je gescande PDF's, screenshots of handgeschreven notities kan lezen? Je bent niet de enige. In veel real‑world projecten moeten we *tekst uit afbeelding* bestanden extraheren, maar de kant‑en‑klaar engines struikelen vaak over domeinspecifieke woorden. + +In deze tutorial zie je een compleet, uitvoerbaar voorbeeld dat een afbeelding laadt voor OCR, een aangepast woordenboek toepast, en uiteindelijk **OCR uitvoeren op PNG** bestanden. Aan het einde kun je tekst uit elke afbeelding extraheren en de engine aanpassen aan je eigen terminologie. + +## Wat deze tutorial behandelt + +* Het installeren van het kleine maar krachtige `aocr` pakket (of een andere compatibele bibliotheek). +* Het configureren van een **aangepast woordenboek** zodat termen zoals `aspocorp` of `licensekey` worden herkend. +* **Een afbeelding laden voor OCR**, of het nu een PNG, JPEG of een gescande PDF-pagina is. +* Het uitvoeren van het OCR-proces en het afdrukken van het resultaat. + +Geen externe documentatielinks, alleen een zelfstandige oplossing die je vandaag kunt kopiëren‑plakken en uitvoeren. + +### Vereisten + +* Python 3.8 of nieuwer (de code gebruikt f‑strings). +* Basiskennis van de commandoregel – je typt een paar `pip install` commando's. +* Een afbeeldingsbestand (`technical_doc.png` in het voorbeeld) ergens geplaatst dat je kunt refereren. + +Als je aan deze drie punten voldoet, ben je klaar om te beginnen. + +--- + +## Stap 1: Installeer de OCR-bibliotheek + +Eerst hebben we een OCR-engine nodig die een programmeerbaar configuratie‑object ondersteunt. Het `aocr` pakket is een lichtgewicht wrapper rond een native OCR-engine en werkt goed voor demo's. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Pro tip:** Als je Windows gebruikt en een compilatiefout krijgt, probeer dan `pip install aocr‑binary` dat kant‑en‑klaar wheels levert. + +### Waarom deze bibliotheek installeren? + +`aocr` geeft ons directe toegang tot een `config` object waarin we een **aangepast woordenboek** kunnen injecteren. Dat is de geheime saus om de nauwkeurigheid op niche‑vocabularia te verbeteren. + +--- + +## Stap 2: Maak de OCR-engine‑instantie aan & voeg een aangepast woordenboek toe + +Nu starten we de engine en vertellen we welke woorden als bekend moeten worden beschouwd. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Waarom een aangepast woordenboek belangrijk is + +Standaard OCR-modellen zijn getraind op generieke corpora. Wanneer het model “aspocorp” ziet, kan het het splitsen in “aspo corp” of letters volledig weglaten. Door een aangepaste lijst te voeden, sturen we de herkenner naar de exacte spelling die we nodig hebben, waardoor de post‑processing inspanning drastisch wordt verminderd. + +--- + +## Stap 3: Laad de afbeelding die je wilt verwerken + +Hier laden we **afbeelding voor OCR**. De `Image.load` methode accepteert een pad‑string en bepaalt automatisch het bestandstype. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Randgeval:** Als je bron een meer‑pagina PDF is, converteer dan elke pagina eerst naar PNG (bijv. met `pdf2image`) en voer ze één‑voor‑één aan de engine. + +### Tips voor betere afbeeldingskwaliteit + +* Houd de resolutie minimaal 300 dpi. +* Zorg dat de afbeelding rechtop staat; roteer met `Pillow` indien nodig. +* Converteer gekleurde scans naar grijswaarden om ruis te verminderen. + +--- + +## Stap 4: Voer het OCR-proces uit op het PNG‑bestand + +Met de engine geconfigureerd en de afbeelding geladen, voeren we eindelijk **OCR uitvoeren op PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +De `process()`‑aanroep retourneert een object dat de herkende tekst, vertrouwensscores en begrenzingskaders voor elk woord bevat. + +--- + +## Stap 5: Output de herkende tekst + +De eenvoudigste manier om te zien wat de engine heeft gevonden, is het afdrukken van het `text` attribuut. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Verwachte output + +Als `technical_doc.png` de zin *“The Aspocorp licensekey expires on 2025‑12‑31.”* bevat, zou de console moeten weergeven: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Merk op hoe het aangepaste woordenboek de merknaam intact hield—iets wat een standaard OCR mogelijk had vervormd. + +--- + +## Volledig werkend voorbeeld (Kopiëren‑Plakken klaar) + +Hieronder staat het volledige script, klaar om op te slaan als `run_ocr.py`. Vervang gewoon het placeholder‑pad door de locatie van je afbeelding. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Run it from the terminal: + +```bash +python run_ocr.py +``` + +Je zou de geëxtraheerde tekst in de console moeten zien verschijnen, precies zoals getoond in het eerdere voorbeeld. + +--- + +## Veelgestelde vragen (FAQ) + +| Vraag | Antwoord | +|----------|--------| +| **Kan ik tekst extraheren uit een gescande PDF?** | Ja. Converteer eerst elke pagina naar PNG (of TIFF), en voer vervolgens de afbeeldingen aan hetzelfde script. | +| **Wat als mijn afbeelding een JPEG is in plaats van PNG?** | De `Image.load` methode ondersteunt JPEG, BMP, TIFF en PNG direct. Verander gewoon de bestandsextensie. | +| **Hoe verbeter ik de nauwkeurigheid bij scans met weinig contrast?** | Pre‑process met `Pillow` – verhoog het contrast, pas binarisatie toe, of gebruik `opencv` om scheefstand te corrigeren. | +| **Is er een manier om vertrouwensscores voor elk woord te krijgen?** | `ocr_result` bevat `words` – elk woord heeft een `confidence` attribuut dat je kunt itereren. | +| **Kan ik dit draaien op een headless server?** | Absoluut. `aocr` heeft geen GUI‑afhankelijkheden, waardoor het perfect is voor CI‑pipelines. | + +--- + +## Volgende stappen & gerelateerde onderwerpen + +Nu je weet **hoe je OCR kunt maken** en **tekst uit afbeelding** bestanden kunt extraheren, overweeg dan om te verkennen: + +* **Pre‑processing technieken** – `load image for OCR` is slechts de eerste stap; gebruik `opencv` om te denoisen of te verscherpen. +* **Batchverwerking** – loop over een map met PNG's om een doorzoekbaar archief te genereren. +* **Meertalige ondersteuning** – voeg taalpakketten toe aan de engine als je Franse of Duitse documenten moet lezen. +* **Integratie met Elasticsearch** – index de geëxtraheerde tekst voor full‑text zoeken over gescande assets. + +Elk van deze uitbreidingen bouwt voort op het kernpatroon dat we net hebben behandeld, dus je zult de overgang moeiteloos vinden. + +--- + +## Samenvatting + +In een handvol minuten hebben we beantwoord **hoe je OCR kunt maken** die betrouwbaar **tekst uit afbeelding** bestanden extraheert, vooral PNG's, en we hebben je laten zien hoe je **afbeelding voor OCR laadt**, een **aangepast woordenboek** toepast, en **OCR uitvoert op PNG** zonder externe services. + +Probeer het script, pas het woordenboek aan om je eigen jargon te matchen, en je hebt een solide basis voor elk document‑digitaliseringsproject. + +Als je tegen problemen aanloopt, laat dan een reactie achter—ik help graag. En vergeet niet je succesverhalen te delen; de community leert het beste van real‑world voorbeelden. + +**Klaar om je papierwerk te automatiseren?** Pak de code, pas deze aan, en begin vandaag nog met het omzetten van pixels naar doorzoekbare tekst! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/dutch/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..f0b34bb2d --- /dev/null +++ b/ocr/dutch/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-04-26 +description: hoe OCR uit afbeeldingen te extraheren met Python – een Python OCR‑voorbeeld + dat laat zien hoe je een afbeelding laadt voor OCR en tekst van een bon extraheert. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: nl +og_description: Hoe OCR uit afbeeldingen te extraheren met Python. Leer een Python + OCR‑voorbeeld, laad een afbeelding voor OCR, en extraheer tekst van een bon in enkele + minuten. +og_title: hoe OCR te extraheren in Python – Complete gids +tags: +- OCR +- Python +- Image Processing +title: Hoe OCR in Python te extraheren – Stapsgewijze tutorial +url: /nl/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hoe ocr te extraheren in Python – Complete gids + +Heb je je ooit afgevraagd **hoe je ocr kunt extraheren** van een wazige bon of een gescande factuur? Je bent niet de enige—ontwikkelaars lopen constant tegen muren aan wanneer ze schone, machinaal‑leesbare tekst uit afbeeldingen nodig hebben. Het goede nieuws? Met slechts een paar regels Python kun je een foto van een bon omzetten in hoog‑vertrouwelijke, doorzoekbare tekst. + +In deze tutorial lopen we een **python ocr voorbeeld** door dat laat zien **hoe je een afbeelding laadt voor ocr**, de engine uitvoert, en alleen de tekens behoudt die een vertrouwensdrempel van 85 % halen. Aan het einde kun je **tekst uit bon**‑afbeeldingen extraheren zonder door documentatie te hoeven speuren of API‑parameters te raden. + +## Wat je nodig hebt + +- Python 3.9 of nieuwer (de syntax die we gebruiken werkt op 3.8+) +- Het `aocr`‑pakket (of een andere OCR‑bibliotheek die een `OcrEngine`‑klasse biedt). Installeer het met: + +```bash +pip install aocr +``` + +- Een voorbeeld‑bonafbeelding (`receipt.png`) geplaatst in een map die je kunt refereren. +- Een teksteditor of IDE—VS Code, PyCharm, of zelfs een eenvoudige notebook volstaat. + +Dat is alles. Geen zware frameworks, geen externe services, alleen pure Python. + +![High‑confidence OCR result – how to extract ocr from a receipt](/images/ocr-high-confidence.png) + +*Afbeeldings‑alt‑tekst: hoe ocr te extraheren uit een bon met Python OCR* + +## Stap 1 – Maak de OCR‑engine‑instantie (hoe ocr te extraheren) + +Het eerste wat we doen is een OCR‑engine opstarten. Beschouw het als het brein dat de pixels voor ons leest. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Waarom?** Het instantieren van `OcrEngine` geeft je een vers configuratie‑object. Later kun je taalmodellen, DPI‑instellingen of pre‑processing stappen aanpassen—allemaal zonder de kernverwerkingslus aan te raken. + +## Stap 2 – Laad de afbeelding voor OCR + +Vervolgens wijzen we de engine op de afbeelding die we willen analyseren. Hier komt het **load image for ocr**‑keyword van pas. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tip:** Als je afbeelding zich in een andere map bevindt, gebruik dan `os.path.join` om een platform‑onafhankelijk pad te bouwen. + +**Waarom de afbeelding op deze manier laden?** De helper `Image.load` leest het bestand in een formaat dat de engine begrijpt, en behandelt gangbare formaten (PNG, JPEG, TIFF) automatisch. Deze stap overslaan of ruwe bytes doorgeven zou een `ValueError` veroorzaken. + +## Stap 3 – Voer het OCR‑proces uit + +Nu voeren we daadwerkelijk de OCR uit. De `process`‑methode retourneert een rijk resultaatobject met herkende symbolen, vertrouwensscores en begrenzings‑boxen. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Wat bevat `ocr_result`?** In de meeste bibliotheken omvat het: + +- `text`: de ruwe aaneengeschakelde string. +- `symbol_confidences`: een lijst van `(char, confidence)`‑tuples. +- `boxes`: coördinaten voor elk teken (handig voor visuele debugging). + +Toegang hebben tot per‑teken‑vertrouwen is essentieel voor de volgende stap. + +## Stap 4 – Houd alleen hoog‑vertrouwelijke symbolen (≥ 85 %) + +Een bon heeft vaak vlekken, vage afdruk of achtergrondruis. Door lage‑vertrouwelijke symbolen te filteren, verbeteren we de downstream‑parsing drastisch. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Waarom 85 %?** Empirisch gezien biedt een drempel rond 0.85 een goede balans tussen recall en precisie voor de meeste gedrukte bonnen. Als je ontbrekende cijfers ziet, verlaag dan de drempel; als je onzinnige tekst krijgt, verhoog hem. + +## Stap 5 – Output de hoog‑vertrouwelijke geëxtraheerde tekst + +Tot slot printen (of slaan we) we de opgeschoonde string op. Dit is de kern van onze **extract text from receipt**‑workflow. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Typische output ziet er als volgt uit: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Je kunt deze string nu doorgeven aan een CSV‑schrijver, een database, of elke downstream‑analytics‑pipeline. + +## Volledig, kant‑klaar script + +Hieronder staat de complete code‑snippet die je kunt kopiëren‑plakken in `ocr_receipt.py` en direct kunt uitvoeren. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Sla het bestand op, zorg dat `receipt.png` bestaat, en voer uit: + +```bash +python ocr_receipt.py +``` + +Je zou de opgeschoonde bontekst in de console moeten zien verschijnen. + +## Randgevallen & Wat‑als‑scenario's + +| Situatie | Aanbevolen oplossing | +|-----------|----------------------| +| **Zeer lage vertrouwensscores overal** | Pre‑process de afbeelding: verhoog contrast, converteer naar grijswaarden, of pas een denoising‑filter toe (`cv2.GaussianBlur`). | +| **Niet‑Latijnse tekens** | Geef een taalmodel door aan `OcrEngine` (bijv. `ocr_engine.language = "spa"` voor Spaans). | +| **Meerdere bonnen in één afbeelding** | Voer OCR uit op de volledige afbeelding, splits vervolgens het resultaat met reguliere expressies die `\n\n+` (dubbele regeleinden) detecteren. | +| **De ruwe OCR‑tekst ook nodig** | Houd `ocr_result.text` naast de gefilterde versie voor debugging. | + +Deze variaties zorgen ervoor dat je **how to use OCR**‑kennis verder reikt dan het eenvoudigste geval. + +## Veelvoorkomende valkuilen (en hoe ze te vermijden) + +- **Vergeten de bibliotheek te installeren** – `pip install aocr` moet slagen voordat je importeert. +- **Het verkeerde pad‑scheidingsteken gebruiken** op Windows (`\` vs `/`). Gebruik `os.path.join`. +- **De vertrouwensdrempel hard‑coderen** zonder te testen – voer altijd een snelle visuele controle uit op een paar bonnen eerst. +- **Unicode‑normalisatie negeren** – sommige bonnen bevatten speciale streepjes; voer `unicodedata.normalize('NFKC', text)` uit als je de output wilt opslaan. + +## Volgende stappen – Verder gaan dan de basis + +Nu je weet **hoe ocr te extraheren** uit één bon, kun je: + +1. **Batch‑verwerking van een map bonnen** – loop over alle PNG/JPG‑bestanden en schrijf elk resultaat naar een CSV. +2. **Integreren met een database** – sla `high_confidence_text` op in SQLite voor snelle opzoekingen. +3. **Natuurlijke‑taal‑parsing toepassen** – gebruik regex of `dateutil` om data, totalen en btw‑bedragen te halen. +4. **Experimenteren met alternatieve bibliotheken** – `pytesseract`, `easyocr`, of cloud‑services (Google Vision, Azure OCR) als je meertalige ondersteuning of hogere nauwkeurigheid nodig hebt. + +Elk van deze onderwerpen verwerkt vanzelf onze secundaire zoekwoorden: *python ocr example*, *extract text from receipt*, *load image for ocr*, en *how to use OCR*. + +## Conclusie + +We hebben zojuist een volledige **python ocr example** doorlopen die laat zien **hoe ocr te extraheren** uit een bonafbeelding, lage‑vertrouwelijke symbolen filtert, en schone resultaten oplevert. De stappen zijn simpel, de code is zelf‑voorzienend, en de aanpak is flexibel genoeg om zich aan te passen aan grotere projecten. + +Probeer het met je eigen bonnen, pas de vertrouwensdrempel aan, en schaal vervolgens op naar batch‑verwerking. Als je tegen eigenaardigheden aanloopt—zoals een vaag logo of een ongewoon lettertype—onthoud dan de bovenstaande randgevallen‑tips. Veel programmeerplezier, en moge je OCR‑pijplijnen altijd accuraat 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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/dutch/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..2e043d238 --- /dev/null +++ b/ocr/dutch/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-04-26 +description: 'hoe OCR in Python: Leer tekst uit een afbeelding te extraheren en een + TIFF‑bestand te lezen met Python met een basis‑OCR‑voorbeeld. Snelle, uitvoerbare + code inbegrepen.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: nl +og_description: 'hoe OCR in Python: Een stapsgewijze gids die laat zien hoe je tekst + uit een afbeelding haalt, een TIFF‑bestand in Python leest en gescande afbeeldings­tekst + converteert met een eenvoudig, uitvoerbaar script.' +og_title: hoe OCR in Python – Basis OCR-voorbeeld voor het extraheren van tekst +tags: +- OCR +- Python +- Image Processing +title: hoe OCR met Python – Basis OCR‑voorbeeld voor het extraheren van tekst +url: /nl/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hoe ocr python – Basis OCR-voorbeeld voor het extraheren van tekst + +Heb je je ooit afgevraagd **how to ocr python** wanneer je een gescande TIFF op je bureau hebt liggen? Je bent niet de enige die naar een hoop afbeeldingsbestanden staart en zich afvraagt: “Hoe haal ik de woorden hieruit?” Het goede nieuws is dat het omzetten van een afbeelding naar platte tekst een fluitje van een cent is met de juiste bibliotheek en een paar duidelijke stappen. + +In deze tutorial lopen we een **basic OCR example** stap voor stap door die een TIFF‑bestand leest, de tekst extraheert en deze naar de console print. Aan het einde weet je precies hoe je **extract text from image** bestanden kunt verwerken, hoe je de eigenaardigheden van TIFF‑formaten aanpakt, en wat je moet aanpassen als je **convert scanned image text** naar iets bruikbaars wilt omzetten. Geen verborgen magie—gewoon rechttoe rechtaan Python die je kunt copy‑paste en vandaag nog kunt uitvoeren. + +## Wat je nodig hebt + +- Python 3.9+ geïnstalleerd (de nieuwste stabiele release is het beste). +- Een via pip te installeren OCR‑bibliotheek. Voor deze gids gebruiken we een fictief `aocr`‑pakket dat populaire tools zoals Tesseract nabootst; je kunt het later vervangen door `pytesseract` of `easyocr`. +- Een TIFF‑afbeelding die je wilt verwerken – noem deze `input.tiff` en plaats hem in een map die je in de code zult refereren. +- Basiskennis van de commandoregel (alleen om het pakket te installeren). + +Dat is alles. Geen zware afhankelijkheden, geen Docker‑containers, slechts een paar regels code. + +## Stap 1 – Installeer en importeer afhankelijkheden (how to ocr python) + +Eerst, haal het OCR‑pakket. Open een terminal en voer uit: + +```bash +pip install aocr +``` + +Als je de voorkeur geeft aan een echte bibliotheek, vervang `aocr` door `pytesseract` en installeer de Tesseract‑engine apart. + +Importeer nu wat we nodig hebben. De `Path`‑klasse van `pathlib` biedt ons een nette manier om met bestandspaden te werken op verschillende besturingssystemen. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Waarom `Path` gebruiken?* Omdat het de schuine strepen (`/` vs `\`) abstraheert en je mappen kunt samenvoegen zonder je zorgen te maken over het onderliggende besturingssysteem. Dat kleine detail bespaart vaak hoofdpijn wanneer je later het script naar een CI‑server verplaatst. + +## Stap 2 – Maak een OCR‑engine‑instantie (basic ocr example) + +Vervolgens start je de OCR‑engine. Beschouw `OcrEngine` als het brein dat de afbeelding leest en tekens uitspuwt. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +De meeste OCR‑bibliotheken laten je hier taal, DPI of vertrouwensdrempels aanpassen. Voor dit **basic OCR example** blijven we bij de standaardinstellingen, maar je kunt later `ocr_engine.config` verkennen als je meertalige documenten moet verwerken. + +## Stap 3 – Laad je TIFF‑afbeelding (read tiff file python) + +Hier komt het **read tiff file python**‑gedeelte om de hoek kijken. TIFF‑bestanden kunnen meerdere pagina’s bevatten, maar `Image.load` pakt standaard de eerste pagina—perfect voor een enkel‑pagina scan. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Vervang `"YOUR_DIRECTORY"` door de daadwerkelijke map die `input.tiff` bevat. Als je niet zeker weet waar het script wordt uitgevoerd, geeft `Path.cwd()` de huidige werkmap weer—handig voor het debuggen van padproblemen. + +## Stap 4 – Voer het OCR‑proces uit (extract text from image) + +Nu gebeurt de magie. Het aanroepen van `process()` stuurt de afbeelding door de OCR‑pipeline en retourneert een resultaatobject. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Achter de schermen kan de engine de afbeelding naar grijstinten converteren, drempelwaarden toepassen en deze aan een neuraal netwerk voeren. Je hoeft die stappen niet te beheren; de bibliotheek abstraheert ze. + +## Stap 5 – Print de herkende tekst (convert scanned image text) + +Tot slot, geef de tekst weer. In echte projecten zou je deze waarschijnlijk naar een bestand of een database schrijven, maar afdrukken houdt het voorbeeld overzichtelijk. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Wanneer je het script uitvoert, zou je iets moeten zien als: + +``` +Hello, world! +This is a sample scanned document. +``` + +Als de output er rommelig uitziet, controleer dan of de bronafbeelding duidelijk is en of de OCR‑taal overeenkomt met de tekst. + +## Volledig werkend script + +Alles bij elkaar genomen, hier is het volledige, kant‑klaar script: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Verwachte output + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Als je **convert scanned image text** naar een doorzoekbare PDF wilt omzetten, kun je `ocr_result.text` doorsturen naar een PDF‑generator zoals `reportlab`—maar dat is een eigen tutorial. + +## Veelvoorkomende valkuilen & Pro‑tips + +- **Low‑resolution scans**: OCR heeft moeite onder 150 DPI. Als je TIFF wazig is, schaal deze eerst op met Pillow (`Image.open(...).resize(...)`). +- **Multiple pages**: Voor multi‑page TIFF‑bestanden, itereren over `Image.load_multi_page()` (als je bibliotheek dit ondersteunt) en de resultaten samenvoegen. +- **Language support**: Veel engines gebruiken standaard Engels. Stel `ocr_engine.language = "spa"` in voor Spaans, bijvoorbeeld. +- **Whitespace handling**: OCR voegt vaak losse regeleinden toe. Gebruik `str.splitlines()` of reguliere expressies om de output op te schonen. +- **Performance**: Voor bulkverwerking, hergebruik één `OcrEngine`‑instantie in plaats van voor elk bestand een nieuwe te maken. + +## Het voorbeeld uitbreiden + +Nu je **how to ocr python** voor een enkele afbeelding onder de knie hebt, overweeg je de volgende stappen: + +1. **Batch processing** – Loop over een map met TIFF‑bestanden en schrijf elk resultaat naar een `.txt`‑bestand. +2. **Integration with Pandas** – Sla de geëxtraheerde tekst op naast metadata voor snelle analyse. +3. **Hybrid approach** – Combineer OCR met NLP‑bibliotheken zoals `spaCy` om entiteiten (namen, data, bedragen) uit gescande facturen te extraheren. +4. **Alternative file formats** – Vervang `Image.load` door `Image.from_bytes` om afbeeldingen te verwerken die uit een API of een database komen. + +Al deze uitbreidingen bouwen voort op het kernidee van **extract text from image** en **convert scanned image text** naar iets dat machines kunnen begrijpen. + +## Conclusie + +We hebben een duidelijk, end‑to‑end **basic OCR example** doorlopen dat laat zien **how to ocr python**, hoe **read tiff file python** en hoe **extract text from image** bestanden met slechts een handvol regels. Het script is zelfstandig, bevat foutafhandeling en print het resultaat direct, waardoor het een solide basis vormt voor elk project dat gescande documenten naar bewerkbare tekst moet omzetten. + +Voel je vrij om te experimenteren—verwissel de OCR‑backend, pas de preprocessing aan, of koppel de output aan een downstream‑workflow. De mogelijkheden zijn eindeloos wanneer je betrouwbaar **convert scanned image text** kunt omzetten naar doorzoekbare, doorzoekbare data. + +Heb je vragen over randgevallen, taalpakketten of prestatie‑afstemming? Laat een reactie achter hieronder, en happy coding! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/dutch/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..33066a011 --- /dev/null +++ b/ocr/dutch/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-04-26 +description: Hoe OCR uit te voeren op een gescand formulier, leer hoe je de afbeelding + voorbewerkt om ruis te verminderen, en haal snel tekst uit de afbeelding. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: nl +og_description: Hoe OCR uit te voeren op gescande documenten, afbeeldingen voor te + bewerken, ruis te verminderen en efficiënt tekst te extraheren. +og_title: Hoe OCR uit te voeren en afbeeldingen voor te bewerken – Snelle gids +tags: +- OCR +- image processing +- Python +title: Hoe OCR uit te voeren en afbeeldingen voor te bewerken – Tekst extraheren uit + gescande formulieren +url: /nl/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe OCR uit te voeren – Een volledige gids voor het extraheren van tekst uit afbeeldingen + +Heb je je ooit afgevraagd **hoe je OCR uitvoert** op een rommelig gescande formulier en schone, doorzoekbare tekst krijgt? Je bent niet de enige. In veel real‑world projecten is de ruwe afbeelding vol met stippen, ongelijke verlichting en andere eigenaardigheden die standaard OCR laten haperen. + +Het goede nieuws? Met slechts een paar regels Python en een slimme preprocessing‑pipeline kun je de herkenningsnauwkeurigheid dramatisch verhogen, **ruis verminderen**, en precies de woorden halen die je nodig hebt. In deze tutorial lopen we elke stap door — van het laden van de afbeelding tot het afdrukken van de uiteindelijke string — zodat je met een kant‑klaar snippet aan de slag kunt voor facturen, bonnen of elk gescand document. + +## Wat je gaat bouwen + +- Een `OcrEngine`‑instance die communiceert met de onderliggende OCR‑bibliotheek. +- Een preprocessing‑keten die de afbeelding **binariseert** en een **median blur** toepast om stippen glad te strijken. +- Een eenvoudige aanroep van `process()` die een object retourneert met de eigenschap `text`, de geëxtraheerde string. + +Aan het einde heb je een zelfstandige script die je op elk afbeeldingsbestand kunt draaien en direct de geëxtraheerde tekst in de console ziet. + +## Vereisten + +- Python 3.9+ (de hier gebruikte syntaxis komt overeen met de nieuwste stabiele release). +- Het fictieve `aocr`‑pakket – zie het als een dunne wrapper rond Tesseract of een moderne OCR‑engine. Installeer het met `pip install aocr`. +- Een gescande afbeelding (`scanned_form.jpg`) geplaatst in een map die je kunt refereren. + +Als je een echte OCR‑bibliotheek zoals `pytesseract` gebruikt, kun je `OcrEngine` vervangen door de juiste klasse — alles blijft verder gelijk. + +![](how-to-run-ocr-example.png "voorbeeld van hoe OCR uit te voeren, met een gescand formulier en de geëxtraheerde tekst") + +*Alt text: hoe OCR uit te voeren op een gescand document en de geëxtraheerde tekst bekijken.* + +--- + +## Stap 1: Hoe OCR uit te voeren – Initialiseer de Engine + +Voordat de engine iets kan lezen, moeten we een instance maken. Beschouw de `OcrEngine` als het brein dat later de visuele data zal interpreteren. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Waarom dit belangrijk is:** Het instantieren van de engine zet interne modellen op, laadt taalpakketten en bereidt de runtime‑omgeving voor. Het overslaan van deze stap leidt meestal tot een `NoneType`‑fout wanneer je later `process()` aanroept. + +--- + +## Stap 2: Hoe afbeelding voor te verwerken – Laad je gescande formulier + +Nu het brein klaar is, voeren we er een afbeelding in. De afbeelding kan elk formaat hebben dat door `aocr.Image` wordt ondersteund. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Pro tip:** Gebruik absolute paden tijdens ontwikkeling om “bestand niet gevonden” verrassingen te vermijden wanneer het script vanuit een andere werkmap wordt uitgevoerd. + +--- + +## Stap 3: Hoe ruis te verminderen – Binarisatie & Median Blur toepassen + +Ruwe scans bevatten vaak losse stippen, ongelijke achtergrond of vage schaduwen. Twee klassieke trucjes — **binarisatie** en **median blur** — maken alles schoon zonder de randen die karakters definiëren op te offeren. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Dieper ingaan + +- **Binarisatie**: De waarde `threshold=180` vertelt het algoritme: “Alles helderder dan 180 wordt wit; alles anders wordt zwart.” Pas dit getal aan als je scan te donker of te licht is. +- **Median Blur**: Een radius van `2` betekent dat het filter kijkt naar een 5×5‑pixelvenster en de centrale pixel vervangt door de mediaanwaarde. Dit gladstrijkt geïsoleerde stippen terwijl de strepen van letters intact blijven. + +> **Randgeval:** Als je document gekleurde markeringen bevat, kan een eenvoudige binaire drempel ze wissen. Overweeg in dat scenario `aocr.ImageFilters.adaptive_threshold()` te gebruiken — dit past de drempel lokaal aan over de afbeelding. + +--- + +## Stap 4: Hoe tekst te extraheren – Het OCR‑proces uitvoeren + +Met een schone afbeelding in de hand laten we de engine eindelijk zijn magie doen. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Wat er onder de motorkap gebeurt:** De engine draait een neuraal netwerk (of een legacy patroonmatcher) over de pixelmatrix, vertaalt elk herkend glyph naar Unicode‑tekens, en zet ze samen tot regels en alinea’s. + +--- + +## Stap 5: Hoe tekst te extraheren – Het resultaat afdrukken + +Het `ocr_result`‑object biedt een handige `text`‑attribuut. Laten we zien wat we hebben gekregen. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Verwachte uitvoer + +Als het gescande formulier bevat: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Zou je iets moeten zien als: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Merk op hoe de preprocessing‑stap losse stippen heeft verwijderd die eerder “Amount” veranderden in “Am0unt”. Dat is de kracht van **hoe ruis te verminderen** vóór OCR. + +--- + +## Veelvoorkomende valkuilen & hoe ze op te lossen + +| Symptoom | Waarschijnlijke oorzaak | Snelle oplossing | +|----------|--------------------------|-------------------| +| Vervormde tekens (bijv. “@#%”) | Afbeelding te donker of te licht | Pas de `threshold` in `binarize()` aan; probeer `adaptive_threshold`. | +| Ontbrekende woorden | Ruis nog aanwezig | Verhoog `radius` voor `median_blur` of voeg een `gaussian_blur` filter toe. | +| Verkeerde taal (bijv. Engelse letters worden Chinees) | Verkeerd taalpakket geladen | Geef `language="eng"` mee bij het aanmaken van `OcrEngine()` als de bibliotheek dit ondersteunt. | +| Trage verwerking bij grote bestanden | Hoge resolutie | Verklein de afbeelding eerst: `aocr.ImageFilters.resize(width=1200)` vóór binarisatie. | + +--- + +## Verder gaan – Volgende stappen en gerelateerde onderwerpen + +- **Batchverwerking**: Plaats de bovenstaande logica in een lus om tientallen bestanden automatisch te verwerken. +- **Gestructureerde output**: Gebruik reguliere expressies op `ocr_result.text` om velden zoals datums of bedragen te extraheren. +- **Alternatieve bibliotheken**: Vervang `aocr` door `pytesseract` — de code verandert alleen bij de engine‑initialisatie. +- **Hoe afbeelding voor te verwerken voor PDF’s**: Converteer elke PDF‑pagina naar een afbeelding en pas vervolgens dezelfde pipeline toe. + +Deze uitbreidingen laten je de oplossing opschalen van één enkel formulier naar een enterprise‑grade document‑ingestie‑pipeline. + +--- + +## Conclusie + +We hebben **hoe OCR uit te voeren** van begin tot eind behandeld, laten zien **hoe afbeelding voor te verwerken** om **ruis te verminderen**, en demonstreren **hoe tekst uit een afbeelding te extraheren** met een schoon, reproduceerbaar script. De belangrijkste les? Een paar eenvoudige filters — binarisatie en median blur — kunnen een ruisvolle scan omzetten in een betrouwbare gegevensbron, waardoor je uren handmatige opschoning bespaart. + +Probeer het script met je eigen documenten, pas de drempels aan, en zie de nauwkeurigheid stijgen. Wanneer je er klaar voor bent, verken batchverwerking of integreer de output in een database voor doorzoekbare archieven. Veel programmeerplezier, en moge je OCR altijd spot‑on 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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/dutch/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..c71ed6e55 --- /dev/null +++ b/ocr/dutch/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-04-26 +description: Leer hoe u de licentie instelt in Aspose OCR en hoe u de licentie valideert + met een beknopt Python‑script. Volg stap‑voor‑stap instructies voor een probleemloze + activering. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: nl +og_description: Hoe de licentie in Aspose OCR in te stellen en hoe de licentie te + valideren met Python. Ontvang een compleet, uitvoerbaar voorbeeld binnen enkele + minuten. +og_title: Hoe de licentie instellen in Aspose OCR – Snelle Python-gids +tags: +- Aspose OCR +- Python +- Licensing +title: Hoe de licentie instellen in Aspose OCR – Snelle Python-gids +url: /nl/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe licentie instellen in Aspose OCR – Snelle Python‑gids + +Heb je je ooit afgevraagd **hoe je een licentie** voor Aspose OCR instelt zonder je haar uit te trekken? Je bent niet de enige. De meeste ontwikkelaars lopen de eerste keer tegen een obstakel aan wanneer ze de volledige kracht van de bibliotheek willen ontgrendelen, alleen om vervolgens gekweld te worden door een “Trial version” watermerk. Het goede nieuws is dat de oplossing vrij eenvoudig is, en je kunt deze direct verifiëren. + +In deze tutorial lopen we **hoe je een licentie instelt** *en* **hoe je een licentie valideert** stap voor stap door een klein Python‑script. Aan het einde heb je een werkend voorbeeld dat “License OK” afdrukt, plus een reeks tips om veelvoorkomende valkuilen te vermijden. + +## Vereisten + +Voordat we beginnen, zorg dat je het volgende hebt: + +- Python 3.8+ geïnstalleerd (de code werkt op 3.9, 3.10 en nieuwer). +- Een actieve Aspose OCR‑licentiebestand – meestal `Aspose.OCR.Java.lic`. +- Het `asposeocr`‑pakket geïnstalleerd via `pip install asposeocr`. +- Basiskennis van het uitvoeren van Python‑scripts vanaf de commandoregel. + +Alles aanwezig? Geweldig—laten we beginnen. + +## Hoe licentie instellen in Aspose OCR (Stap 1) + +Het instellen van de licentie bestaat in principe uit drie regels code, maar elke regel heeft een doel. We splitsen het op zodat je begrijpt *waarom* we doen wat we doen. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Waarom `License` importeren?** +De `License`‑klasse is de poort die de Aspose OCR‑engine vertelt dat je voor het product hebt betaald. Zonder een instantie aan te maken blijft de bibliotheek aannemen dat je een trial‑versie gebruikt. + +**Waarom `License` instantieren?** +Door te instantieren krijg je een object (`license_obj`) dat het pad naar je `.lic`‑bestand kan bevatten en dit vervolgens op de runtime toepast. + +## Hoe licentie instellen in Aspose OCR – Het licentiebestand opgeven + +Nu wijzen we het object naar het daadwerkelijke licentiebestand op schijf. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Tips & tricks:** + +- **Absolute versus relatieve pad** – Als je het script vanuit een andere map uitvoert, voorkomt een absoluut pad (`C:/licenses/...`) “bestand niet gevonden” fouten. +- **Omgevingsvariabelen** – Het pad opslaan in een env‑var (`OCR_LICENSE_PATH`) houdt geheimen uit de broncode: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Hoe licentie valideren – Controleren of het werkt + +Het instellen van de licentie is slechts de helft van de strijd; je moet bevestigen dat de bibliotheek de licentie heeft geaccepteerd. Daar komt de validatiestap om de hoek kijken. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Als het licentiebestand ontbreekt, corrupt is of niet overeenkomt, zal `validate()` een uitzondering werpen. Het afvangen van die uitzondering geeft je een nette manier om problemen te melden. + +## Volledig werkend voorbeeld (Alle stappen gecombineerd) + +Hieronder vind je het complete, kant‑en‑klaar script. Voer het uit vanuit een terminal (`python set_license.py`) en je zou “License OK” moeten zien verschijnen. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Verwachte output** + +``` +License OK +``` + +Als er iets misgaat, zie je iets als: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Dat bericht vertelt je precies wat je moet corrigeren—geen giswerk nodig. + +## Hoe licentie valideren – Veelvoorkomende randgevallen afhandelen + +Zelfs met het bovenstaande script kunnen een paar scenario’s je laten struikelen: + +| Situatie | Wat gebeurt er | Hoe op te lossen | +|-----------|----------------|------------------| +| **Typfout in pad** | `FileNotFoundError` van `set_license` | Controleer het pad; gebruik `os.path.abspath()` om te debuggen. | +| **Verkeerd bestandstype** | Validatie gooit “Invalid license format” | Zorg dat je het `.lic`‑bestand gebruikt dat bij jouw producteditie hoort. | +| **Verlopen licentie** | Validatie geeft “License expired” | Vernieuw de licentie via Aspose‑support en vervang het bestand. | +| **Uitvoering in een beperkte omgeving** (bijv. AWS Lambda) | Toestemmingsfout | Geef leesrechten aan de map of embed de licentie in het deployment‑pakket. | + +Pro‑tip: plaats de `set_license`‑aanroep in een eigen `try/except`‑blok als je onderscheid wilt maken tussen “bestand niet gevonden” en “ongeldig formaat” fouten. + +## Visuele samenvatting + +![hoe licentie instellen in Aspose OCR voorbeeld](/images/aspose-ocr-license.png "hoe licentie instellen in Aspose OCR voorbeeld") + +*De screenshot toont het script dat “License OK” afdrukt na een succesvolle activatie.* + +## Veelvoorkomende valkuilen & best practices + +- **Commit je licentiebestand nooit naar een openbaar repo.** Gebruik omgevingsvariabelen of secret managers (GitHub Secrets, Azure Key Vault) in plaats daarvan. +- **Valideer vroeg.** Het plaatsen van `license_obj.validate()` direct na `set_license` vangt fouten op voordat er OCR‑werk wordt uitgevoerd. +- **Herbruik het License‑object.** Je hoeft de licentie slechts één keer per proces in te stellen; latere OCR‑aanroepen gebruiken automatisch de geactiveerde licentie. +- **Log het licentiepad (zonder bestandsnaam) in productie** om debugging te vergemakkelijken zonder het daadwerkelijke bestand bloot te stellen. + +## Volgende stappen – Je OCR‑workflow uitbreiden + +Nu je **weet hoe je een licentie instelt** en **hoe je een licentie valideert**, kun je doorgaan naar de kern‑OCR‑taken: + +- **hoe afbeelding te lezen** – `Image.load("sample.png")` +- **hoe tekst te extraheren** – `ocr_engine.recognize(image)` +- **hoe OCR‑opties te configureren** – pas `OcrEngine`‑instellingen aan voor taal, nauwkeurigheid, enz. + +Elk van deze onderwerpen bouwt voort op een succesvol gelicentieerde engine, zodat je nooit meer het trial‑watermerk ziet. + +## Conclusie + +We hebben het volledige proces behandeld van **hoe je een licentie instelt** voor Aspose OCR, **hoe je een licentie valideert**, en je een compleet, uitvoerbaar script gegeven dat “License OK” afdrukt. Door fouten vooraf af te handelen en omgevingsvariabelen te gebruiken, houd je je applicatie zowel veilig als robuust. + +Heb je meer vragen over OCR, licenties, of het integreren van Aspose in een grotere pipeline? 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/dutch/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..c8219c2c9 --- /dev/null +++ b/ocr/dutch/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-04-26 +description: hoe OCR te gebruiken op gescande PDF's, tekst uit PDF te extraheren, + OCR op PDF uit te voeren en gescande PDF om te zetten naar doorzoekbare bestanden + in een paar stappen. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: nl +og_description: 'hoe OCR te gebruiken in Python: leer hoe je tekst uit PDF kunt extraheren, + OCR op PDF kunt uitvoeren en gescande PDF''s kunt omzetten in doorzoekbare documenten.' +og_title: hoe OCR te gebruiken – Snelle gids om tekst uit PDF te extraheren +tags: +- OCR +- Python +- PDF +- Text Extraction +title: Hoe OCR te gebruiken – Tekst extraheren uit PDF met Python +url: /nl/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hoe OCR te gebruiken – Tekst extraheren uit PDF met Python + +Heb je je ooit afgevraagd **hoe je OCR kunt gebruiken** om tekst uit een gescand contract, bon of e‑book te halen? Je bent niet de enige. In veel real‑world projecten is de PDF die je ontvangt slechts een afbeelding, en zonder OCR kun je de inhoud niet doorzoeken, indexeren of analyseren. + +In deze tutorial lopen we een volledig, uitvoerbaar voorbeeld door dat laat zien **hoe je OCR kunt gebruiken**, hoe je **tekst uit PDF kunt extraheren**, en waarom je mogelijk **gescande PDF**‑bestanden wilt **converteren naar doorzoekbare** documenten. We behandelen ook de subtiele kunst van **PDF laden als afbeelding** zodat de OCR‑engine elke pagina duidelijk kan zien. + +> **Snelle preview:** Aan het einde heb je een script dat een meer‑pagina PDF laadt, OCR op elke pagina uitvoert, en de herkende tekst afdrukt – zonder externe services. + +## Wat je nodig hebt + +- Python 3.9+ (elke recente versie werkt) +- `aocr`‑pakket (of een compatibele OCR‑bibliotheek die `OcrEngine` en `Image.load` biedt) +- Een gescande PDF‑bestand dat je wilt verwerken (bijv. `contract.pdf`) +- Een bescheiden hoeveelheid RAM (≈ 200 MB per 100‑pagina PDF is meestal voldoende) + +Als je de OCR‑bibliotheek nog niet hebt geïnstalleerd, voer dan uit: + +```bash +pip install aocr +``` + +> **Pro tip:** Gebruik een virtuele omgeving om je afhankelijkheden netjes te houden. + +## Stap 1: PDF laden als afbeelding – Het eerste puzzelstuk + +Voordat OCR kan plaatsvinden, moet de PDF worden weergegeven als een afbeelding. Hier komt het secundaire trefwoord **pdf laden als afbeelding** van pas. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Waarom dit belangrijk is:* `aocr.Image.load` rastert intern elke PDF‑pagina naar een bitmap die de OCR‑engine kan begrijpen. Als je deze stap overslaat en de ruwe PDF invoert, zal de engine een fout geven omdat hij pixeldata verwacht, geen vectordata. + +> **Opmerking:** Het pad kan absoluut of relatief zijn. Zorg ervoor dat het bestand leesbaar is; anders krijg je een `FileNotFoundError`. + +## Stap 2: OCR uitvoeren op PDF – Pixels omzetten in tekens + +Nu de PDF als afbeelding bestaat, kunnen we eindelijk **OCR uitvoeren op PDF**. Het volgende fragment verwerkt elke pagina in één keer: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Wat gebeurt er onder de motorkap?* `process_all_pages` doorloopt de gerasterde pagina's, past het OCR‑model toe, en retourneert een lijst met resultaatobjecten — één per pagina. Elk resultaat bevat de herkende tekst, vertrouwensscores en begrenzingskaders (als je die later nodig hebt). + +## Stap 3: Tekst extraheren uit PDF – De strings eruit halen + +Met OCR‑resultaten in de hand wordt het extraheren van platte tekst triviaal. We itereren over de pagina's en printen de output, waarmee we het secundaire trefwoord **tekst extraheren uit pdf** demonstreren. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Verwachte output** (ingekort voor beknoptheid): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Als je de tekst in één enkele string nodig hebt, concateneer je eenvoudigweg: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Nu heb je met succes **tekst uit PDF geëxtraheerd** met OCR. + +## Stap 4: Gescande PDF converteren – Maak hem doorzoekbaar + +Veel downstream‑tools (zoals Elasticsearch of SharePoint) verwachten een doorzoekbare PDF in plaats van een platte‑tekst dump. Je kunt de OCR‑output terug in de originele PDF embedden, waardoor je effectief **gescande PDF** **converteert naar een doorzoekbare** versie. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Waarom de moeite waard?* Een doorzoekbare PDF behoudt de originele lay-out en afbeeldingen, terwijl tekstselectie en indexering mogelijk zijn – een win‑win voor zowel mensen als machines. + +## Veelvoorkomende valkuilen & randgevallen + +### Multi‑page PDF's groter dan het geheugen + +Als je PDF honderden pagina's heeft, kan het in één keer laden het RAM uitputten. De `aocr`‑bibliotheek ondersteunt lazy loading: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Verwerk vervolgens pagina's één voor één: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Scans van lage kwaliteit + +De OCR‑nauwkeurigheid daalt drastisch bij wazige of laag‑contrast scans. Overweeg voorafverwerking voordat je de afbeelding aan de engine geeft: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Taalondersteuning + +Standaard gaat de engine uit van Engels. Om **OCR uitvoeren op PDF** in een andere taal, stel je de taalcode in: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Zorg ervoor dat het bijbehorende taalmodel geïnstalleerd is. + +## Volledig werkend voorbeeld + +Alles samenvoegend, hier is een zelfstandige script die je in een bestand genaamd `ocr_pdf.py` kunt plaatsen en direct kunt uitvoeren: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Voer het als volgt uit: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Je ziet de tekst in de console afgedrukt, en als je `-o` hebt opgegeven, verschijnt er een doorzoekbare PDF naast het originele bestand. + +## Pro‑tips & best practices + +- **Batchverwerking:** Bij het verwerken van tientallen PDF's, wikkel je de bovenstaande logica in een lus en log je het succes/failure van elk bestand. +- **Vertrouwensfiltering:** Elk `page_result` bevat een vertrouwensmetriek. Verwijder of markeer pagina's met lage vertrouwensscore voor handmatige controle. +- **Parallelisme:** Als je CPU meerdere cores heeft, overweeg dan `concurrent.futures` te gebruiken om pagina's parallel te verwerken — let wel op het geheugenverbruik. +- **Versie-lock:** De `aocr` API kan evolueren. Pin de versie in `requirements.txt` (bijv. `aocr==2.3.1`) om brekende wijzigingen te voorkomen. + +## Conclusie + +We hebben doorlopen **hoe je OCR kunt gebruiken** om **tekst uit PDF te extraheren**, **OCR uitvoeren op PDF**, **PDF te laden als afbeelding**, en zelfs **gescande PDF** te **converteren naar een doorzoekbaar** formaat. De code is compleet, de uitleg behandelt zowel het *wat* als het *waarom*, en je hebt nu een herbruikbaar patroon voor elk project dat met op afbeeldingen gebaseerde PDF's werkt. + +Wat is het volgende? Probeer de geëxtraheerde tekst in een natural‑language pipeline te voeren, indexeer de doorzoekbare PDF's met Elasticsearch, of experimenteer met verschillende OCR‑back‑ends zoals Tesseract of Azure Computer Vision. De mogelijkheden zijn eindeloos, en de tools liggen binnen handbereik. + +Veel plezier met coderen, en moge je PDF's altijd doorzoekbaar zijn! + +![voorbeeld van hoe OCR te gebruiken](/images/ocr_workflow.png "hoe OCR te gebruiken") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/dutch/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/dutch/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..c6cc4db43 --- /dev/null +++ b/ocr/dutch/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-04-26 +description: Hoe threading te gebruiken om een afbeelding te laden voor OCR in Python. + Leer asynchrone OCR-verwerking met callbacks, achtergrondthreads en het laden van + afbeeldingen in slechts een paar stappen. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: nl +og_description: Hoe je threading gebruikt om een afbeelding te laden voor OCR in Python. + Deze gids toont een volledig, uitvoerbaar voorbeeld met callbacks en achtergronduitvoering. +og_title: Hoe threading te gebruiken om een afbeelding te laden voor OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Hoe threading te gebruiken om een afbeelding te laden voor OCR +url: /nl/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hoe threading te gebruiken om een afbeelding te laden voor OCR + +Heb je je ooit afgevraagd **hoe je threading** kunt gebruiken om een afbeelding te laden voor OCR zonder je app te laten bevriezen? Het is een scenario dat zich voordoet, of je nu een desktop‑scanner, een webservice of een simpel script maakt dat enorme afbeeldingen verwerkt. Het goede nieuws? Een paar regels Python en het juiste threading‑patroon houden je UI soepel terwijl de OCR‑engine zijn magie doet. + +In deze tutorial lopen we een volledig, end‑to‑end voorbeeld door: een grote PNG laden, OCR starten op een achtergrondthread, en het resultaat afhandelen met een callback. Aan het einde weet je niet alleen **hoe je threading** moet gebruiken, maar ook hoe je **een afbeelding laadt voor OCR** op een nette, herbruikbare manier. + +## Wat je nodig hebt + +- Python 3.9+ (de syntaxis die we gebruiken werkt op elke recente versie) +- `pillow` voor afbeeldingsverwerking (`pip install pillow`) +- `pytesseract` als een dunne wrapper rond Tesseract OCR (`pip install pytesseract`) +- Tesseract OCR‑engine geïnstalleerd op je machine (download van [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Een groot afbeeldingsbestand dat je wilt verwerken (`large_image.png` in deze gids) + +Geen extra frameworks, geen async/await—alleen klassieke `threading` en een callback. + +## Stap 1: Importeer de Threading‑module (vereist voor achtergronduitvoering) + +Het eerste wat we doen is de `threading`‑module importeren. Deze levert de `Thread`‑klasse, waarmee we elke functie in een aparte OS‑thread kunnen uitvoeren. + +```python +import threading +``` + +*Waarom dit belangrijk is*: Als je OCR op de hoofdthread uitvoert, bevriest je programma (vooral een GUI) totdat de OCR klaar is. Door het werk naar een achtergrondthread te delegeren, blijft de hoofdthread vrij om de UI bij te werken, gebruikersinvoer af te handelen of andere taken te starten. + +## Stap 2: Definieer een callback die wordt aangeroepen wanneer OCR klaar is + +Een callback is simpelweg een functie die door een ander stuk code wordt aangeroepen wanneer het klaar is. Hier printen we de herkende tekst, maar je zou het kunnen opslaan, over het netwerk kunnen sturen of een UI‑widget kunnen bijwerken. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Pro tip*: Houd de callback lichtgewicht. Zware verwerking binnen de callback ondermijnt het nut van threading, omdat het nog steeds de thread blokkeert die hem heeft aangeroepen (meestal de hoofdthread). + +## Stap 3: Laad de afbeelding die je wilt verwerken + +Het laden van de afbeelding is een apart aspect van OCR, maar maakt nog steeds deel uit van de algehele workflow. Met Pillow is dit triviaal. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Waarom we het hier doen*: Als de afbeelding enorm is, kan het laden op de hoofdthread al een hapering veroorzaken. In veel real‑world apps zou je het laden ook naar een thread verplaatsen, maar voor de duidelijkheid houden we het synchronisch. + +## Stap 4: Maak een kleine OCR‑engine wrapper + +Het oorspronkelijke fragment gebruikte `engine.process_async`. We bootsen dat na met een kleine klasse die intern een thread start en de meegegeven callback aanroept wanneer het klaar is. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Uitleg*: +- `_run_ocr` doet het zware werk. +- `process_async` maakt een `Thread`‑object, markeert het als daemon (zodat de interpreter kan afsluiten zelfs als de thread nog draait), en start het. +- De callback ontvangt ofwel de OCR‑tekst of een foutmelding. + +## Stap 5: Koppel alles samen en doe ander werk terwijl OCR draait + +Nu orkestreren we de volledige stroom: laad de afbeelding, instantiate de engine, start de async OCR, en houd de hoofdthread bezig met iets anders (hier printen we gewoon een bericht). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Verwachte output (ingekort voor de leesbaarheid):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Als de OCR faalt, zal de callback een foutmelding printen in plaats van de tekst. + +--- + +## Waarom deze aanpak beter werkt dan een eenvoudige lus + +- **Responsiveness**: De hoofdthread blokkeert nooit op de OCR‑aanroep, die seconden kan duren voor grote afbeeldingen. +- **Scalability**: Je kunt meerdere `SimpleOcrEngine`‑instanties opstarten, elk in zijn eigen thread, om een batch afbeeldingen gelijktijdig te verwerken. +- **Separation of Concerns**: Laden, verwerken en resultaatafhandeling zijn duidelijk gescheiden, waardoor de code makkelijker te testen en te onderhouden is. + +## Veelvoorkomende valkuilen en hoe ze te vermijden + +| Probleem | Wat gebeurt er | Oplossing | +|----------|----------------|-----------| +| Vergeten de thread als *daemon* te markeren | Het script blijft hangen nadat het hoofdwerk klaar is omdat de OCR‑thread nog leeft. | Zet `worker.daemon = True` **of** `join()` de thread vóór het afsluiten. | +| Een globale variabele voor het resultaat gebruiken zonder locks | Race‑conditions kunnen de data corrupt maken wanneer meerdere threads tegelijk schrijven. | Geef het resultaat via een callback (zoals we doen) of gebruik thread‑veilige containers zoals `queue.Queue`. | +| Een enorme afbeelding laden op de hoofdthread | UI bevriest voordat de achtergrond‑OCR zelfs maar start. | Laad de afbeelding ook naar een thread, of gebruik lazy‑loading technieken. | +| Geen uitzonderingen afhandelen in de worker‑thread | Niet‑afgevangen uitzonderingen doden de thread stilletjes, waardoor je geen resultaat krijgt. | Omring OCR‑logica met `try/except` en stuur de fout door naar de callback. | + +## Deze patroon uitbreiden + +- **Voortgangsrapportage**: Gebruik een gedeelde `queue.Queue` om tussentijdse voortgangspercentages van de OCR‑thread naar de hoofdthread te sturen. +- **Thread‑pool**: Voor batchverwerking, vervang individuele `Thread`‑objecten door een `concurrent.futures.ThreadPoolExecutor`. +- **GUI‑integratie**: In een Tkinter‑ of PyQt‑app, plan de callback met `after()` (Tkinter) of `QTimer.singleShot` (Qt) om er zeker van te zijn dat UI‑updates op de hoofdthread plaatsvinden. + +## Volledig werkend voorbeeld (Kopieer‑en‑Plak klaar) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/english/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..f93e26dbc --- /dev/null +++ b/ocr/english/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-04-26 +description: Extract header text OCR using Python Aspose OCR. Learn how to extract + specific area text from images quickly and reliably. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: en +og_description: Extract header text OCR quickly. This guide shows how to extract specific + area text using Python Aspose OCR in just a few lines. +og_title: Extract Header Text OCR with Python Aspose OCR – Complete Tutorial +tags: +- OCR +- Python +- Aspose +title: Extract Header Text OCR with Python Aspose OCR – Step‑by‑Step Guide +url: /python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extract Header Text OCR – Full Python Aspose OCR Tutorial + +Ever needed to **extract header text OCR** from a scanned invoice but didn’t want to process the whole page? You’re not the only one. In many real‑world pipelines the header contains the most critical information—invoice number, date, vendor name—so pulling it out fast can save a lot of downstream work. + +In this tutorial we’ll show you a ready‑to‑run solution that **extracts specific area text** using the **Python Aspose OCR** library. No vague references to external docs, just a complete script, a clear explanation of each line, and tips you’ll actually use tomorrow. + +## What You’ll Learn + +- How to install and import the Aspose OCR package for Python. +- How to load an image and define a **region of interest (ROI)** that isolates the header. +- How to run the OCR engine on that ROI and retrieve clean text. +- Common pitfalls (e.g., DPI mismatches) and how to avoid them. +- What the expected output looks like so you can verify everything works. + +By the end you’ll be able to drop this code into any project that needs to **extract header text OCR** from invoices, receipts, or any document with a predictable layout. + +## Prerequisites + +- Python 3.8 or newer installed on your machine. +- A valid Aspose OCR for Python license (the free trial works for evaluation). +- An image file (`invoice.png`) that contains a clear header region. +- Basic familiarity with Python functions and file paths. + +> **Pro tip:** If you’re testing on a low‑resolution scan, increase the DPI before feeding it to Aspose OCR – it dramatically improves accuracy. + +--- + +## Step 1: Install the Aspose OCR Package + +First, add the library to your environment. The official package is `aspose-ocr`. Run this once: + +```bash +pip install aspose-ocr +``` + +If you’re using a virtual environment (highly recommended), activate it before installing. This ensures the package won’t clash with other projects. + +## Step 2: Import Required Classes and Load the Image + +Now we bring the necessary classes into our script and load the invoice image. Notice the use of **full paths**; relative paths work too, but absolute paths remove ambiguity when the script runs on a server. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Why this matters:** Initializing `OcrEngine` once and reusing it for multiple images is more efficient than creating a new engine each time. + +## Step 3: Define the Header Region (ROI) + +The header usually sits at the top of the page, but its exact coordinates can vary. Here we define a rectangle (`x`, `y`, `width`, `height`) that covers the header. Adjust the numbers to match your document layout. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **How it works:** By calling `set_roi`, the OCR engine limits its analysis to this rectangle, which dramatically speeds up processing and reduces noise from the rest of the page. + +## Step 4: Apply the ROI and Run OCR + +Now we tell the engine to focus on the header region and then execute the OCR process. The result object contains the recognized text and additional metadata (confidence scores, language, etc.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +If the OCR fails (e.g., unsupported image format), `ocr_result` will be `None`. A quick guard clause can make your script more robust: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Step 5: Retrieve and Print the Extracted Header Text + +Finally, we pull the text out of the result object and display it. You can also write it to a file or pass it to another function for further parsing. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Expected Output + +When everything is set up correctly, you should see something like: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +If the output looks garbled, double‑check the ROI coordinates and ensure the source image is high‑contrast. + +--- + +## Variations & Edge Cases + +### 1. Multiple Headers in One Document + +Sometimes a PDF contains several pages, each with its own header. Loop over pages and adjust the ROI per page: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Dealing with Skewed Scans + +If the invoice is slightly rotated, pre‑process the image with OpenCV before feeding it to Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Changing Language Settings + +Aspose OCR can auto‑detect language, but you can force English for faster results: + +```python +ocr_engine.language = "en" +``` + +--- + +## Full Working Example + +Below is the complete script you can copy‑paste into a file named `extract_header.py`. Remember to replace the image path with your own. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Running this script should output the header lines exactly as shown earlier. Feel free to tweak the `roi` values to match your specific invoice template. + +--- + +## Common Questions Answered + +**Q: Does this work with PDFs directly?** +A: Not out‑of‑the‑box. Convert each PDF page to an image (e.g., using `pdf2image`) then feed the PNG/JPG to the script. + +**Q: What if my header contains a logo and text together?** +A: Aspose OCR focuses on textual content. For logos, consider using a separate image‑recognition library like `opencv` or `tesseract` with a custom model. + +**Q: Is the free trial limited?** +A: The trial allows up to 10 pages per month. For production, purchase a license to remove the limit and unlock higher accuracy settings. + +--- + +## Conclusion + +You now have a **complete, citation‑worthy** guide for **extract header text OCR** using **Python Aspose OCR**. The tutorial covered everything from installation to handling edge cases, and it gave you a reusable function you can drop into larger workflows. + +Next, you might explore **extract specific area text** for other zones like footers or line‑items, or combine this approach with a PDF‑to‑image converter to automate full‑document pipelines. The possibilities are endless—just remember to keep your ROI coordinates accurate and your images high‑resolution. + +Got a tricky layout? Share it in the comments and we’ll tweak the ROI together. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/english/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..688543b6d --- /dev/null +++ b/ocr/english/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,226 @@ +--- +category: general +date: 2026-04-26 +description: extract text from image using Aspose OCR in Python. Learn how to extract + text, convert image to text, and load image for OCR with multilingual support. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: en +og_description: extract text from image instantly. This guide shows how to extract + text, convert image to text, and load image for OCR using Aspose OCR in Python. +og_title: extract text from image with Python – Complete Multilingual OCR Tutorial +tags: +- OCR +- Python +- Aspose +title: extract text from image with Python – Multilingual OCR Guide +url: /python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# extract text from image with Python – Multilingual OCR Guide + +Ever needed to **extract text from image** but weren’t sure which library could handle mixed‑language pages? You’re not alone. In many real‑world apps—think invoice processing, social‑media monitoring, or multilingual document archiving—you’ll run into pictures that contain both Latin and Cyrillic characters. + +The good news? With Aspose OCR for Python you can **extract text**, **convert image to text**, and **load image for OCR** in just a few lines, all while letting the engine auto‑detect the language. In this tutorial we’ll walk through a complete, runnable example, explain why each step matters, and cover a couple of edge cases you might hit on the road. + +> **What you’ll walk away with** +> * A ready‑to‑run script that pulls text from a mixed‑language PNG. +> * Understanding of how to configure multilingual OCR in Python. +> * Tips for handling large files, different image formats, and debugging common pitfalls. + +## Prerequisites + +- Python 3.8 or newer (the code uses f‑strings). +- `asposeocr` package installed (`pip install asposeocr`). +- An image file (e.g., `mixed_lang.png`) that contains text in more than one script. +- Basic familiarity with Python imports and object‑oriented APIs. + +No heavy dependencies, no external services—just a single pip install and you’re good to go. + +--- + +## Step 1 – Install & import the Aspose OCR library + +Before we can **load image for OCR**, we need the library itself. The package ships with the core OCR engine and a lightweight image loader. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Why this matters*: Importing the specific classes keeps the namespace tidy and makes the later code clearer. If you only import `asposeocr`, you’ll have to qualify every call (`aocr.OcrEngine()`), which can be noisy. + +--- + +## Step 2 – Create the OCR engine and enable multilingual detection + +Aspose OCR can automatically guess the language(s) present in the image. Setting `Language.AUTO` covers Latin, Cyrillic, Arabic, and many more. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Pro tip*: If you know the language set in advance, you can assign `Language.ENGLISH` or `Language.RUSSIAN` for a tiny performance boost. But for truly mixed documents, `AUTO` is the safest bet. + +--- + +## Step 3 – Load the image you want to process + +Here’s where we **load image for OCR**. Aspose supports PNG, JPEG, BMP, TIFF, and even PDF pages treated as images. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Tip**: If your image is larger than 2 MB, consider resizing it beforehand. Large images increase memory usage and can slow down the detection step. + +--- + +## Step 4 – Run the OCR process and capture the result + +Calling `process()` does the heavy lifting: text detection, layout analysis, and language decoding. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +The returned `ocr_result` object contains several useful properties: + +| Property | Description | +|----------|-------------| +| `text` | Plain string of the recognized text (what you’ll most often use). | +| `confidence` | Overall confidence score (0‑100). | +| `lines` | List of `OcrLine` objects with positional data (great for PDFs). | + +--- + +## Step 5 – Display the extracted text + +Finally, we print the output. In a real application you might write it to a database or feed it into a translation API. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Expected output** (example for a mixed‑language image): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +If you see garbled characters, double‑check that the image is not corrupted and that you’re using the latest version of `asposeocr` (v23.7 at the time of writing). + +--- + +## Step 6 – Full script you can copy‑paste + +Putting it all together eliminates the “where does the code start?” confusion. Save this as `multilingual_ocr.py` and run it from the command line. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Run it: + +```bash +python multilingual_ocr.py +``` + +You should see the extracted strings printed to the console. That’s it—**convert image to text** with just a handful of lines. + +--- + +## Common questions & edge‑case handling + +### What if my image contains handwriting? +Aspose OCR is tuned for printed text. Handwritten scripts often need a dedicated model (e.g., Azure Read or Google Vision). You can still try `Language.AUTO`, but expect lower confidence. + +### How do I improve accuracy on noisy scans? +1. Pre‑process the image (binarization, despeckling). +2. Increase DPI to at least 300 ppi before feeding it to the engine. +3. Explicitly set `ocr_engine.config.deskew = True` if the image is skewed. + +```python +ocr_engine.config.deskew = True +``` + +### Can I extract text from a PDF without converting it to an image first? +Yes—Aspose OCR can open PDF pages directly: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Just remember that each page is treated as an image internally, so the same quality considerations apply. + +--- + +## Conclusion + +You now have a solid, end‑to‑end recipe to **extract text from image** using Aspose OCR in Python, complete with multilingual support. The script demonstrates how to **load image for OCR**, **convert image to text**, and handle the most common pitfalls. + +From here you might: + +- Integrate the function into a web service that accepts user uploads. +- Pair the extracted text with a language‑detection library to route it to the right translation engine. +- Experiment with `ocr_engine.config` options (e.g., `max_recognition_time`, `text_orientation`) to fine‑tune performance. + +Happy coding, and may your OCR pipelines be ever accurate! + +--- + +![Screenshot of extracted multilingual text – extract text from image example](image-placeholder.png "extract text from 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/english/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/english/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..0a94cdab1 --- /dev/null +++ b/ocr/english/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: How to batch OCR your documents and extract text from scans in Python. + Learn step‑by‑step batch processing with OcrEngine for JSON output. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: en +og_description: How to batch OCR your scanned files and extract text from scans in + a single script. Complete code, tips, and edge‑case handling. +og_title: How to Batch OCR – Fast Python Guide +tags: +- OCR +- Python +- Automation +title: How to Batch OCR – Extract Text from Scans Efficiently +url: /python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Batch OCR – Extract Text from Scans Efficiently + +Ever wondered **how to batch OCR** a mountain of scanned PDFs without losing your sanity? You’re not the only one—developers constantly ask, *“How can I extract text from scans in one go?”* The good news is that a few lines of Python can turn that tedious chore into a smooth, automated pipeline. + +In this tutorial we’ll walk through a complete, ready‑to‑run solution that **extracts text from scans**, saves the results as JSON, and gives you a quick sanity check at the end. No external services, no magic—just plain Python, the `OcrEngine` class, and a bit of folder plumbing. + +## What You’ll Walk Away With + +- A fully functional script that **batches OCR** over any folder of images. +- Clear explanations of *why* each line exists, not just *what* it does. +- Tips for handling empty folders, non‑image files, and large batches. +- A way to verify that the JSON output actually contains the extracted text. + +### Prerequisites (the bare minimum) + +| Requirement | Why it matters | +|-------------|----------------| +| Python 3.8+ | Modern syntax & type hints | +| `OcrEngine` library (or a compatible wrapper) | Core OCR functionality | +| A directory with scanned image files (PNG, JPG, TIFF) | Input data | +| Write permissions for the output folder | Saving JSON results | + +If you already have these, great—let’s dive in. + +![how to batch OCR workflow](image-placeholder.png){alt="how to batch OCR workflow"} + +## Step 1 – Initialize the OCR Engine (how to batch OCR) + +Before we can process anything, we need an OCR engine instance. Think of it as the “brain” that will read each image and spit out text. Initializing it once and re‑using it across the whole batch is the most efficient pattern. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Why reuse the same instance?** +> Creating a new engine for every file would repeatedly load heavy models into memory, dramatically slowing down the batch. One instance keeps the model in RAM and lets you process thousands of images without a noticeable slowdown. + +## Step 2 – Point to Your Scans Folder (extract text from scans) + +Your scans live somewhere on disk. Let’s tell the script where to find them. Using absolute paths avoids “file not found” surprises when the script is launched from a different working directory. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Pro tip:** +> If you’re on Windows, forward slashes (`/`) work just fine with `os.path.abspath`, so you don’t have to escape backslashes. + +## Step 3 – Choose Where the JSON Results Should Go + +You probably want a tidy folder for the OCR results. Keeping output separate from the source makes it easy to clean up later or feed the JSON into another pipeline. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Why create the folder programmatically?** +> It guarantees the script won’t crash if the directory is missing, and `exist_ok=True` makes the operation idempotent—run the script multiple times without errors. + +## Step 4 – Run the Batch Process (how to batch OCR) + +Now the heart of the matter: telling `ocr_engine` to walk through every file in `input_dir`, run OCR, and dump JSON into `output_dir`. The `format="json"` flag tells the engine to serialize the result in a structured way that downstream tools love. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### What’s happening under the hood? + +1. **File discovery** – The engine scans `input_folder` recursively, ignoring hidden files. +2. **File validation** – Only supported image extensions (`.png`, `.jpg`, `.tif`, etc.) are fed to the OCR model. +3. **OCR execution** – Each image is sent to the OCR engine; text, confidence scores, and layout data are captured. +4. **JSON serialization** – The result is written to a file with the same base name but a `.json` extension in `output_folder`. + +> **Edge case handling:** +> - **Empty folder:** The engine logs “No files found” and returns gracefully. +> - **Corrupt image:** It skips the file, records an error entry in a `batch_errors.log`, and continues. +> - **Huge batch (10k+ files):** Memory usage stays low because each image is processed independently. + +## Step 5 – Confirm the Conversion Finished + +A simple `print` statement gives immediate feedback in the console. For production pipelines you might replace this with a logging call or an email notification. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +When you see that line, you can safely inspect the `json_output` folder. Each JSON file will look roughly like this: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +You can now feed these JSON files into a database, a search index, or any downstream analytics tool. + +## Frequently Asked Questions (and quick answers) + +**Q: What if I need to process PDFs instead of images?** +A: Convert each PDF page to an image first (e.g., using `pdf2image`) and place the resulting PNG/JPG files in `input_dir`. The batch OCR logic stays unchanged. + +**Q: Can I change the output format to plain text?** +A: Absolutely. Replace `format="json"` with `format="txt"` and the engine will write a `.txt` file containing only the extracted text. + +**Q: My scans are in multiple sub‑folders—will the script recurse?** +A: Yes. `batch_process` walks the directory tree by default. If you want a flat output, set `flatten=True` (if the library supports it) or post‑process the JSON filenames. + +**Q: How do I handle non‑Latin scripts?** +A: Initialise `OcrEngine` with a language parameter, e.g., `OcrEngine(lang="spa+eng")`. The batch loop itself doesn’t need any changes. + +## Pro Tips & Common Pitfalls + +- **Batch size matters:** If you notice CPU spikes, throttle the process with a simple `time.sleep(0.1)` between files. +- **Logging:** Swap the `print` call for Python’s `logging` module to capture timestamps and error levels. +- **File naming collisions:** If two scans share the same base name but reside in different sub‑folders, the JSON files will overwrite each other. Append a hash of the relative path to the output name to avoid this. +- **Memory leaks:** Some OCR back‑ends hold onto native resources. Call `ocr_engine.close()` at the end of your script if the library provides a cleanup method. + +## Full Script – Ready to Copy & Paste + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Expected console output** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +You can verify the JSON by opening any file in `json_output` with a text editor or by loading it in Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +You should see the raw OCR‑extracted text printed to the console. + +## Wrapping Up + +We’ve just covered **how to batch OCR** a whole directory of scanned images and **extract text from scans** into clean, machine‑readable JSON files. The approach is deliberately simple: set up the engine once, point it at a folder, and let the library handle the heavy lifting. From here you can: + +- Plug the JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/english/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..d8705486d --- /dev/null +++ b/ocr/english/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-26 +description: How to create OCR quickly and reliably. Learn to extract text from image, + load image for OCR, and run OCR on PNG with a custom dictionary. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: en +og_description: How to create OCR in Python and extract text from image. This guide + shows how to load image for OCR, run OCR on PNG, and use a custom dictionary. +og_title: How to Create OCR in Python – Fast Text Extraction +tags: +- OCR +- Python +- Image Processing +title: How to Create OCR in Python – Extract Text from Image +url: /python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Create OCR in Python – Step‑by‑Step Guide + +Ever wondered **how to create OCR** that can read your scanned PDFs, screenshots, or handwritten notes? You're not alone. In many real‑world projects we need to *extract text from image* files, but the out‑of‑the‑box engines often stumble on domain‑specific words. + +In this tutorial you’ll see a complete, runnable example that loads an image for OCR, applies a custom dictionary, and finally **run OCR on PNG** files. By the end you’ll be able to extract text from any image and adapt the engine to your own terminology. + +## What This Tutorial Covers + +We'll walk through every single step you need: + +* Installing the tiny yet powerful `aocr` package (or any compatible library). +* Configuring a **custom dictionary** so that terms like `aspocorp` or `licensekey` are recognized. +* **Loading an image for OCR**, whether it’s a PNG, JPEG, or a scanned PDF page. +* Running the OCR process and printing the result. + +No external documentation links, just a self‑contained solution you can copy‑paste and run today. + +### Prerequisites + +* Python 3.8 or newer (the code uses f‑strings). +* Basic familiarity with the command line – you’ll type a couple of `pip install` commands. +* An image file (`technical_doc.png` in the example) placed somewhere you can reference. + +If you meet those three items, you’re good to go. + +--- + +## Step 1: Install the OCR Library + +First, we need an OCR engine that supports a programmable configuration object. The `aocr` package is a lightweight wrapper around a native OCR engine and works well for demos. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Pro tip:** If you’re on Windows and hit a compilation error, try `pip install aocr‑binary` which ships pre‑built wheels. + +### Why Install This Library? + +`aocr` gives us direct access to a `config` object where we can inject a **custom dictionary**. That’s the secret sauce for improving accuracy on niche vocabularies. + +--- + +## Step 2: Create the OCR Engine Instance & Add a Custom Dictionary + +Now we spin up the engine and tell it which words it should treat as known. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Why a Custom Dictionary Matters + +Standard OCR models are trained on generic corpora. When the model sees “aspocorp”, it might split it into “aspo corp” or drop letters entirely. By feeding a custom list, we bias the recognizer toward the exact spelling we need, dramatically cutting post‑processing effort. + +--- + +## Step 3: Load the Image You Want to Process + +Here’s where we **load image for OCR**. The `Image.load` method accepts a path string and automatically determines the file type. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Edge case:** If your source is a multi‑page PDF, convert each page to PNG first (e.g., with `pdf2image`) and feed them one‑by‑one to the engine. + +### Tips for Better Image Quality + +* Keep the resolution at least 300 dpi. +* Ensure the image is upright; rotate with `Pillow` if necessary. +* Convert colored scans to grayscale to reduce noise. + +--- + +## Step 4: Run the OCR Process on the PNG File + +With the engine configured and the image loaded, we finally **run OCR on PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +The `process()` call returns an object that contains the recognized text, confidence scores, and bounding boxes for each word. + +--- + +## Step 5: Output the Recognized Text + +The simplest way to see what the engine found is to print the `text` attribute. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Expected Output + +If `technical_doc.png` contains the sentence *“The Aspocorp licensekey expires on 2025‑12‑31.”*, the console should display: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Notice how the custom dictionary kept the brand name intact—something a vanilla OCR might have mangled. + +--- + +## Full Working Example (Copy‑Paste Ready) + +Below is the entire script, ready to be saved as `run_ocr.py`. Just replace the placeholder path with the location of your image. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Run it from the terminal: + +```bash +python run_ocr.py +``` + +You should see the extracted text printed to the console, exactly as shown in the earlier example. + +--- + +## Frequently Asked Questions (FAQ) + +| Question | Answer | +|----------|--------| +| **Can I extract text from a scanned PDF?** | Yes. Convert each page to PNG (or TIFF) first, then feed the images to the same script. | +| **What if my image is a JPEG instead of PNG?** | The `Image.load` method supports JPEG, BMP, TIFF, and PNG out of the box. Just change the file extension. | +| **How do I improve accuracy on low‑contrast scans?** | Pre‑process with `Pillow` – increase contrast, apply binarization, or use `opencv` to deskew. | +| **Is there a way to get confidence scores for each word?** | `ocr_result` includes `words` – each word has a `confidence` attribute you can iterate over. | +| **Can I run this on a headless server?** | Absolutely. `aocr` has no GUI dependencies, making it perfect for CI pipelines. | + +--- + +## Next Steps & Related Topics + +Now that you know **how to create OCR** and **extract text from image** files, consider exploring: + +* **Pre‑processing techniques** – `load image for OCR` is just the first step; use `opencv` to denoise or sharpen. +* **Batch processing** – loop over a directory of PNGs to generate a searchable archive. +* **Multi‑language support** – add language packs to the engine if you need to read French or German documents. +* **Integrating with Elasticsearch** – index the extracted text for full‑text search across scanned assets. + +Each of these extensions builds on the core pattern we just covered, so you’ll find the transition painless. + +--- + +## Wrap‑Up + +In a handful of minutes we’ve answered **how to create OCR** that reliably **extracts text from image** files, especially PNGs, and we’ve shown you how to **load image for OCR**, apply a **custom dictionary**, and **run OCR on PNG** without any external services. + +Give the script a spin, tweak the dictionary to match your own jargon, and you’ll have a solid foundation for any document‑digitization project. + +If you ran into any hiccups, drop a comment below—happy to help. And don’t forget to share your success stories; the community learns best from real‑world examples. + +**Ready to automate your paperwork?** Grab the code, adapt it, and start turning pixels into searchable text today! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/english/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..f3edf475c --- /dev/null +++ b/ocr/english/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: how to extract ocr from images using Python – a python ocr example that + shows how to load image for ocr and extract text from receipt. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: en +og_description: how to extract ocr from images using Python. Learn a python ocr example, + load image for ocr, and extract text from receipt in minutes. +og_title: how to extract ocr in Python – Complete Guide +tags: +- OCR +- Python +- Image Processing +title: how to extract ocr in Python – Step‑by‑Step Tutorial +url: /python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to extract ocr in Python – Complete Guide + +Ever wondered **how to extract ocr** from a blurry receipt or a scanned invoice? You're not the only one—developers constantly hit the wall when they need clean, machine‑readable text from images. The good news? With just a few lines of Python you can turn a picture of a receipt into high‑confidence, searchable text. + +In this tutorial we’ll walk through a **python ocr example** that demonstrates **how to load image for ocr**, run the engine, and keep only the characters that meet an 85 % confidence threshold. By the end you’ll be able to **extract text from receipt** images without hunting through documentation or guessing API parameters. + +## What You’ll Need + +- Python 3.9 or newer (the syntax we use works on 3.8+) +- The `aocr` package (or any OCR library that provides an `OcrEngine` class). Install it with: + +```bash +pip install aocr +``` + +- A sample receipt image (`receipt.png`) placed in a folder you can reference. +- A text editor or IDE—VS Code, PyCharm, or even a simple notebook will do. + +That’s it. No heavyweight frameworks, no external services, just pure Python. + +![High‑confidence OCR result – how to extract ocr from a receipt](/images/ocr-high-confidence.png) + +*Image alt text: how to extract ocr from a receipt using Python OCR* + +## Step 1 – Create the OCR Engine Instance (how to extract ocr) + +The first thing we do is spin up an OCR engine. Think of it as the brain that will read the pixels for us. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Why?** Instantiating `OcrEngine` gives you a fresh configuration object. You can later tweak language models, DPI settings, or preprocessing steps—all without touching the core processing loop. + +## Step 2 – Load the Image for OCR + +Next we point the engine at the image we want to analyze. This is where the **load image for ocr** keyword comes into play. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tip:** If your image lives in a different directory, use `os.path.join` to build a platform‑independent path. + +**Why load the image this way?** The `Image.load` helper reads the file into a format the engine understands, handling common formats (PNG, JPEG, TIFF) automatically. Skipping this step or feeding raw bytes would raise a `ValueError`. + +## Step 3 – Run the OCR Process + +Now we actually run the OCR. The `process` method returns a rich result object containing recognized symbols, confidence scores, and bounding boxes. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**What does `ocr_result` contain?** In most libraries it includes: + +- `text`: the raw concatenated string. +- `symbol_confidences`: a list of `(char, confidence)` tuples. +- `boxes`: coordinates for each character (useful for visual debugging). + +Having access to per‑character confidence is essential for the next step. + +## Step 4 – Keep Only High‑Confidence Symbols (≥ 85 %) + +A receipt often has smudges, faint print, or background noise. By filtering out low‑confidence symbols we dramatically improve downstream parsing. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Why 85 %?** Empirically, a threshold around 0.85 balances recall and precision for most printed receipts. If you notice missing numbers, lower the threshold; if you get gibberish, raise it. + +## Step 5 – Output the High‑Confidence Extracted Text + +Finally, we print (or store) the sanitized string. This is the core of our **extract text from receipt** workflow. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Typical output looks like: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +You can now feed this string into a CSV writer, a database, or any downstream analytics pipeline. + +## Full, Ready‑to‑Run Script + +Below is the complete code snippet that you can copy‑paste into `ocr_receipt.py` and run immediately. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Save the file, ensure `receipt.png` exists, and execute: + +```bash +python ocr_receipt.py +``` + +You should see the cleaned receipt text printed to the console. + +## Edge Cases & What‑If Scenarios + +| Situation | Suggested Fix | +|-----------|----------------| +| **Very low confidence across the board** | Pre‑process the image: increase contrast, convert to grayscale, or apply a denoising filter (`cv2.GaussianBlur`). | +| **Non‑Latin characters** | Pass a language model to `OcrEngine` (e.g., `ocr_engine.language = "spa"` for Spanish). | +| **Multiple receipts in one image** | Run OCR on the whole image, then split the result using regular expressions that detect `\n\n+` (double line breaks). | +| **Need the raw OCR text as well** | Keep `ocr_result.text` alongside the filtered version for debugging. | + +These variations ensure your **how to use OCR** knowledge scales beyond the simplest case. + +## Common Pitfalls (And How to Avoid Them) + +- **Forgetting to install the library** – `pip install aocr` must succeed before you import. +- **Using the wrong path separator** on Windows (`\` vs `/`). Use `os.path.join`. +- **Hard‑coding the confidence threshold** without testing – always run a quick visual check on a few receipts first. +- **Ignoring Unicode normalisation** – some receipts contain special dash characters; run `unicodedata.normalize('NFKC', text)` if you plan to store the output. + +## Next Steps – Going Beyond the Basics + +Now that you know **how to extract ocr** data from a single receipt, you might want to: + +1. **Batch process a folder of receipts** – loop over all PNG/JPG files and write each result to a CSV. +2. **Integrate with a database** – store `high_confidence_text` in SQLite for quick look‑ups. +3. **Apply natural‑language parsing** – use regex or `dateutil` to pull dates, totals, and tax amounts. +4. **Experiment with alternative libraries** – `pytesseract`, `easyocr`, or cloud services (Google Vision, Azure OCR) if you need multilingual support or higher accuracy. + +Each of these topics naturally incorporates our secondary keywords: *python ocr example*, *extract text from receipt*, *load image for ocr*, and *how to use OCR*. + +## Conclusion + +We’ve just walked through a complete **python ocr example** that shows **how to extract ocr** text from a receipt image, filter out low‑confidence symbols, and output clean results. The steps are simple, the code is self‑contained, and the approach is flexible enough to adapt to larger projects. + +Give it a try with your own receipts, tweak the confidence threshold, and then scale up to batch processing. If you run into quirks—like a faint logo or an unusual font—remember the edge‑case tips above. Happy coding, and may your OCR pipelines be ever accurate! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/english/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..e14b8376a --- /dev/null +++ b/ocr/english/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-04-26 +description: 'how to ocr python: Learn to extract text from image and read tiff file + python using a basic OCR example. Quick, runnable code included.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: en +og_description: 'how to ocr python: A step‑by‑step guide that shows how to extract + text from image, read tiff file python, and convert scanned image text with a simple, + runnable script.' +og_title: how to ocr python – Basic OCR Example for Extracting Text +tags: +- OCR +- Python +- Image Processing +title: how to ocr python – Basic OCR Example for Extracting Text +url: /python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to ocr python – Basic OCR Example for Extracting Text + +Ever wondered **how to ocr python** when you have a scanned TIFF lying on your desk? You're not the only one staring at a bunch of image files and asking, “How do I get the words out of this?” The good news is that turning a picture into plain text is a piece of cake with the right library and a few clear steps. + +In this tutorial we’ll walk through a **basic OCR example** that reads a TIFF file, extracts the text, and prints it to the console. By the end you’ll know exactly how to **extract text from image** files, how to handle the quirks of TIFF formats, and what to tweak if you need to **convert scanned image text** into something more useful. No hidden magic—just straightforward Python that you can copy‑paste and run today. + +## What You’ll Need + +Before we dive in, make sure you have: + +- Python 3.9+ installed (the latest stable release is best). +- A pip‑installable OCR library. For this guide we’ll use a fictional `aocr` package that mimics popular tools like Tesseract; you can replace it with `pytesseract` or `easyocr` later. +- A TIFF image you want to process – name it `input.tiff` and drop it into a folder you’ll reference in the code. +- Basic familiarity with the command line (just to install the package). + +That’s it. No heavyweight dependencies, no Docker containers, just a few lines of code. + +## Step 1 – Install and Import Dependencies (how to ocr python) + +First, get the OCR package. Open a terminal and run: + +```bash +pip install aocr +``` + +If you prefer a real‑world library, swap `aocr` with `pytesseract` and install the Tesseract engine separately. + +Now import what we need. The `Path` class from `pathlib` gives us a clean way to work with file paths across operating systems. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Why use `Path`?* Because it abstracts away the slashes (`/` vs `\`) and lets you join directories without worrying about the underlying OS. That small detail often saves headaches when you later move the script to a CI server. + +## Step 2 – Create the OCR Engine Instance (basic ocr example) + +Next, spin up the OCR engine. Think of `OcrEngine` as the brain that will read the picture and spit out characters. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +Most OCR libraries let you tweak language, DPI, or confidence thresholds here. For this **basic OCR example** we’ll stick with the defaults, but you can explore `ocr_engine.config` later if you need to handle multilingual documents. + +## Step 3 – Load Your TIFF Image (read tiff file python) + +Here’s where the **read tiff file python** part comes in. TIFFs can be multi‑page, but `Image.load` will grab the first page by default—perfect for a single‑page scan. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Replace `"YOUR_DIRECTORY"` with the actual folder that holds `input.tiff`. If you’re unsure where the script runs, `Path.cwd()` prints the current working directory—handy for debugging path issues. + +## Step 4 – Run the OCR Process (extract text from image) + +Now the magic happens. Calling `process()` sends the image through the OCR pipeline and returns a result object. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Behind the scenes the engine might be converting the image to grayscale, applying thresholding, and feeding it into a neural network. You don’t need to manage those steps; the library abstracts them away. + +## Step 5 – Print the Recognized Text (convert scanned image text) + +Finally, output the text. In real projects you’d probably write it to a file or a database, but printing keeps the example tidy. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +When you run the script, you should see something like: + +``` +Hello, world! +This is a sample scanned document. +``` + +If the output looks garbled, double‑check that the source image is clear and that the OCR language matches the text. + +## Full Working Script + +Putting it all together, here’s the complete, ready‑to‑run program: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Expected Output + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +If you need to **convert scanned image text** into a searchable PDF, you can pipe `ocr_result.text` into a PDF generator like `reportlab`—but that’s a whole tutorial on its own. + +## Common Pitfalls & Pro Tips + +- **Low‑resolution scans**: OCR struggles below 150 DPI. If your TIFF is fuzzy, up‑sample it first with Pillow (`Image.open(...).resize(...)`). +- **Multiple pages**: For multi‑page TIFFs, iterate over `Image.load_multi_page()` (if your library supports it) and concatenate the results. +- **Language support**: Many engines default to English. Set `ocr_engine.language = "spa"` for Spanish, for example. +- **Whitespace handling**: OCR often adds stray line breaks. Use `str.splitlines()` or regular expressions to clean up the output. +- **Performance**: For bulk processing, reuse a single `OcrEngine` instance instead of creating a new one per file. + +## Extending the Example + +Now that you’ve mastered **how to ocr python** for a single image, consider these next steps: + +1. **Batch processing** – Loop over a directory of TIFFs and write each result to a `.txt` file. +2. **Integration with Pandas** – Store extracted text alongside metadata for quick analysis. +3. **Hybrid approach** – Combine OCR with NLP libraries like `spaCy` to extract entities (names, dates, amounts) from scanned invoices. +4. **Alternative file formats** – Swap `Image.load` for `Image.from_bytes` to handle images coming from an API or a database. + +All of these build on the core idea of **extract text from image** and **convert scanned image text** into something machines can understand. + +## Conclusion + +We’ve walked through a clear, end‑to‑end **basic OCR example** that shows **how to ocr python**, how to **read tiff file python**, and how to **extract text from image** files with just a handful of lines. The script is self‑contained, includes error handling, and prints the result directly, making it a solid foundation for any project that needs to turn scanned documents into editable text. + +Feel free to experiment—swap out the OCR backend, tweak the preprocessing, or hook the output into a downstream workflow. The sky’s the limit when you can reliably **convert scanned image text** into searchable, searchable data. + +Got questions about edge cases, language packs, or performance tuning? Drop a comment below, and happy coding! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/english/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..e8e7d4e5e --- /dev/null +++ b/ocr/english/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,181 @@ +--- +category: general +date: 2026-04-26 +description: How to run OCR on a scanned form, learn how to preprocess image to reduce + noise, and extract text from image quickly. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: en +og_description: How to run OCR on scanned documents, preprocess images, reduce noise, + and extract text efficiently. +og_title: How to Run OCR and Preprocess Images – Quick Guide +tags: +- OCR +- image processing +- Python +title: How to Run OCR and Preprocess Images – Extract Text from Scanned Forms +url: /python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Run OCR – A Complete Guide for Extracting Text from Images + +Ever wondered **how to run OCR** on a messy scanned form and get clean, searchable text? You're not the only one. In many real‑world projects the raw image is full of speckles, uneven lighting, and other quirks that make straight‑out‑of‑the‑box OCR stumble. + +The good news? With just a few lines of Python and a smart preprocessing pipeline, you can dramatically boost recognition accuracy, **reduce noise**, and pull out the exact words you need. In this tutorial we’ll walk through every step—from loading the picture to printing the final string—so you’ll walk away with a ready‑to‑drop snippet you can adapt to invoices, receipts, or any scanned document. + +## What You'll Build + +- An `OcrEngine` instance that talks to the underlying OCR library. +- A preprocessing chain that **binarizes** the image and applies a **median blur** to smooth out speckles. +- A simple call to `process()` that returns an object exposing `text`, the extracted string. + +By the end you’ll have a self‑contained script that you can run on any image file and immediately see the extracted text in the console. + +## Prerequisites + +- Python 3.9+ (the syntax used here matches the latest stable release). +- The fictional `aocr` package – think of it as a thin wrapper around Tesseract or any modern OCR engine. Install it with `pip install aocr`. +- A scanned image (`scanned_form.jpg`) placed in a folder you can reference. + +If you’re using a real OCR library like `pytesseract`, you can swap `OcrEngine` for the appropriate class—everything else stays the same. + +![](how-to-run-ocr-example.png "how to run OCR example showing a scanned form and extracted text") + +*Alt text: how to run OCR on a scanned document and view the extracted text.* + +--- + +## Step 1: How to Run OCR – Initialize the Engine + +Before the engine can read anything, we need to create an instance. Think of the `OcrEngine` as the brain that will later interpret the visual data. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Why this matters:** Instantiating the engine sets up internal models, loads language packs, and prepares the runtime environment. Skipping this step usually results in a `NoneType` error when you later call `process()`. + +--- + +## Step 2: How to Preprocess Image – Load Your Scanned Form + +Now that the brain is ready, we feed it a picture. The image can be any format supported by `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Pro tip:** Use absolute paths during development to avoid “file not found” surprises when the script runs from a different working directory. + +--- + +## Step 3: How to Reduce Noise – Apply Binarization & Median Blur + +Raw scans often contain stray dots, uneven background, or faint shadows. Two classic tricks—**binarization** and **median blur**—clean things up without sacrificing the edges that define characters. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Digging Deeper + +- **Binarization**: The `threshold=180` value tells the algorithm: “Anything brighter than 180 becomes white; everything else turns black.” Adjust this number if your scan is overly dark or light. +- **Median Blur**: A radius of `2` means the filter looks at a 5×5 pixel window and replaces the center pixel with the median value. This smooths out isolated speckles while keeping the strokes of letters intact. + +> **Edge case:** If your document has colored highlights, a simple binary threshold may erase them. In that scenario, consider using `aocr.ImageFilters.adaptive_threshold()` instead—this adapts the cutoff locally across the image. + +--- + +## Step 4: How to Extract Text – Run the OCR Process + +With a clean image in hand, we finally let the engine do its magic. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **What happens under the hood?** The engine runs a neural network (or legacy pattern matcher) over the pixel matrix, translates each recognized glyph into Unicode characters, and assembles them into lines and paragraphs. + +--- + +## Step 5: How to Extract Text – Print the Result + +The `ocr_result` object exposes a convenient `text` attribute. Let’s see what we got. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Expected Output + +If the scanned form contains: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +You should see something like: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Notice how the preprocessing step eliminated stray dots that previously turned “Amount” into “Am0unt”. That’s the power of **how to reduce noise** before OCR. + +--- + +## Common Pitfalls & How to Fix Them + +| Symptom | Likely Cause | Quick Fix | +|---------|--------------|-----------| +| Garbled characters (e.g., “@#%”) | Image too dark or too bright | Tweak the `threshold` in `binarize()`; try `adaptive_threshold`. | +| Missing words | Noise still present | Increase `radius` for `median_blur` or add a `gaussian_blur` filter. | +| Wrong language (e.g., English letters become Chinese) | Wrong language pack loaded | Pass `language="eng"` when creating `OcrEngine()` if the library supports it. | +| Slow processing on large files | High resolution | Downscale the image first: `aocr.ImageFilters.resize(width=1200)` before binarization. | + +--- + +## Going Further – Next Steps and Related Topics + +- **Batch processing**: Wrap the above logic in a loop to handle dozens of files automatically. +- **Structured output**: Use regular expressions on `ocr_result.text` to pull out fields like dates or amounts. +- **Alternative libraries**: Swap `aocr` for `pytesseract`—the code changes only at the engine initialization step. +- **How to preprocess image for PDFs**: Convert each PDF page to an image, then apply the same pipeline. + +These extensions let you scale the solution from a single form to an enterprise‑grade document ingestion pipeline. + +--- + +## Conclusion + +We’ve covered **how to run OCR** from start to finish, showed **how to preprocess image** to **reduce noise**, and demonstrated **how to extract text from image** with a clean, reproducible script. The key takeaway? A few simple filters—binarization and median blur—can turn a noisy scan into a reliable source of data, saving you hours of manual cleanup. + +Give the script a spin with your own documents, tweak the thresholds, and watch the accuracy climb. When you’re ready, explore batch processing or integrate the output into a database for searchable archives. Happy coding, and may your OCR always be spot‑on! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/english/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..bae48418d --- /dev/null +++ b/ocr/english/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-04-26 +description: Learn how to set license in Aspose OCR and how to validate license with + a concise Python script. Follow step‑by‑step instructions for hassle‑free activation. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: en +og_description: How to set license in Aspose OCR and how to validate license using + Python. Get a complete, runnable example in minutes. +og_title: How to Set License in Aspose OCR – Quick Python Guide +tags: +- Aspose OCR +- Python +- Licensing +title: How to Set License in Aspose OCR – Quick Python Guide +url: /python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Set License in Aspose OCR – Quick Python Guide + +Ever wondered **how to set license** for Aspose OCR without pulling your hair out? You're not the only one. Most developers hit a snag the first time they try to unlock the full power of the library, only to be haunted by a “Trial version” watermark. The good news is that the fix is pretty straightforward, and you can verify it right away. + +In this tutorial we'll walk through **how to set license** *and* **how to validate license** using a tiny Python script. By the end you'll have a working example that prints “License OK”, plus a handful of tips to keep you from common pitfalls. + +## Prerequisites + +Before we dive in, make sure you have: + +- Python 3.8+ installed (the code works on 3.9, 3.10, and newer). +- An active Aspose OCR for Java (or .NET) license file – typically named `Aspose.OCR.Java.lic`. +- The `asposeocr` package installed via `pip install asposeocr`. +- Basic familiarity with running Python scripts from the command line. + +Got all that? Great—let’s get started. + +## How to Set License in Aspose OCR (Step 1) + +Setting the license is essentially a three‑line operation, but each line has a purpose. We'll break it down so you understand *why* we do what we do. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Why import `License`?** +The `License` class is the gateway that tells the Aspose OCR engine you’ve paid for the product. Without creating an instance, the library will keep assuming you’re on a trial. + +**Why instantiate `License`?** +Instantiating gives you an object (`license_obj`) that can hold the path to your `.lic` file and subsequently apply it to the runtime. + +## How to Set License in Aspose OCR – Providing the License File + +Now we point the object at the actual license file on disk. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Tips & tricks:** + +- **Absolute vs. relative path** – If you run the script from a different folder, an absolute path (`C:/licenses/...`) eliminates “file not found” errors. +- **Environment variables** – Storing the path in an env var (`OCR_LICENSE_PATH`) keeps secrets out of source control: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## How to Validate License – Making Sure It Worked + +Setting the license is only half the battle; you need to confirm that the library accepted it. That’s where the validation step shines. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +If the license file is missing, corrupted, or mismatched, `validate()` will raise an exception. Catching that exception gives you a clean way to report problems. + +## Full Working Example (All Steps Combined) + +Below is the complete, ready‑to‑run script. Run it from a terminal (`python set_license.py`) and you should see “License OK” printed. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Expected output** + +``` +License OK +``` + +If something goes wrong, you’ll see something like: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +That message tells you exactly what to fix—no guessing required. + +## How to Validate License – Handling Common Edge Cases + +Even with the script above, a few scenarios can trip you up: + +| Situation | What Happens | How to Fix | +|-----------|--------------|------------| +| **File path typo** | `FileNotFoundError` from `set_license` | Double‑check the path; use `os.path.abspath()` to debug. | +| **Wrong file type** | Validation throws “Invalid license format” | Ensure you’re using the `.lic` file that matches your product edition. | +| **Expired license** | Validation raises “License expired” | Renew the license with Aspose support and replace the file. | +| **Running in a restricted environment** (e.g., AWS Lambda) | Permission error | Grant read access to the directory or embed the license in the deployment package. | + +Pro tip: wrap the `set_license` call in its own `try/except` block if you want to differentiate between “file not found” and “invalid format” errors. + +## Visual Summary + +![how to set license in Aspose OCR example](/images/aspose-ocr-license.png "how to set license in Aspose OCR example") + +*The screenshot shows the script outputting “License OK” after a successful activation.* + +## Common Pitfalls & Best Practices + +- **Never commit your license file to a public repo.** Use environment variables or secret managers (GitHub Secrets, Azure Key Vault) instead. +- **Validate early.** Placing `license_obj.validate()` right after `set_license` catches errors before any OCR work begins. +- **Reuse the License object.** You only need to set the license once per process; subsequent OCR calls will automatically use the activated license. +- **Log the license path (sans file name) in production** to aid debugging without exposing the actual file. + +## Next Steps – Extending Your OCR Workflow + +Now that you know **how to set license** and **how to validate license**, you can move on to the core OCR tasks: + +- **how to read image** – `Image.load("sample.png")` +- **how to extract text** – `ocr_engine.recognize(image)` +- **how to configure OCR options** – adjust `OcrEngine` settings for language, accuracy, etc. + +Each of those topics builds on a successfully licensed engine, so you’ll never see the trial watermark again. + +## Conclusion + +We’ve covered the entire process of **how to set license** for Aspose OCR, demonstrated **how to validate license**, and gave you a complete, runnable script that prints “License OK”. By handling errors up front and using environment variables, you keep your application both secure and robust. + +Got more questions about OCR, licensing, or integrating Aspose into a larger pipeline? 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/english/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..30781b3f3 --- /dev/null +++ b/ocr/english/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: how to use OCR on scanned PDFs, extract text from PDF, run OCR on PDF, + and convert scanned PDF to searchable files in a few steps. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: en +og_description: 'how to use OCR in Python: learn how to extract text from PDF, run + OCR on PDF, and convert scanned PDF into searchable documents.' +og_title: how to use OCR – Quick Guide to Extract Text from PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: how to use OCR – Extract Text from PDF with Python +url: /python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to use OCR – Extract Text from PDF with Python + +Ever wondered **how to use OCR** to pull text out of a scanned contract, receipt, or ebook? You're not alone. In many real‑world projects the PDF you receive is just an image, and without OCR you can't search, index, or analyze its contents. + +In this tutorial we'll walk through a complete, runnable example that shows **how to use OCR**, how to **extract text from PDF**, and why you might want to **convert scanned PDF** files into searchable documents. We'll also cover the subtle art of **loading PDF as image** so the OCR engine can see every page clearly. + +> **Quick preview:** By the end you’ll have a script that loads a multi‑page PDF, runs OCR on each page, and prints the recognized text – no external services required. + +## What You’ll Need + +- Python 3.9+ (any recent version works) +- `aocr` package (or any compatible OCR library that provides `OcrEngine` and `Image.load`) +- A scanned PDF file you want to process (e.g., `contract.pdf`) +- A modest amount of RAM (≈ 200 MB per 100‑page PDF is usually fine) + +If you haven’t installed the OCR library yet, run: + +```bash +pip install aocr +``` + +> **Pro tip:** Use a virtual environment to keep your dependencies tidy. + +## Step 1: Load PDF as Image – The First Piece of the Puzzle + +Before any OCR can happen, the PDF must be represented as an image. This is where the secondary keyword **load pdf as image** comes into play. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Why this matters:* `aocr.Image.load` internally rasterizes each PDF page into a bitmap that the OCR engine can understand. If you skip this step and feed the raw PDF, the engine will raise an error because it expects pixel data, not vector data. + +> **Note:** The path can be absolute or relative. Make sure the file is readable; otherwise you’ll hit a `FileNotFoundError`. + +## Step 2: Run OCR on PDF – Turning Pixels into Characters + +Now that the PDF lives as an image, we can finally **run OCR on PDF**. The following snippet processes every page in one go: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*What’s happening under the hood?* `process_all_pages` loops through the rasterized pages, applies the OCR model, and returns a list of result objects—one per page. Each result contains the recognized text, confidence scores, and bounding boxes (if you need them later). + +## Step 3: Extract Text from PDF – Pulling the Strings Out + +With OCR results in hand, extracting the plain text becomes trivial. We’ll iterate over the pages and print the output, demonstrating the secondary keyword **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Expected output** (truncated for brevity): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +If you need the text in a single string, simply concatenate: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Now you have successfully **extracted text from PDF** using OCR. + +## Step 4: Convert Scanned PDF – Making It Searchable + +Many downstream tools (like Elasticsearch or SharePoint) expect a searchable PDF rather than a plain‑text dump. You can embed the OCR output back into the original PDF, effectively **convert scanned PDF** into a searchable version. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Why bother?* A searchable PDF retains the original layout and images while allowing text selection and indexing—a win‑win for both humans and machines. + +## Common Pitfalls & Edge Cases + +### Multi‑Page PDFs Larger Than Memory + +If your PDF has hundreds of pages, loading everything at once may exhaust RAM. The `aocr` library supports lazy loading: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Then process pages one by one: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Low‑Quality Scans + +OCR accuracy drops dramatically on blurry or low‑contrast scans. Before feeding the image to the engine, consider preprocessing: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Language Support + +By default the engine assumes English. To **run OCR on PDF** in another language, set the language code: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Make sure the corresponding language model is installed. + +## Full Working Example + +Putting everything together, here’s a self‑contained script you can drop into a file called `ocr_pdf.py` and run immediately: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Run it like so: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +You’ll see the text printed to the console, and if you supplied `-o`, a searchable PDF will appear next to the original file. + +## Pro Tips & Best Practices + +- **Batch processing:** When handling dozens of PDFs, wrap the above logic in a loop and log each file’s success/failure. +- **Confidence filtering:** Each `page_result` includes a confidence metric. Discard or flag pages with low confidence for manual review. +- **Parallelism:** If your CPU has multiple cores, consider using `concurrent.futures` to process pages in parallel—just be mindful of memory usage. +- **Version lock:** The `aocr` API can evolve. Pin the version in `requirements.txt` (e.g., `aocr==2.3.1`) to avoid breaking changes. + +## Conclusion + +We’ve walked through **how to use OCR** to **extract text from PDF**, **run OCR on PDF**, **load PDF as image**, and even **convert scanned PDF** into a searchable format. The code is complete, the explanations cover both the *what* and the *why*, and you now have a reusable pattern for any project that deals with image‑based PDFs. + +What’s next? Try feeding the extracted text into a natural‑language pipeline, index the searchable PDFs with Elasticsearch, or experiment with different OCR back‑ends like Tesseract or Azure Computer Vision. The sky’s the limit, and the tools are right at your fingertips. + +Happy coding, and may your PDFs always be searchable! + +![how to use OCR example](/images/ocr_workflow.png "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/english/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/english/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..4b11cc9a0 --- /dev/null +++ b/ocr/english/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: How to use threading to load image for OCR in Python. Learn async OCR + processing with callbacks, background threads, and image loading in just a few steps. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: en +og_description: How to use threading to load image for OCR in Python. This guide shows + a complete, runnable example with callbacks and background execution. +og_title: How to Use Threading to Load Image for OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: How to Use Threading to Load Image for OCR +url: /python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Use Threading to Load Image for OCR + +Ever wondered **how to use threading** to load image for OCR without freezing your app? It’s a scenario that pops up whether you’re building a desktop scanner, a web service, or a simple script that processes massive pictures. The good news? A few lines of Python and the right threading pattern will keep your UI snappy while the OCR engine works its magic. + +In this tutorial we’ll walk through a complete, end‑to‑end example: loading a large PNG, kicking off OCR on a background thread, and handling the result with a callback. By the end you’ll not only know **how to use threading** but also how to **load image for OCR** in a clean, reusable way. + +## What You’ll Need + +- Python 3.9+ (the syntax we use works on any recent version) +- `pillow` for image handling (`pip install pillow`) +- `pytesseract` as a thin wrapper around Tesseract OCR (`pip install pytesseract`) +- Tesseract OCR engine installed on your machine (download from [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- A large image file you want to process (`large_image.png` in this guide) + +No extra frameworks, no async/await—just classic `threading` and a callback. + +## Step 1: Import the Threading Module (Required for Background Execution) + +The first thing we do is bring in the `threading` module. It gives us the `Thread` class, which lets us run any function in a separate OS thread. + +```python +import threading +``` + +*Why this matters*: If you run OCR on the main thread, your program (especially a GUI) will freeze until the OCR finishes. By delegating the work to a background thread, the main thread stays free to update the UI, handle user input, or start other tasks. + +## Step 2: Define a Callback That Will Be Invoked When OCR Finishes + +A callback is simply a function that another piece of code calls when it’s done. Here we’ll print the recognized text, but you could store it, send it over the network, or update a UI widget. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Pro tip*: Keep the callback lightweight. Heavy processing inside the callback defeats the purpose of threading because it will still block the thread that called it (often the main thread). + +## Step 3: Load the Image You Want to Process + +Loading the image is a separate concern from OCR, but it’s still part of the overall workflow. Using Pillow makes this trivial. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Why we do it here*: If the image is huge, loading it on the main thread could already cause a hiccup. In many real‑world apps you’d also off‑load the loading to a thread, but for clarity we keep it synchronous. + +## Step 4: Create a Small OCR Engine Wrapper + +The original snippet used `engine.process_async`. We’ll mimic that with a tiny class that starts a thread internally and calls the supplied callback when done. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Explanation*: +- `_run_ocr` does the heavy lifting. +- `process_async` creates a `Thread` object, marks it as a daemon (so the interpreter can exit even if the thread is still running), and starts it. +- The callback receives either the OCR text or an error message. + +## Step 5: Tie Everything Together and Do Other Work While OCR Runs + +Now we orchestrate the whole flow: load the image, instantiate the engine, fire off the async OCR, and keep the main thread busy with something else (here we just print a message). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Expected output (truncated for brevity):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +If the OCR fails, the callback will print an error message instead of the text. + +--- + +## Why This Approach Works Better Than a Simple Loop + +- **Responsiveness**: The main thread never blocks on the OCR call, which can take seconds for large images. +- **Scalability**: You can spin up multiple `SimpleOcrEngine` instances, each on its own thread, to process a batch of images concurrently. +- **Separation of Concerns**: Loading, processing, and result handling are cleanly separated, making the code easier to test and maintain. + +## Common Pitfalls and How to Avoid Them + +| Pitfall | What Happens | Fix | +|---------|--------------|-----| +| Forgetting to mark the thread as *daemon* | The script hangs after the main work finishes because the OCR thread is still alive. | Set `worker.daemon = True` **or** `join()` the thread before exiting. | +| Using a global variable for the result without locks | Race conditions may corrupt the data when multiple threads write simultaneously. | Pass the result via a callback (as we do) or use thread‑safe containers like `queue.Queue`. | +| Loading a massive image on the main thread | UI freezes before the background OCR even starts. | Off‑load image loading to a thread as well, or use lazy loading techniques. | +| Not handling exceptions inside the worker thread | Uncaught exceptions silently kill the thread, leaving you with no result. | Wrap OCR logic in `try/except` and forward the error to the callback. | + +## Extending This Pattern + +- **Progress Reporting**: Use a shared `queue.Queue` to push intermediate progress percentages from the OCR thread to the main thread. +- **Thread Pool**: For batch processing, replace individual `Thread` objects with a `concurrent.futures.ThreadPoolExecutor`. +- **GUI Integration**: In a Tkinter or PyQt app, schedule the callback with `after()` (Tkinter) or `QTimer.singleShot` (Qt) to ensure UI updates happen on the main thread. + +## Full Working Example (Copy‑Paste Ready) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/french/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..ff62c820b --- /dev/null +++ b/ocr/french/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-04-26 +description: Extraire le texte d’en-tête avec OCR en Python Aspose OCR. Apprenez à + extraire rapidement et de façon fiable le texte d’une zone spécifique à partir d’images. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: fr +og_description: Extrayez rapidement le texte d’en-tête avec OCR. Ce guide montre comment + extraire le texte d’une zone spécifique en utilisant Python Aspose OCR en quelques + lignes seulement. +og_title: Extraire le texte d’en-tête OCR avec Python Aspose OCR – Tutoriel complet +tags: +- OCR +- Python +- Aspose +title: Extraction du texte d’en-tête OCR avec Python Aspose OCR – Guide étape par + étape +url: /fr/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extraction de texte d’en‑tête OCR – Tutoriel complet Python Aspose OCR + +Vous avez déjà eu besoin d'**extraire du texte d’en‑tête OCR** à partir d’une facture numérisée sans vouloir traiter toute la page ? Vous n'êtes pas le seul. Dans de nombreuses pipelines réelles, l’en‑tête contient les informations les plus critiques — numéro de facture, date, nom du fournisseur — donc le récupérer rapidement peut économiser beaucoup de travail en aval. + +Dans ce tutoriel, nous vous montrons une solution prête à l’emploi qui **extrait le texte d’une zone spécifique** en utilisant la bibliothèque **Python Aspose OCR**. Pas de références vagues à de la documentation externe, seulement un script complet, une explication claire de chaque ligne, et des astuces que vous utiliserez réellement demain. + +## Ce que vous allez apprendre + +- Comment installer et importer le package Aspose OCR pour Python. +- Comment charger une image et définir une **region of interest (ROI)** qui isole l’en‑tête. +- Comment exécuter le moteur OCR sur cette ROI et récupérer du texte propre. +- Pièges courants (par ex., incompatibilités de DPI) et comment les éviter. +- À quoi ressemble la sortie attendue afin que vous puissiez vérifier que tout fonctionne. + +À la fin, vous pourrez intégrer ce code dans n’importe quel projet qui a besoin d'**extraire du texte d’en‑tête OCR** à partir de factures, reçus ou tout document avec une mise en page prévisible. + +## Prérequis + +- Python 3.8 ou plus récent installé sur votre machine. +- Une licence valide Aspose OCR pour Python (l’essai gratuit fonctionne pour l’évaluation). +- Un fichier image (`invoice.png`) contenant une région d’en‑tête claire. +- Une connaissance de base des fonctions Python et des chemins de fichiers. + +> **Astuce pro :** Si vous testez sur une numérisation à basse résolution, augmentez le DPI avant de le transmettre à Aspose OCR – cela améliore considérablement la précision. + +--- + +## Étape 1 : Installer le package Aspose OCR + +Tout d’abord, ajoutez la bibliothèque à votre environnement. Le package officiel est `aspose-ocr`. Exécutez ceci une fois : + +```bash +pip install aspose-ocr +``` + +Si vous utilisez un environnement virtuel (fortement recommandé), activez‑le avant l’installation. Cela garantit que le package ne confligera pas avec d’autres projets. + +## Étape 2 : Importer les classes requises et charger l’image + +Nous importons maintenant les classes nécessaires dans notre script et chargeons l’image de la facture. Remarquez l’utilisation de **chemins complets** ; les chemins relatifs fonctionnent aussi, mais les chemins absolus éliminent les ambiguïtés lorsque le script s’exécute sur un serveur. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Pourquoi c’est important :** Initialiser `OcrEngine` une seule fois et le réutiliser pour plusieurs images est plus efficace que de créer un nouveau moteur à chaque fois. + +## Étape 3 : Définir la région d’en‑tête (ROI) + +L’en‑tête se trouve généralement en haut de la page, mais ses coordonnées exactes peuvent varier. Ici, nous définissons un rectangle (`x`, `y`, `width`, `height`) qui couvre l’en‑tête. Ajustez les nombres pour correspondre à la mise en page de votre document. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Comment ça fonctionne :** En appelant `set_roi`, le moteur OCR limite son analyse à ce rectangle, ce qui accélère considérablement le traitement et réduit le bruit provenant du reste de la page. + +## Étape 4 : Appliquer la ROI et lancer l’OCR + +Nous indiquons maintenant au moteur de se concentrer sur la région d’en‑tête, puis nous exécutons le processus OCR. L’objet résultat contient le texte reconnu ainsi que des métadonnées supplémentaires (scores de confiance, langue, etc.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Si l’OCR échoue (par ex., format d’image non supporté), `ocr_result` sera `None`. Une clause de garde rapide peut rendre votre script plus robuste : + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Étape 5 : Récupérer et afficher le texte d’en‑tête extrait + +Enfin, nous extrayons le texte de l’objet résultat et l’affichons. Vous pouvez également l’écrire dans un fichier ou le transmettre à une autre fonction pour un traitement supplémentaire. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Sortie attendue + +Lorsque tout est correctement configuré, vous devriez voir quelque chose comme : + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Si la sortie apparaît brouillée, revérifiez les coordonnées de la ROI et assurez‑vous que l’image source est à fort contraste. + +--- + +## Variantes et cas particuliers + +### 1. Plusieurs en‑têtes dans un même document + +Parfois, un PDF contient plusieurs pages, chacune avec son propre en‑tête. Parcourez les pages et ajustez la ROI pour chaque page : + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Gestion des numérisations inclinées + +Si la facture est légèrement tournée, pré‑traitez l’image avec OpenCV avant de la transmettre à Aspose OCR : + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Modification des paramètres de langue + +Aspose OCR peut détecter automatiquement la langue, mais vous pouvez forcer l’anglais pour des résultats plus rapides : + +```python +ocr_engine.language = "en" +``` + +--- + +## Exemple complet fonctionnel + +Voici le script complet que vous pouvez copier‑coller dans un fichier nommé `extract_header.py`. N’oubliez pas de remplacer le chemin de l’image par le vôtre. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +L’exécution de ce script doit afficher les lignes d’en‑tête exactement comme indiqué précédemment. N’hésitez pas à ajuster les valeurs de `roi` pour correspondre à votre modèle de facture spécifique. + +--- + +## Questions fréquentes + +**Q : Cela fonctionne‑t‑il directement avec les PDF ?** +R : Pas immédiatement. Convertissez chaque page PDF en image (par ex., avec `pdf2image`) puis alimentez le script avec le PNG/JPG. + +**Q : Et si mon en‑tête contient à la fois un logo et du texte ?** +R : Aspose OCR se concentre sur le contenu textuel. Pour les logos, envisagez d’utiliser une bibliothèque de reconnaissance d’image séparée comme `opencv` ou `tesseract` avec un modèle personnalisé. + +**Q : L’essai gratuit est‑il limité ?** +R : L’essai permet jusqu’à 10 pages par mois. Pour la production, achetez une licence afin de supprimer la limite et de débloquer des paramètres de précision supérieurs. + +--- + +## Conclusion + +Vous disposez maintenant d’un guide **complet et digne d’être cité** pour **extraire du texte d’en‑tête OCR** avec **Python Aspose OCR**. Le tutoriel a couvert tout, de l’installation à la gestion des cas particuliers, et vous a fourni une fonction réutilisable à intégrer dans des flux de travail plus larges. + +Ensuite, vous pourriez explorer **l’extraction de texte d’une zone spécifique** pour d’autres parties comme les pieds de page ou les lignes d’articles, ou combiner cette approche avec un convertisseur PDF‑vers‑image pour automatiser des pipelines de documents complets. Les possibilités sont infinies — veillez simplement à garder vos coordonnées de ROI précises et vos images à haute résolution. + +Vous avez une mise en page difficile ? Partagez‑la dans les commentaires et nous ajusterons la ROI ensemble. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/french/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..4b526a2db --- /dev/null +++ b/ocr/french/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: Extraire du texte d’une image avec Aspose OCR en Python. Apprenez comment + extraire du texte, convertir une image en texte et charger une image pour l’OCR + avec prise en charge multilingue. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: fr +og_description: extraire du texte d’une image instantanément. Ce guide montre comment + extraire du texte, convertir une image en texte et charger une image pour l’OCR + en utilisant Aspose OCR en Python. +og_title: extraire du texte d'une image avec Python – Tutoriel complet d'OCR multilingue +tags: +- OCR +- Python +- Aspose +title: extraire du texte d’une image avec Python – Guide OCR multilingue +url: /fr/python-java/general/extract-text-from-image-with-python-multilingual-ocr-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 Python – Guide OCR multilingue + +Vous avez déjà eu besoin d'**extraire du texte d'une image** mais vous ne saviez pas quelle bibliothèque pouvait gérer des pages multilingues ? Vous n'êtes pas seul. Dans de nombreuses applications réelles—pensez au traitement de factures, à la surveillance des réseaux sociaux ou à l'archivage de documents multilingues—vous rencontrerez des images contenant à la fois des caractères latins et cyrilliques. + +Bonne nouvelle ? Avec Aspose OCR for Python, vous pouvez **extraire du texte**, **convertir une image en texte** et **charger une image pour l'OCR** en quelques lignes seulement, tout en laissant le moteur détecter automatiquement la langue. Dans ce tutoriel, nous parcourrons un exemple complet et exécutable, expliquerons pourquoi chaque étape est importante et aborderons quelques cas limites que vous pourriez rencontrer. + +> **Ce que vous retirerez** +> * Un script prêt à l'exécution qui extrait du texte d'un PNG multilingue. +> * Une compréhension de la configuration de l'OCR multilingue en Python. +> * Des astuces pour gérer les gros fichiers, les différents formats d'image et déboguer les problèmes courants. + +## Prérequis + +- Python 3.8 ou plus récent (le code utilise des f‑strings). +- Package `asposeocr` installé (`pip install asposeocr`). +- Un fichier image (par ex., `mixed_lang.png`) contenant du texte dans plus d'un script. +- Familiarité de base avec les importations Python et les API orientées objet. + +Aucune dépendance lourde, aucun service externe—juste une seule installation pip et vous êtes prêt à partir. + +--- + +## Étape 1 – Installer & importer la bibliothèque Aspose OCR + +Avant de pouvoir **charger une image pour l'OCR**, nous avons besoin de la bibliothèque elle‑même. Le package comprend le moteur OCR de base et un chargeur d'image léger. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Pourquoi c'est important* : importer les classes spécifiques maintient l'espace de noms propre et rend le code ultérieur plus clair. Si vous importez seulement `asposeocr`, vous devrez qualifier chaque appel (`aocr.OcrEngine()`), ce qui peut être encombrant. + +--- + +## Étape 2 – Créer le moteur OCR et activer la détection multilingue + +Aspose OCR peut deviner automatiquement les langues présentes dans l'image. Le réglage `Language.AUTO` couvre le latin, le cyrillique, l'arabe et bien d'autres. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Astuce pro* : si vous connaissez la langue à l'avance, vous pouvez assigner `Language.ENGLISH` ou `Language.RUSSIAN` pour un léger gain de performance. Mais pour des documents réellement mixtes, `AUTO` est le choix le plus sûr. + +--- + +## Étape 3 – Charger l'image à traiter + +C’est ici que nous **chargeons une image pour l'OCR**. Aspose prend en charge PNG, JPEG, BMP, TIFF, et même les pages PDF traitées comme des images. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Conseil** : si votre image dépasse 2 Mo, envisagez de la redimensionner au préalable. Les images volumineuses augmentent l'utilisation de la mémoire et peuvent ralentir l'étape de détection. + +--- + +## Étape 4 – Exécuter le processus OCR et capturer le résultat + +Appeler `process()` effectue le travail lourd : détection du texte, analyse de la mise en page et décodage de la langue. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +L'objet `ocr_result` retourné contient plusieurs propriétés utiles : + +| Propriété | Description | +|-----------|-------------| +| `text` | Chaîne brute du texte reconnu (ce que vous utiliserez le plus souvent). | +| `confidence` | Score de confiance global (0‑100). | +| `lines` | Liste d'objets `OcrLine` avec des données de position (pratique pour les PDF). | + +--- + +## Étape 5 – Afficher le texte extrait + +Enfin, nous affichons le résultat. Dans une application réelle, vous pourriez l'écrire dans une base de données ou le transmettre à une API de traduction. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Sortie attendue** (exemple pour une image multilingue) : + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Si vous voyez des caractères illisibles, vérifiez que l'image n'est pas corrompue et que vous utilisez la dernière version de `asposeocr` (v23.7 au moment de la rédaction). + +--- + +## Étape 6 – Script complet à copier‑coller + +Assembler le tout élimine la confusion du « où commence le code ? ». Enregistrez-le sous le nom `multilingual_ocr.py` et exécutez‑le depuis la ligne de commande. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Exécutez‑le : + +```bash +python multilingual_ocr.py +``` + +Vous devriez voir les chaînes extraites affichées dans la console. C’est tout—**convertir une image en texte** en quelques lignes seulement. + +--- + +## Questions fréquentes & gestion des cas limites + +### Et si mon image contient de l'écriture manuscrite ? + +Aspose OCR est optimisé pour le texte imprimé. Les scripts manuscrits nécessitent souvent un modèle dédié (par ex., Azure Read ou Google Vision). Vous pouvez toujours essayer `Language.AUTO`, mais attendez une confiance plus faible. + +### Comment améliorer la précision sur des numérisations bruyantes ? + +1. Pré‑traiter l'image (binarisation, désépuration). +2. Augmenter le DPI à au moins 300 ppi avant de le fournir au moteur. +3. Définir explicitement `ocr_engine.config.deskew = True` si l'image est inclinée. + +```python +ocr_engine.config.deskew = True +``` + +### Puis‑je extraire du texte d'un PDF sans le convertir d'abord en image ? + +Oui—Aspose OCR peut ouvrir les pages PDF directement : + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Gardez simplement à l'esprit que chaque page est traitée comme une image en interne, donc les mêmes considérations de qualité s'appliquent. + +--- + +## Conclusion + +Vous disposez maintenant d'une méthode solide, de bout en bout, pour **extraire du texte d'une image** avec Aspose OCR en Python, incluant la prise en charge multilingue. Le script montre comment **charger une image pour l'OCR**, **convertir une image en texte**, et gérer les problèmes les plus courants. + +À partir de là, vous pourriez : + +- Intégrer la fonction dans un service web acceptant les téléchargements d'utilisateurs. +- Associer le texte extrait à une bibliothèque de détection de langue pour le diriger vers le bon moteur de traduction. +- Expérimenter les options `ocr_engine.config` (par ex., `max_recognition_time`, `text_orientation`) pour affiner les performances. + +Bon codage, et que vos pipelines OCR soient toujours précis ! + +--- + +![Capture d'écran du texte multilingue extrait – exemple d'extraction de texte d'une image](image-placeholder.png "exemple d'extraction de texte d'une image") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/french/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..eabd05a32 --- /dev/null +++ b/ocr/french/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-04-26 +description: Comment effectuer une OCR par lots de vos documents et extraire le texte + des numérisations en Python. Apprenez le traitement par lots étape par étape avec + OcrEngine pour une sortie JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: fr +og_description: Comment réaliser une OCR par lots de vos fichiers numérisés et extraire + le texte des scans en un seul script. Code complet, astuces et prise en charge des + cas limites. +og_title: Comment faire de l'OCR par lots – Guide Python rapide +tags: +- OCR +- Python +- Automation +title: Comment réaliser une OCR par lots – Extraire le texte des numérisations efficacement +url: /fr/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment faire du OCR par lots – Extraire du texte à partir de numérisations efficacement + +Vous vous êtes déjà demandé **comment faire du OCR par lots** sur une montagne de PDF numérisés sans perdre la tête ? Vous n'êtes pas seul — les développeurs demandent constamment : *« Comment extraire du texte des numérisations en une seule passe ? »* La bonne nouvelle, c’est que quelques lignes de Python peuvent transformer cette tâche fastidieuse en un pipeline fluide et automatisé. + +Dans ce tutoriel, nous parcourrons une solution complète, prête à l’emploi, qui **extrait du texte à partir de numérisations**, enregistre les résultats au format JSON, et vous donne une vérification rapide à la fin. Aucun service externe, aucune magie — juste du Python pur, la classe `OcrEngine`, et un peu de gestion de dossiers. + +## Ce que vous allez retenir + +- Un script pleinement fonctionnel qui **effectue du OCR par lots** sur n’importe quel dossier d’images. +- Des explications claires du *pourquoi* de chaque ligne, pas seulement du *quoi*. +- Des astuces pour gérer les dossiers vides, les fichiers non‑image et les gros lots. +- Un moyen de vérifier que la sortie JSON contient réellement le texte extrait. + +### Prérequis (le strict minimum) + +| Prérequis | Pourquoi c’est important | +|-----------|---------------------------| +| Python 3.8+ | Syntaxe moderne & annotations de type | +| Bibliothèque `OcrEngine` (ou un wrapper compatible) | Fonctionnalité OCR centrale | +| Un répertoire contenant des fichiers d’image numérisés (PNG, JPG, TIFF) | Données d’entrée | +| Permissions d’écriture pour le dossier de sortie | Enregistrement des résultats JSON | + +Si vous avez déjà tout cela, super — plongeons‑y. + +![how to batch OCR workflow](image-placeholder.png){alt="flux de travail du OCR par lots"} + +## Étape 1 – Initialiser le moteur OCR (how to batch OCR) + +Avant de pouvoir traiter quoi que ce soit, nous avons besoin d’une instance du moteur OCR. Pensez‑y comme le « cerveau » qui lira chaque image et produira du texte. L’initialiser une fois et le réutiliser sur tout le lot est le schéma le plus efficace. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Pourquoi réutiliser la même instance ?** +> Créer un nouveau moteur pour chaque fichier chargerait à plusieurs reprises des modèles lourds en mémoire, ralentissant considérablement le traitement par lots. Une seule instance garde le modèle en RAM et vous permet de traiter des milliers d’images sans ralentissement perceptible. + +## Étape 2 – Pointer vers votre dossier de numérisations (extract text from scans) + +Vos numérisations résident quelque part sur le disque. Indiquons au script où les trouver. Utiliser des chemins absolus évite les surprises « fichier introuvable » lorsque le script est lancé depuis un répertoire de travail différent. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Astuce pro :** +> Si vous êtes sous Windows, les barres obliques (`/`) fonctionnent très bien avec `os.path.abspath`, vous n’avez donc pas besoin d’échapper les antislashs. + +## Étape 3 – Choisir où placer les résultats JSON + +Vous voulez probablement un dossier bien rangé pour les résultats OCR. Garder la sortie séparée de la source facilite le nettoyage ultérieur ou l’alimentation du JSON dans un autre pipeline. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Pourquoi créer le dossier par programme ?** +> Cela garantit que le script ne plantera pas si le répertoire est absent, et `exist_ok=True` rend l’opération idempotente — exécutez le script plusieurs fois sans erreurs. + +## Étape 4 – Exécuter le processus par lots (how to batch OCR) + +Voici le cœur du sujet : demander à `ocr_engine` de parcourir chaque fichier de `input_dir`, d’exécuter le OCR, puis de déposer le JSON dans `output_dir`. Le drapeau `format="json"` indique au moteur de sérialiser le résultat de façon structurée, ce que les outils en aval apprécient. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Que se passe-t-il en coulisses ? + +1. **Découverte des fichiers** – Le moteur explore `input_folder` de façon récursive, en ignorant les fichiers cachés. +2. **Validation des fichiers** – Seules les extensions d’image prises en charge (`.png`, `.jpg`, `.tif`, etc.) sont envoyées au modèle OCR. +3. **Exécution du OCR** – Chaque image est transmise au moteur OCR ; le texte, les scores de confiance et les données de mise en page sont capturés. +4. **Sérialisation JSON** – Le résultat est écrit dans un fichier portant le même nom de base mais avec l’extension `.json` dans `output_folder`. + +> **Gestion des cas limites :** +> - **Dossier vide :** Le moteur consigne « No files found » et se termine gracieusement. +> - **Image corrompue :** Le fichier est sauté, une entrée d’erreur est enregistrée dans `batch_errors.log`, et le traitement continue. +> - **Gros lot (10 k+ fichiers) :** L’utilisation de la mémoire reste faible car chaque image est traitée indépendamment. + +## Étape 5 – Confirmer que la conversion est terminée + +Une simple instruction `print` fournit un retour immédiat dans la console. Pour des pipelines de production, vous remplacerez peut‑être cela par un appel de journalisation ou une notification par e‑mail. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Lorsque vous voyez cette ligne, vous pouvez inspecter en toute sécurité le dossier `json_output`. Chaque fichier JSON ressemblera approximativement à ceci : + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Vous pouvez maintenant injecter ces fichiers JSON dans une base de données, un index de recherche, ou tout autre outil d’analyse en aval. + +## Questions fréquentes (et réponses rapides) + +**Q : Et si je dois traiter des PDF au lieu d’images ?** +R : Convertissez chaque page PDF en image d’abord (par ex., avec `pdf2image`) et placez les fichiers PNG/JPG résultants dans `input_dir`. La logique du OCR par lots reste inchangée. + +**Q : Puis‑je changer le format de sortie en texte brut ?** +R : Bien sûr. Remplacez `format="json"` par `format="txt"` et le moteur écrira un fichier `.txt` contenant uniquement le texte extrait. + +**Q : Mes numérisations sont réparties dans plusieurs sous‑dossiers—le script parcourt‑il tout ?** +R : Oui. `batch_process` parcourt l’arborescence par défaut. Si vous voulez une sortie plate, définissez `flatten=True` (si la bibliothèque le supporte) ou post‑traitez les noms de fichiers JSON. + +**Q : Comment gérer les scripts non latins ?** +R : Initialise `OcrEngine` avec un paramètre de langue, par ex., `OcrEngine(lang="spa+eng")`. La boucle de lot elle‑même ne nécessite aucun changement. + +## Astuces pro & pièges courants + +- **La taille du lot compte :** Si vous remarquez des pics CPU, limitez le processus avec un simple `time.sleep(0.1)` entre les fichiers. +- **Journalisation :** Remplacez l’appel `print` par le module `logging` de Python pour capturer les horodatages et les niveaux d’erreur. +- **Collisions de noms de fichiers :** Si deux numérisations partagent le même nom de base mais se trouvent dans des sous‑dossiers différents, les fichiers JSON s’écraseront. Ajoutez un hash du chemin relatif au nom de sortie pour éviter cela. +- **Fuites de mémoire :** Certains back‑ends OCR conservent des ressources natives. Appelez `ocr_engine.close()` à la fin de votre script si la bibliothèque propose une méthode de nettoyage. + +## Script complet – Prêt à copier‑coller + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Sortie console attendue** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Vous pouvez vérifier le JSON en ouvrant n’importe quel fichier dans `json_output` avec un éditeur de texte ou en le chargeant dans Python : + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Vous devriez voir le texte brut extrait par OCR affiché dans la console. + +## Conclusion + +Nous venons de couvrir **comment faire du OCR par lots** sur un répertoire complet d’images numérisées et **extraire du texte à partir de numérisations** dans des fichiers JSON propres et lisibles par machine. L’approche est volontairement simple : configurez le moteur une fois, pointez‑le vers un dossier, et laissez la bibliothèque faire le travail lourd. À partir d’ici, vous pouvez : + +- Brancher le JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/french/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..97c451ff2 --- /dev/null +++ b/ocr/french/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-26 +description: Comment créer de l'OCR rapidement et de manière fiable. Apprenez à extraire + du texte d'une image, à charger une image pour l'OCR, et à exécuter l'OCR sur un + PNG avec un dictionnaire personnalisé. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: fr +og_description: Comment créer un OCR en Python et extraire du texte d’une image. Ce + guide montre comment charger une image pour l’OCR, exécuter l’OCR sur un PNG et + utiliser un dictionnaire personnalisé. +og_title: Comment créer un OCR en Python – Extraction rapide de texte +tags: +- OCR +- Python +- Image Processing +title: Comment créer un OCR en Python – Extraire le texte d’une image +url: /fr/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment créer un OCR en Python – Guide étape par étape + +Vous vous êtes déjà demandé **comment créer un OCR** capable de lire vos PDFs numérisés, captures d'écran ou notes manuscrites ? Vous n'êtes pas seul. Dans de nombreux projets réels, nous devons *extraire du texte à partir de fichiers image*, mais les moteurs prêts à l'emploi peinent souvent avec les mots spécifiques à un domaine. + +Dans ce tutoriel, vous verrez un exemple complet et exécutable qui charge une image pour l'OCR, applique un dictionnaire personnalisé, et enfin **exécute l'OCR sur des fichiers PNG**. À la fin, vous pourrez extraire du texte de n'importe quelle image et adapter le moteur à votre propre terminologie. + +## Ce que couvre ce tutoriel + +* Installer le petit mais puissant paquet `aocr` (ou toute bibliothèque compatible). +* Configurer un **dictionnaire personnalisé** afin que des termes comme `aspocorp` ou `licensekey` soient reconnus. +* **Charger une image pour l'OCR**, qu'il s'agisse d'un PNG, JPEG ou d'une page PDF numérisée. +* Exécuter le processus OCR et afficher le résultat. + +Pas de liens vers une documentation externe, juste une solution autonome que vous pouvez copier‑coller et exécuter dès aujourd'hui. + +### Prérequis + +* Python 3.8 ou plus récent (le code utilise les f‑strings). +* Familiarité de base avec la ligne de commande – vous taperez quelques commandes `pip install`. +* Un fichier image (`technical_doc.png` dans l'exemple) placé quelque part où vous pouvez le référencer. + +Si vous remplissez ces trois critères, vous êtes prêt à y aller. + +--- + +## Étape 1 : Installer la bibliothèque OCR + +Tout d'abord, nous avons besoin d'un moteur OCR qui prend en charge un objet de configuration programmable. Le paquet `aocr` est une couche légère autour d'un moteur OCR natif et fonctionne bien pour les démonstrations. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Astuce :** Si vous êtes sous Windows et rencontrez une erreur de compilation, essayez `pip install aocr‑binary` qui fournit des roues pré‑compilées. + +### Pourquoi installer cette bibliothèque ? + +`aocr` nous donne un accès direct à un objet `config` où nous pouvons injecter un **dictionnaire personnalisé**. C’est l’ingrédient secret pour améliorer la précision sur des vocabulaires spécialisés. + +--- + +## Étape 2 : Créer l'instance du moteur OCR et ajouter un dictionnaire personnalisé + +Nous lançons maintenant le moteur et lui indiquons quels mots il doit considérer comme connus. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Pourquoi un dictionnaire personnalisé est important + +Les modèles OCR standards sont entraînés sur des corpus génériques. Lorsque le modèle voit « aspocorp », il peut le découper en « aspo corp » ou supprimer des lettres complètement. En fournissant une liste personnalisée, nous orientons le reconnaisseur vers l'orthographe exacte dont nous avons besoin, réduisant ainsi de façon spectaculaire le travail de post‑traitement. + +--- + +## Étape 3 : Charger l'image que vous souhaitez traiter + +C’est ici que nous **chargeons l'image pour l'OCR**. La méthode `Image.load` accepte une chaîne de chemin et détermine automatiquement le type de fichier. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Cas particulier :** Si votre source est un PDF multi‑pages, convertissez chaque page en PNG d'abord (par ex., avec `pdf2image`) et alimentez‑les une à une dans le moteur. + +### Conseils pour une meilleure qualité d'image + +* Conservez une résolution d'au moins 300 dpi. +* Assurez‑vous que l'image est droite ; faites une rotation avec `Pillow` si nécessaire. +* Convertissez les scans en couleur en niveaux de gris pour réduire le bruit. + +--- + +## Étape 4 : Exécuter le processus OCR sur le fichier PNG + +Avec le moteur configuré et l'image chargée, nous **exécutons enfin l'OCR sur le PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +L'appel `process()` renvoie un objet contenant le texte reconnu, les scores de confiance et les boîtes englobantes pour chaque mot. + +--- + +## Étape 5 : Afficher le texte reconnu + +Le moyen le plus simple de voir ce que le moteur a trouvé est d'imprimer l'attribut `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Résultat attendu + +Si `technical_doc.png` contient la phrase *« The Aspocorp licensekey expires on 2025‑12‑31. »*, la console devrait afficher : + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Remarquez comment le dictionnaire personnalisé a conservé le nom de la marque intact—ce qu'un OCR standard aurait pu déformer. + +--- + +## Exemple complet fonctionnel (prêt à copier‑coller) + +Voici le script complet, prêt à être enregistré sous `run_ocr.py`. Remplacez simplement le chemin factice par l'emplacement de votre image. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Exécutez‑le depuis le terminal : + +```bash +python run_ocr.py +``` + +Vous devriez voir le texte extrait affiché dans la console, exactement comme dans l'exemple précédent. + +--- + +## Questions fréquentes (FAQ) + +| Question | Réponse | +|----------|--------| +| **Puis-je extraire du texte d'un PDF numérisé ?** | Oui. Convertissez chaque page en PNG (ou TIFF) d'abord, puis alimentez les images au même script. | +| **Et si mon image est un JPEG au lieu d'un PNG ?** | La méthode `Image.load` prend en charge JPEG, BMP, TIFF et PNG nativement. Changez simplement l'extension du fichier. | +| **Comment améliorer la précision sur des scans à faible contraste ?** | Pré‑traitez avec `Pillow` – augmentez le contraste, appliquez une binarisation, ou utilisez `opencv` pour redresser. | +| **Existe‑t‑il un moyen d'obtenir les scores de confiance pour chaque mot ?** | `ocr_result` inclut `words` – chaque mot possède un attribut `confidence` que vous pouvez parcourir. | +| **Puis‑je exécuter cela sur un serveur sans interface graphique ?** | Absolument. `aocr` n'a aucune dépendance GUI, ce qui le rend parfait pour les pipelines CI. | + +--- + +## Prochaines étapes et sujets connexes + +Maintenant que vous savez **comment créer un OCR** et **extraire du texte à partir de fichiers image**, envisagez d'explorer : + +* **Techniques de pré‑traitement** – `load image for OCR` n'est que la première étape ; utilisez `opencv` pour débruiter ou affûter. +* **Traitement par lots** – parcourez un répertoire de PNG pour générer une archive consultable. +* **Support multilingue** – ajoutez des packs de langues au moteur si vous devez lire des documents en français ou en allemand. +* **Intégration avec Elasticsearch** – indexez le texte extrait pour une recherche en texte intégral à travers les ressources numérisées. + +Chacune de ces extensions s'appuie sur le modèle de base que nous venons de couvrir, vous trouverez donc la transition sans effort. + +--- + +## Conclusion + +En quelques minutes, nous avons répondu à la question **comment créer un OCR** qui extrait de manière fiable le **texte à partir de fichiers image**, en particulier les PNG, et nous vous avons montré comment **charger une image pour l'OCR**, appliquer un **dictionnaire personnalisé**, et **exécuter l'OCR sur PNG** sans aucun service externe. + +Lancez le script, ajustez le dictionnaire pour correspondre à votre propre jargon, et vous disposerez d'une base solide pour tout projet de numérisation de documents. + +Si vous rencontrez des problèmes, laissez un commentaire ci‑dessous—nous serons heureux d'aider. Et n'oubliez pas de partager vos réussites ; la communauté apprend le mieux des exemples concrets. + +**Prêt à automatiser votre paperasse ?** Prenez le code, adaptez‑le, et commencez dès aujourd'hui à transformer les pixels en texte consultable ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/french/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..be83d49ba --- /dev/null +++ b/ocr/french/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-04-26 +description: Comment extraire l’OCR d’images avec Python – un exemple d’OCR en Python + qui montre comment charger une image pour l’OCR et extraire le texte d’un reçu. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: fr +og_description: Comment extraire l’OCR d’images avec Python. Découvrez un exemple + d’OCR en Python, chargez une image pour l’OCR et extrayez le texte d’un reçu en + quelques minutes. +og_title: Comment extraire l'OCR en Python – Guide complet +tags: +- OCR +- Python +- Image Processing +title: Comment extraire l'OCR en Python – Tutoriel étape par étape +url: /fr/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# comment extraire l'ocr en Python – Guide complet + +Vous vous êtes déjà demandé **comment extraire l'ocr** d'un reçu flou ou d'une facture numérisée ? Vous n'êtes pas le seul—les développeurs se heurtent constamment à un mur lorsqu'ils ont besoin d'un texte propre, lisible par machine à partir d'images. La bonne nouvelle ? En quelques lignes de Python, vous pouvez transformer une photo de reçu en texte à haute confiance, consultable. + +Dans ce tutoriel, nous parcourrons un **exemple d'ocr python** qui montre **comment charger une image pour l'ocr**, exécuter le moteur, et ne conserver que les caractères qui atteignent un seuil de confiance de 85 %. À la fin, vous serez capable d'**extraire du texte d'un reçu** sans fouiller la documentation ou deviner les paramètres de l'API. + +## Ce dont vous avez besoin + +- Python 3.9 ou plus récent (la syntaxe que nous utilisons fonctionne sur 3.8+) +- Le package `aocr` (ou toute bibliothèque OCR qui fournit une classe `OcrEngine`). Installez-le avec : + +```bash +pip install aocr +``` + +- Une image d'exemple de reçu (`receipt.png`) placée dans un dossier que vous pouvez référencer. +- Un éditeur de texte ou un IDE—VS Code, PyCharm, ou même un simple notebook fera l'affaire. + +C'est tout. Aucun framework lourd, aucun service externe, juste du Python pur. + +![Résultat OCR à haute confiance – comment extraire l'ocr d'un reçu](/images/ocr-high-confidence.png) + +*Texte alternatif de l'image : comment extraire l'ocr d'un reçu en utilisant Python OCR* + +## Étape 1 – Créer l'instance du moteur OCR (comment extraire l'ocr) + +La première chose que nous faisons est de lancer un moteur OCR. Pensez‑y comme le cerveau qui lira les pixels pour nous. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Pourquoi ?** Instancier `OcrEngine` vous fournit un nouvel objet de configuration. Vous pouvez ensuite ajuster les modèles de langue, les paramètres DPI ou les étapes de prétraitement—tout cela sans toucher à la boucle de traitement principale. + +## Étape 2 – Charger l'image pour l'OCR + +Ensuite, nous pointons le moteur vers l'image que nous voulons analyser. C'est ici que le mot‑clé **charger l'image pour l'ocr** entre en jeu. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Astuce :** Si votre image se trouve dans un répertoire différent, utilisez `os.path.join` pour construire un chemin indépendant de la plateforme. + +**Pourquoi charger l'image de cette façon ?** L'utilitaire `Image.load` lit le fichier dans un format que le moteur comprend, gérant automatiquement les formats courants (PNG, JPEG, TIFF). Sauter cette étape ou fournir des octets bruts déclencherait une `ValueError`. + +## Étape 3 – Exécuter le processus OCR + +Nous exécutons maintenant réellement l'OCR. La méthode `process` renvoie un objet résultat riche contenant les symboles reconnus, les scores de confiance et les boîtes englobantes. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Que contient `ocr_result` ?** Dans la plupart des bibliothèques, il inclut : + +- `text` : la chaîne brute concaténée. +- `symbol_confidences` : une liste de tuples `(char, confidence)`. +- `boxes` : les coordonnées de chaque caractère (utile pour le débogage visuel). + +Avoir accès à la confiance par caractère est essentiel pour l'étape suivante. + +## Étape 4 – Conserver uniquement les symboles à haute confiance (≥ 85 %) + +Un reçu comporte souvent des bavures, une impression pâle ou du bruit de fond. En filtrant les symboles à faible confiance, nous améliorons considérablement l'analyse en aval. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Pourquoi 85 % ?** Empiriquement, un seuil autour de 0,85 équilibre rappel et précision pour la plupart des reçus imprimés. Si vous remarquez des chiffres manquants, abaissez le seuil ; si vous obtenez du charabia, augmentez‑le. + +## Étape 5 – Produire le texte extrait à haute confiance + +Enfin, nous affichons (ou stockons) la chaîne nettoyée. C'est le cœur de notre flux de travail **extraire du texte d'un reçu**. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Un exemple de sortie ressemble à : + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Vous pouvez maintenant injecter cette chaîne dans un générateur CSV, une base de données, ou tout pipeline analytique en aval. + +## Script complet, prêt à l'exécution + +Ci-dessous le fragment de code complet que vous pouvez copier‑coller dans `ocr_receipt.py` et exécuter immédiatement. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Enregistrez le fichier, assurez‑vous que `receipt.png` existe, puis exécutez : + +```bash +python ocr_receipt.py +``` + +Vous devriez voir le texte du reçu nettoyé affiché dans la console. + +## Cas limites & scénarios « What‑If » + +| Situation | Solution proposée | +|-----------|-------------------| +| **Très faible confiance partout** | Pré‑traitez l'image : augmentez le contraste, convertissez en niveaux de gris, ou appliquez un filtre de débruitage (`cv2.GaussianBlur`). | +| **Caractères non latins** | Passez un modèle de langue à `OcrEngine` (par ex., `ocr_engine.language = "spa"` pour l'espagnol). | +| **Plusieurs reçus dans une même image** | Exécutez l'OCR sur l'image entière, puis divisez le résultat à l'aide d'expressions régulières qui détectent `\n\n+` (sauts de ligne doubles). | +| **Besoin du texte OCR brut également** | Conservez `ocr_result.text` en plus de la version filtrée pour le débogage. | + +Ces variantes garantissent que votre connaissance **comment utiliser l'OCR** s'étend au-delà du cas le plus simple. + +## Pièges courants (et comment les éviter) + +- **Oublier d'installer la bibliothèque** – `pip install aocr` doit réussir avant l'importation. +- **Utiliser le mauvais séparateur de chemin** sous Windows (`\` vs `/`). Utilisez `os.path.join`. +- **Coder en dur le seuil de confiance** sans test – effectuez toujours une vérification visuelle rapide sur quelques reçus d'abord. +- **Ignorer la normalisation Unicode** – certains reçus contiennent des caractères de tiret spéciaux ; exécutez `unicodedata.normalize('NFKC', text)` si vous prévoyez de stocker la sortie. + +## Prochaines étapes – Aller au-delà des bases + +Maintenant que vous savez **comment extraire l'ocr** d'un seul reçu, vous pourriez vouloir : + +1. **Traiter par lots un dossier de reçus** – parcourir tous les fichiers PNG/JPG et écrire chaque résultat dans un CSV. +2. **Intégrer avec une base de données** – stocker `high_confidence_text` dans SQLite pour des recherches rapides. +3. **Appliquer une analyse en langage naturel** – utilisez des regex ou `dateutil` pour extraire dates, totaux et montants de taxe. +4. **Expérimenter d'autres bibliothèques** – `pytesseract`, `easyocr`, ou des services cloud (Google Vision, Azure OCR) si vous avez besoin d'un support multilingue ou d'une plus grande précision. + +Chacun de ces sujets intègre naturellement nos mots‑clés secondaires : *python ocr example*, *extract text from receipt*, *load image for ocr*, et *how to use OCR*. + +## Conclusion + +Nous venons de parcourir un **exemple d'ocr python** complet qui montre **comment extraire l'ocr** à partir d'une image de reçu, filtrer les symboles à faible confiance, et produire des résultats propres. Les étapes sont simples, le code est autonome, et l'approche est suffisamment flexible pour s'adapter à des projets plus importants. + +Essayez-le avec vos propres reçus, ajustez le seuil de confiance, puis passez à un traitement par lots. Si vous rencontrez des particularités—comme un logo pâle ou une police inhabituelle—rappelez‑vous les astuces pour les cas limites ci‑dessus. Bon codage, et que vos pipelines OCR soient toujours précis ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/french/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..d7ed884d6 --- /dev/null +++ b/ocr/french/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-04-26 +description: 'Comment faire de l''OCR en Python : apprenez à extraire du texte d’une + image et à lire un fichier TIFF en Python à l’aide d’un exemple d’OCR basique. Code + rapide et exécutable inclus.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: fr +og_description: 'comment faire de l''OCR en Python : un guide étape par étape qui + montre comment extraire du texte d’une image, lire un fichier TIFF avec Python et + convertir le texte d’une image numérisée avec un script simple et exécutable.' +og_title: Comment faire de l'OCR avec Python – Exemple basique d'OCR pour extraire + du texte +tags: +- OCR +- Python +- Image Processing +title: Comment faire de l'OCR en Python – Exemple de base d'OCR pour extraire du texte +url: /fr/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# comment faire de l'ocr python – Exemple basique d'OCR pour extraire du texte + +Vous êtes-vous déjà demandé **how to ocr python** lorsque vous avez un fichier TIFF numérisé sur votre bureau ? Vous n'êtes pas le seul à fixer une pile de fichiers image en vous demandant « Comment extraire les mots de ceci ? ». La bonne nouvelle, c’est que transformer une image en texte brut est un jeu d’enfant avec la bonne bibliothèque et quelques étapes claires. + +Dans ce tutoriel, nous allons parcourir un **basic OCR example** qui lit un fichier TIFF, extrait le texte et l’affiche dans la console. À la fin, vous saurez exactement comment **extract text from image** des fichiers, comment gérer les particularités des formats TIFF, et quoi ajuster si vous devez **convert scanned image text** en quelque chose de plus utile. Pas de magie cachée — juste du Python simple que vous pouvez copier‑coller et exécuter dès aujourd’hui. + +## Ce dont vous avez besoin + +- Python 3.9+ installé (la dernière version stable est recommandée). +- Une bibliothèque OCR installable via pip. Pour ce guide, nous utiliserons le package fictif `aocr` qui imite des outils populaires comme Tesseract ; vous pourrez le remplacer par `pytesseract` ou `easyocr` plus tard. +- Une image TIFF que vous souhaitez traiter – nommez‑la `input.tiff` et placez‑la dans un dossier que vous référencerez dans le code. +- Une connaissance de base de la ligne de commande (juste pour installer le package). + +C’est tout. Pas de dépendances lourdes, pas de conteneurs Docker, juste quelques lignes de code. + +## Étape 1 – Installer et importer les dépendances (how to ocr python) + +Tout d’abord, obtenez le package OCR. Ouvrez un terminal et exécutez : + +```bash +pip install aocr +``` + +Si vous préférez une bibliothèque du monde réel, remplacez `aocr` par `pytesseract` et installez séparément le moteur Tesseract. + +Ensuite, importez ce dont nous avons besoin. La classe `Path` de `pathlib` nous offre une façon propre de travailler avec les chemins de fichiers sur tous les systèmes d’exploitation. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Pourquoi utiliser `Path` ?* Parce qu’elle abstrait les séparateurs (`/` vs `\`) et vous permet de joindre des répertoires sans vous soucier du système sous‑jacent. Ce petit détail évite souvent bien des maux de tête lorsqu’on déplace le script vers un serveur CI. + +## Étape 2 – Créer l'instance du moteur OCR (basic ocr example) + +Ensuite, lancez le moteur OCR. Pensez à `OcrEngine` comme le cerveau qui lira l’image et produira des caractères. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +La plupart des bibliothèques OCR vous permettent d’ajuster la langue, le DPI ou les seuils de confiance ici. Pour ce **basic OCR example**, nous resterons sur les valeurs par défaut, mais vous pourrez explorer `ocr_engine.config` plus tard si vous devez gérer des documents multilingues. + +## Étape 3 – Charger votre image TIFF (read tiff file python) + +Voici où intervient la partie **read tiff file python**. Les TIFF peuvent être multi‑pages, mais `Image.load` récupère la première page par défaut — parfait pour un scan d’une seule page. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Remplacez `"YOUR_DIRECTORY"` par le dossier réel contenant `input.tiff`. Si vous ne savez pas où le script s’exécute, `Path.cwd()` affiche le répertoire de travail actuel — utile pour déboguer les problèmes de chemin. + +## Étape 4 – Exécuter le processus OCR (extract text from image) + +Maintenant, la magie opère. Appeler `process()` envoie l’image à travers le pipeline OCR et renvoie un objet résultat. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +En coulisses, le moteur peut convertir l’image en niveaux de gris, appliquer un seuillage, puis la transmettre à un réseau de neurones. Vous n’avez pas besoin de gérer ces étapes ; la bibliothèque les abstrait. + +## Étape 5 – Afficher le texte reconnu (convert scanned image text) + +Enfin, affichez le texte. Dans des projets réels, vous écririez probablement dans un fichier ou une base de données, mais l’impression garde l’exemple simple. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Lorsque vous exécuterez le script, vous devriez voir quelque chose comme : + +``` +Hello, world! +This is a sample scanned document. +``` + +Si la sortie apparaît brouillée, revérifiez que l’image source est nette et que la langue OCR correspond au texte. + +## Script complet fonctionnel + +En rassemblant le tout, voici le programme complet, prêt à être exécuté : + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Sortie attendue + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Si vous avez besoin de **convert scanned image text** en PDF recherchable, vous pouvez acheminer `ocr_result.text` vers un générateur de PDF comme `reportlab` — mais cela constitue un tutoriel à part entière. + +## Pièges courants & astuces pro + +- **Low‑resolution scans** : l’OCR a du mal en dessous de 150 DPI. Si votre TIFF est flou, rééchantillonnez‑le d’abord avec Pillow (`Image.open(...).resize(...)`). +- **Multiple pages** : pour les TIFF multi‑pages, itérez sur `Image.load_multi_page()` (si votre bibliothèque le supporte) et concaténez les résultats. +- **Language support** : de nombreux moteurs utilisent l’anglais par défaut. Définissez `ocr_engine.language = "spa"` pour le espagnol, par exemple. +- **Whitespace handling** : l’OCR ajoute souvent des sauts de ligne parasites. Utilisez `str.splitlines()` ou des expressions régulières pour nettoyer la sortie. +- **Performance** : pour un traitement en masse, réutilisez une seule instance de `OcrEngine` au lieu d’en créer une nouvelle pour chaque fichier. + +## Étendre l'exemple + +Maintenant que vous avez maîtrisé **how to ocr python** pour une image unique, envisagez les étapes suivantes : + +1. **Batch processing** – Parcourez un répertoire de TIFF et écrivez chaque résultat dans un fichier `.txt`. +2. **Integration with Pandas** – Stockez le texte extrait avec les métadonnées pour une analyse rapide. +3. **Hybrid approach** – Combinez l’OCR avec des bibliothèques NLP comme `spaCy` pour extraire des entités (noms, dates, montants) à partir de factures numérisées. +4. **Alternative file formats** – Remplacez `Image.load` par `Image.from_bytes` pour gérer des images provenant d’une API ou d’une base de données. + +Tous ces points s’appuient sur l’idée centrale d’**extract text from image** et de **convert scanned image text** en quelque chose que les machines peuvent comprendre. + +## Conclusion + +Nous avons parcouru un **basic OCR example** clair, de bout en bout, qui montre **how to ocr python**, comment **read tiff file python**, et comment **extract text from image** avec seulement quelques lignes. Le script est autonome, inclut la gestion des erreurs, et imprime directement le résultat, ce qui en fait une base solide pour tout projet nécessitant de transformer des documents numérisés en texte éditable. + +N’hésitez pas à expérimenter — remplacez le backend OCR, ajustez le pré‑traitement, ou intégrez la sortie dans un flux de travail en aval. Le ciel est la limite quand vous pouvez convertir de façon fiable **convert scanned image text** en données recherchables. + +Des questions sur les cas limites, les packs de langues ou l’optimisation des performances ? Laissez un commentaire ci‑dessous, et bon codage ! + +![exemple de how to ocr python](/images/ocr-python-example.png "Capture d'écran de la sortie du script how to ocr python") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/french/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..701418ef0 --- /dev/null +++ b/ocr/french/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,183 @@ +--- +category: general +date: 2026-04-26 +description: Comment exécuter la reconnaissance optique de caractères (OCR) sur un + formulaire numérisé, apprendre à prétraiter l'image pour réduire le bruit et extraire + rapidement le texte de l'image. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: fr +og_description: Comment exécuter la reconnaissance optique de caractères sur des documents + numérisés, prétraiter les images, réduire le bruit et extraire le texte efficacement. +og_title: Comment exécuter l’OCR et prétraiter les images – Guide rapide +tags: +- OCR +- image processing +- Python +title: Comment exécuter l’OCR et prétraiter les images – Extraire le texte des formulaires + numérisés +url: /fr/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment exécuter l'OCR – Guide complet pour extraire du texte d'images + +Vous vous êtes déjà demandé **comment exécuter l'OCR** sur un formulaire numérisé désordonné et obtenir un texte propre et consultable ? Vous n'êtes pas seul. Dans de nombreux projets réels, l'image brute est remplie de taches, d'éclairage inégal et d'autres particularités qui font échouer l'OCR « prêt à l'emploi ». + +Bonne nouvelle ? Avec seulement quelques lignes de Python et un pipeline de pré‑traitement intelligent, vous pouvez augmenter considérablement la précision de reconnaissance, **réduire le bruit**, et extraire exactement les mots dont vous avez besoin. Dans ce tutoriel, nous parcourrons chaque étape — du chargement de l'image à l'affichage de la chaîne finale— afin que vous repartiez avec un extrait de code prêt à être adapté aux factures, reçus ou tout document numérisé. + +## Ce que vous allez créer + +- Une instance `OcrEngine` qui communique avec la bibliothèque OCR sous‑jacent. +- Une chaîne de pré‑traitement qui **binarise** l'image et applique un **flou médian** pour lisser les taches. +- Un appel simple à `process()` qui renvoie un objet exposant `text`, la chaîne extraite. + +À la fin, vous disposerez d’un script autonome que vous pourrez exécuter sur n’importe quel fichier image et voir immédiatement le texte extrait dans la console. + +## Prérequis + +- Python 3.9+ (la syntaxe utilisée ici correspond à la dernière version stable). +- Le package fictif `aocr` — considérez‑le comme une fine couche autour de Tesseract ou de tout moteur OCR moderne. Installez‑le avec `pip install aocr`. +- Une image numérisée (`scanned_form.jpg`) placée dans un dossier que vous pouvez référencer. + +Si vous utilisez une vraie bibliothèque OCR comme `pytesseract`, vous pouvez remplacer `OcrEngine` par la classe appropriée — tout le reste reste identique. + +![](how-to-run-ocr-example.png "exemple d'exécution de l'OCR montrant un formulaire numérisé et le texte extrait") + +*Texte alternatif : comment exécuter l'OCR sur un document numérisé et visualiser le texte extrait.* + +--- + +## Étape 1 : Comment exécuter l'OCR – Initialiser le moteur + +Avant que le moteur puisse lire quoi que ce soit, nous devons créer une instance. Pensez à `OcrEngine` comme le cerveau qui interprétera plus tard les données visuelles. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Pourquoi c’est important :** Instancier le moteur configure les modèles internes, charge les packs de langues et prépare l’environnement d’exécution. Ignorer cette étape entraîne généralement une erreur `NoneType` lorsque vous appelez plus tard `process()`. + +--- + +## Étape 2 : Comment pré‑traiter l'image – Charger votre formulaire numérisé + +Maintenant que le cerveau est prêt, nous lui fournissons une image. L’image peut être dans n’importe quel format supporté par `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Astuce :** Utilisez des chemins absolus pendant le développement pour éviter les surprises « fichier introuvable » lorsque le script s’exécute depuis un répertoire de travail différent. + +--- + +## Étape 3 : Comment réduire le bruit – Appliquer binarisation & flou médian + +Les numérisations brutes contiennent souvent des points parasites, un fond inégal ou des ombres légères. Deux astuces classiques—**binarisation** et **flou médian**—nettoient l’image sans sacrifier les contours qui définissent les caractères. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Approfondissement + +- **Binarisation** : La valeur `threshold=180` indique à l’algorithme : « Tout ce qui est plus clair que 180 devient blanc ; tout le reste devient noir. » Ajustez ce nombre si votre scan est trop sombre ou trop clair. +- **Flou médian** : Un rayon de `2` signifie que le filtre examine une fenêtre de 5 × 5 pixels et remplace le pixel central par la valeur médiane. Cela lisse les taches isolées tout en conservant les traits des lettres. + +> **Cas particulier :** Si votre document comporte des surlignages colorés, un simple seuil binaire peut les effacer. Dans ce cas, envisagez d’utiliser `aocr.ImageFilters.adaptive_threshold()` à la place — cela adapte le seuil localement sur l’image. + +--- + +## Étape 4 : Comment extraire le texte – Exécuter le processus OCR + +Avec une image propre en main, nous laissons enfin le moteur faire sa magie. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Que se passe‑t‑il en coulisses ?** Le moteur exécute un réseau de neurones (ou un moteur de correspondance de motifs hérité) sur la matrice de pixels, traduit chaque glyphe reconnu en caractères Unicode, puis les assemble en lignes et paragraphes. + +--- + +## Étape 5 : Comment extraire le texte – Afficher le résultat + +L’objet `ocr_result` expose un attribut pratique `text`. Voyons ce que nous obtenons. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Résultat attendu + +Si le formulaire numérisé contient : + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Vous devriez voir quelque chose comme : + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Remarquez comment l’étape de pré‑traitement a éliminé les points parasites qui transformaient auparavant « Amount » en « Am0unt ». C’est la puissance de **la réduction du bruit** avant l’OCR. + +--- + +## Pièges courants & comment les corriger + +| Symptom | Likely Cause | Quick Fix | +|---------|--------------|-----------| +| Caractères brouillés (ex. “@#%”) | Image trop sombre ou trop claire | Ajustez le `threshold` dans `binarize()` ; essayez `adaptive_threshold`. | +| Mots manquants | Bruit encore présent | Augmentez le `radius` du `median_blur` ou ajoutez un filtre `gaussian_blur`. | +| Mauvaise langue (ex. lettres anglaises devenant chinoises) | Pack de langue incorrect chargé | Passez `language="eng"` lors de la création de `OcrEngine()` si la bibliothèque le supporte. | +| Traitement lent sur de gros fichiers | Résolution élevée | Redimensionnez d’abord l’image : `aocr.ImageFilters.resize(width=1200)` avant la binarisation. | + +--- + +## Aller plus loin – Prochaines étapes et sujets associés + +- **Traitement par lots** : Enveloppez la logique ci‑dessus dans une boucle pour gérer des dizaines de fichiers automatiquement. +- **Sortie structurée** : Utilisez des expressions régulières sur `ocr_result.text` pour extraire des champs comme les dates ou les montants. +- **Bibliothèques alternatives** : Remplacez `aocr` par `pytesseract`—le code ne change qu’à l’étape d’initialisation du moteur. +- **Comment pré‑traiter les images de PDFs** : Convertissez chaque page PDF en image, puis appliquez le même pipeline. + +Ces extensions vous permettent de passer d’un seul formulaire à une chaîne d’ingestion de documents de niveau entreprise. + +--- + +## Conclusion + +Nous avons couvert **comment exécuter l'OCR** de bout en bout, montré **comment pré‑traiter l'image** pour **réduire le bruit**, et démontré **comment extraire le texte d’une image** avec un script propre et reproductible. La leçon principale ? Quelques filtres simples—binarisation et flou médian—peuvent transformer un scan bruyant en une source de données fiable, vous faisant gagner des heures de nettoyage manuel. + +Testez le script avec vos propres documents, ajustez les seuils, et observez la précision grimper. Quand vous serez prêt, explorez le traitement par lots ou intégrez la sortie dans une base de données pour des archives consultables. Bon codage, et que votre OCR soit toujours précis ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/french/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..b42381656 --- /dev/null +++ b/ocr/french/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-04-26 +description: Apprenez comment définir la licence dans Aspose OCR et comment valider + la licence avec un script Python concis. Suivez les instructions étape par étape + pour une activation sans tracas. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: fr +og_description: Comment définir la licence dans Aspose OCR et comment valider la licence + avec Python. Obtenez un exemple complet et exécutable en quelques minutes. +og_title: Comment définir la licence dans Aspose OCR – Guide rapide Python +tags: +- Aspose OCR +- Python +- Licensing +title: Comment définir la licence dans Aspose OCR – Guide rapide Python +url: /fr/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment définir la licence dans Aspose OCR – Guide rapide Python + +Vous vous êtes déjà demandé **comment définir la licence** pour Aspose OCR sans perdre patience ? Vous n'êtes pas seul. La plupart des développeurs rencontrent un problème la première fois qu'ils essaient de débloquer toute la puissance de la bibliothèque, pour se retrouver avec le filigrane « Trial version ». Bonne nouvelle : la solution est assez simple, et vous pouvez la vérifier immédiatement. + +Dans ce tutoriel, nous allons parcourir **comment définir la licence** *et* **comment valider la licence** à l’aide d’un petit script Python. À la fin, vous disposerez d’un exemple fonctionnel qui affiche « License OK », ainsi que de quelques astuces pour éviter les pièges courants. + +## Prérequis + +Avant de commencer, assurez‑vous d’avoir : + +- Python 3.8+ installé (le code fonctionne avec 3.9, 3.10 et les versions plus récentes). +- Un fichier de licence actif Aspose OCR for Java (ou .NET) – généralement nommé `Aspose.OCR.Java.lic`. +- Le package `asposeocr` installé via `pip install asposeocr`. +- Une connaissance de base de l’exécution de scripts Python depuis la ligne de commande. + +Tout est‑t‑il prêt ? Parfait—c’est parti. + +## Comment définir la licence dans Aspose OCR (Étape 1) + +Définir la licence est essentiellement une opération en trois lignes, mais chaque ligne a un but. Nous allons détailler chaque étape pour que vous compreniez *pourquoi* nous faisons ce que nous faisons. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Pourquoi importer `License` ?** +La classe `License` est la passerelle qui indique au moteur Aspose OCR que vous avez acheté le produit. Sans créer d’instance, la bibliothèque continuera à supposer que vous êtes en version d’essai. + +**Pourquoi instancier `License` ?** +L’instanciation vous fournit un objet (`license_obj`) qui peut contenir le chemin vers votre fichier `.lic` et l’appliquer ensuite à l’exécution. + +## Comment définir la licence dans Aspose OCR – Fournir le fichier de licence + +Nous pointons maintenant l’objet vers le fichier de licence réel sur le disque. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Astuces :** + +- **Chemin absolu vs. relatif** – Si vous exécutez le script depuis un autre répertoire, un chemin absolu (`C:/licenses/...`) élimine les erreurs « file not found ». +- **Variables d’environnement** – Stocker le chemin dans une variable d’environnement (`OCR_LICENSE_PATH`) garde les secrets hors du contrôle de version : + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Comment valider la licence – Vérifier que tout fonctionne + +Définir la licence n’est que la moitié du travail ; il faut confirmer que la bibliothèque l’a bien acceptée. C’est là que l’étape de validation entre en jeu. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Si le fichier de licence est manquant, corrompu ou ne correspond pas, `validate()` lèvera une exception. Capturer cette exception vous offre un moyen propre de signaler les problèmes. + +## Exemple complet fonctionnel (Toutes les étapes combinées) + +Voici le script complet, prêt à être exécuté. Lancez‑le depuis un terminal (`python set_license.py`) et vous devriez voir s’afficher « License OK ». + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Sortie attendue** + +``` +License OK +``` + +Si quelque chose tourne mal, vous verrez quelque chose comme : + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Ce message indique exactement ce qu’il faut corriger—pas besoin de deviner. + +## Comment valider la licence – Gestion des cas limites courants + +Même avec le script ci‑dessus, quelques scénarios peuvent vous surprendre : + +| Situation | Ce qui se passe | Comment corriger | +|-----------|----------------|------------------| +| **Erreur de frappe dans le chemin** | `FileNotFoundError` provenant de `set_license` | Revérifiez le chemin ; utilisez `os.path.abspath()` pour déboguer. | +| **Mauvais type de fichier** | La validation lève « Invalid license format » | Assurez‑vous d’utiliser le fichier `.lic` correspondant à votre édition du produit. | +| **Licence expirée** | La validation lève « License expired » | Renouvelez la licence auprès du support Aspose et remplacez le fichier. | +| **Exécution dans un environnement restreint** (ex. : AWS Lambda) | Erreur de permission | Accordez l’accès en lecture au répertoire ou intégrez la licence dans le package de déploiement. | + +Astuce : encapsulez l’appel `set_license` dans son propre bloc `try/except` si vous souhaitez différencier les erreurs « file not found » et « invalid format ». + +## Résumé visuel + +![comment définir la licence dans Aspose OCR example](/images/aspose-ocr-license.png "comment définir la licence dans Aspose OCR example") + +*La capture d’écran montre le script affichant « License OK » après une activation réussie.* + +## Pièges courants & bonnes pratiques + +- **Ne jamais committer votre fichier de licence dans un dépôt public.** Utilisez des variables d’environnement ou des gestionnaires de secrets (GitHub Secrets, Azure Key Vault) à la place. +- **Validez tôt.** Placer `license_obj.validate()` juste après `set_license` permet de détecter les erreurs avant toute opération OCR. +- **Réutilisez l’objet License.** Vous n’avez besoin de définir la licence qu’une seule fois par processus ; les appels OCR suivants utiliseront automatiquement la licence activée. +- **Enregistrez le chemin de la licence (sans le nom du fichier) en production** pour faciliter le débogage sans exposer le fichier réel. + +## Prochaines étapes – Étendre votre flux de travail OCR + +Maintenant que vous savez **comment définir la licence** et **comment valider la licence**, vous pouvez passer aux tâches OCR principales : + +- **comment lire une image** – `Image.load("sample.png")` +- **comment extraire du texte** – `ocr_engine.recognize(image)` +- **comment configurer les options OCR** – ajustez les paramètres de `OcrEngine` pour la langue, la précision, etc. + +Chacun de ces sujets repose sur un moteur correctement licencié, vous ne verrez plus jamais le filigrane d’essai. + +## Conclusion + +Nous avons couvert l’ensemble du processus pour **comment définir la licence** d’Aspose OCR, démontré **comment valider la licence**, et fourni un script complet et exécutable qui affiche « License OK ». En gérant les erreurs dès le départ et en utilisant des variables d’environnement, vous gardez votre application à la fois sécurisée et robuste. + +Vous avez d’autres questions sur l’OCR, la gestion des licences ou l’intégration d’Aspose dans une chaîne plus large ? 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/french/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..8a32342ab --- /dev/null +++ b/ocr/french/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: Comment utiliser l’OCR sur des PDF numérisés, extraire le texte d’un + PDF, exécuter l’OCR sur un PDF et convertir un PDF numérisé en fichiers consultables + en quelques étapes. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: fr +og_description: 'Comment utiliser l''OCR en Python : apprenez à extraire du texte + d’un PDF, à exécuter l’OCR sur un PDF et à convertir un PDF numérisé en documents + consultables.' +og_title: Comment utiliser l'OCR – Guide rapide pour extraire du texte d'un PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: Comment utiliser l'OCR – Extraire du texte d'un PDF avec Python +url: /fr/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# comment utiliser l'OCR – Extraire du texte d'un PDF avec Python + +Vous vous êtes déjà demandé **comment utiliser l'OCR** pour extraire du texte d'un contrat, d'un reçu ou d'un ebook numérisé ? Vous n'êtes pas seul. Dans de nombreux projets réels, le PDF que vous recevez n'est qu'une image, et sans OCR vous ne pouvez pas rechercher, indexer ou analyser son contenu. + +Dans ce tutoriel, nous parcourrons un exemple complet et exécutable qui montre **comment utiliser l'OCR**, comment **extraire du texte d'un PDF**, et pourquoi vous pourriez vouloir **convertir un PDF numérisé** en documents recherchables. Nous aborderons également l'art subtil de **charger un PDF en image** afin que le moteur OCR puisse voir chaque page clairement. + +> **Aperçu rapide :** À la fin, vous disposerez d'un script qui charge un PDF multi‑pages, exécute l'OCR sur chaque page et affiche le texte reconnu – aucun service externe requis. + +## Ce dont vous avez besoin + +- Python 3.9+ (toute version récente fonctionne) +- `aocr` package (ou toute bibliothèque OCR compatible qui fournit `OcrEngine` et `Image.load`) +- Un fichier PDF numérisé que vous souhaitez traiter (par ex., `contract.pdf`) +- Une quantité modeste de RAM (≈ 200 Mo par PDF de 100 pages, généralement suffisant) + +Si vous n'avez pas encore installé la bibliothèque OCR, exécutez : + +```bash +pip install aocr +``` + +> **Astuce pro :** Utilisez un environnement virtuel pour garder vos dépendances propres. + +## Étape 1 : Charger le PDF en image – La première pièce du puzzle + +Avant que l'OCR puisse s'exécuter, le PDF doit être représenté sous forme d'image. C'est ici que le mot‑clé secondaire **load pdf as image** entre en jeu. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Pourquoi c'est important :* `aocr.Image.load` rasterise en interne chaque page du PDF en un bitmap que le moteur OCR peut comprendre. Si vous sautez cette étape et fournissez le PDF brut, le moteur lèvera une erreur car il attend des données de pixels, pas des données vectorielles. + +> **Note :** Le chemin peut être absolu ou relatif. Assurez‑vous que le fichier est lisible ; sinon vous rencontrerez une `FileNotFoundError`. + +## Étape 2 : Exécuter l'OCR sur le PDF – Transformer les pixels en caractères + +Maintenant que le PDF est sous forme d'image, nous pouvons enfin **exécuter l'OCR sur le PDF**. Le fragment suivant traite chaque page d'un seul coup : + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Que se passe-t-il en coulisses ?* `process_all_pages` parcourt les pages rasterisées, applique le modèle OCR et renvoie une liste d'objets résultat—un par page. Chaque résultat contient le texte reconnu, les scores de confiance et les boîtes englobantes (si vous en avez besoin plus tard). + +## Étape 3 : Extraire le texte du PDF – Tirer les chaînes + +Avec les résultats OCR en main, extraire le texte brut devient trivial. Nous parcourrons les pages et afficherons la sortie, démontrant le mot‑clé secondaire **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Sortie attendue** (troncée pour plus de concision) : + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Si vous avez besoin du texte dans une seule chaîne, concaténez simplement : + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Vous avez maintenant réussi à **extraire le texte d'un PDF** en utilisant l'OCR. + +## Étape 4 : Convertir le PDF numérisé – Le rendre recherchable + +De nombreux outils en aval (comme Elasticsearch ou SharePoint) attendent un PDF recherchable plutôt qu'un simple dump de texte. Vous pouvez intégrer la sortie OCR dans le PDF original, convertissant ainsi efficacement le **PDF numérisé** en une version recherchable. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Pourquoi s'en soucier ?* Un PDF recherchable conserve la mise en page et les images originales tout en permettant la sélection et l'indexation du texte — une situation gagnant‑gagnant pour les humains et les machines. + +## Pièges courants & cas limites + +### PDFs multi‑pages trop volumineux pour la mémoire + +Si votre PDF comporte des centaines de pages, le charger en une fois peut épuiser la RAM. La bibliothèque `aocr` prend en charge le chargement paresseux : + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Puis traitez les pages une par une : + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Scans de mauvaise qualité + +La précision de l'OCR chute drastiquement sur des scans flous ou à faible contraste. Avant d'alimenter l'image dans le moteur, envisagez un prétraitement : + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Support linguistique + +Par défaut, le moteur suppose l'anglais. Pour **exécuter l'OCR sur le PDF** dans une autre langue, définissez le code de langue : + +```python +ocr_engine.language = "spa" # Spanish +``` + +Assurez‑vous que le modèle linguistique correspondant est installé. + +## Exemple complet fonctionnel + +En rassemblant tout, voici un script autonome que vous pouvez placer dans un fichier nommé `ocr_pdf.py` et exécuter immédiatement : + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Exécutez‑le ainsi : + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Vous verrez le texte affiché dans la console, et si vous avez fourni `-o`, un PDF recherchable apparaîtra à côté du fichier original. + +## Astuces pro & bonnes pratiques + +- **Traitement par lots :** Lors du traitement de dizaines de PDFs, encapsulez la logique ci‑dessus dans une boucle et consignez le succès/échec de chaque fichier. +- **Filtrage par confiance :** Chaque `page_result` inclut une métrique de confiance. Écartez ou signalez les pages avec une faible confiance pour une révision manuelle. +- **Parallélisme :** Si votre CPU possède plusieurs cœurs, envisagez d'utiliser `concurrent.futures` pour traiter les pages en parallèle — en restant attentif à l'utilisation de la mémoire. +- **Verrouillage de version :** L'API `aocr` peut évoluer. Fixez la version dans `requirements.txt` (par ex., `aocr==2.3.1`) pour éviter les changements incompatibles. + +## Conclusion + +Nous avons parcouru **comment utiliser l'OCR** pour **extraire du texte d'un PDF**, **exécuter l'OCR sur le PDF**, **charger le PDF en image**, et même **convertir un PDF numérisé** en un format recherchable. Le code est complet, les explications couvrent à la fois le *quoi* et le *pourquoi*, et vous disposez désormais d'un modèle réutilisable pour tout projet traitant des PDFs basés sur des images. + +Et ensuite ? Essayez d'alimenter le texte extrait dans un pipeline de traitement du langage naturel, indexez les PDFs recherchables avec Elasticsearch, ou expérimentez différents back‑ends OCR comme Tesserent ou Azure Computer Vision. Le ciel est la limite, et les outils sont à portée de main. + +Bon codage, et que vos PDFs soient toujours recherchables ! + +![exemple d'utilisation de l'OCR](/images/ocr_workflow.png "comment utiliser l'OCR") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/french/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/french/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..48f14a43e --- /dev/null +++ b/ocr/french/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Comment utiliser le threading pour charger une image pour l’OCR en Python. + Apprenez le traitement OCR asynchrone avec des callbacks, des threads en arrière‑plan + et le chargement d’images en quelques étapes seulement. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: fr +og_description: Comment utiliser le multithreading pour charger une image pour l'OCR + en Python. Ce guide présente un exemple complet, exécutable, avec des callbacks + et une exécution en arrière-plan. +og_title: Comment utiliser le multithreading pour charger une image pour l'OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Comment utiliser le multithreading pour charger une image pour l’OCR +url: /fr/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Comment utiliser le threading pour charger une image pour l'OCR + +Vous vous êtes déjà demandé **comment utiliser le threading** pour charger une image pour l'OCR sans bloquer votre application ? C’est un scénario qui apparaît que vous construisiez un scanner de bureau, un service web ou un simple script qui traite d’énormes images. La bonne nouvelle ? Quelques lignes de Python et le bon modèle de threading garderont votre interface réactive pendant que le moteur OCR fait sa magie. + +Dans ce tutoriel, nous parcourrons un exemple complet, de bout en bout : charger un PNG volumineux, lancer l’OCR sur un thread d’arrière‑plan, et gérer le résultat avec un callback. À la fin, vous saurez non seulement **comment utiliser le threading**, mais aussi **comment charger une image pour l'OCR** de manière propre et réutilisable. + +## Ce dont vous avez besoin + +- Python 3.9+ (la syntaxe que nous utilisons fonctionne sur toute version récente) +- `pillow` pour la gestion des images (`pip install pillow`) +- `pytesseract` comme un léger wrapper autour de Tesseract OCR (`pip install pytesseract`) +- Moteur Tesseract OCR installé sur votre machine (téléchargez depuis [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Un fichier image volumineux que vous souhaitez traiter (`large_image.png` dans ce guide) + +Aucun framework supplémentaire, pas d'async/await — juste le classique `threading` et un callback. + +## Étape 1 : Importer le module threading (nécessaire pour l'exécution en arrière‑plan) + +La première chose que nous faisons est d’importer le module `threading`. Il nous fournit la classe `Thread`, qui nous permet d’exécuter n’importe quelle fonction dans un thread OS séparé. + +```python +import threading +``` + +*Pourquoi c’est important* : Si vous exécutez l’OCR sur le thread principal, votre programme (en particulier une interface graphique) se bloquera jusqu’à ce que l’OCR se termine. En déléguant le travail à un thread d’arrière‑plan, le thread principal reste libre pour mettre à jour l’UI, gérer les entrées utilisateur ou lancer d’autres tâches. + +## Étape 2 : Définir un callback qui sera invoqué lorsque l'OCR est terminé + +Un callback est simplement une fonction qu’un autre morceau de code appelle lorsqu’il a fini. Ici, nous afficherons le texte reconnu, mais vous pourriez le stocker, l’envoyer sur le réseau ou mettre à jour un widget UI. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Astuce pro* : Gardez le callback léger. Un traitement lourd à l’intérieur du callback annule l’intérêt du threading car il bloquera toujours le thread qui l’a appelé (souvent le thread principal). + +## Étape 3 : Charger l'image que vous voulez traiter + +Charger l'image est une préoccupation distincte de l’OCR, mais cela fait toujours partie du flux de travail global. Utiliser Pillow rend cela trivial. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Pourquoi nous le faisons ici* : Si l’image est énorme, la charger sur le thread principal peut déjà provoquer un ralentissement. Dans de nombreuses applications réelles, vous déchargeriez également le chargement vers un thread, mais pour plus de clarté nous le gardons synchrone. + +## Étape 4 : Créer un petit wrapper d'engin OCR + +Le fragment original utilisait `engine.process_async`. Nous allons imiter cela avec une petite classe qui démarre un thread en interne et appelle le callback fourni lorsqu’elle a terminé. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Explication* : +- `_run_ocr` effectue le travail lourd. +- `process_async` crée un objet `Thread`, le marque comme daemon (afin que l’interpréteur puisse quitter même si le thread tourne encore), puis le démarre. +- Le callback reçoit soit le texte OCR, soit un message d’erreur. + +## Étape 5 : Assembler le tout et faire d'autres tâches pendant que l'OCR s'exécute + +Nous orchestrons maintenant le flux complet : charger l’image, instancier le moteur, lancer l’OCR asynchrone, et garder le thread principal occupé avec autre chose (ici nous affichons simplement un message). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Sortie attendue (troncature pour la brièveté)** : + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Si l’OCR échoue, le callback affichera un message d’erreur à la place du texte. + +--- + +## Pourquoi cette approche fonctionne mieux qu'une simple boucle + +- **Réactivité** : Le thread principal ne se bloque jamais sur l’appel OCR, qui peut prendre plusieurs secondes pour de grandes images. +- **Scalabilité** : Vous pouvez lancer plusieurs instances de `SimpleOcrEngine`, chacune sur son propre thread, pour traiter un lot d’images en parallèle. +- **Séparation des responsabilités** : Le chargement, le traitement et la gestion du résultat sont clairement séparés, ce qui rend le code plus facile à tester et à maintenir. + +## Pièges courants et comment les éviter + +| Piège | Ce qui se passe | Solution | +|-------|----------------|----------| +| Oublier de marquer le thread comme *daemon* | Le script reste bloqué après la fin du travail principal parce que le thread OCR est encore actif. | Définissez `worker.daemon = True` **ou** appelez `join()` sur le thread avant de quitter. | +| Utiliser une variable globale pour le résultat sans verrous | Des conditions de concurrence peuvent corrompre les données lorsque plusieurs threads écrivent simultanément. | Passez le résultat via un callback (comme nous le faisons) ou utilisez des conteneurs thread‑safe comme `queue.Queue`. | +| Charger une image massive sur le thread principal | L’UI se fige avant même que l’OCR en arrière‑plan ne démarre. | Déchargez également le chargement d’image vers un thread, ou utilisez des techniques de chargement paresseux. | +| Ne pas gérer les exceptions à l’intérieur du thread de travail | Des exceptions non capturées tuent silencieusement le thread, vous laissant sans résultat. | Enveloppez la logique OCR dans `try/except` et transmettez l’erreur au callback. | + +## Étendre ce modèle + +- **Rapport de progression** : Utilisez un `queue.Queue` partagé pour pousser les pourcentages de progression intermédiaires du thread OCR vers le thread principal. +- **Pool de threads** : Pour le traitement par lots, remplacez les objets `Thread` individuels par un `concurrent.futures.ThreadPoolExecutor`. +- **Intégration UI** : Dans une application Tkinter ou PyQt, planifiez le callback avec `after()` (Tkinter) ou `QTimer.singleShot` (Qt) afin de garantir que les mises à jour UI s’effectuent sur le thread principal. + +## Exemple complet fonctionnel (prêt à copier‑coller) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/german/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..5c0d86d1a --- /dev/null +++ b/ocr/german/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-04-26 +description: Extrahiere Header-Text per OCR mit Python Aspose OCR. Erfahre, wie du + Text aus einem bestimmten Bildbereich schnell und zuverlässig extrahieren kannst. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: de +og_description: Extrahiere Header-Text per OCR schnell. Dieser Leitfaden zeigt, wie + man Text aus einem bestimmten Bereich mit Python Aspose OCR in nur wenigen Zeilen + extrahiert. +og_title: Kopfzeilentext mit Python Aspose OCR extrahieren – Komplettes Tutorial +tags: +- OCR +- Python +- Aspose +title: Header-Text per OCR mit Python Aspose OCR extrahieren – Schritt‑für‑Schritt‑Anleitung +url: /de/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Kopfzeilentext OCR extrahieren – Vollständiges Python Aspose OCR Tutorial + +Haben Sie jemals **Kopfzeilentext OCR** aus einer gescannten Rechnung extrahieren müssen, wollten aber nicht die gesamte Seite verarbeiten? Sie sind nicht allein. In vielen realen Pipelines enthält die Kopfzeile die wichtigsten Informationen – Rechnungsnummer, Datum, Lieferantenname – sodass das schnelle Herausziehen viel nachgelagerte Arbeit sparen kann. + +In diesem Tutorial zeigen wir Ihnen eine sofort einsatzbereite Lösung, die **spezifischen Bereichstext** mit der **Python Aspose OCR** Bibliothek **extrahiert**. Keine vagen Verweise auf externe Dokumente, sondern ein vollständiges Skript, eine klare Erklärung jeder Zeile und Tipps, die Sie bereits morgen nutzen können. + +## Was Sie lernen werden + +- Wie man das Aspose OCR Paket für Python installiert und importiert. +- Wie man ein Bild lädt und eine **Region of Interest (ROI)** definiert, die die Kopfzeile isoliert. +- Wie man die OCR-Engine auf dieser ROI ausführt und sauberen Text abruft. +- Häufige Fallstricke (z. B. DPI‑Mismatches) und wie man sie vermeidet. +- Wie die erwartete Ausgabe aussieht, damit Sie alles überprüfen können. + +Am Ende können Sie diesen Code in jedes Projekt einbinden, das **Kopfzeilentext OCR** aus Rechnungen, Quittungen oder jedem Dokument mit vorhersehbarem Layout extrahieren muss. + +## Voraussetzungen + +- Python 3.8 oder neuer, installiert auf Ihrem Rechner. +- Eine gültige Aspose OCR für Python Lizenz (die kostenlose Testversion funktioniert zur Evaluierung). +- Eine Bilddatei (`invoice.png`), die einen klaren Kopfzeilenbereich enthält. +- Grundlegende Kenntnisse von Python‑Funktionen und Dateipfaden. + +> **Pro‑Tipp:** Wenn Sie mit einem Scan niedriger Auflösung testen, erhöhen Sie die DPI, bevor Sie das Bild an Aspose OCR übergeben – das verbessert die Genauigkeit erheblich. + +--- + +## Schritt 1: Das Aspose OCR Paket installieren + +Zuerst fügen Sie die Bibliothek zu Ihrer Umgebung hinzu. Das offizielle Paket heißt `aspose-ocr`. Führen Sie dies einmal aus: + +```bash +pip install aspose-ocr +``` + +Wenn Sie eine virtuelle Umgebung verwenden (dringend empfohlen), aktivieren Sie sie vor der Installation. So wird sichergestellt, dass das Paket nicht mit anderen Projekten kollidiert. + +## Schritt 2: Erforderliche Klassen importieren und das Bild laden + +Jetzt bringen wir die notwendigen Klassen in unser Skript und laden das Rechnungsbild. Beachten Sie die Verwendung von **vollständigen Pfaden**; relative Pfade funktionieren ebenfalls, aber absolute Pfade entfernen Mehrdeutigkeiten, wenn das Skript auf einem Server ausgeführt wird. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Warum das wichtig ist:** Das einmalige Initialisieren von `OcrEngine` und die Wiederverwendung für mehrere Bilder ist effizienter, als jedes Mal eine neue Engine zu erstellen. + +## Schritt 3: Den Kopfzeilenbereich (ROI) definieren + +Die Kopfzeile befindet sich normalerweise oben auf der Seite, aber ihre genauen Koordinaten können variieren. Hier definieren wir ein Rechteck (`x`, `y`, `width`, `height`), das die Kopfzeile abdeckt. Passen Sie die Zahlen an das Layout Ihres Dokuments an. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Wie es funktioniert:** Durch Aufruf von `set_roi` begrenzt die OCR-Engine ihre Analyse auf dieses Rechteck, was die Verarbeitung stark beschleunigt und Rauschen vom Rest der Seite reduziert. + +## Schritt 4: ROI anwenden und OCR ausführen + +Jetzt weisen wir die Engine an, sich auf den Kopfzeilenbereich zu konzentrieren und dann den OCR‑Prozess auszuführen. Das Ergebnisobjekt enthält den erkannten Text und zusätzliche Metadaten (Vertrauenswerte, Sprache usw.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Falls die OCR fehlschlägt (z. B. nicht unterstütztes Bildformat), wird `ocr_result` `None` sein. Eine kurze Guard‑Clause kann Ihr Skript robuster machen: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Schritt 5: Den extrahierten Kopfzeilentext abrufen und ausgeben + +Schließlich holen wir den Text aus dem Ergebnisobjekt und geben ihn aus. Sie können ihn auch in eine Datei schreiben oder an eine andere Funktion zur weiteren Verarbeitung übergeben. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Erwartete Ausgabe + +Wenn alles korrekt eingerichtet ist, sollten Sie etwas Ähnliches sehen: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Wenn die Ausgabe unleserlich erscheint, überprüfen Sie die ROI‑Koordinaten erneut und stellen Sie sicher, dass das Quellbild hohen Kontrast hat. + +--- + +## Varianten & Sonderfälle + +### 1. Mehrere Kopfzeilen in einem Dokument + +Manchmal enthält ein PDF mehrere Seiten, jede mit ihrer eigenen Kopfzeile. Durchlaufen Sie die Seiten und passen Sie die ROI pro Seite an: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Umgang mit schiefen Scans + +Wenn die Rechnung leicht gedreht ist, bearbeiten Sie das Bild vorab mit OpenCV, bevor Sie es an Aspose OCR übergeben: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Spracheinstellungen ändern + +Aspose OCR kann die Sprache automatisch erkennen, Sie können jedoch Englisch erzwingen, um schnellere Ergebnisse zu erzielen: + +```python +ocr_engine.language = "en" +``` + +--- + +## Vollständiges funktionierendes Beispiel + +Unten finden Sie das vollständige Skript, das Sie in eine Datei namens `extract_header.py` kopieren können. Denken Sie daran, den Bildpfad durch Ihren eigenen zu ersetzen. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Das Ausführen dieses Skripts sollte die Kopfzeilen exakt wie oben gezeigt ausgeben. Passen Sie die `roi`‑Werte gerne an Ihr spezifisches Rechnungsvorlage an. + +--- + +## Häufig gestellte Fragen beantwortet + +**F: Funktioniert das direkt mit PDFs?** +A: Nicht ohne Weiteres. Konvertieren Sie jede PDF‑Seite in ein Bild (z. B. mit `pdf2image`) und übergeben Sie dann das PNG/JPG an das Skript. + +**F: Was, wenn meine Kopfzeile ein Logo und Text zusammen enthält?** +A: Aspose OCR konzentriert sich auf Textinhalt. Für Logos sollten Sie eine separate Bild‑Erkennungsbibliothek wie `opencv` oder `tesseract` mit einem eigenen Modell verwenden. + +**F: Ist die kostenlose Testversion begrenzt?** +A: Die Testversion erlaubt bis zu 10 Seiten pro Monat. Für den Produktionseinsatz erwerben Sie eine Lizenz, um das Limit zu entfernen und höhere Genauigkeitseinstellungen freizuschalten. + +--- + +## Fazit + +Sie haben jetzt eine **vollständige, zitierfähige** Anleitung zum **Extrahieren von Kopfzeilentext OCR** mit **Python Aspose OCR**. Das Tutorial behandelte alles von der Installation bis zum Umgang mit Sonderfällen und stellte Ihnen eine wiederverwendbare Funktion zur Verfügung, die Sie in größere Workflows einbinden können. + +Als Nächstes könnten Sie **spezifischen Bereichstext** für andere Zonen wie Fußzeilen oder Positionen extrahieren oder diesen Ansatz mit einem PDF‑zu‑Bild‑Konverter kombinieren, um vollständige Dokument‑Pipelines zu automatisieren. Die Möglichkeiten sind endlos – denken Sie nur daran, Ihre ROI‑Koordinaten genau zu halten und Ihre Bilder hochauflösend zu verwenden. + +Haben Sie ein kniffliges Layout? Teilen Sie es in den Kommentaren und wir passen die ROI gemeinsam an. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/german/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..0d3037b86 --- /dev/null +++ b/ocr/german/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Text aus Bild mit Aspose OCR in Python extrahieren. Erfahren Sie, wie + Sie Text extrahieren, Bild in Text umwandeln und das Bild für OCR mit mehrsprachiger + Unterstützung laden. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: de +og_description: Extrahiere Text aus Bildern sofort. Dieser Leitfaden zeigt, wie man + Text extrahiert, Bilder in Text umwandelt und Bilder für OCR mit Aspose OCR in Python + lädt. +og_title: Text aus Bild mit Python extrahieren – Vollständiges mehrsprachiges OCR‑Tutorial +tags: +- OCR +- Python +- Aspose +title: Text aus Bild mit Python extrahieren – Mehrsprachiger OCR-Leitfaden +url: /de/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Text aus Bild mit Python – Mehrsprachiger OCR-Leitfaden + +Haben Sie jemals **Text aus Bild** extrahieren müssen, waren sich aber nicht sicher, welche Bibliothek gemischte Sprachseiten verarbeiten kann? Sie sind nicht allein. In vielen realen Anwendungen – denken Sie an die Rechnungsverarbeitung, Social‑Media‑Monitoring oder die mehrsprachige Dokumentenarchivierung – stoßen Sie auf Bilder, die sowohl lateinische als auch kyrillische Zeichen enthalten. + +Die gute Nachricht? Mit Aspose OCR für Python können Sie **Text extrahieren**, **Bild in Text umwandeln** und **Bild für OCR laden** in nur wenigen Zeilen, wobei die Engine die Sprache automatisch erkennt. In diesem Tutorial führen wir ein vollständiges, ausführbares Beispiel durch, erklären, warum jeder Schritt wichtig ist, und behandeln ein paar Randfälle, denen Sie unterwegs begegnen könnten. + +> **Was Sie am Ende haben** +> * Ein sofort einsatzbereites Skript, das Text aus einer gemischten Sprach‑PNG extrahiert. +> * Verständnis dafür, wie man mehrsprachiges OCR in Python konfiguriert. +> * Tipps zum Umgang mit großen Dateien, verschiedenen Bildformaten und zur Fehlersuche bei gängigen Fallstricken. + +## Voraussetzungen + +- Python 3.8 oder neuer (der Code verwendet f‑Strings). +- `asposeocr`‑Paket installiert (`pip install asposeocr`). +- Eine Bilddatei (z. B. `mixed_lang.png`), die Text in mehr als einem Schriftsystem enthält. +- Grundlegende Kenntnisse von Python‑Importen und objektorientierten APIs. + +Keine schweren Abhängigkeiten, keine externen Dienste – nur eine einzige pip‑Installation und Sie sind startklar. + +## Schritt 1 – Installieren & Importieren der Aspose OCR‑Bibliothek + +Bevor wir **Bild für OCR laden** können, benötigen wir die Bibliothek selbst. Das Paket enthält die Kern‑OCR‑Engine und einen leichten Bild‑Loader. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Warum das wichtig ist*: Das Importieren der spezifischen Klassen hält den Namensraum übersichtlich und macht den späteren Code klarer. Wenn Sie nur `asposeocr` importieren, müssen Sie jeden Aufruf qualifizieren (`aocr.OcrEngine()`), was unübersichtlich sein kann. + +## Schritt 2 – Erstellen der OCR‑Engine und Aktivieren der mehrsprachigen Erkennung + +Aspose OCR kann automatisch die im Bild vorhandenen Sprache(n) erraten. Das Setzen von `Language.AUTO` deckt Lateinisch, Kyrillisch, Arabisch und viele weitere ab. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Pro‑Tipp*: Wenn Sie die Sprache im Voraus kennen, können Sie `Language.ENGLISH` oder `Language.RUSSIAN` zuweisen, um einen kleinen Leistungszuwachs zu erzielen. Für wirklich gemischte Dokumente ist jedoch `AUTO` die sicherste Wahl. + +## Schritt 3 – Laden des Bildes, das Sie verarbeiten möchten + +Hier laden wir **Bild für OCR**. Aspose unterstützt PNG, JPEG, BMP, TIFF und sogar PDF‑Seiten, die als Bilder behandelt werden. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Tipp**: Wenn Ihr Bild größer als 2 MB ist, sollten Sie es vorher verkleinern. Große Bilder erhöhen den Speicherverbrauch und können den Erkennungsschritt verlangsamen. + +## Schritt 4 – OCR‑Prozess ausführen und Ergebnis erfassen + +Der Aufruf von `process()` übernimmt die schwere Arbeit: Texterkennung, Layout‑Analyse und Sprachdekodierung. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +Das zurückgegebene `ocr_result`‑Objekt enthält mehrere nützliche Eigenschaften: + +| Eigenschaft | Beschreibung | +|-------------|--------------| +| `text` | Klarer String des erkannten Textes (was Sie am häufigsten verwenden). | +| `confidence` | Gesamter Vertrauenswert (0‑100). | +| `lines` | Liste von `OcrLine`‑Objekten mit Positionsdaten (ideal für PDFs). | + +## Schritt 5 – Extrahierten Text anzeigen + +Zum Schluss geben wir die Ausgabe aus. In einer realen Anwendung könnten Sie sie in eine Datenbank schreiben oder an eine Übersetzungs‑API weiterleiten. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Erwartete Ausgabe** (Beispiel für ein gemischtes Sprach‑Bild): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Wenn Sie unleserliche Zeichen sehen, prüfen Sie, ob das Bild nicht beschädigt ist und ob Sie die neueste Version von `asposeocr` verwenden (v23.7 zum Zeitpunkt des Schreibens). + +## Schritt 6 – Vollständiges Skript zum Kopieren und Einfügen + +Alles zusammenzufügen beseitigt die Verwirrung „Wo beginnt der Code?“. Speichern Sie dies als `multilingual_ocr.py` und führen Sie es über die Befehlszeile aus. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Ausführen: + +```bash +python multilingual_ocr.py +``` + +Sie sollten die extrahierten Zeichenketten in der Konsole sehen. Das war’s – **Bild in Text umwandeln** mit nur wenigen Zeilen. + +## Häufige Fragen & Umgang mit Randfällen + +### Was, wenn mein Bild handschriftlichen Text enthält? +Aspose OCR ist auf gedruckten Text abgestimmt. Handschriftliche Texte benötigen oft ein spezielles Modell (z. B. Azure Read oder Google Vision). Sie können weiterhin `Language.AUTO` ausprobieren, sollten aber mit geringerer Zuverlässigkeit rechnen. + +### Wie verbessere ich die Genauigkeit bei verrauschten Scans? +1. Bild vorverarbeiten (Binarisierung, Entflecken). +2. DPI auf mindestens 300 ppi erhöhen, bevor es an die Engine übergeben wird. +3. `ocr_engine.config.deskew = True` explizit setzen, wenn das Bild schief ist. + +```python +ocr_engine.config.deskew = True +``` + +### Kann ich Text aus einem PDF extrahieren, ohne es zuerst in ein Bild zu konvertieren? +Ja – Aspose OCR kann PDF‑Seiten direkt öffnen: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Denken Sie jedoch daran, dass jede Seite intern als Bild behandelt wird, sodass dieselben Qualitätsaspekte gelten. + +## Fazit + +Sie haben nun ein solides End‑zu‑Ende‑Rezept, um **Text aus Bild** mit Aspose OCR in Python zu extrahieren, inklusive mehrsprachiger Unterstützung. Das Skript zeigt, wie man **Bild für OCR lädt**, **Bild in Text umwandelt** und die häufigsten Fallstricke behandelt. + +Von hier aus könnten Sie: + +- Die Funktion in einen Web‑Service integrieren, der Benutzer‑Uploads akzeptiert. +- Den extrahierten Text mit einer Sprach‑Erkennungs‑Bibliothek kombinieren, um ihn an die passende Übersetzungs‑Engine weiterzuleiten. +- Mit `ocr_engine.config`‑Optionen (z. B. `max_recognition_time`, `text_orientation`) experimentieren, um die Leistung zu optimieren. + +Viel Spaß beim Coden und möge Ihre OCR‑Pipeline stets genau sein! + +--- + +![Screenshot des extrahierten mehrsprachigen Textes – Beispiel für Text aus Bild extrahieren](image-placeholder.png "Beispiel für Text aus Bild extrahieren") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/german/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..645467821 --- /dev/null +++ b/ocr/german/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-04-26 +description: Wie Sie Ihre Dokumente im Batch OCRen und Text aus Scans in Python extrahieren. + Lernen Sie die schrittweise Batch‑Verarbeitung mit OcrEngine für JSON‑Ausgabe. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: de +og_description: Wie Sie Ihre gescannten Dateien stapelweise OCRen und Text aus Scans + in einem einzigen Skript extrahieren. Vollständiger Code, Tipps und Behandlung von + Randfällen. +og_title: Wie man Batch-OCR durchführt – Schneller Python-Leitfaden +tags: +- OCR +- Python +- Automation +title: Wie man OCR stapelweise durchführt – Text effizient aus Scans extrahieren +url: /de/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Batch-OCR durchführt – Text effizient aus Scans extrahieren + +Haben Sie sich jemals gefragt, **wie man Batch-OCR** auf einen Berg gescannter PDFs anwendet, ohne den Verstand zu verlieren? Sie sind nicht allein – Entwickler fragen ständig, *„Wie kann ich Text aus Scans in einem Durchgang extrahieren?“* Die gute Nachricht ist, dass ein paar Zeilen Python diese lästige Aufgabe in eine reibungslose, automatisierte Pipeline verwandeln können. + +In diesem Tutorial führen wir Sie durch eine komplette, sofort einsatzbereite Lösung, die **Text aus Scans extrahiert**, die Ergebnisse als JSON speichert und am Ende einen schnellen Plausibilitäts‑Check bietet. Keine externen Dienste, keine Magie – nur reines Python, die `OcrEngine`‑Klasse und ein wenig Ordner‑Management. + +## Was Sie am Ende haben werden + +- Ein voll funktionsfähiges Skript, das **Batch-OCR** über beliebige Bild‑Ordner ausführt. +- Klare Erklärungen, *warum* jede Zeile existiert, nicht nur *was* sie tut. +- Tipps zum Umgang mit leeren Ordnern, Nicht‑Bild‑Dateien und großen Stapeln. +- Eine Möglichkeit zu prüfen, dass die JSON‑Ausgabe tatsächlich den extrahierten Text enthält. + +### Voraussetzungen (das Minimum) + +| Requirement | Why it matters | +|-------------|----------------| +| Python 3.8+ | Moderne Syntax & Typ‑Hinweise | +| `OcrEngine` library (or a compatible wrapper) | Kern‑OCR‑Funktionalität | +| A directory with scanned image files (PNG, JPG, TIFF) | Ein Verzeichnis mit gescannten Bilddateien (PNG, JPG, TIFF) – Eingabedaten | +| Write permissions for the output folder | Schreibrechte für den Ausgabeverzeichnis – Speichern der JSON‑Ergebnisse | + +Wenn Sie das bereits haben, großartig – lassen Sie uns eintauchen. + +![Ablauf der Batch-OCR](image-placeholder.png){alt="Ablauf der Batch-OCR"} + +## Schritt 1 – OCR‑Engine initialisieren (Batch-OCR) + +Bevor wir irgendetwas verarbeiten können, benötigen wir eine Instanz der OCR‑Engine. Denken Sie an sie als das „Gehirn“, das jedes Bild liest und Text ausgibt. Sie einmal zu initialisieren und über den gesamten Batch hinweg wiederzuverwenden, ist das effizienteste Muster. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Warum dieselbe Instanz wiederverwenden?** +> Für jede Datei eine neue Engine zu erstellen, würde wiederholt schwere Modelle in den Speicher laden und den Batch dramatisch verlangsamen. Eine Instanz hält das Modell im RAM und ermöglicht das Verarbeiten von Tausenden Bildern ohne merkliche Verlangsamung. + +## Schritt 2 – Auf Ihren Scan‑Ordner verweisen (Text aus Scans extrahieren) + +Ihre Scans befinden sich irgendwo auf der Festplatte. Lassen Sie uns dem Skript mitteilen, wo sie zu finden sind. Die Verwendung absoluter Pfade vermeidet „Datei nicht gefunden“-Überraschungen, wenn das Skript aus einem anderen Arbeitsverzeichnis gestartet wird. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Pro‑Tipp:** +> Unter Windows funktionieren Vorwärtsschrägstriche (`/`) problemlos mit `os.path.abspath`, sodass Sie Backslashes nicht escapen müssen. + +## Schritt 3 – Zielort für die JSON‑Ergebnisse festlegen + +Sie möchten wahrscheinlich einen übersichtlichen Ordner für die OCR‑Ergebnisse. Die Trennung von Ausgabe und Quelle erleichtert das spätere Aufräumen oder das Einspeisen des JSON in eine andere Pipeline. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Warum den Ordner programmgesteuert erstellen?** +> Es garantiert, dass das Skript nicht abstürzt, wenn das Verzeichnis fehlt, und `exist_ok=True` macht die Operation idempotent – das Skript kann mehrmals ohne Fehler ausgeführt werden. + +## Schritt 4 – Batch‑Prozess ausführen (Batch-OCR) + +Jetzt zum Kern der Sache: `ocr_engine` anweisen, jede Datei in `input_dir` zu durchlaufen, OCR auszuführen und JSON in `output_dir` zu schreiben. Das Flag `format="json"` weist die Engine an, das Ergebnis in einer strukturierten Form zu serialisieren, die nachgelagerte Werkzeuge lieben. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Was passiert im Hintergrund? + +1. **Datei‑Erkennung** – Die Engine scannt `input_folder` rekursiv und ignoriert versteckte Dateien. +2. **Datei‑Validierung** – Nur unterstützte Bild‑Erweiterungen (`.png`, `.jpg`, `.tif` usw.) werden an das OCR‑Modell übergeben. +3. **OCR‑Ausführung** – Jedes Bild wird an die OCR‑Engine gesendet; Text, Konfidenz‑Scores und Layout‑Daten werden erfasst. +4. **JSON‑Serialisierung** – Das Ergebnis wird in eine Datei mit demselben Basisnamen, aber der Erweiterung `.json`, im `output_folder` geschrieben. + +> **Umgang mit Sonderfällen:** +> - **Leerer Ordner:** Die Engine protokolliert „No files found“ und beendet sich ohne Absturz. +> - **Beschädigtes Bild:** Sie überspringt die Datei, zeichnet einen Fehlereintrag in `batch_errors.log` auf und fährt fort. +> - **Großer Batch (10 k+ Dateien):** Der Speicherverbrauch bleibt gering, da jedes Bild unabhängig verarbeitet wird. + +## Schritt 5 – Abschluss der Konvertierung bestätigen + +Eine einfache `print`‑Anweisung liefert sofortiges Feedback in der Konsole. Für Produktions‑Pipelines könnten Sie dies durch einen Logging‑Aufruf oder eine E‑Mail‑Benachrichtigung ersetzen. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Wenn Sie diese Zeile sehen, können Sie den `json_output`‑Ordner sicher inspizieren. Jede JSON‑Datei wird ungefähr so aussehen: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Sie können diese JSON‑Dateien nun in eine Datenbank, einen Suchindex oder ein beliebiges nachgelagertes Analyse‑Tool einspeisen. + +## Häufig gestellte Fragen (und schnelle Antworten) + +**F: Was, wenn ich PDFs statt Bildern verarbeiten muss?** +A: Konvertieren Sie jede PDF‑Seite zuerst in ein Bild (z. B. mit `pdf2image`) und legen Sie die resultierenden PNG/JPG‑Dateien in `input_dir` ab. Die Batch‑OCR‑Logik bleibt unverändert. + +**F: Kann ich das Ausgabeformat zu einfachem Text ändern?** +A: Absolut. Ersetzen Sie `format="json"` durch `format="txt"` und die Engine schreibt eine `.txt`‑Datei, die nur den extrahierten Text enthält. + +**F: Meine Scans befinden sich in mehreren Unterordnern – wird das Skript rekursiv arbeiten?** +A: Ja. `batch_process` durchläuft standardmäßig den Verzeichnisbaum. Wenn Sie eine flache Ausgabe wünschen, setzen Sie `flatten=True` (falls die Bibliothek das unterstützt) oder verarbeiten Sie die JSON‑Dateinamen nachträglich. + +**F: Wie gehe ich mit nicht‑lateinischen Schriften um?** +A: Initialisieren Sie `OcrEngine` mit einem Sprachparameter, z. B. `OcrEngine(lang="spa+eng")`. Die Batch‑Schleife selbst benötigt keine Änderungen. + +## Pro‑Tipps & häufige Fallstricke + +- **Batch‑Größe ist wichtig:** Wenn Sie CPU‑Spitzen bemerken, drosseln Sie den Prozess mit einem einfachen `time.sleep(0.1)` zwischen den Dateien. +- **Logging:** Ersetzen Sie den `print`‑Aufruf durch das Python‑`logging`‑Modul, um Zeitstempel und Fehlerebenen zu erfassen. +- **Dateinamen‑Kollisionen:** Wenn zwei Scans denselben Basisnamen haben, aber in unterschiedlichen Unterordnern liegen, überschreiben die JSON‑Dateien einander. Hängen Sie einen Hash des relativen Pfads an den Ausgabename an, um dies zu vermeiden. +- **Speicher‑Lecks:** Einige OCR‑Back‑Ends behalten native Ressourcen bei. Rufen Sie `ocr_engine.close()` am Ende Ihres Skripts auf, falls die Bibliothek eine Aufräummethode bereitstellt. + +## Vollständiges Skript – bereit zum Kopieren & Einfügen + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Erwartete Konsolenausgabe** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Sie können das JSON überprüfen, indem Sie eine Datei in `json_output` mit einem Texteditor öffnen oder sie in Python laden: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Sie sollten den rohen, OCR‑extrahierten Text in der Konsole sehen. + +## Fazit + +Wir haben gerade **wie man Batch-OCR** für ein ganzes Verzeichnis gescannter Bilder durchführt und **Text aus Scans** in saubere, maschinenlesbare JSON‑Dateien extrahiert. Der Ansatz ist bewusst einfach: Die Engine einmal einrichten, auf einen Ordner zeigen und die Bibliothek die schwere Arbeit erledigen lassen. Von hier aus können Sie: + +- Das JSON einbinden + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/german/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..24e35ad74 --- /dev/null +++ b/ocr/german/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-26 +description: Wie man OCR schnell und zuverlässig erstellt. Lernen Sie, Text aus einem + Bild zu extrahieren, ein Bild für OCR zu laden und OCR auf PNG mit einem benutzerdefinierten + Wörterbuch auszuführen. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: de +og_description: Wie man OCR in Python erstellt und Text aus einem Bild extrahiert. + Dieser Leitfaden zeigt, wie man ein Bild für OCR lädt, OCR auf PNG ausführt und + ein benutzerdefiniertes Wörterbuch verwendet. +og_title: Wie man OCR in Python erstellt – Schnelle Textextraktion +tags: +- OCR +- Python +- Image Processing +title: Wie man OCR in Python erstellt – Text aus Bild extrahieren +url: /de/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man OCR in Python erstellt – Schritt‑für‑Schritt‑Anleitung + +Haben Sie sich jemals gefragt, **wie man OCR erstellt**, das Ihre gescannten PDFs, Screenshots oder handschriftlichen Notizen lesen kann? Sie sind nicht allein. In vielen realen Projekten müssen wir *Text aus Bild*-Dateien extrahieren, aber die sofort einsatzbereiten Engines stolpern oft über domänenspezifische Wörter. + +In diesem Tutorial sehen Sie ein vollständiges, ausführbares Beispiel, das ein Bild für OCR lädt, ein benutzerdefiniertes Wörterbuch anwendet und schließlich **OCR auf PNG**‑Dateien ausführt. Am Ende können Sie Text aus jedem Bild extrahieren und die Engine an Ihre eigene Terminologie anpassen. + +## Was dieses Tutorial abdeckt + +* Installation des kleinen, aber leistungsstarken `aocr`‑Pakets (oder einer kompatiblen Bibliothek). +* Konfiguration eines **benutzerdefinierten Wörterbuchs**, sodass Begriffe wie `aspocorp` oder `licensekey` erkannt werden. +* **Laden eines Bildes für OCR**, egal ob es sich um ein PNG, JPEG oder eine gescannte PDF‑Seite handelt. +* Ausführen des OCR‑Prozesses und Ausgeben des Ergebnisses. + +Keine externen Dokumentationslinks, nur eine eigenständige Lösung, die Sie heute kopieren‑und‑einfügen und ausführen können. + +### Voraussetzungen + +* Python 3.8 oder neuer (der Code verwendet f‑Strings). +* Grundlegende Erfahrung mit der Kommandozeile – Sie werden ein paar `pip install`‑Befehle eingeben. +* Eine Bilddatei (`technical_doc.png` im Beispiel), die an einem Ort liegt, den Sie referenzieren können. + +Wenn Sie diese drei Punkte erfüllen, können Sie loslegen. + +--- + +## Schritt 1: OCR‑Bibliothek installieren + +Zuerst benötigen wir eine OCR‑Engine, die ein programmierbares Konfigurationsobjekt unterstützt. Das `aocr`‑Paket ist ein leichtgewichtiges Wrapper um eine native OCR‑Engine und eignet sich gut für Demonstrationen. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Pro‑Tipp:** Wenn Sie Windows verwenden und einen Kompilierungsfehler erhalten, versuchen Sie `pip install aocr‑binary`, das vorgefertigte Wheels bereitstellt. + +### Warum diese Bibliothek installieren? + +`aocr` gibt uns direkten Zugriff auf ein `config`‑Objekt, in das wir ein **benutzerdefiniertes Wörterbuch** einfügen können. Das ist das Geheimrezept, um die Genauigkeit bei Nischenvokabular zu verbessern. + +--- + +## Schritt 2: OCR‑Engine‑Instanz erstellen & ein benutzerdefiniertes Wörterbuch hinzufügen + +Jetzt starten wir die Engine und teilen ihr mit, welche Wörter als bekannt behandelt werden sollen. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Warum ein benutzerdefiniertes Wörterbuch wichtig ist + +Standard‑OCR‑Modelle werden auf generischen Korpora trainiert. Wenn das Modell “aspocorp” sieht, könnte es in “aspo corp” aufteilen oder Buchstaben ganz weglassen. Durch das Einspeisen einer benutzerdefinierten Liste biasieren wir den Erkenner auf die exakt benötigte Schreibweise, was den Nachbearbeitungsaufwand drastisch reduziert. + +--- + +## Schritt 3: Das zu verarbeitende Bild laden + +Hier laden wir das **Bild für OCR**. Die Methode `Image.load` akzeptiert einen Pfad‑String und bestimmt automatisch den Dateityp. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Sonderfall:** Wenn Ihre Quelle ein mehrseitiges PDF ist, konvertieren Sie jede Seite zuerst zu PNG (z. B. mit `pdf2image`) und geben Sie sie einzeln an die Engine weiter. + +### Tipps für bessere Bildqualität + +* Halten Sie die Auflösung mindestens bei 300 dpi. +* Stellen Sie sicher, dass das Bild aufrecht ist; rotieren Sie bei Bedarf mit `Pillow`. +* Konvertieren Sie farbige Scans in Graustufen, um Rauschen zu reduzieren. + +--- + +## Schritt 4: OCR‑Prozess auf der PNG‑Datei ausführen + +Mit der konfigurierten Engine und dem geladenen Bild führen wir schließlich **OCR auf PNG** aus. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +Der Aufruf `process()` gibt ein Objekt zurück, das den erkannten Text, Konfidenzwerte und Begrenzungsrahmen für jedes Wort enthält. + +--- + +## Schritt 5: Erkannten Text ausgeben + +Der einfachste Weg, zu sehen, was die Engine gefunden hat, ist das Ausdrucken des Attributs `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Erwartete Ausgabe + +Wenn `technical_doc.png` den Satz *„The Aspocorp licensekey expires on 2025‑12‑31.“* enthält, sollte die Konsole anzeigen: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Beachten Sie, wie das benutzerdefinierte Wörterbuch den Markennamen unverändert ließ – etwas, das ein Standard‑OCR möglicherweise verzerrt hätte. + +--- + +## Vollständiges funktionierendes Beispiel (Kopieren‑und‑Einfügen bereit) + +Unten finden Sie das gesamte Skript, bereit zum Speichern als `run_ocr.py`. Ersetzen Sie einfach den Platzhalter‑Pfad durch den Speicherort Ihres Bildes. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Führen Sie es im Terminal aus: + +```bash +python run_ocr.py +``` + +Sie sollten den extrahierten Text in der Konsole sehen, genau wie im vorherigen Beispiel gezeigt. + +--- + +## Häufig gestellte Fragen (FAQ) + +| Frage | Antwort | +|----------|--------| +| **Kann ich Text aus einem gescannten PDF extrahieren?** | Ja. Konvertieren Sie jede Seite zuerst zu PNG (oder TIFF) und geben Sie die Bilder dann an dasselbe Skript weiter. | +| **Was, wenn mein Bild ein JPEG statt eines PNG ist?** | Die Methode `Image.load` unterstützt JPEG, BMP, TIFF und PNG von Haus aus. Ändern Sie einfach die Dateierweiterung. | +| **Wie verbessere ich die Genauigkeit bei Scans mit geringem Kontrast?** | Vorbearbeiten mit `Pillow` – Kontrast erhöhen, Binärisierung anwenden oder `opencv` zum Entzerren nutzen. | +| **Gibt es eine Möglichkeit, Konfidenzwerte für jedes Wort zu erhalten?** | `ocr_result` enthält `words` – jedes Wort hat ein `confidence`‑Attribut, über das Sie iterieren können. | +| **Kann ich das auf einem headless Server ausführen?** | Absolut. `aocr` hat keine GUI‑Abhängigkeiten und ist damit perfekt für CI‑Pipelines. | + +--- + +## Nächste Schritte & verwandte Themen + +Jetzt, da Sie wissen, **wie man OCR erstellt** und **Text aus Bilddateien extrahiert**, sollten Sie folgende Themen erkunden: + +* **Pre‑Processing‑Techniken** – `load image for OCR` ist nur der erste Schritt; verwenden Sie `opencv`, um Rauschen zu entfernen oder zu schärfen. +* **Batch‑Verarbeitung** – iterieren Sie über ein Verzeichnis von PNGs, um ein durchsuchbares Archiv zu erzeugen. +* **Mehrsprachige Unterstützung** – fügen Sie Sprachpakete zur Engine hinzu, wenn Sie französische oder deutsche Dokumente lesen müssen. +* **Integration mit Elasticsearch** – indexieren Sie den extrahierten Text für Volltextsuche über gescannte Assets. + +Jede dieser Erweiterungen baut auf dem Kernmuster auf, das wir gerade behandelt haben, sodass der Übergang mühelos sein wird. + +--- + +## Abschluss + +In wenigen Minuten haben wir beantwortet, **wie man OCR erstellt**, das zuverlässig **Text aus Bilddateien** extrahiert, insbesondere PNGs, und wir haben Ihnen gezeigt, wie man **Bild für OCR lädt**, ein **benutzerdefiniertes Wörterbuch** anwendet und **OCR auf PNG** ausführt – ganz ohne externe Dienste. + +Probieren Sie das Skript aus, passen Sie das Wörterbuch an Ihren eigenen Jargon an, und Sie haben eine solide Grundlage für jedes Dokument‑Digitalisierungsprojekt. + +Wenn Sie auf Probleme stoßen, hinterlassen Sie unten einen Kommentar – ich helfe gern. Und vergessen Sie nicht, Ihre Erfolgsgeschichten zu teilen; die Community lernt am besten aus Praxisbeispielen. + +**Bereit, Ihre Papierarbeit zu automatisieren?** Holen Sie sich den Code, passen Sie ihn an und beginnen Sie noch heute damit, Pixel in durchsuchbaren Text zu verwandeln! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/german/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..6aef1d4b8 --- /dev/null +++ b/ocr/german/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: Wie man OCR aus Bildern mit Python extrahiert – ein Python‑OCR‑Beispiel, + das zeigt, wie man ein Bild für OCR lädt und Text von einer Quittung extrahiert. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: de +og_description: wie man OCR aus Bildern mit Python extrahiert. Lernen Sie ein Python-OCR-Beispiel, + laden Sie ein Bild für OCR und extrahieren Sie Text von einer Quittung in Minuten. +og_title: Wie man OCR in Python extrahiert – Vollständiger Leitfaden +tags: +- OCR +- Python +- Image Processing +title: Wie man OCR in Python extrahiert – Schritt‑für‑Schritt‑Tutorial +url: /de/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man OCR in Python extrahiert – Vollständige Anleitung + +Haben Sie sich jemals gefragt, **wie man OCR** aus einem verschwommenen Kassenbon oder einer gescannten Rechnung extrahiert? Sie sind nicht allein – Entwickler stoßen ständig an Grenzen, wenn sie sauberen, maschinenlesbaren Text aus Bildern benötigen. Die gute Nachricht? Mit nur wenigen Zeilen Python können Sie ein Bild eines Kassenbons in hochzuverlässigen, durchsuchbaren Text verwandeln. + +In diesem Tutorial gehen wir Schritt für Schritt durch ein **python ocr example**, das **wie man Bild für OCR lädt**, die Engine ausführt und nur die Zeichen behält, die einen Vertrauenswert von 85 % überschreiten. Am Ende können Sie **Text aus Kassenbon‑Bildern extrahieren**, ohne durch Dokumentationen zu wühlen oder API‑Parameter zu raten. + +## Was Sie benötigen + +- Python 3.9 oder neuer (die hier verwendete Syntax funktioniert ab 3.8+) +- Das `aocr`‑Paket (oder jede OCR‑Bibliothek, die eine `OcrEngine`‑Klasse bereitstellt). Installieren Sie es mit: + +```bash +pip install aocr +``` + +- Ein Beispiel‑Kassenbon‑Bild (`receipt.png`) in einem Ordner, den Sie referenzieren können. +- Einen Text‑Editor oder eine IDE – VS Code, PyCharm oder sogar ein einfaches Notebook reichen aus. + +Das war’s. Keine schweren Frameworks, keine externen Dienste, nur reines Python. + +![High‑confidence OCR result – how to extract ocr from a receipt](/images/ocr-high-confidence.png) + +*Bild‑Alt‑Text: how to extract ocr from a receipt using Python OCR* + +## Schritt 1 – OCR‑Engine‑Instanz erstellen (how to extract ocr) + +Das Erste, was wir tun, ist eine OCR‑Engine zu starten. Denken Sie daran als das Gehirn, das die Pixel für uns liest. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Warum?** Durch das Instanziieren von `OcrEngine` erhalten Sie ein frisches Konfigurationsobjekt. Sie können später Sprachmodelle, DPI‑Einstellungen oder Vorverarbeitungsschritte anpassen – alles ohne den Kern der Verarbeitungsschleife zu berühren. + +## Schritt 2 – Bild für OCR laden + +Als Nächstes zeigen wir der Engine das Bild, das wir analysieren wollen. Hier kommt das Schlüsselwort **load image for ocr** zum Einsatz. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro‑Tipp:** Wenn Ihr Bild in einem anderen Verzeichnis liegt, verwenden Sie `os.path.join`, um einen plattformunabhängigen Pfad zu erstellen. + +**Warum das Bild auf diese Weise laden?** Der Helfer `Image.load` liest die Datei in ein Format ein, das die Engine versteht, und verarbeitet gängige Formate (PNG, JPEG, TIFF) automatisch. Wird dieser Schritt übersprungen oder rohe Bytes übergeben, löst das einen `ValueError` aus. + +## Schritt 3 – OCR‑Prozess ausführen + +Jetzt führen wir das OCR tatsächlich aus. Die Methode `process` liefert ein umfangreiches Ergebnisobjekt mit erkannten Symbolen, Vertrauenswerten und Begrenzungsrahmen. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Was enthält `ocr_result`?** In den meisten Bibliotheken beinhaltet es: + +- `text`: den rohen, zusammengefügten String. +- `symbol_confidences`: eine Liste von Tupeln `(char, confidence)`. +- `boxes`: Koordinaten für jedes Zeichen (nützlich für visuelles Debugging). + +Der Zugriff auf die Vertrauenswerte pro Zeichen ist für den nächsten Schritt unverzichtbar. + +## Schritt 4 – Nur hochzuverlässige Symbole behalten (≥ 85 %) + +Ein Kassenbon hat oft Schmierflecken, blassen Druck oder Hintergrundrauschen. Durch das Herausfiltern von Symbolen mit niedriger Zuverlässigkeit verbessern wir die nachfolgende Auswertung erheblich. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Warum 85 %?** Empirisch bietet ein Schwellenwert um 0,85 ein gutes Gleichgewicht zwischen Recall und Precision für die meisten gedruckten Kassenbons. Wenn Ihnen Zahlen fehlen, senken Sie den Schwellenwert; wenn Sie Kauderwelsch erhalten, erhöhen Sie ihn. + +## Schritt 5 – Hochzuverlässigen extrahierten Text ausgeben + +Abschließend geben wir die bereinigte Zeichenkette aus (oder speichern sie). Das ist der Kern unseres **extract text from receipt**‑Workflows. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Typische Ausgabe sieht so aus: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Sie können diesen String nun an einen CSV‑Writer, eine Datenbank oder irgendeine nachgelagerte Analyse‑Pipeline weitergeben. + +## Vollständiges, sofort ausführbares Skript + +Unten finden Sie das komplette Code‑Snippet, das Sie in `ocr_receipt.py` kopieren und sofort ausführen können. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Speichern Sie die Datei, stellen Sie sicher, dass `receipt.png` existiert, und führen Sie aus: + +```bash +python ocr_receipt.py +``` + +Sie sollten den bereinigten Kassenbon‑Text in der Konsole sehen. + +## Randfälle & Was‑wenn‑Szenarien + +| Situation | Empfohlene Lösung | +|-----------|-------------------| +| **Sehr niedrige Zuverlässigkeit überall** | Bild vorverarbeiten: Kontrast erhöhen, in Graustufen konvertieren oder einen Rauschfilter anwenden (`cv2.GaussianBlur`). | +| **Nicht‑lateinische Zeichen** | Ein Sprachmodell an `OcrEngine` übergeben (z. B. `ocr_engine.language = "spa"` für Spanisch). | +| **Mehrere Kassenbons in einem Bild** | OCR auf das gesamte Bild anwenden, dann das Ergebnis mit regulären Ausdrücken splitten, die `\n\n+` (doppelte Zeilenumbrüche) erkennen. | +| **Roh‑OCR‑Text ebenfalls benötigen** | `ocr_result.text` neben der gefilterten Version für Debugging behalten. | + +Diese Varianten stellen sicher, dass Ihr **how to use OCR**‑Wissen über den einfachsten Anwendungsfall hinaus skaliert. + +## Häufige Stolperfallen (und wie man sie vermeidet) + +- **Vergessen, die Bibliothek zu installieren** – `pip install aocr` muss erfolgreich abgeschlossen sein, bevor Sie importieren. +- **Falscher Pfad‑Separator** unter Windows (`\` vs `/`). Verwenden Sie `os.path.join`. +- **Hard‑codierter Vertrauensschwellenwert** ohne Test – führen Sie immer einen kurzen visuellen Check an ein paar Kassenbons durch. +- **Unicode‑Normalisierung ignorieren** – manche Kassenbons enthalten spezielle Bindestriche; führen Sie `unicodedata.normalize('NFKC', text)` aus, wenn Sie die Ausgabe speichern wollen. + +## Nächste Schritte – über die Grundlagen hinaus + +Jetzt, wo Sie **wie man OCR**‑Daten aus einem einzelnen Kassenbon extrahiert, möchten Sie vielleicht: + +1. **Stapelverarbeitung eines Ordners mit Kassenbons** – über alle PNG/JPG‑Dateien iterieren und jedes Ergebnis in eine CSV schreiben. +2. **Integration in eine Datenbank** – `high_confidence_text` in SQLite für schnelle Abfragen speichern. +3. **Natürliche Sprachverarbeitung anwenden** – mit Regex oder `dateutil` Daten, Summen und Steuerbeträge extrahieren. +4. **Alternative Bibliotheken testen** – `pytesseract`, `easyocr` oder Cloud‑Dienste (Google Vision, Azure OCR), wenn Sie mehrsprachige Unterstützung oder höhere Genauigkeit benötigen. + +Jedes dieser Themen greift natürlich unsere sekundären Schlüsselwörter auf: *python ocr example*, *extract text from receipt*, *load image for ocr* und *how to use OCR*. + +## Fazit + +Wir haben ein komplettes **python ocr example** durchgearbeitet, das **wie man OCR**‑Text aus einem Kassenbon‑Bild extrahiert, niedrig‑zuverlässige Symbole filtert und saubere Ergebnisse ausgibt. Die Schritte sind einfach, der Code ist eigenständig und der Ansatz flexibel genug, um in größere Projekte zu integrieren. + +Probieren Sie es mit Ihren eigenen Kassenbons, passen Sie den Vertrauensschwellenwert an und skalieren Sie anschließend zur Stapelverarbeitung. Wenn Sie auf Eigenheiten stoßen – etwa ein schwaches Logo oder eine ungewöhnliche Schriftart – denken Sie an die oben genannten Randfall‑Tipps. Viel Spaß beim Coden und mögen Ihre OCR‑Pipelines stets präzise 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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/german/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..e7e345aa5 --- /dev/null +++ b/ocr/german/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: 'Wie man OCR in Python verwendet: Lernen Sie, Text aus Bildern zu extrahieren + und TIFF-Dateien in Python mit einem einfachen OCR‑Beispiel zu lesen. Schneller, + ausführbarer Code enthalten.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: de +og_description: 'Wie man OCR in Python verwendet: Eine Schritt‑für‑Schritt‑Anleitung, + die zeigt, wie man Text aus Bildern extrahiert, TIFF‑Dateien mit Python liest und + gescannten Bildtext mit einem einfachen, ausführbaren Skript konvertiert.' +og_title: Wie man OCR in Python verwendet – Einfaches OCR-Beispiel zum Extrahieren + von Text +tags: +- OCR +- Python +- Image Processing +title: Wie man OCR in Python verwendet – Einfaches OCR‑Beispiel zum Extrahieren von + Text +url: /de/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to ocr python – Grundlegendes OCR‑Beispiel zum Extrahieren von Text + +Haben Sie sich jemals gefragt **how to ocr python**, wenn Sie ein gescanntes TIFF auf Ihrem Schreibtisch liegen haben? Sie sind nicht der Einzige, der auf eine Menge Bilddateien starrt und fragt: „Wie bekomme ich die Wörter daraus heraus?“ Die gute Nachricht ist, dass das Umwandeln eines Bildes in Klartext ein Kinderspiel ist, wenn man die richtige Bibliothek und ein paar klare Schritte hat. + +In diesem Tutorial gehen wir ein **basic OCR example** durch, das eine TIFF‑Datei liest, den Text extrahiert und ihn in der Konsole ausgibt. Am Ende wissen Sie genau, wie man **extract text from image** Dateien verarbeitet, wie man die Eigenheiten von TIFF‑Formaten handhabt und was man anpassen muss, wenn man **convert scanned image text** in etwas Nützlicheres umwandeln möchte. Keine versteckte Magie – nur straightforward Python, das Sie heute copy‑paste und ausführen können. + +## Was Sie benötigen + +- Python 3.9+ installiert (die neueste stabile Version ist am besten). +- Eine pip‑installierbare OCR‑Bibliothek. In diesem Leitfaden verwenden wir das fiktive `aocr`‑Paket, das beliebte Werkzeuge wie Tesseract nachahmt; Sie können es später durch `pytesseract` oder `easyocr` ersetzen. +- Ein TIFF‑Bild, das Sie verarbeiten möchten – nennen Sie es `input.tiff` und legen Sie es in einen Ordner, den Sie im Code referenzieren. +- Grundlegende Vertrautheit mit der Kommandozeile (nur zum Installieren des Pakets). + +Das war's. Keine schweren Abhängigkeiten, keine Docker‑Container, nur ein paar Code‑Zeilen. + +## Schritt 1 – Installieren und Importieren von Abhängigkeiten (how to ocr python) + +Zuerst holen Sie das OCR‑Paket. Öffnen Sie ein Terminal und führen Sie aus: + +```bash +pip install aocr +``` + +Wenn Sie lieber eine reale Bibliothek verwenden, ersetzen Sie `aocr` durch `pytesseract` und installieren Sie die Tesseract‑Engine separat. + +Jetzt importieren wir, was wir benötigen. Die `Path`‑Klasse aus `pathlib` bietet uns eine saubere Möglichkeit, mit Dateipfaden über Betriebssysteme hinweg zu arbeiten. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Warum `Path` verwenden?* Weil es die Schrägstriche (`/` vs `\`) abstrahiert und es Ihnen ermöglicht, Verzeichnisse zu verbinden, ohne sich um das zugrunde liegende OS zu kümmern. Dieses kleine Detail erspart oft Kopfschmerzen, wenn Sie das Skript später auf einen CI‑Server verschieben. + +## Schritt 2 – Erstellen der OCR‑Engine‑Instanz (basic ocr example) + +Als Nächstes starten Sie die OCR‑Engine. Stellen Sie sich `OcrEngine` als das Gehirn vor, das das Bild liest und Zeichen ausgibt. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +Die meisten OCR‑Bibliotheken erlauben hier das Anpassen von Sprache, DPI oder Confidence‑Schwellenwerten. Für dieses **basic OCR example** bleiben wir bei den Vorgaben, aber Sie können später `ocr_engine.config` erkunden, falls Sie mehrsprachige Dokumente verarbeiten müssen. + +## Schritt 3 – Laden Ihres TIFF‑Bildes (read tiff file python) + +Hier kommt der **read tiff file python** Teil ins Spiel. TIFFs können mehrseitig sein, aber `Image.load` holt standardmäßig die erste Seite – perfekt für einen einseitigen Scan. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Ersetzen Sie `"YOUR_DIRECTORY"` durch den tatsächlichen Ordner, der `input.tiff` enthält. Wenn Sie nicht sicher sind, wo das Skript läuft, gibt `Path.cwd()` das aktuelle Arbeitsverzeichnis aus – praktisch zum Debuggen von Pfadproblemen. + +## Schritt 4 – Ausführen des OCR‑Prozesses (extract text from image) + +Jetzt geschieht die Magie. Der Aufruf von `process()` schickt das Bild durch die OCR‑Pipeline und gibt ein Ergebnis‑Objekt zurück. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Im Hintergrund könnte die Engine das Bild in Graustufen umwandeln, eine Schwellenwert‑Anwendung durchführen und es in ein neuronales Netzwerk einspeisen. Sie müssen diese Schritte nicht verwalten; die Bibliothek abstrahiert sie. + +## Schritt 5 – Ausgeben des erkannten Textes (convert scanned image text) + +Zum Schluss geben Sie den Text aus. In realen Projekten würden Sie ihn wahrscheinlich in eine Datei oder Datenbank schreiben, aber das Ausdrucken hält das Beispiel übersichtlich. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Wenn Sie das Skript ausführen, sollten Sie etwas Ähnliches sehen: + +``` +Hello, world! +This is a sample scanned document. +``` + +Wenn die Ausgabe unleserlich erscheint, prüfen Sie, ob das Quellbild klar ist und die OCR‑Sprache zum Text passt. + +## Vollständiges funktionierendes Skript + +Alles zusammengefügt, hier das komplette, sofort ausführbare Programm: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Erwartete Ausgabe + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Wenn Sie **convert scanned image text** in ein durchsuchbares PDF umwandeln müssen, können Sie `ocr_result.text` in einen PDF‑Generator wie `reportlab` leiten – aber das ist ein eigenes **tutorial**. + +## Häufige Fallstricke & Pro‑Tipps + +- **Low‑resolution scans**: OCR hat Schwierigkeiten unter 150 DPI. Wenn Ihr TIFF unscharf ist, skalieren Sie es zuerst mit Pillow (`Image.open(...).resize(...)`) hoch. +- **Multiple pages**: Für mehrseitige TIFFs iterieren Sie über `Image.load_multi_page()` (falls Ihre Bibliothek das unterstützt) und verketten die Ergebnisse. +- **Language support**: Viele Engines verwenden standardmäßig Englisch. Setzen Sie z. B. `ocr_engine.language = "spa"` für Spanisch. +- **Whitespace handling**: OCR fügt oft überflüssige Zeilenumbrüche ein. Verwenden Sie `str.splitlines()` oder reguläre Ausdrücke, um die Ausgabe zu bereinigen. +- **Performance**: Für die Massenverarbeitung wiederverwenden Sie eine einzelne `OcrEngine`‑Instanz, anstatt für jede Datei eine neue zu erstellen. + +## Erweiterung des Beispiels + +Jetzt, wo Sie **how to ocr python** für ein einzelnes Bild gemeistert haben, denken Sie an die nächsten Schritte: + +1. **Batch processing** – Durchlaufen Sie ein Verzeichnis von TIFFs und schreiben Sie jedes Ergebnis in eine `.txt`‑Datei. +2. **Integration with Pandas** – Speichern Sie den extrahierten Text zusammen mit Metadaten für schnelle Analysen. +3. **Hybrid approach** – Kombinieren Sie OCR mit NLP‑Bibliotheken wie `spaCy`, um Entitäten (Namen, Daten, Beträge) aus gescannten Rechnungen zu extrahieren. +4. **Alternative file formats** – Ersetzen Sie `Image.load` durch `Image.from_bytes`, um Bilder aus einer API oder einer Datenbank zu verarbeiten. + +All dies baut auf der Kernidee von **extract text from image** und **convert scanned image text** auf, um etwas zu schaffen, das Maschinen verstehen können. + +## Fazit + +Wir haben ein klares, durchgängiges **basic OCR example** durchgegangen, das **how to ocr python**, **read tiff file python** und **extract text from image** Dateien mit nur wenigen Zeilen zeigt. Das Skript ist eigenständig, enthält Fehlerbehandlung und gibt das Ergebnis direkt aus, was es zu einer soliden Grundlage für jedes Projekt macht, das gescannte Dokumente in editierbaren Text umwandeln muss. + +Fühlen Sie sich frei zu experimentieren – tauschen Sie das OCR‑Backend aus, passen Sie die Vorverarbeitung an oder binden Sie die Ausgabe in einen nachgelagerten Workflow ein. Der Himmel ist die Grenze, wenn Sie zuverlässig **convert scanned image text** in durchsuchbare Daten umwandeln können. + +Haben Sie Fragen zu Randfällen, Sprachpaketen oder Performance‑Optimierung? Hinterlassen Sie unten einen Kommentar und happy coding! + +![how to ocr python Beispiel](/images/ocr-python-example.png "Screenshot des how to ocr python Skriptausgabe") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/german/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..c3da273bc --- /dev/null +++ b/ocr/german/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-04-26 +description: Wie man OCR auf einem gescannten Formular ausführt, lernt, das Bild zur + Rauschreduzierung vorzubereiten, und Text schnell aus dem Bild extrahiert. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: de +og_description: Wie man OCR auf gescannten Dokumenten ausführt, Bilder vorverarbeitet, + Rauschen reduziert und Text effizient extrahiert. +og_title: Wie man OCR ausführt und Bilder vorverarbeitet – Schnellleitfaden +tags: +- OCR +- image processing +- Python +title: Wie man OCR ausführt und Bilder vorverarbeitet – Text aus gescannten Formularen + extrahieren +url: /de/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man OCR ausführt – Ein vollständiger Leitfaden zum Extrahieren von Text aus Bildern + +Haben Sie sich schon einmal gefragt, **wie man OCR** auf einem unordentlichen gescannten Formular ausführt und sauberen, durchsuchbaren Text erhält? Sie sind nicht allein. In vielen realen Projekten ist das Rohbild voller Sprenkel, ungleichmäßiger Beleuchtung und anderer Eigenheiten, die ein Standard‑OCR zum Stolpern bringen. + +Die gute Nachricht? Mit nur wenigen Zeilen Python und einer intelligenten Vorverarbeitungspipeline können Sie die Erkennungsgenauigkeit dramatisch steigern, **Rauschen reduzieren** und exakt die Wörter extrahieren, die Sie benötigen. In diesem Tutorial gehen wir jeden Schritt durch – vom Laden des Bildes bis zum Ausgeben des finalen Strings – sodass Sie am Ende ein sofort einsetzbares Snippet haben, das Sie an Rechnungen, Quittungen oder jedes gescannte Dokument anpassen können. + +## Was Sie bauen werden + +- Eine `OcrEngine`‑Instanz, die mit der zugrunde liegenden OCR‑Bibliothek kommuniziert. +- Eine Vorverarbeitungskette, die das Bild **binarisiert** und einen **Median‑Blur** anwendet, um Sprenkel zu glätten. +- Einen einfachen Aufruf von `process()`, der ein Objekt zurückgibt, das `text` enthält, den extrahierten String. + +Am Ende haben Sie ein eigenständiges Skript, das Sie auf jeder Bilddatei ausführen können und sofort den extrahierten Text in der Konsole sehen. + +## Voraussetzungen + +- Python 3.9+ (die hier verwendete Syntax entspricht der neuesten stabilen Version). +- Das fiktive `aocr`‑Paket – denken Sie an einen dünnen Wrapper um Tesseract oder jede moderne OCR‑Engine. Installieren Sie es mit `pip install aocr`. +- Ein gescanntes Bild (`scanned_form.jpg`) in einem Ordner, den Sie referenzieren können. + +Wenn Sie eine echte OCR‑Bibliothek wie `pytesseract` verwenden, können Sie `OcrEngine` durch die entsprechende Klasse ersetzen – alles andere bleibt gleich. + +![](how-to-run-ocr-example.png "Beispiel für OCR: Gescanntes Formular und extrahierter Text") + +*Alt‑Text: Wie man OCR auf einem gescannten Dokument ausführt und den extrahierten Text anzeigt.* + +--- + +## Schritt 1: Wie man OCR ausführt – Engine initialisieren + +Bevor die Engine irgendetwas lesen kann, müssen wir eine Instanz erstellen. Denken Sie an die `OcrEngine` als das Gehirn, das später die visuellen Daten interpretiert. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Warum das wichtig ist:** Das Instanziieren der Engine richtet interne Modelle ein, lädt Sprachpakete und bereitet die Laufzeitumgebung vor. Das Überspringen dieses Schrittes führt meist zu einem `NoneType`‑Fehler, wenn Sie später `process()` aufrufen. + +--- + +## Schritt 2: Wie man Bild vorverarbeitet – Gescanntes Formular laden + +Jetzt, wo das Gehirn bereit ist, füttern wir es mit einem Bild. Das Bild kann jedes von `aocr.Image` unterstützte Format sein. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Pro‑Tipp:** Verwenden Sie während der Entwicklung absolute Pfade, um „Datei nicht gefunden“-Überraschungen zu vermeiden, wenn das Skript aus einem anderen Arbeitsverzeichnis ausgeführt wird. + +--- + +## Schritt 3: Wie man Rauschen reduziert – Binarisierung & Median‑Blur anwenden + +Roh‑Scans enthalten oft lose Punkte, ungleichmäßigen Hintergrund oder schwache Schatten. Zwei klassische Tricks – **Binarisierung** und **Median‑Blur** – säubern das Bild, ohne die Kanten zu verlieren, die Zeichen definieren. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Tiefer einsteigen + +- **Binarisierung**: Der Wert `threshold=180` sagt dem Algorithmus: „Alles, was heller als 180 ist, wird weiß; alles andere wird schwarz.“ Passen Sie diese Zahl an, wenn Ihr Scan zu dunkel oder zu hell ist. +- **Median‑Blur**: Ein Radius von `2` bedeutet, dass der Filter ein 5×5‑Pixel‑Fenster betrachtet und das zentrale Pixel durch den Medianwert ersetzt. Das glättet isolierte Sprenkel, während die Striche der Buchstaben erhalten bleiben. + +> **Randfall:** Wenn Ihr Dokument farbige Markierungen enthält, kann ein einfacher binärer Schwellenwert diese entfernen. In diesem Szenario sollten Sie stattdessen `aocr.ImageFilters.adaptive_threshold()` verwenden – dieser passt den Schwellenwert lokal über das Bild hinweg an. + +--- + +## Schritt 4: Wie man Text extrahiert – OCR‑Prozess ausführen + +Mit einem bereinigten Bild lassen wir schließlich die Engine ihre Magie wirken. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Was im Hintergrund passiert:** Die Engine läuft ein neuronales Netzwerk (oder einen klassischen Muster‑Matcher) über die Pixelmatrix, übersetzt jedes erkannte Glyph in Unicode‑Zeichen und fügt sie zu Zeilen und Absätzen zusammen. + +--- + +## Schritt 5: Wie man Text extrahiert – Ergebnis ausgeben + +Das Objekt `ocr_result` stellt ein praktisches Attribut `text` bereit. Schauen wir, was wir erhalten haben. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Erwartete Ausgabe + +Wenn das gescannte Formular enthält: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Sollten Sie etwas Ähnliches sehen: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Beachten Sie, wie der Vorverarbeitungsschritt lose Punkte eliminiert hat, die zuvor „Amount“ zu „Am0unt“ machten. Das ist die Kraft, **Rauschen zu reduzieren** bevor OCR angewendet wird. + +--- + +## Häufige Fallstricke & wie man sie behebt + +| Symptom | Wahrscheinliche Ursache | Schnelle Lösung | +|---------|--------------------------|-----------------| +| Verzerrte Zeichen (z. B. “@#%”) | Bild zu dunkel oder zu hell | `threshold` in `binarize()` anpassen; `adaptive_threshold` probieren. | +| Fehlende Wörter | Rauschen noch vorhanden | `radius` für `median_blur` erhöhen oder einen `gaussian_blur`‑Filter hinzufügen. | +| Falsche Sprache (z. B. englische Buchstaben werden zu Chinesisch) | Falsches Sprachpaket geladen | Beim Erstellen von `OcrEngine()` `language="eng"` übergeben, falls die Bibliothek das unterstützt. | +| Langsame Verarbeitung bei großen Dateien | Hohe Auflösung | Bild zuerst verkleinern: `aocr.ImageFilters.resize(width=1200)` vor der Binarisierung. | + +--- + +## Weiterführendes – Nächste Schritte und verwandte Themen + +- **Stapelverarbeitung**: Packen Sie die obige Logik in eine Schleife, um Dutzende von Dateien automatisch zu verarbeiten. +- **Strukturierte Ausgabe**: Verwenden Sie reguläre Ausdrücke auf `ocr_result.text`, um Felder wie Datum oder Betrag herauszuziehen. +- **Alternative Bibliotheken**: Ersetzen Sie `aocr` durch `pytesseract` – der Code ändert sich nur beim Initialisieren der Engine. +- **Wie man Bilder für PDFs vorverarbeitet**: Konvertieren Sie jede PDF‑Seite in ein Bild und wenden Sie dann dieselbe Pipeline an. + +Diese Erweiterungen ermöglichen es Ihnen, die Lösung von einem einzelnen Formular zu einer unternehmensweiten Dokumenten‑Ingest‑Pipeline zu skalieren. + +--- + +## Fazit + +Wir haben **wie man OCR ausführt** von Anfang bis Ende behandelt, gezeigt, **wie man Bild vorverarbeitet**, um **Rauschen zu reduzieren**, und demonstriert, **wie man Text aus einem Bild extrahiert** mit einem sauberen, reproduzierbaren Skript. Die zentrale Erkenntnis? Ein paar einfache Filter – Binarisierung und Median‑Blur – können einen verrauschten Scan in eine zuverlässige Datenquelle verwandeln und Ihnen Stunden manueller Nachbearbeitung ersparen. + +Probieren Sie das Skript mit Ihren eigenen Dokumenten, justieren Sie die Schwellenwerte und beobachten Sie, wie die Genauigkeit steigt. Wenn Sie bereit sind, erkunden Sie die Stapelverarbeitung oder integrieren Sie die Ausgabe in eine Datenbank für durchsuchbare Archive. Viel Spaß beim Programmieren, und möge Ihre OCR immer treffsicher 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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/german/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..1d380f049 --- /dev/null +++ b/ocr/german/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-04-26 +description: Erfahren Sie, wie Sie die Lizenz in Aspose OCR festlegen und die Lizenz + mit einem kompakten Python‑Skript validieren. Befolgen Sie die Schritt‑für‑Schritt‑Anleitung + für eine problemlose Aktivierung. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: de +og_description: Wie man die Lizenz in Aspose OCR festlegt und die Lizenz mit Python + validiert. Erhalten Sie ein vollständiges, ausführbares Beispiel in wenigen Minuten. +og_title: Wie man die Lizenz in Aspose OCR festlegt – Schnell‑Python‑Leitfaden +tags: +- Aspose OCR +- Python +- Licensing +title: Wie man die Lizenz in Aspose OCR festlegt – Schnellleitfaden für Python +url: /de/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Set License in Aspose OCR – Quick Python Guide + +Haben Sie sich schon einmal gefragt, **wie man die Lizenz** für Aspose OCR setzt, ohne sich die Haare auszureißen? Sie sind nicht allein. Die meisten Entwickler stoßen beim ersten Versuch, die volle Leistung der Bibliothek zu nutzen, auf ein Hindernis und werden von einem „Trial version“-Wasserzeichen verfolgt. Die gute Nachricht: Die Lösung ist ziemlich unkompliziert, und Sie können sie sofort überprüfen. + +In diesem Tutorial gehen wir Schritt für Schritt durch **wie man die Lizenz** *setzt* und **wie man die Lizenz** **validiert** – mit einem kleinen Python‑Skript. Am Ende haben Sie ein funktionierendes Beispiel, das „License OK“ ausgibt, plus ein paar Tipps, um häufige Stolperfallen zu vermeiden. + +## Prerequisites + +Bevor wir loslegen, stellen Sie sicher, dass Sie Folgendes haben: + +- Python 3.8+ installiert (der Code funktioniert mit 3.9, 3.10 und neueren Versionen). +- Eine aktive Aspose OCR for Java (oder .NET) Lizenzdatei – typischerweise `Aspose.OCR.Java.lic`. +- Das `asposeocr`‑Paket installiert via `pip install asposeocr`. +- Grundlegende Erfahrung im Ausführen von Python‑Skripten über die Befehlszeile. + +Alles vorhanden? Großartig – los geht’s. + +## How to Set License in Aspose OCR (Step 1) + +Die Lizenz zu setzen ist im Wesentlichen ein dreizeiliger Vorgang, aber jede Zeile hat einen Zweck. Wir zerlegen das Ganze, damit Sie verstehen, *warum* wir was tun. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Warum `License` importieren?** +Die Klasse `License` ist das Tor, das der Aspose OCR‑Engine mitteilt, dass Sie für das Produkt bezahlt haben. Ohne eine Instanz zu erstellen, geht die Bibliothek weiterhin davon aus, dass Sie die Testversion nutzen. + +**Warum `License` instanziieren?** +Durch die Instanziierung erhalten Sie ein Objekt (`license_obj`), das den Pfad zu Ihrer `.lic`‑Datei halten und anschließend zur Laufzeit anwenden kann. + +## How to Set License in Aspose OCR – Providing the License File + +Jetzt zeigen wir dem Objekt, wo sich die eigentliche Lizenzdatei auf der Festplatte befindet. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Tipps & Tricks:** + +- **Absoluter vs. relativer Pfad** – Wenn Sie das Skript aus einem anderen Ordner ausführen, verhindert ein absoluter Pfad (`C:/licenses/...`) „Datei nicht gefunden“-Fehler. +- **Umgebungsvariablen** – Den Pfad in einer Env‑Var (`OCR_LICENSE_PATH`) zu speichern, hält Geheimnisse aus dem Quellcode heraus: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## How to Validate License – Making Sure It Worked + +Die Lizenz zu setzen ist nur die halbe Miete; Sie müssen bestätigen, dass die Bibliothek sie akzeptiert hat. Genau hier kommt der Validierungsschritt ins Spiel. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Fehlt die Lizenzdatei, ist beschädigt oder passt nicht, wirft `validate()` eine Ausnahme. Diese Ausnahme abzufangen, gibt Ihnen eine saubere Möglichkeit, Probleme zu melden. + +## Full Working Example (All Steps Combined) + +Unten finden Sie das vollständige, sofort ausführbare Skript. Führen Sie es im Terminal aus (`python set_license.py`) und Sie sollten „License OK“ sehen. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Erwartete Ausgabe** + +``` +License OK +``` + +Wenn etwas schiefgeht, sehen Sie etwa Folgendes: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Diese Meldung sagt Ihnen genau, was zu korrigieren ist – kein Rätselraten nötig. + +## How to Validate License – Handling Common Edge Cases + +Selbst mit dem obigen Skript können einige Szenarien Probleme verursachen: + +| Situation | What Happens | How to Fix | +|-----------|--------------|------------| +| **Dateipfad‑Tippfehler** | `FileNotFoundError` von `set_license` | Pfad überprüfen; `os.path.abspath()` zum Debuggen verwenden. | +| **Falscher Dateityp** | Validation wirft „Invalid license format“ | Sicherstellen, dass Sie die `.lic`‑Datei verwenden, die zu Ihrer Produktedition passt. | +| **Abgelaufene Lizenz** | Validation wirft „License expired“ | Lizenz bei Aspose Support erneuern und die Datei ersetzen. | +| **Ausführen in einer eingeschränkten Umgebung** (z. B. AWS Lambda) | Berechtigungsfehler | Lesezugriff auf das Verzeichnis gewähren oder die Lizenz in das Deploy‑Package einbetten. | + +Pro‑Tipp: Packen Sie den Aufruf `set_license` in einen eigenen `try/except`‑Block, wenn Sie zwischen „Datei nicht gefunden“ und „Ungültiges Format“ unterscheiden möchten. + +## Visual Summary + +![how to set license in Aspose OCR example](/images/aspose-ocr-license.png "how to set license in Aspose OCR example") + +*Der Screenshot zeigt, dass das Skript nach einer erfolgreichen Aktivierung „License OK“ ausgibt.* + +## Common Pitfalls & Best Practices + +- **Legen Sie Ihre Lizenzdatei niemals in ein öffentliches Repository.** Nutzen Sie Umgebungsvariablen oder Secret‑Manager (GitHub Secrets, Azure Key Vault) stattdessen. +- **Frühzeitig validieren.** Das Aufrufen von `license_obj.validate()` direkt nach `set_license` fängt Fehler ab, bevor irgendeine OCR‑Arbeit beginnt. +- **Das License‑Objekt wiederverwenden.** Sie müssen die Lizenz nur einmal pro Prozess setzen; nachfolgende OCR‑Aufrufe nutzen automatisch die aktivierte Lizenz. +- **Den Lizenzpfad (ohne Dateinamen) im Produktivbetrieb protokollieren**, um Debugging zu erleichtern, ohne die eigentliche Datei preiszugeben. + +## Next Steps – Extending Your OCR Workflow + +Jetzt, wo Sie **wie man die Lizenz** setzt und **wie man die Lizenz** validiert, können Sie zu den eigentlichen OCR‑Aufgaben übergehen: + +- **how to read image** – `Image.load("sample.png")` +- **how to extract text** – `ocr_engine.recognize(image)` +- **how to configure OCR options** – `OcrEngine`‑Einstellungen für Sprache, Genauigkeit usw. anpassen + +Jeder dieser Punkte baut auf einer erfolgreich lizenzierten Engine auf, sodass Sie das Test‑Wasserzeichen nie wieder sehen. + +## Conclusion + +Wir haben den gesamten Prozess **wie man die Lizenz** für Aspose OCR setzt, **wie man die Lizenz** validiert und Ihnen ein komplettes, ausführbares Skript bereitgestellt, das „License OK“ ausgibt. Durch vorausschauende Fehlerbehandlung und die Nutzung von Umgebungsvariablen bleibt Ihre Anwendung sowohl sicher als auch robust. + +Weitere Fragen zu OCR, Lizenzierung oder der Integration von Aspose in größere Pipelines? Hinterlassen Sie einen Kommentar – happy coding! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/german/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/german/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..576ce07f0 --- /dev/null +++ b/ocr/german/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: Wie man OCR bei gescannten PDFs verwendet, Text aus PDFs extrahiert, + OCR auf PDFs ausführt und gescannte PDFs in durchsuchbare Dateien umwandelt – in + wenigen Schritten. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: de +og_description: 'Wie man OCR in Python verwendet: Erfahren Sie, wie Sie Text aus PDFs + extrahieren, OCR auf PDFs anwenden und gescannte PDFs in durchsuchbare Dokumente + umwandeln.' +og_title: Wie man OCR verwendet – Schnellleitfaden zum Extrahieren von Text aus PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: Wie man OCR verwendet – Text aus PDF mit Python extrahieren +url: /de/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man OCR verwendet – Text aus PDF mit Python extrahieren + +Haben Sie sich jemals gefragt **wie man OCR verwendet**, um Text aus einem gescannten Vertrag, einer Quittung oder einem E‑Book zu extrahieren? Sie sind nicht allein. In vielen realen Projekten ist das PDF, das Sie erhalten, nur ein Bild, und ohne OCR können Sie dessen Inhalt nicht durchsuchen, indexieren oder analysieren. + +In diesem Tutorial führen wir Sie durch ein vollständiges, ausführbares Beispiel, das **zeigt, wie man OCR verwendet**, **wie man Text aus PDF extrahiert** und warum Sie **gescannte PDF**‑Dateien in durchsuchbare Dokumente umwandeln möchten. Wir behandeln außerdem die feine Kunst des **Ladens von PDF als Bild**, damit die OCR‑Engine jede Seite klar erkennen kann. + +> **Schnelle Vorschau:** Am Ende haben Sie ein Skript, das ein mehrseitiges PDF lädt, OCR auf jeder Seite ausführt und den erkannten Text ausgibt – ohne externe Dienste. + +## Was Sie benötigen + +- Python 3.9+ (jede aktuelle Version funktioniert) +- `aocr`-Paket (oder jede kompatible OCR‑Bibliothek, die `OcrEngine` und `Image.load` bereitstellt) +- Eine gescannte PDF‑Datei, die Sie verarbeiten möchten (z. B. `contract.pdf`) +- Ein bescheidener Arbeitsspeicher (≈ 200 MB pro 100‑Seiten‑PDF ist in der Regel ausreichend) + +Wenn Sie die OCR‑Bibliothek noch nicht installiert haben, führen Sie aus: + +```bash +pip install aocr +``` + +> **Pro‑Tipp:** Verwenden Sie eine virtuelle Umgebung, um Ihre Abhängigkeiten übersichtlich zu halten. + +## Schritt 1: PDF als Bild laden – Das erste Puzzleteil + +Bevor irgendeine OCR stattfinden kann, muss das PDF als Bild dargestellt werden. Hier kommt das sekundäre Schlüsselwort **load pdf as image** ins Spiel. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Warum das wichtig ist:* `aocr.Image.load` rastert jede PDF‑Seite intern in ein Bitmap, das die OCR‑Engine verstehen kann. Wenn Sie diesen Schritt überspringen und das rohe PDF übergeben, wirft die Engine einen Fehler, weil sie Pixeldaten und keine Vektordaten erwartet. + +> **Hinweis:** Der Pfad kann absolut oder relativ sein. Stellen Sie sicher, dass die Datei lesbar ist; andernfalls erhalten Sie einen `FileNotFoundError`. + +## Schritt 2: OCR auf PDF ausführen – Pixel in Zeichen umwandeln + +Jetzt, wo das PDF als Bild vorliegt, können wir endlich **OCR auf PDF ausführen**. Das folgende Snippet verarbeitet alle Seiten auf einmal: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Was passiert im Hintergrund?* `process_all_pages` durchläuft die gerasterten Seiten, wendet das OCR‑Modell an und gibt eine Liste von Ergebnisobjekten zurück – eines pro Seite. Jedes Ergebnis enthält den erkannten Text, Vertrauenswerte und Begrenzungsrahmen (falls Sie diese später benötigen). + +## Schritt 3: Text aus PDF extrahieren – Die Zeichen herausziehen + +Mit den OCR‑Ergebnissen in der Hand wird das Extrahieren des Klartexts trivial. Wir iterieren über die Seiten und geben die Ausgabe aus, wobei wir das sekundäre Schlüsselwort **extract text from pdf** demonstrieren. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Erwartete Ausgabe** (gekürzt für die Kürze): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Wenn Sie den Text in einem einzigen String benötigen, einfach verketten: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Jetzt haben Sie erfolgreich **Text aus PDF extrahiert** mithilfe von OCR. + +## Schritt 4: Gescannte PDF konvertieren – Durchsuchbar machen + +Viele nachgelagerte Werkzeuge (wie Elasticsearch oder SharePoint) erwarten ein durchsuchbares PDF statt eines reinen Text‑Dumps. Sie können die OCR‑Ausgabe wieder in das Original‑PDF einbetten und damit **gescannte PDF** in eine durchsuchbare Version umwandeln. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Warum das sinnvoll ist?* Ein durchsuchbares PDF behält das ursprüngliche Layout und die Bilder bei, ermöglicht jedoch Textauswahl und Indexierung – ein Gewinn für Menschen und Maschinen. + +## Häufige Fallstricke & Randfälle + +### Mehrseitige PDFs, die größer als der Speicher sind + +Wenn Ihr PDF Hunderte von Seiten hat, kann das Laden von allem auf einmal den RAM erschöpfen. Die `aocr`‑Bibliothek unterstützt Lazy Loading: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Dann die Seiten einzeln verarbeiten: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Scans von schlechter Qualität + +Die OCR‑Genauigkeit sinkt bei unscharfen oder kontrastarmen Scans drastisch. Vor dem Übergeben des Bildes an die Engine sollten Sie eine Vorverarbeitung in Betracht ziehen: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Sprachunterstützung + +Standardmäßig geht die Engine von Englisch aus. Um **OCR auf PDF** in einer anderen Sprache auszuführen, setzen Sie den Sprachcode: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Stellen Sie sicher, dass das entsprechende Sprachmodell installiert ist. + +## Vollständiges funktionierendes Beispiel + +Alles zusammengeführt, hier ein eigenständiges Skript, das Sie in eine Datei namens `ocr_pdf.py` legen und sofort ausführen können: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Führen Sie es folgendermaßen aus: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Sie sehen den Text in der Konsole ausgegeben, und wenn Sie `-o` angegeben haben, erscheint ein durchsuchbares PDF neben der Originaldatei. + +## Pro‑Tipps & bewährte Vorgehensweisen + +- **Batch‑Verarbeitung:** Beim Umgang mit Dutzenden PDFs die obige Logik in einer Schleife einbetten und den Erfolg/Fehlschlag jeder Datei protokollieren. +- **Vertrauensfilterung:** Jeder `page_result` enthält eine Vertrauensmetrik. Seiten mit niedrigem Vertrauen verwerfen oder markieren für manuelle Überprüfung. +- **Parallelität:** Wenn Ihre CPU mehrere Kerne hat, sollten Sie `concurrent.futures` verwenden, um Seiten parallel zu verarbeiten – achten Sie dabei auf den Speicherverbrauch. +- **Versionssperre:** Die `aocr`‑API kann sich ändern. Fixieren Sie die Version in `requirements.txt` (z. B. `aocr==2.3.1`), um breaking changes zu vermeiden. + +## Fazit + +Wir haben **gezeigt, wie man OCR verwendet**, um **Text aus PDF zu extrahieren**, **OCR auf PDF auszuführen**, **PDF als Bild zu laden** und sogar **gescannte PDF** in ein durchsuchbares Format zu **konvertieren**. Der Code ist vollständig, die Erklärungen decken sowohl das *Was* als auch das *Warum* ab, und Sie besitzen nun ein wiederverwendbares Muster für jedes Projekt, das bildbasierte PDFs verarbeitet. + +Was kommt als Nächstes? Versuchen Sie, den extrahierten Text in eine Natural‑Language‑Pipeline zu speisen, indexieren Sie die durchsuchbaren PDFs mit Elasticsearch oder experimentieren Sie mit verschiedenen OCR‑Back‑Ends wie Tesseract oder Azure Computer Vision. Der Himmel ist die Grenze, und die Werkzeuge liegen bereits in Ihren Händen. + +Viel Spaß beim Coden, und mögen Ihre PDFs stets durchsuchbar sein! + +![Beispiel für die Verwendung von OCR](/images/ocr_workflow.png "Beispiel für die Verwendung von OCR") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/german/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/german/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..5ab5ba108 --- /dev/null +++ b/ocr/german/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Wie man Threading verwendet, um ein Bild für OCR in Python zu laden. + Lernen Sie die asynchrone OCR‑Verarbeitung mit Callbacks, Hintergrund‑Threads und + Bildladen in nur wenigen Schritten. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: de +og_description: Wie man Threading verwendet, um ein Bild für OCR in Python zu laden. + Dieser Leitfaden zeigt ein vollständiges, ausführbares Beispiel mit Callbacks und + Hintergrundausführung. +og_title: Wie man Threading nutzt, um ein Bild für OCR zu laden +tags: +- Python +- Threading +- OCR +- Image Processing +title: Wie man Threading verwendet, um ein Bild für OCR zu laden +url: /de/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Wie man Threading verwendet, um ein Bild für OCR zu laden + +Haben Sie sich jemals gefragt, **wie man Threading verwendet**, um ein Bild für OCR zu laden, ohne dass Ihre Anwendung einfriert? Das ist ein Szenario, das auftaucht, egal ob Sie einen Desktop‑Scanner, einen Web‑Service oder ein einfaches Skript bauen, das massive Bilder verarbeitet. Die gute Nachricht? Ein paar Zeilen Python und das richtige Threading‑Muster halten Ihre UI flüssig, während die OCR‑Engine ihre Magie wirkt. + +In diesem Tutorial gehen wir ein komplettes End‑to‑End‑Beispiel durch: ein großes PNG laden, OCR in einem Hintergrund‑Thread starten und das Ergebnis mit einem Callback verarbeiten. Am Ende wissen Sie nicht nur, **wie man Threading verwendet**, sondern auch, **wie man ein Bild für OCR lädt** – sauber und wiederverwendbar. + +## Was Sie benötigen + +- Python 3.9+ (die hier gezeigte Syntax funktioniert in jeder aktuellen Version) +- `pillow` für die Bildverarbeitung (`pip install pillow`) +- `pytesseract` als dünne Wrapper‑Bibliothek um Tesseract OCR (`pip install pytesseract`) +- Tesseract OCR‑Engine auf Ihrem Rechner installiert (Download von [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Eine große Bilddatei, die Sie verarbeiten möchten (`large_image.png` in diesem Leitfaden) + +Keine zusätzlichen Frameworks, kein async/await – nur klassisches `threading` und ein Callback. + +## Schritt 1: Das Threading‑Modul importieren (erforderlich für Hintergrundausführung) + +Das Erste, was wir tun, ist das `threading`‑Modul zu importieren. Es stellt uns die Klasse `Thread` zur Verfügung, mit der wir jede Funktion in einem separaten OS‑Thread ausführen können. + +```python +import threading +``` + +*Warum das wichtig ist*: Wenn Sie OCR im Haupt‑Thread ausführen, friert Ihr Programm (insbesondere eine GUI) ein, bis die OCR fertig ist. Durch das Auslagern der Arbeit in einen Hintergrund‑Thread bleibt der Haupt‑Thread frei, um die UI zu aktualisieren, Benutzereingaben zu verarbeiten oder andere Aufgaben zu starten. + +## Schritt 2: Einen Callback definieren, der aufgerufen wird, wenn OCR fertig ist + +Ein Callback ist einfach eine Funktion, die ein anderer Code‑Abschnitt aufruft, wenn er fertig ist. Hier geben wir den erkannten Text aus, aber Sie könnten ihn speichern, über das Netzwerk senden oder ein UI‑Widget aktualisieren. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Pro‑Tipp*: Halten Sie den Callback leichtgewichtig. Aufwendige Verarbeitung im Callback untergräbt den Sinn von Threading, weil sie den aufrufenden Thread (oft den Haupt‑Thread) weiterhin blockiert. + +## Schritt 3: Das Bild laden, das Sie verarbeiten möchten + +Das Laden des Bildes ist ein separater Aspekt von OCR, gehört aber zum gesamten Workflow. Mit Pillow ist das trivial. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Warum wir das hier tun*: Wenn das Bild riesig ist, kann das Laden im Haupt‑Thread bereits zu einem Ruckeln führen. In vielen realen Anwendungen würden Sie das Laden ebenfalls in einen Thread auslagern, aber zur Übersichtlichkeit halten wir es synchron. + +## Schritt 4: Einen kleinen OCR‑Engine‑Wrapper erstellen + +Das ursprüngliche Snippet nutzte `engine.process_async`. Wir ahmen das mit einer winzigen Klasse nach, die intern einen Thread startet und den übergebenen Callback aufruft, sobald sie fertig ist. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Erklärung*: +- `_run_ocr` erledigt die schwere Arbeit. +- `process_async` erzeugt ein `Thread`‑Objekt, markiert es als Daemon (damit der Interpreter beendet werden kann, selbst wenn der Thread noch läuft) und startet es. +- Der Callback erhält entweder den OCR‑Text oder eine Fehlermeldung. + +## Schritt 5: Alles zusammenführen und andere Aufgaben erledigen, während OCR läuft + +Jetzt orchestrieren wir den gesamten Ablauf: Bild laden, Engine instanziieren, das asynchrone OCR starten und den Haupt‑Thread mit etwas anderem beschäftigen (hier geben wir einfach eine Meldung aus). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Erwartete Ausgabe (gekürzt zur Übersicht):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Falls die OCR fehlschlägt, gibt der Callback stattdessen eine Fehlermeldung aus. + +--- + +## Warum dieser Ansatz besser funktioniert als eine einfache Schleife + +- **Responsiveness**: Der Haupt‑Thread blockiert nie beim OCR‑Aufruf, der bei großen Bildern Sekunden dauern kann. +- **Skalierbarkeit**: Sie können mehrere `SimpleOcrEngine`‑Instanzen starten, jede in ihrem eigenen Thread, um einen Stapel Bilder gleichzeitig zu verarbeiten. +- **Trennung der Verantwortlichkeiten**: Laden, Verarbeiten und Ergebnis‑Handling sind sauber getrennt, was den Code leichter test‑ und wartbar macht. + +## Häufige Stolperfallen und wie man sie vermeidet + +| Stolperfalle | Was passiert | Lösung | +|--------------|--------------|--------| +| Vergessen, den Thread als *daemon* zu markieren | Das Skript hängt nach Abschluss der Hauptarbeit, weil der OCR‑Thread noch lebt. | `worker.daemon = True` setzen **oder** den Thread vor dem Beenden mit `join()` warten. | +| Verwendung einer globalen Variable für das Ergebnis ohne Locks | Race‑Conditions können Daten beschädigen, wenn mehrere Threads gleichzeitig schreiben. | Ergebnis über einen Callback übergeben (wie hier) oder thread‑sichere Container wie `queue.Queue` nutzen. | +| Ein massives Bild im Haupt‑Thread laden | UI friert ein, bevor das Hintergrund‑OCR überhaupt startet. | Bildladen ebenfalls in einen Thread auslagern oder Lazy‑Loading‑Techniken verwenden. | +| Keine Ausnahmebehandlung im Worker‑Thread | Ungefangene Ausnahmen töten den Thread stillschweigend, sodass kein Ergebnis zurückkommt. | OCR‑Logik in `try/except` einbetten und den Fehler an den Callback weiterleiten. | + +## Dieses Muster erweitern + +- **Fortschrittsanzeige**: Verwenden Sie eine gemeinsame `queue.Queue`, um Zwischen‑Fortschritts‑Prozentsätze vom OCR‑Thread zum Haupt‑Thread zu schicken. +- **Thread‑Pool**: Für Stapelverarbeitung ersetzen Sie einzelne `Thread`‑Objekte durch einen `concurrent.futures.ThreadPoolExecutor`. +- **GUI‑Integration**: In einer Tkinter‑ oder PyQt‑App planen Sie den Callback mit `after()` (Tkinter) bzw. `QTimer.singleShot` (Qt), damit UI‑Updates im Haupt‑Thread stattfinden. + +## Vollständiges, lauffähiges Beispiel (Copy‑Paste‑bereit) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/greek/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..762b739d1 --- /dev/null +++ b/ocr/greek/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-04-26 +description: Εξαγωγή κειμένου κεφαλίδας με OCR χρησιμοποιώντας Python Aspose OCR. + Μάθετε πώς να εξάγετε κείμενο από συγκεκριμένη περιοχή σε εικόνες γρήγορα και αξιόπιστα. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: el +og_description: Εξαγωγή κειμένου κεφαλίδας με OCR γρήγορα. Αυτός ο οδηγός δείχνει + πώς να εξάγετε κείμενο από συγκεκριμένη περιοχή χρησιμοποιώντας το Python Aspose + OCR σε λίγες μόνο γραμμές. +og_title: Εξαγωγή κειμένου κεφαλίδας OCR με Python Aspose OCR – Πλήρης οδηγός +tags: +- OCR +- Python +- Aspose +title: Εξαγωγή κειμένου κεφαλίδας OCR με Python Aspose OCR – Οδηγός βήμα‑βήμα +url: /el/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Εξαγωγή Κειμένου Κεφαλίδας OCR – Πλήρης Οδηγός Python Aspose OCR + +Έχετε ποτέ χρειαστεί να **εξάγετε κείμενο κεφαλίδας OCR** από ένα σαρωμένο τιμολόγιο αλλά δεν θέλετε να επεξεργαστείτε ολόκληρη τη σελίδα; Δεν είστε ο μόνος. Σε πολλά πραγματικά pipelines, η κεφαλίδα περιέχει τις πιο κρίσιμες πληροφορίες—αριθμό τιμολογίου, ημερομηνία, όνομα προμηθευτή—οπότε η γρήγορη εξαγωγή της μπορεί να εξοικονομήσει πολύ δουλειά downstream. + +Σε αυτό το tutorial θα σας δείξουμε μια έτοιμη προς εκτέλεση λύση που **εξάγει κείμενο συγκεκριμένης περιοχής** χρησιμοποιώντας τη βιβλιοθήκη **Python Aspose OCR**. Χωρίς ασαφείς αναφορές σε εξωτερικά έγγραφα, μόνο ένα πλήρες script, μια σαφής εξήγηση κάθε γραμμής, και συμβουλές που θα χρησιμοποιήσετε πραγματικά αύριο. + +## Τι Θα Μάθετε + +- Πώς να εγκαταστήσετε και να εισάγετε το πακέτο Aspose OCR για Python. +- Πώς να φορτώσετε μια εικόνα και να ορίσετε μια **περιοχή ενδιαφέροντος (ROI)** που απομονώνει την κεφαλίδα. +- Πώς να εκτελέσετε τη μηχανή OCR σε αυτήν την ROI και να ανακτήσετε καθαρό κείμενο. +- Συνηθισμένα προβλήματα (π.χ., ασυμφωνίες DPI) και πώς να τα αποφύγετε. +- Πώς φαίνεται το αναμενόμενο αποτέλεσμα ώστε να μπορείτε να επαληθεύσετε ότι όλα λειτουργούν. + +Με το τέλος, θα μπορείτε να ενσωματώσετε αυτόν τον κώδικα σε οποιοδήποτε έργο χρειάζεται **εξαγωγή κειμένου κεφαλίδας OCR** από τιμολόγια, αποδείξεις ή οποιοδήποτε έγγραφο με προβλέψιμη διάταξη. + +## Προαπαιτήσεις + +- Python 3.8 ή νεότερη εγκατεστημένη στο μηχάνημά σας. +- Ένα έγκυρο license Aspose OCR for Python (η δωρεάν δοκιμή λειτουργεί για αξιολόγηση). +- Ένα αρχείο εικόνας (`invoice.png`) που περιέχει καθαρή περιοχή κεφαλίδας. +- Βασική εξοικείωση με συναρτήσεις Python και διαδρομές αρχείων. + +> **Pro tip:** Αν δοκιμάζετε σε σάρωση χαμηλής ανάλυσης, αυξήστε το DPI πριν το δώσετε στο Aspose OCR – βελτιώνει δραματικά την ακρίβεια. + +--- + +## Βήμα 1: Εγκατάσταση του Πακέτου Aspose OCR + +Πρώτα, προσθέστε τη βιβλιοθήκη στο περιβάλλον σας. Το επίσημο πακέτο είναι `aspose-ocr`. Εκτελέστε αυτό μία φορά: + +```bash +pip install aspose-ocr +``` + +Αν χρησιμοποιείτε εικονικό περιβάλλον (συνιστάται έντονα), ενεργοποιήστε το πριν την εγκατάσταση. Αυτό εξασφαλίζει ότι το πακέτο δεν θα συγκρουστεί με άλλα έργα. + +## Βήμα 2: Εισαγωγή Απαιτούμενων Κλάσεων και Φόρτωση της Εικόνας + +Τώρα φέρνουμε τις απαραίτητες κλάσεις στο script μας και φορτώνουμε την εικόνα του τιμολογίου. Παρατηρήστε τη χρήση **πλήρων διαδρομών**· οι σχετικές διαδρομές λειτουργούν επίσης, αλλά οι απόλυτες διαδρομές αφαιρούν την αμφιβολία όταν το script εκτελείται σε διακομιστή. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Why this matters:** Η αρχικοποίηση του `OcrEngine` μία φορά και η επαναχρησιμοποίησή του για πολλαπλές εικόνες είναι πιο αποδοτική από το να δημιουργείτε νέα μηχανή κάθε φορά. + +## Βήμα 3: Ορισμός της Περιοχής Κεφαλίδας (ROI) + +Η κεφαλίδα συνήθως βρίσκεται στην κορυφή της σελίδας, αλλά οι ακριβείς συντεταγμένες της μπορεί να διαφέρουν. Εδώ ορίζουμε ένα ορθογώνιο (`x`, `y`, `width`, `height`) που καλύπτει την κεφαλίδα. Προσαρμόστε τους αριθμούς ώστε να ταιριάζουν με τη διάταξη του εγγράφου σας. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **How it works:** Καλώντας το `set_roi`, η μηχανή OCR περιορίζει την ανάλυση της σε αυτό το ορθογώνιο, κάτι που επιταχύνει δραματικά την επεξεργασία και μειώνει τον θόρυβο από το υπόλοιπο της σελίδας. + +## Βήμα 4: Εφαρμογή του ROI και Εκτέλεση OCR + +Τώρα λέμε στη μηχανή να εστιάσει στην περιοχή κεφαλίδας και στη συνέχεια εκτελούμε τη διαδικασία OCR. Το αντικείμενο αποτελέσματος περιέχει το αναγνωρισμένο κείμενο και πρόσθετα μεταδεδομένα (βαθμοί εμπιστοσύνης, γλώσσα κ.λπ.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Αν το OCR αποτύχει (π.χ., μη υποστηριζόμενη μορφή εικόνας), το `ocr_result` θα είναι `None`. Μια γρήγορη συνθήκη προστασίας μπορεί να κάνει το script πιο ανθεκτικό: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Βήμα 5: Ανάκτηση και Εκτύπωση του Εξαγόμενου Κειμένου Κεφαλίδας + +Τέλος, εξάγουμε το κείμενο από το αντικείμενο αποτελέσματος και το εμφανίζουμε. Μπορείτε επίσης να το γράψετε σε αρχείο ή να το περάσετε σε άλλη συνάρτηση για περαιτέρω ανάλυση. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Αναμενόμενο Αποτέλεσμα + +Όταν όλα είναι σωστά ρυθμισμένα, θα πρέπει να δείτε κάτι όπως: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Αν το αποτέλεσμα φαίνεται παραμορφωμένο, ελέγξτε ξανά τις συντεταγμένες ROI και βεβαιωθείτε ότι η πηγή εικόνας είναι υψηλής αντίθεσης. + +--- + +## Παραλλαγές & Ακραίες Περιπτώσεις + +### 1. Πολλαπλές Κεφαλίδες σε Ένα Έγγραφο + +Μερικές φορές ένα PDF περιέχει πολλές σελίδες, η καθεμία με τη δική της κεφαλίδα. Επανάληψη στις σελίδες και προσαρμογή του ROI ανά σελίδα: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Αντιμετώπιση Κεκλιμένων Σαρώσεων + +Αν το τιμολόγιο είναι ελαφρώς περιστραμμένο, προεπεξεργαστείτε την εικόνα με OpenCV πριν τη δώσετε στο Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Αλλαγή Ρυθμίσεων Γλώσσας + +Το Aspose OCR μπορεί να ανιχνεύσει αυτόματα τη γλώσσα, αλλά μπορείτε να επιβάλετε τα Αγγλικά για ταχύτερα αποτελέσματα: + +```python +ocr_engine.language = "en" +``` + +--- + +## Πλήρες Παράδειγμα Λειτουργίας + +Παρακάτω είναι το πλήρες script που μπορείτε να αντιγράψετε‑επικολλήσετε σε ένα αρχείο με όνομα `extract_header.py`. Θυμηθείτε να αντικαταστήσετε τη διαδρομή εικόνας με τη δική σας. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Η εκτέλεση αυτού του script πρέπει να εμφανίσει τις γραμμές κεφαλίδας ακριβώς όπως φαίνονται παραπάνω. Μη διστάσετε να τροποποιήσετε τις τιμές `roi` ώστε να ταιριάζουν με το συγκεκριμένο πρότυπο τιμολογίου σας. + +--- + +## Συχνές Ερωτήσεις Απαντημένες + +**Q: Λειτουργεί αυτό απευθείας με PDF;** +A: Δεν είναι έτοιμο εκτός κουτιού. Μετατρέψτε κάθε σελίδα PDF σε εικόνα (π.χ., χρησιμοποιώντας `pdf2image`) και στη συνέχεια δώστε το PNG/JPG στο script. + +**Q: Τι γίνεται αν η κεφαλίδα μου περιέχει λογότυπο και κείμενο μαζί;** +A: Το Aspose OCR εστιάζει στο κειμενικό περιεχόμενο. Για λογότυπα, σκεφτείτε να χρησιμοποιήσετε μια ξεχωριστή βιβλιοθήκη αναγνώρισης εικόνας όπως `opencv` ή `tesseract` με προσαρμοσμένο μοντέλο. + +**Q: Είναι περιορισμένη η δωρεάν δοκιμή;** +A: Η δοκιμή επιτρέπει έως 10 σελίδες ανά μήνα. Για παραγωγή, αγοράστε άδεια ώστε να αφαιρεθεί το όριο και να ξεκλειδώσετε ρυθμίσεις υψηλότερης ακρίβειας. + +--- + +## Συμπέρασμα + +Τώρα έχετε έναν **πλήρη, αξιόπιστο** οδηγό για **εξαγωγή κειμένου κεφαλίδας OCR** χρησιμοποιώντας **Python Aspose OCR**. Το tutorial κάλυψε τα πάντα, από την εγκατάσταση μέχρι την αντιμετώπιση ακραίων περιπτώσεων, και σας έδωσε μια επαναχρησιμοποιήσιμη συνάρτηση που μπορείτε να ενσωματώσετε σε μεγαλύτερες ροές εργασίας. + +Στη συνέχεια, μπορείτε να εξερευνήσετε **εξαγωγή κειμένου συγκεκριμένης περιοχής** για άλλες ζώνες όπως υποσέλιδα ή γραμμές‑ειδών, ή να συνδυάσετε αυτήν την προσέγγιση με έναν μετατροπέα PDF‑σε‑εικόνα για αυτοματοποίηση πλήρων pipelines εγγράφων. Οι δυνατότητες είναι ατελείωτες—απλώς θυμηθείτε να διατηρείτε ακριβείς συντεταγμένες ROI και εικόνες υψηλής ανάλυσης. + +Έχετε δύσκολη διάταξη; Μοιραστείτε τη στα σχόλια και θα προσαρμόσουμε το ROI μαζί. Καλή κωδικοποίηση! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/greek/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..f994968f5 --- /dev/null +++ b/ocr/greek/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-04-26 +description: Εξαγωγή κειμένου από εικόνα χρησιμοποιώντας το Aspose OCR σε Python. + Μάθετε πώς να εξάγετε κείμενο, να μετατρέπετε την εικόνα σε κείμενο και να φορτώνετε + την εικόνα για OCR με πολυγλωσσική υποστήριξη. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: el +og_description: Εξάγετε κείμενο από εικόνα άμεσα. Αυτός ο οδηγός δείχνει πώς να εξάγετε + κείμενο, να μετατρέψετε την εικόνα σε κείμενο και να φορτώσετε την εικόνα για OCR + χρησιμοποιώντας το Aspose OCR σε Python. +og_title: Εξαγωγή κειμένου από εικόνα με Python – Πλήρες Πολυγλωσσικό Μάθημα OCR +tags: +- OCR +- Python +- Aspose +title: Εξαγωγή κειμένου από εικόνα με Python – Οδηγός Πολυγλωσσικού OCR +url: /el/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# εξαγωγή κειμένου από εικόνα με Python – Οδηγός Πολυγλωσσικού OCR + +Ποτέ χρειάστηκε να **εξάγετε κείμενο από εικόνα** αλλά δεν ήσασταν σίγουροι ποια βιβλιοθήκη μπορεί να χειριστεί σελίδες με πολλαπλές γλώσσες; Δεν είστε μόνοι. Σε πολλές πραγματικές εφαρμογές—όπως επεξεργασία τιμολογίων, παρακολούθηση κοινωνικών μέσων ή αρχειοθέτηση πολυγλωσσικών εγγράφων—θα συναντήσετε εικόνες που περιέχουν τόσο λατινικούς όσο και κυριλλικούς χαρακτήρες. + +Τα καλά νέα; Με το Aspose OCR for Python μπορείτε να **εξάγετε κείμενο**, **μετατρέψετε εικόνα σε κείμενο**, και **φορτώσετε εικόνα για OCR** σε λίγες μόνο γραμμές, αφήνοντας τη μηχανή να εντοπίσει αυτόματα τη γλώσσα. Σε αυτό το tutorial θα περάσουμε από ένα πλήρες, εκτελέσιμο παράδειγμα, θα εξηγήσουμε γιατί κάθε βήμα είναι σημαντικό, και θα καλύψουμε μερικές ειδικές περιπτώσεις που μπορεί να συναντήσετε. + +> **Τι θα αποκομίσετε** +> * Ένα έτοιμο‑για‑εκτέλεση script που εξάγει κείμενο από ένα PNG με πολλαπλές γλώσσες. +> * Κατανόηση του πώς να ρυθμίσετε πολυγλωσσικό OCR σε Python. +> * Συμβουλές για τη διαχείριση μεγάλων αρχείων, διαφορετικών μορφών εικόνας, και εντοπισμό κοινών προβλημάτων. + +## Προαπαιτήσεις + +- Python 3.8 ή νεότερο (ο κώδικας χρησιμοποιεί f‑strings). +- Πακέτο `asposeocr` εγκατεστημένο (`pip install asposeocr`). +- Ένα αρχείο εικόνας (π.χ., `mixed_lang.png`) που περιέχει κείμενο σε περισσότερα από ένα αλφάβητα. +- Βασική εξοικείωση με τις εισαγωγές Python και τις αντικειμενοστραφείς APIs. + +Χωρίς βαριές εξαρτήσεις, χωρίς εξωτερικές υπηρεσίες—απλώς μια εντολή pip install και είστε έτοιμοι. + +--- + +## Βήμα 1 – Εγκατάσταση & εισαγωγή της βιβλιοθήκης Aspose OCR + +Πριν μπορέσουμε να **φορτώσουμε εικόνα για OCR**, χρειαζόμαστε τη βιβλιοθήκη. Το πακέτο περιλαμβάνει τον πυρήνα του OCR και έναν ελαφρύ φορτωτή εικόνας. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Γιατί είναι σημαντικό*: Η εισαγωγή των συγκεκριμένων κλάσεων διατηρεί το namespace καθαρό και κάνει τον κώδικα πιο ευανάγνωστο. Αν εισάγετε μόνο το `asposeocr`, θα πρέπει να προσδιορίζετε κάθε κλήση (`aocr.OcrEngine()`), κάτι που μπορεί να είναι ενοχλητικό. + +--- + +## Βήμα 2 – Δημιουργία της μηχανής OCR και ενεργοποίηση της πολυγλωσσικής ανίχνευσης + +Το Aspose OCR μπορεί αυτόματα να μαντέψει τις γλώσσες που εμφανίζονται στην εικόνα. Η ρύθμιση `Language.AUTO` καλύπτει Λατινικά, Κυριλλικά, Αραβικά και πολλές άλλες. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Συμβουλή*: Αν γνωρίζετε εκ των προτέρων το σύνολο γλωσσών, μπορείτε να ορίσετε `Language.ENGLISH` ή `Language.RUSSIAN` για μικρή βελτίωση απόδοσης. Αλλά για πραγματικά μικτά έγγραφα, το `AUTO` είναι η πιο ασφαλής επιλογή. + +--- + +## Βήμα 3 – Φόρτωση της εικόνας που θέλετε να επεξεργαστείτε + +Εδώ **φορτώνουμε εικόνα για OCR**. Το Aspose υποστηρίζει PNG, JPEG, BMP, TIFF, και ακόμη σελίδες PDF που αντιμετωπίζονται ως εικόνες. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Συμβουλή**: Αν η εικόνα σας είναι μεγαλύτερη από 2 MB, σκεφτείτε να την αλλάξετε σε μικρότερο μέγεθος εκ των προτέρων. Οι μεγάλες εικόνες αυξάνουν τη χρήση μνήμης και μπορούν να επιβραδύνουν το βήμα ανίχνευσης. + +--- + +## Βήμα 4 – Εκτέλεση της διαδικασίας OCR και σύλληψη του αποτελέσματος + +Η κλήση `process()` κάνει το βαρέως έργο: ανίχνευση κειμένου, ανάλυση διάταξης, και αποκωδικοποίηση γλώσσας. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +Το αντικείμενο `ocr_result` που επιστρέφεται περιέχει αρκετές χρήσιμες ιδιότητες: + +| Ιδιότητα | Περιγραφή | +|----------|------------| +| `text` | Απλό string του αναγνωρισμένου κειμένου (αυτό που θα χρησιμοποιείτε πιο συχνά). | +| `confidence` | Συνολική βαθμολογία εμπιστοσύνης (0‑100). | +| `lines` | Λίστα αντικειμένων `OcrLine` με δεδομένα θέσης (ιδανικό για PDFs). | + +--- + +## Βήμα 5 – Εμφάνιση του εξαγόμενου κειμένου + +Τέλος, εκτυπώνουμε το αποτέλεσμα. Σε μια πραγματική εφαρμογή μπορεί να το γράψετε σε βάση δεδομένων ή να το στείλετε σε API μετάφρασης. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Αναμενόμενο αποτέλεσμα** (παράδειγμα για εικόνα με πολλαπλές γλώσσες): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Αν δείτε ακατανόητους χαρακτήρες, ελέγξτε ξανά ότι η εικόνα δεν είναι κατεστραμμένη και ότι χρησιμοποιείτε την πιο πρόσφατη έκδοση του `asposeocr` (v23.7 τη στιγμή της συγγραφής). + +--- + +## Βήμα 6 – Πλήρες script που μπορείτε να αντιγράψετε‑επικολλήσετε + +Συνδυάζοντας όλα τα παραπάνω αφαιρείται η σύγχυση «πού αρχίζει ο κώδικας;». Αποθηκεύστε το ως `multilingual_ocr.py` και τρέξτε το από τη γραμμή εντολών. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Τρέξτε το: + +```bash +python multilingual_ocr.py +``` + +Θα πρέπει να δείτε τις εξαγόμενες συμβολοσειρές στην κονσόλα. Αυτό είναι—**μετατροπή εικόνας σε κείμενο** με λίγες μόνο γραμμές. + +--- + +## Συχνές ερωτήσεις & αντιμετώπιση ειδικών περιπτώσεων + +### Τι γίνεται αν η εικόνα μου περιέχει χειρόγραφο; +Το Aspose OCR είναι βελτιστοποιημένο για τυπωμένο κείμενο. Τα χειρόγραφα σενάρια συχνά απαιτούν ειδικό μοντέλο (π.χ., Azure Read ή Google Vision). Μπορείτε ακόμα να δοκιμάσετε `Language.AUTO`, αλλά αναμένετε χαμηλότερη εμπιστοσύνη. + +### Πώς μπορώ να βελτιώσω την ακρίβεια σε θορυβώδεις σκαναρίσματα; +1. Προεπεξεργασία της εικόνας (δυαδικοποίηση, απομάκρυνση θορύβου). +2. Αύξηση DPI τουλάχιστον στα 300 ppi πριν την περάσετε στη μηχανή. +3. Ρύθμιση `ocr_engine.config.deskew = True` εάν η εικόνα είναι σκύβδη. + +```python +ocr_engine.config.deskew = True +``` + +### Μπορώ να εξάγω κείμενο από PDF χωρίς να το μετατρέψω πρώτα σε εικόνα; +Ναι—το Aspose OCR μπορεί να ανοίξει σελίδες PDF απευθείας: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Απλώς θυμηθείτε ότι κάθε σελίδα αντιμετωπίζεται εσωτερικά ως εικόνα, οπότε ισχύουν οι ίδιες απαιτήσεις ποιότητας. + +--- + +## Συμπέρασμα + +Τώρα έχετε μια ολοκληρωμένη, άκρη‑σε‑άκρη συνταγή για **εξαγωγή κειμένου από εικόνα** χρησιμοποιώντας το Aspose OCR σε Python, με πλήρη πολυγλωσσική υποστήριξη. Το script δείχνει πώς να **φορτώσετε εικόνα για OCR**, **μετατρέψετε εικόνα σε κείμενο**, και να αντιμετωπίσετε τις πιο κοινές παγίδες. + +Από εδώ μπορείτε: + +- Να ενσωματώσετε τη λειτουργία σε μια web υπηρεσία που δέχεται ανεβάσματα χρηστών. +- Να συνδυάσετε το εξαγόμενο κείμενο με βιβλιοθήκη ανίχνευσης γλώσσας για να το δρομολογήσετε στο κατάλληλο σύστημα μετάφρασης. +- Να πειραματιστείτε με επιλογές `ocr_engine.config` (π.χ., `max_recognition_time`, `text_orientation`) για να βελτιστοποιήσετε την απόδοση. + +Καλό κώδικα, και εύχομαι οι OCR pipelines σας να είναι πάντα ακριβείς! + +--- + +![Στιγμιότυπο οθόνης του εξαγόμενου πολυγλωσσικού κειμένου – παράδειγμα εξαγωγής κειμένου από εικόνα](image-placeholder.png "παράδειγμα εξαγωγής κειμένου από εικόνα") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/greek/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..2d66dc558 --- /dev/null +++ b/ocr/greek/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-04-26 +description: Πώς να κάνετε ομαδική OCR τα έγγραφά σας και να εξάγετε κείμενο από σαρώσεις + σε Python. Μάθετε βήμα‑βήμα την ομαδική επεξεργασία με το OcrEngine για έξοδο JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: el +og_description: Πώς να κάνετε ομαδική OCR στα σαρωμένα αρχεία σας και να εξάγετε κείμενο + από τις σαρώσεις σε ένα μόνο script. Πλήρης κώδικας, συμβουλές και διαχείριση ακραίων + περιπτώσεων. +og_title: Πώς να κάνετε Batch OCR – Γρήγορος οδηγός Python +tags: +- OCR +- Python +- Automation +title: Πώς να κάνετε μαζική OCR – Εξαγωγή κειμένου από σαρώσεις αποδοτικά +url: /el/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να κάνετε Batch OCR – Εξαγωγή Κειμένου από Σαρώσεις Αποτελεσματικά + +Έχετε αναρωτηθεί ποτέ **πώς να κάνετε batch OCR** σε ένα βουνό σαρωμένων PDF χωρίς να χάσετε το μυαλό σας; Δεν είστε ο μόνος—οι προγραμματιστές ρωτούν συνεχώς, *«Πώς μπορώ να εξάγω κείμενο από σαρώσεις σε μία μόνο εκτέλεση;»* Τα καλά νέα είναι ότι με λίγες γραμμές Python μπορείτε να μετατρέψετε αυτή τη βαρετή εργασία σε μια ομαλή, αυτοματοποιημένη διαδικασία. + +Σε αυτό το tutorial θα περάσουμε βήμα‑βήμα από μια πλήρη, έτοιμη‑για‑εκτέλεση λύση που **εξάγει κείμενο από σαρώσεις**, αποθηκεύει τα αποτελέσματα ως JSON, και σας παρέχει έναν γρήγορο έλεγχο στο τέλος. Χωρίς εξωτερικές υπηρεσίες, χωρίς μαγεία—απλώς καθαρό Python, η κλάση `OcrEngine`, και λίγη διαχείριση φακέλων. + +## Τι Θα Κερδίσετε + +- Ένα πλήρως λειτουργικό script που **κάνει batch OCR** σε οποιονδήποτε φάκελο εικόνων. +- Καθαρές εξηγήσεις του *γιατί* υπάρχει κάθε γραμμή, όχι μόνο του *τι* κάνει. +- Συμβουλές για τη διαχείριση κενών φακέλων, αρχείων που δεν είναι εικόνες, και μεγάλων batch. +- Ένας τρόπος για να επαληθεύσετε ότι η έξοδος JSON περιέχει πραγματικά το εξαγόμενο κείμενο. + +### Προαπαιτούμενα (το ελάχιστο) + +| Απαίτηση | Γιατί είναι σημαντικό | +|----------|-----------------------| +| Python 3.8+ | Σύγχρονη σύνταξη & type hints | +| `OcrEngine` library (or a compatible wrapper) | Κύρια λειτουργικότητα OCR | +| Φάκελος με σαρωμένα αρχεία εικόνας (PNG, JPG, TIFF) | Δεδομένα εισόδου | +| Δικαιώματα εγγραφής για το φάκελο εξόδου | Αποθήκευση αποτελεσμάτων JSON | + +Αν τα έχετε ήδη, υπέροχα—ας βουτήξουμε. + +![διαδικασία batch OCR](image-placeholder.png){alt="διαδικασία batch OCR"} + +## Βήμα 1 – Αρχικοποίηση του OCR Engine (πώς να κάνετε batch OCR) + +Πριν μπορέσουμε να επεξεργαστούμε οτιδήποτε, χρειαζόμαστε μια παρουσία του OCR engine. Σκεφτείτε το ως το «εγκέφαλο» που θα διαβάζει κάθε εικόνα και θα παράγει κείμενο. Η αρχικοποίηση του μία φορά και η επαναχρησιμοποίησή του σε όλο το batch είναι το πιο αποδοτικό μοτίβο. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Γιατί να επαναχρησιμοποιήσετε την ίδια παρουσία;** +> Η δημιουργία νέου engine για κάθε αρχείο θα φορτώνει επανειλημμένα βαριά μοντέλα στη μνήμη, επιβραδύνοντας δραματικά το batch. Μία παρουσία διατηρεί το μοντέλο στη RAM και σας επιτρέπει να επεξεργαστείτε χιλιάδες εικόνες χωρίς αισθητή καθυστέρηση. + +## Βήμα 2 – Καθορίστε το Φάκελο Σαρώσεων (εξαγωγή κειμένου από σαρώσεις) + +Οι σαρώσεις σας βρίσκονται κάπου στο δίσκο. Ας πούμε στο script πού να τις βρει. Η χρήση απόλυτων διαδρομών αποφεύγει εκπλήξεις «αρχείο δεν βρέθηκε» όταν το script εκτελείται από διαφορετικό τρέχον φάκελο. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Συμβουλή:** +> Αν είστε σε Windows, οι μπροστιές κάθετες (`/`) λειτουργούν καλά με `os.path.abspath`, έτσι δεν χρειάζεται να διαφύγετε τις ανάστροφες κάθετες (`\`). + +## Βήμα 3 – Επιλέξτε Πού Θα Μεταφερθούν τα Αποτελέσματα JSON + +Πιθανώς θέλετε έναν τακτοποιημένο φάκελο για τα αποτελέσματα OCR. Η διατήρηση της εξόδου χωριστά από την πηγή διευκολύνει τον καθαρισμό αργότερα ή την τροφοδοσία του JSON σε άλλη pipeline. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Γιατί να δημιουργήσετε το φάκελο προγραμματιστικά;** +> Εγγυάται ότι το script δεν θα καταρρεύσει αν ο φάκελος λείπει, και το `exist_ok=True` κάνει τη λειτουργία επαναληπτική—εκτελέστε το script πολλές φορές χωρίς σφάλματα. + +## Βήμα 4 – Εκτέλεση της Batch Διαδικασίας (πώς να κάνετε batch OCR) + +Τώρα η ουσία: να πείτε στο `ocr_engine` να περάσει από κάθε αρχείο στο `input_dir`, να εκτελέσει OCR, και να αποθηκεύσει JSON στο `output_dir`. Η σημαία `format="json"` λέει στο engine να σειριοποιήσει το αποτέλεσμα με δομημένο τρόπο που αγαπούν τα downstream εργαλεία. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Τι συμβαίνει υπό το καπό; + +1. **Ανακάλυψη αρχείων** – Το engine σαρώει το `input_folder` αναδρομικά, αγνοώντας κρυφά αρχεία. +2. **Επικύρωση αρχείων** – Μόνο υποστηριζόμενες επεκτάσεις εικόνας (`.png`, `.jpg`, `.tif`, κλπ.) τροφοδοτούνται στο μοντέλο OCR. +3. **Εκτέλεση OCR** – Κάθε εικόνα αποστέλλεται στο OCR engine· κείμενο, βαθμοί εμπιστοσύνης και δεδομένα διάταξης καταγράφονται. +4. **Σειριοποίηση JSON** – Το αποτέλεσμα γράφεται σε αρχείο με το ίδιο βασικό όνομα αλλά με επέκταση `.json` στο `output_folder`. + +> **Διαχείριση ειδικών περιπτώσεων:** +> - **Κενός φάκελος:** Το engine καταγράφει “No files found” και επιστρέφει ομαλά. +> - **Κατεστραμμένη εικόνα:** Παραλείπει το αρχείο, καταγράφει ένα σφάλμα στο `batch_errors.log`, και συνεχίζει. +> - **Μεγάλο batch (10k+ αρχεία):** Η χρήση μνήμης παραμένει χαμηλή επειδή κάθε εικόνα επεξεργάζεται ανεξάρτητα. + +## Βήμα 5 – Επιβεβαίωση Ολοκλήρωσης Μετατροπής + +Μια απλή εντολή `print` παρέχει άμεση ανατροφοδότηση στην κονσόλα. Για pipelines παραγωγής μπορείτε να την αντικαταστήσετε με κλήση logging ή ειδοποίηση email. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Όταν δείτε αυτή τη γραμμή, μπορείτε με ασφάλεια να ελέγξετε το φάκελο `json_output`. Κάθε αρχείο JSON θα μοιάζει περίπου έτσι: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Τώρα μπορείτε να τροφοδοτήσετε αυτά τα αρχεία JSON σε μια βάση δεδομένων, έναν δείκτη αναζήτησης, ή οποιοδήποτε downstream εργαλείο ανάλυσης. + +## Συχνές Ερωτήσεις (και γρήγορες απαντήσεις) + +**Q: Τι γίνεται αν χρειαστεί να επεξεργαστώ PDF αντί για εικόνες;** +A: Μετατρέψτε κάθε σελίδα PDF σε εικόνα πρώτα (π.χ., χρησιμοποιώντας `pdf2image`) και τοποθετήστε τα παραγόμενα αρχεία PNG/JPG στο `input_dir`. Η λογική του batch OCR παραμένει αμετάβλητη. + +**Q: Μπορώ να αλλάξω τη μορφή εξόδου σε απλό κείμενο;** +A: Απόλυτα. Αντικαταστήστε το `format="json"` με `format="txt"` και το engine θα γράψει ένα αρχείο `.txt` που περιέχει μόνο το εξαγόμενο κείμενο. + +**Q: Οι σαρώσεις μου βρίσκονται σε πολλαπλούς υπο‑φακέλους—θα κάνει το script αναδρομή;** +A: Ναι. Το `batch_process` περιηγείται στο δέντρο καταλόγων εξ ορισμού. Αν θέλετε επίπεδη έξοδο, ορίστε `flatten=True` (αν η βιβλιοθήκη το υποστηρίζει) ή επεξεργαστείτε τα ονόματα αρχείων JSON μετά. + +**Q: Πώς να διαχειριστώ μη‑λατινικά scripts;** +A: Αρχικοποιήστε το `OcrEngine` με παράμετρο γλώσσας, π.χ., `OcrEngine(lang="spa+eng")`. Η βρόχος batch δεν χρειάζεται αλλαγές. + +## Επαγγελματικές Συμβουλές & Συνηθισμένα Πιθανά Σφάλματα + +- **Το μέγεθος batch μετράει:** Αν παρατηρήσετε αυξήσεις CPU, περιορίστε τη διαδικασία με ένα απλό `time.sleep(0.1)` μεταξύ των αρχείων. +- **Logging:** Αντικαταστήστε την κλήση `print` με το module `logging` του Python για καταγραφή χρονικών σημείων και επιπέδων σφάλματος. +- **Σύγκρουση ονομάτων αρχείων:** Αν δύο σαρώσεις έχουν το ίδιο βασικό όνομα αλλά βρίσκονται σε διαφορετικούς υπο‑φακέλους, τα αρχεία JSON θα αντικαταστήσουν το ένα το άλλο. Προσθέστε ένα hash της σχετικής διαδρομής στο όνομα εξόδου για να το αποφύγετε. +- **Διαρροές μνήμης:** Κάποια OCR back‑ends κρατούν εγγενείς πόρους. Καλέστε `ocr_engine.close()` στο τέλος του script αν η βιβλιοθήκη παρέχει μέθοδο καθαρισμού. + +## Πλήρες Script – Έτοιμο για Αντιγραφή & Επικόλληση + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Αναμενόμενη έξοδος κονσόλας** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Μπορείτε να επαληθεύσετε το JSON ανοίγοντας οποιοδήποτε αρχείο στο `json_output` με έναν επεξεργαστή κειμένου ή φορτώνοντάς το σε Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Θα πρέπει να δείτε το ακατέργαστο κείμενο που εξήχθη από OCR να τυπώνεται στην κονσόλα. + +## Συμπερασματικά + +Μόλις καλύψαμε **πώς να κάνετε batch OCR** σε ολόκληρο φάκελο σαρωμένων εικόνων και **να εξάγετε κείμενο από σαρώσεις** σε καθαρά, μηχανικά αναγνώσιμα αρχεία JSON. Η προσέγγιση είναι σκόπιμα απλή: ρυθμίστε το engine μία φορά, δείξτε το σε έναν φάκελο, και αφήστε τη βιβλιοθήκη να κάνει το βαρέως έργο. Από εδώ μπορείτε: + +- Συνδέστε το JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/greek/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..291541174 --- /dev/null +++ b/ocr/greek/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-04-26 +description: Πώς να δημιουργήσετε OCR γρήγορα και αξιόπιστα. Μάθετε να εξάγετε κείμενο + από εικόνα, να φορτώνετε εικόνα για OCR και να εκτελείτε OCR σε PNG με προσαρμοσμένο + λεξικό. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: el +og_description: Πώς να δημιουργήσετε OCR σε Python και να εξάγετε κείμενο από εικόνα. + Αυτός ο οδηγός δείχνει πώς να φορτώσετε εικόνα για OCR, να εκτελέσετε OCR σε PNG + και να χρησιμοποιήσετε προσαρμοσμένο λεξικό. +og_title: Πώς να δημιουργήσετε OCR με Python – Γρήγορη εξαγωγή κειμένου +tags: +- OCR +- Python +- Image Processing +title: Πώς να δημιουργήσετε OCR σε Python – Εξαγωγή κειμένου από εικόνα +url: /el/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να δημιουργήσετε OCR σε Python – Οδηγός βήμα‑βήμα + +Έχετε αναρωτηθεί ποτέ **πώς να δημιουργήσετε OCR** που μπορεί να διαβάσει τα σαρωμένα PDF, τα στιγμιότυπα οθόνης ή τις χειρόγραφες σημειώσεις σας; Δεν είστε μόνοι. Σε πολλά πραγματικά έργα χρειάζεται να *εξάγουμε κείμενο από εικόνα* αρχεία, αλλά οι έτοιμες μηχανές συχνά δυσκολεύονται με λέξεις ειδικών τομέων. + +Σε αυτό το tutorial θα δείτε ένα πλήρες, εκτελέσιμο παράδειγμα που φορτώνει μια εικόνα για OCR, εφαρμόζει ένα προσαρμοσμένο λεξικό και τελικά **εκτελεί OCR σε αρχεία PNG**. Στο τέλος θα μπορείτε να εξάγετε κείμενο από οποιαδήποτε εικόνα και να προσαρμόσετε τη μηχανή στη δική σας ορολογία. + +## Τι καλύπτει αυτό το tutorial + +Θα περάσουμε από κάθε βήμα που χρειάζεστε: + +* Εγκατάσταση του μικρού αλλά ισχυρού πακέτου `aocr` (ή οποιασδήποτε συμβατής βιβλιοθήκης). +* Διαμόρφωση ενός **προσαρμοσμένου λεξικού** ώστε όροι όπως `aspocorp` ή `licensekey` να αναγνωρίζονται. +* **Φόρτωση εικόνας για OCR**, είτε είναι PNG, JPEG ή σελίδα σαρωμένου PDF. +* Εκτέλεση της διαδικασίας OCR και εκτύπωση του αποτελέσματος. + +Χωρίς εξωτερικούς συνδέσμους τεκμηρίωσης, μόνο μια αυτόνομη λύση που μπορείτε να αντιγράψετε‑επικολλήσετε και να εκτελέσετε σήμερα. + +### Προαπαιτούμενα + +* Python 3.8 ή νεότερο (ο κώδικας χρησιμοποιεί f‑strings). +* Βασική εξοικείωση με τη γραμμή εντολών – θα πληκτρολογήσετε μερικές εντολές `pip install`. +* Ένα αρχείο εικόνας (`technical_doc.png` στο παράδειγμα) τοποθετημένο κάπου που μπορείτε να αναφερθείτε. + +Αν πληροίτε αυτά τα τρία στοιχεία, είστε έτοιμοι να ξεκινήσετε. + +--- + +## Βήμα 1: Εγκατάσταση της βιβλιοθήκης OCR + +Πρώτα, χρειαζόμαστε μια μηχανή OCR που να υποστηρίζει ένα προγραμματιζόμενο αντικείμενο ρυθμίσεων. Το πακέτο `aocr` είναι ένα ελαφρύ wrapper γύρω από μια εγγενή μηχανή OCR και λειτουργεί καλά για demos. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Συμβουλή:** Αν χρησιμοποιείτε Windows και αντιμετωπίζετε σφάλμα μεταγλώττισης, δοκιμάστε `pip install aocr‑binary` που παρέχει προ‑συγκροτημένα wheels. + +### Γιατί να εγκαταστήσετε αυτή τη βιβλιοθήκη; + +`aocr` μας δίνει άμεση πρόσβαση σε ένα αντικείμενο `config` όπου μπορούμε να ενσωματώσουμε ένα **προσαρμοσμένο λεξικό**. Αυτό είναι το μυστικό συστατικό για τη βελτίωση της ακρίβειας σε εξειδικευμένα λεξιλόγια. + +--- + +## Βήμα 2: Δημιουργία του αντικειμένου μηχανής OCR & Προσθήκη Προσαρμοσμένου Λεξικού + +Τώρα ξεκινάμε τη μηχανή και της λέμε ποιες λέξεις πρέπει να θεωρεί ως γνωστές. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Γιατί το προσαρμοσμένο λεξικό είναι σημαντικό + +Τα τυπικά μοντέλα OCR εκπαιδεύονται σε γενικά corpora. Όταν το μοντέλο δει το “aspocorp”, μπορεί να το χωρίσει σε “aspo corp” ή να αφαιρέσει γράμματα εντελώς. Με την παροχή μιας προσαρμοσμένης λίστας, κατευθύνουμε τον αναγνώστη προς την ακριβή ορθογραφία που χρειαζόμαστε, μειώνοντας δραστικά το έργο μετα‑επεξεργασίας. + +--- + +## Βήμα 3: Φόρτωση της εικόνας που θέλετε να επεξεργαστείτε + +Εδώ είναι που **φορτώνουμε εικόνα για OCR**. Η μέθοδος `Image.load` δέχεται μια συμβολοσειρά διαδρομής και καθορίζει αυτόματα τον τύπο αρχείου. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Ακραία περίπτωση:** Αν η πηγή σας είναι PDF πολλαπλών σελίδων, μετατρέψτε κάθε σελίδα σε PNG πρώτα (π.χ., με `pdf2image`) και τροφοδοτήστε τις μία‑μια στη μηχανή. + +### Συμβουλές για καλύτερη ποιότητα εικόνας + +* Διατηρήστε την ανάλυση τουλάχιστον 300 dpi. +* Βεβαιωθείτε ότι η εικόνα είναι όρθια· περιστρέψτε τη με `Pillow` αν χρειάζεται. +* Μετατρέψτε τα έγχρωμα σκανάρισμα σε γκρι κλίμακα για μείωση του θορύβου. + +--- + +## Βήμα 4: Εκτέλεση της διαδικασίας OCR στο αρχείο PNG + +Με τη μηχανή ρυθμισμένη και την εικόνα φορτωμένη, τελικά **εκτελούμε OCR σε PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +Η κλήση `process()` επιστρέφει ένα αντικείμενο που περιέχει το αναγνωρισμένο κείμενο, τις βαθμολογίες εμπιστοσύνης και τα πλαίσια (bounding boxes) για κάθε λέξη. + +--- + +## Βήμα 5: Εξαγωγή του αναγνωρισμένου κειμένου + +Ο πιο απλός τρόπος για να δείτε τι βρήκε η μηχανή είναι να εκτυπώσετε το χαρακτηριστικό `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Αναμενόμενο αποτέλεσμα + +Αν το `technical_doc.png` περιέχει την πρόταση *“The Aspocorp licensekey expires on 2025‑12‑31.”*, η κονσόλα πρέπει να εμφανίσει: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Παρατηρήστε πώς το προσαρμοσμένο λεξικό κράτησε το όνομα της μάρκας αμετάβλητο—κάτι που ένα τυπικό OCR θα μπορούσε να αλλοιώσει. + +--- + +## Πλήρες λειτουργικό παράδειγμα (Έτοιμο για αντιγραφή‑επικόλληση) + +Παρακάτω είναι ολόκληρο το script, έτοιμο να αποθηκευτεί ως `run_ocr.py`. Απλώς αντικαταστήστε τη διαδρομή placeholder με τη θέση της εικόνας σας. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Εκτελέστε το από το τερματικό: + +```bash +python run_ocr.py +``` + +Θα πρέπει να δείτε το εξαγόμενο κείμενο να εκτυπώνεται στην κονσόλα, ακριβώς όπως φαίνεται στο προηγούμενο παράδειγμα. + +--- + +## Συχνές Ερωτήσεις (FAQ) + +| Question | Answer | +|----------|--------| +| **Μπορώ να εξάγω κείμενο από σκαναρισμένο PDF;** | Ναι. Μετατρέψτε κάθε σελίδα σε PNG (ή TIFF) πρώτα, έπειτα τροφοδοτήστε τις εικόνες στο ίδιο script. | +| **Τι γίνεται αν η εικόνα μου είναι JPEG αντί για PNG;** | Η μέθοδος `Image.load` υποστηρίζει JPEG, BMP, TIFF και PNG από την αρχή. Απλώς αλλάξτε την επέκταση του αρχείου. | +| **Πώς μπορώ να βελτιώσω την ακρίβεια σε σκαναρίσματα χαμηλής αντίθεσης;** | Προεπεξεργασία με `Pillow` – αυξήστε την αντίθεση, εφαρμόστε δυαδικοποίηση, ή χρησιμοποιήστε `opencv` για διόρθωση κλίσης. | +| **Υπάρχει τρόπος να λάβω βαθμολογίες εμπιστοσύνης για κάθε λέξη;** | `ocr_result` περιλαμβάνει `words` – κάθε λέξη έχει χαρακτηριστικό `confidence` που μπορείτε να επαναλάβετε. | +| **Μπορώ να τρέξω αυτό σε headless server;** | Απολύτως. Το `aocr` δεν έχει εξαρτήσεις GUI, καθιστώντας το ιδανικό για CI pipelines. | + +--- + +## Επόμενα βήματα & Σχετικά θέματα + +Τώρα που ξέρετε **πώς να δημιουργήσετε OCR** και **να εξάγετε κείμενο από εικόνα** αρχεία, σκεφτείτε να εξερευνήσετε: + +* **Τεχνικές προεπεξεργασίας** – το `load image for OCR` είναι μόνο το πρώτο βήμα· χρησιμοποιήστε `opencv` για αποθορυβοποίηση ή ενίσχυση. +* **Επεξεργασία κατά παρτίδες** – επαναλάβετε πάνω σε έναν φάκελο PNG για δημιουργία αναζητήσιμου αρχείου. +* **Υποστήριξη πολλαπλών γλωσσών** – προσθέστε πακέτα γλώσσας στη μηχανή αν χρειάζεται να διαβάσετε έγγραφα στα Γαλλικά ή Γερμανικά. +* **Ενσωμάτωση με Elasticsearch** – ευρετηρίαση του εξαγόμενου κειμένου για πλήρη αναζήτηση σε σαρωμένα περιουσιακά στοιχεία. + +Κάθε μία από αυτές τις επεκτάσεις βασίζεται στο βασικό μοτίβο που καλύψαμε, οπότε η μετάβαση θα είναι απρόσκοπτη. + +--- + +## Συμπέρασμα + +Σε λίγα λεπτά απαντήσαμε **πώς να δημιουργήσετε OCR** που αξιόπιστα **εξάγει κείμενο από εικόνα** αρχεία, ειδικά PNG, και σας δείξαμε πώς να **φορτώνετε εικόνα για OCR**, να εφαρμόζετε ένα **προσαρμοσμένο λεξικό**, και να **εκτελείτε OCR σε PNG** χωρίς εξωτερικές υπηρεσίες. + +Δοκιμάστε το script, προσαρμόστε το λεξικό ώστε να ταιριάζει με τη δική σας ορολογία, και θα έχετε μια σταθερή βάση για οποιοδήποτε έργο ψηφιοποίησης εγγράφων. + +Αν αντιμετωπίσατε κάποιο πρόβλημα, αφήστε ένα σχόλιο παρακάτω—χαρούμενοι να βοηθήσουμε. Και μην ξεχάσετε να μοιραστείτε τις ιστορίες επιτυχίας σας· η κοινότητα μαθαίνει καλύτερα από πραγματικά παραδείγματα. + +**Έτοιμοι να αυτοματοποιήσετε τη δουλειά σας;** Πάρτε τον κώδικα, προσαρμόστε τον, και αρχίστε να μετατρέπετε τα pixel σε αναζητήσιμο κείμενο σήμερα! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/greek/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..7fb42e149 --- /dev/null +++ b/ocr/greek/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: πώς να εξάγετε OCR από εικόνες χρησιμοποιώντας Python – ένα παράδειγμα + OCR σε Python που δείχνει πώς να φορτώσετε εικόνα για OCR και να εξάγετε κείμενο + από απόδειξη. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: el +og_description: πώς να εξάγετε OCR από εικόνες χρησιμοποιώντας Python. Μάθετε ένα + παράδειγμα OCR με Python, φορτώστε εικόνα για OCR και εξάγετε κείμενο από απόδειξη + σε λίγα λεπτά. +og_title: πώς να εξάγετε OCR σε Python – Πλήρης Οδηγός +tags: +- OCR +- Python +- Image Processing +title: πώς να εξάγετε OCR σε Python – Βήμα‑βήμα Εγχειρίδιο +url: /el/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# πώς να εξάγετε OCR σε Python – Πλήρης Οδηγός + +Έχετε αναρωτηθεί ποτέ **πώς να εξάγετε OCR** από μια θολή απόδειξη ή ένα σαρωμένο τιμολόγιο; Δεν είστε μόνοι—οι προγραμματιστές συχνά αντιμετωπίζουν δυσκολίες όταν χρειάζονται καθαρό, μηχανικά αναγνώσιμο κείμενο από εικόνες. Τα καλά νέα; Με λίγες γραμμές Python μπορείτε να μετατρέψετε μια φωτογραφία απόδειξης σε κείμενο υψηλής εμπιστοσύνης, αναζητήσιμο. + +Σε αυτό το tutorial θα περάσουμε από ένα **python ocr example** που δείχνει **πώς να φορτώσετε εικόνα για OCR**, να εκτελέσετε τη μηχανή και να κρατήσετε μόνο τους χαρακτήρες που πληρούν ένα όριο εμπιστοσύνης 85 %. Στο τέλος θα μπορείτε να **εξάγετε κείμενο από απόδειξη** εικόνες χωρίς να ψάχνετε στην τεκμηρίωση ή να μαντεύετε παραμέτρους API. + +## Τι Θα Χρειαστεί + +- Python 3.9 ή νεότερο (η σύνταξη που χρησιμοποιούμε λειτουργεί σε 3.8+) +- Το πακέτο `aocr` (ή οποιαδήποτε βιβλιοθήκη OCR που παρέχει μια κλάση `OcrEngine`). Εγκαταστήστε το με: + +```bash +pip install aocr +``` + +- Μια δείγμα εικόνας απόδειξης (`receipt.png`) τοποθετημένη σε φάκελο που μπορείτε να αναφέρετε. +- Ένας επεξεργαστής κειμένου ή IDE—VS Code, PyCharm, ή ακόμη και ένα απλό notebook είναι επαρκείς. + +Αυτό είναι όλο. Χωρίς βαριές πλατφόρμες, χωρίς εξωτερικές υπηρεσίες, μόνο καθαρό Python. + +![Αποτέλεσμα OCR υψηλής εμπιστοσύνης – πώς να εξάγετε OCR από απόδειξη](/images/ocr-high-confidence.png) + +*Κείμενο alt εικόνας: how to extract ocr from a receipt using Python OCR* + +## Βήμα 1 – Δημιουργία του Αντικειμένου OCR Engine (πώς να εξάγετε OCR) + +Το πρώτο που κάνουμε είναι να ξεκινήσουμε μια μηχανή OCR. Σκεφτείτε την ως τον εγκέφαλο που θα διαβάσει τα pixel για εμάς. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Γιατί;** Η δημιουργία ενός `OcrEngine` σας δίνει ένα νέο αντικείμενο ρυθμίσεων. Μπορείτε αργότερα να προσαρμόσετε μοντέλα γλώσσας, ρυθμίσεις DPI ή βήματα προεπεξεργασίας—όλα χωρίς να αγγίξετε τον κύριο βρόχο επεξεργασίας. + +## Βήμα 2 – Φόρτωση της Εικόνας για OCR + +Στη συνέχεια δείχνουμε τη μηχανή στην εικόνα που θέλουμε να αναλύσουμε. Εδώ έρχεται σε χρήση η λέξη-κλειδί **load image for ocr**. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Συμβουλή:** Αν η εικόνα σας βρίσκεται σε διαφορετικό φάκελο, χρησιμοποιήστε `os.path.join` για να δημιουργήσετε μια ανεξάρτητη από την πλατφόρμα διαδρομή. + +**Γιατί να φορτώσετε την εικόνα με αυτόν τον τρόπο;** Η βοηθητική συνάρτηση `Image.load` διαβάζει το αρχείο σε μορφή που καταλαβαίνει η μηχανή, διαχειριζόμενη αυτόματα κοινές μορφές (PNG, JPEG, TIFF). Η παράλειψη αυτού του βήματος ή η παροχή ακατέργαστων bytes θα προκαλούσε `ValueError`. + +## Βήμα 3 – Εκτέλεση της Διαδικασίας OCR + +Τώρα εκτελούμε πραγματικά το OCR. Η μέθοδος `process` επιστρέφει ένα πλούσιο αντικείμενο αποτελέσματος που περιέχει αναγνωρισμένα σύμβολα, βαθμούς εμπιστοσύνης και περιοριστικά πλαίσια. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Τι περιέχει το `ocr_result`;** Στις περισσότερες βιβλιοθήκες περιλαμβάνει: + +- `text`: το ακατέργαστο ενωμένο κείμενο. +- `symbol_confidences`: μια λίστα από πλειάδες `(char, confidence)`. +- `boxes`: συντεταγμένες για κάθε χαρακτήρα (χρήσιμες για οπτικό debugging). + +Η πρόσβαση στην εμπιστοσύνη ανά χαρακτήρα είναι απαραίτητη για το επόμενο βήμα. + +## Βήμα 4 – Διατήρηση Μόνο Συμβόλων Υψηλής Εμπιστοσύνης (≥ 85 %) + +Μια απόδειξη συχνά έχει λεκέδες, αχνή εκτύπωση ή θόρυβο φόντου. Φιλτράροντας τα σύμβολα χαμηλής εμπιστοσύνης βελτιώνουμε δραματικά την επεξεργασία. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Γιατί 85 %;** Εμπειρικά, ένα όριο γύρω στο 0.85 εξισορροπεί την ανάκληση και την ακρίβεια για τις περισσότερες τυπωμένες αποδείξεις. Αν παρατηρήσετε ελλιπείς αριθμούς, μειώστε το όριο· αν εμφανιστεί ακαταλαβίστικο κείμενο, αυξήστε το. + +## Βήμα 5 – Εξαγωγή του Υψηλής Εμπιστοσύνης Κειμένου + +Τέλος, εκτυπώνουμε (ή αποθηκεύουμε) τη καθαρισμένη συμβολοσειρά. Αυτό είναι το κεντρικό μέρος της ροής εργασίας **extract text from receipt**. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Η τυπική έξοδος μοιάζει με: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Τώρα μπορείτε να περάσετε αυτή τη συμβολοσειρά σε έναν CSV writer, μια βάση δεδομένων ή οποιοδήποτε επόμενο pipeline ανάλυσης. + +## Πλήρες, Έτοιμο‑για‑Εκτέλεση Script + +Παρακάτω είναι το πλήρες απόσπασμα κώδικα που μπορείτε να αντιγράψετε‑επικολλήσετε στο `ocr_receipt.py` και να το εκτελέσετε αμέσως. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Αποθηκεύστε το αρχείο, βεβαιωθείτε ότι το `receipt.png` υπάρχει, και εκτελέστε: + +```bash +python ocr_receipt.py +``` + +Θα πρέπει να δείτε το καθαρισμένο κείμενο της απόδειξης να εκτυπώνεται στην κονσόλα. + +## Περιπτώσεις Άκρων & Σενάρια Τι‑Αν + +| Κατάσταση | Προτεινόμενη Διόρθωση | +|-----------|------------------------| +| **Πολύ χαμηλή εμπιστοσύνη σε όλο το σύνολο** | Προεπεξεργασία της εικόνας: αυξήστε την αντίθεση, μετατρέψτε σε γκρι κλίμακα, ή εφαρμόστε φίλτρο αποθορυβοποίησης (`cv2.GaussianBlur`). | +| **Μη λατινικοί χαρακτήρες** | Περάστε ένα μοντέλο γλώσσας στο `OcrEngine` (π.χ., `ocr_engine.language = "spa"` για Ισπανικά). | +| **Πολλαπλές αποδείξεις σε μία εικόνα** | Εκτελέστε OCR σε ολόκληρη την εικόνα, έπειτα χωρίστε το αποτέλεσμα χρησιμοποιώντας κανονικές εκφράσεις που εντοπίζουν `\n\n+` (διπλές αλλαγές γραμμής). | +| **Απαιτείται επίσης το ακατέργαστο κείμενο OCR** | Διατηρήστε το `ocr_result.text` μαζί με την φιλτραρισμένη έκδοση για debugging. | + +Αυτές οι παραλλαγές εξασφαλίζουν ότι η γνώση σας **how to use OCR** κλιμακώνεται πέρα από την πιο απλή περίπτωση. + +## Συνηθισμένα Πάθη (Και Πώς να τα Αποφύγετε) + +- **Ξεχάνοντας να εγκαταστήσετε τη βιβλιοθήκη** – το `pip install aocr` πρέπει να ολοκληρωθεί επιτυχώς πριν κάνετε import. +- **Χρησιμοποιώντας το λάθος διαχωριστικό διαδρομής** στα Windows (`\` vs `/`). Χρησιμοποιήστε `os.path.join`. +- **Σκληρή κωδικοποίηση του ορίου εμπιστοσύνης** χωρίς δοκιμή – πάντα εκτελέστε έναν γρήγορο οπτικό έλεγχο σε μερικές αποδείξεις πρώτα. +- **Αγνοώντας την κανονικοποίηση Unicode** – κάποιες αποδείξεις περιέχουν ειδικούς χαρακτήρες παύλας· εκτελέστε `unicodedata.normalize('NFKC', text)` αν σκοπεύετε να αποθηκεύσετε το αποτέλεσμα. + +## Επόμενα Βήματα – Πέρα από τα Βασικά + +Τώρα που γνωρίζετε **πώς να εξάγετε OCR** δεδομένα από μία μόνο απόδειξη, ίσως θέλετε να: + +1. **Επεξεργασία παρτίδας φακέλου αποδείξεων** – επαναλάβετε για όλα τα αρχεία PNG/JPG και γράψτε κάθε αποτέλεσμα σε CSV. +2. **Ενσωμάτωση με βάση δεδομένων** – αποθηκεύστε το `high_confidence_text` σε SQLite για γρήγορες αναζητήσεις. +3. **Εφαρμογή ανάλυσης φυσικής γλώσσας** – χρησιμοποιήστε regex ή `dateutil` για εξαγωγή ημερομηνιών, συνολικών και ποσών φόρου. +4. **Πειραματισμός με εναλλακτικές βιβλιοθήκες** – `pytesseract`, `easyocr`, ή υπηρεσίες cloud (Google Vision, Azure OCR) αν χρειάζεστε πολυγλωσσική υποστήριξη ή μεγαλύτερη ακρίβεια. + +Κάθε ένα από αυτά τα θέματα ενσωματώνει φυσικά τις δευτερεύουσες λέξεις‑κλειδιά μας: *python ocr example*, *extract text from receipt*, *load image for ocr*, και *how to use OCR*. + +## Συμπέρασμα + +Μόλις περάσαμε από ένα πλήρες **python ocr example** που δείχνει **πώς να εξάγετε OCR** κείμενο από εικόνα απόδειξης, φιλτράροντας σύμβολα χαμηλής εμπιστοσύνης, και εξάγοντας καθαρά αποτελέσματα. Τα βήματα είναι απλά, ο κώδικας αυτόνομος, και η προσέγγιση αρκετά ευέλικτη για μεγαλύτερα έργα. + +Δοκιμάστε το με τις δικές σας αποδείξεις, προσαρμόστε το όριο εμπιστοσύνης, και στη συνέχεια κλιμακώστε σε επεξεργασία παρτίδας. Αν αντιμετωπίσετε ιδιομορφίες—όπως ένα αχνό λογότυπο ή μια ασυνήθιστη γραμματοσειρά—θυμηθείτε τις συμβουλές για περιπτώσεις άκρων παραπάνω. Καλή προγραμματιστική δουλειά, και οι pipelines 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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/greek/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..f469ac2a8 --- /dev/null +++ b/ocr/greek/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: 'πώς να κάνετε OCR με Python: Μάθετε να εξάγετε κείμενο από εικόνα και + να διαβάζετε αρχείο TIFF με Python χρησιμοποιώντας ένα βασικό παράδειγμα OCR. Συμπεριλαμβάνεται + γρήγορος, εκτελέσιμος κώδικας.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: el +og_description: 'πώς να κάνετε OCR με Python: Ένας οδηγός βήμα‑βήμα που δείχνει πώς + να εξάγετε κείμενο από εικόνα, να διαβάσετε αρχείο TIFF με Python και να μετατρέψετε + το κείμενο σαρωμένης εικόνας με ένα απλό, εκτελέσιμο script.' +og_title: πώς να κάνετε OCR με Python – Βασικό παράδειγμα OCR για εξαγωγή κειμένου +tags: +- OCR +- Python +- Image Processing +title: πώς να κάνετε OCR με Python – Βασικό παράδειγμα OCR για εξαγωγή κειμένου +url: /el/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# πώς να κάνετε OCR με Python – Βασικό Παράδειγμα OCR για Εξαγωγή Κειμένου + +Έχετε αναρωτηθεί ποτέ **πώς να κάνετε OCR με Python** όταν έχετε ένα σαρωμένο αρχείο TIFF στο γραφείο σας; Δεν είστε ο μόνος που κοιτάζει μια σειρά από αρχεία εικόνας και αναρωτιέται: «Πώς θα βγάλω τις λέξεις από αυτό;». Τα καλά νέα είναι ότι η μετατροπή μιας εικόνας σε απλό κείμενο είναι παιχνιδάκι με τη σωστή βιβλιοθήκη και μερικά σαφή βήματα. + +Σε αυτό το tutorial θα περάσουμε από ένα **βασικό παράδειγμα OCR** που διαβάζει ένα αρχείο TIFF, εξάγει το κείμενο και το εκτυπώνει στην κονσόλα. Στο τέλος θα ξέρετε ακριβώς πώς να **εξάγετε κείμενο από εικόνα** αρχείων, πώς να χειριστείτε τις ιδιαιτερότητες των μορφών TIFF και τι να ρυθμίσετε αν χρειαστεί να **μετατρέψετε κείμενο από σαρωμένη εικόνα** σε κάτι πιο χρήσιμο. Χωρίς κρυφή μαγεία—απλός Python κώδικας που μπορείτε να αντιγράψετε‑επικολλήσετε και να τρέξετε σήμερα. + +## Τι Θα Χρειαστείτε + +Πριν βουτήξουμε, βεβαιωθείτε ότι έχετε: + +- Python 3.9+ εγκατεστημένο (η τελευταία σταθερή έκδοση είναι η καλύτερη). +- Μια βιβλιοθήκη OCR που μπορεί να εγκατασταθεί με pip. Για αυτόν τον οδηγό θα χρησιμοποιήσουμε ένα φανταστικό πακέτο `aocr` που μιμείται δημοφιλή εργαλεία όπως το Tesseract· μπορείτε να το αντικαταστήσετε αργότερα με `pytesseract` ή `easyocr`. +- Μια εικόνα TIFF που θέλετε να επεξεργαστείτε – ονομάστε την `input.tiff` και τοποθετήστε την σε έναν φάκελο που θα αναφέρετε στον κώδικα. +- Βασική εξοικείωση με τη γραμμή εντολών (μόνο για την εγκατάσταση του πακέτου). + +Αυτό είναι όλο. Χωρίς βαριές εξαρτήσεις, χωρίς Docker containers, μόνο λίγες γραμμές κώδικα. + +## Βήμα 1 – Εγκατάσταση και Εισαγωγή Εξαρτήσεων (πώς να κάνετε OCR με Python) + +Πρώτα, αποκτήστε το πακέτο OCR. Ανοίξτε ένα τερματικό και τρέξτε: + +```bash +pip install aocr +``` + +Αν προτιμάτε μια πραγματική βιβλιοθήκη, αντικαταστήστε το `aocr` με `pytesseract` και εγκαταστήστε ξεχωριστά τη μηχανή Tesseract. + +Τώρα εισάγουμε ό,τι χρειάζεται. Η κλάση `Path` από το `pathlib` μας δίνει έναν καθαρό τρόπο να δουλεύουμε με διαδρομές αρχείων ανεξαρτήτως λειτουργικού συστήματος. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Γιατί να χρησιμοποιήσουμε το `Path`;* Επειδή αφαιρεί τις διαφορές μεταξύ των διαχωριστών (`/` vs `\`) και σας επιτρέπει να ενώσετε καταλόγους χωρίς να ανησυχείτε για το υποκείμενο OS. Αυτή η μικρή λεπτομέρεια συχνά εξοικονομεί πολύ κόπο όταν μετακινείτε το script σε έναν CI server. + +## Βήμα 2 – Δημιουργία του Αντικειμένου OCR Engine (βασικό παράδειγμα OCR) + +Στη συνέχεια, ξεκινήστε τη μηχανή OCR. Σκεφτείτε το `OcrEngine` ως τον εγκέφαλο που θα διαβάσει την εικόνα και θα εκτυπώσει χαρακτήρες. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +Οι περισσότερες βιβλιοθήκες OCR σας επιτρέπουν να ρυθμίσετε γλώσσα, DPI ή όρια εμπιστοσύνης εδώ. Για αυτό το **βασικό παράδειγμα OCR** θα μείνουμε στα προεπιλεγμένα, αλλά μπορείτε να εξερευνήσετε το `ocr_engine.config` αργότερα αν χρειαστεί να διαχειριστείτε πολυγλωσσικά έγγραφα. + +## Βήμα 3 – Φόρτωση της Εικόνας TIFF (διαβάστε αρχείο tiff με Python) + +Εδώ μπαίνει το τμήμα **διαβάστε αρχείο tiff με Python**. Τα TIFF μπορούν να είναι πολλαπλών σελίδων, αλλά το `Image.load` θα πάρει την πρώτη σελίδα εξ ορισμού—τέλειο για μια σκαναρισμένη μονή σελίδα. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Αντικαταστήστε το `"YOUR_DIRECTORY"` με τον πραγματικό φάκελο που περιέχει το `input.tiff`. Αν δεν είστε σίγουροι πού τρέχει το script, το `Path.cwd()` εκτυπώνει τον τρέχοντα κατάλογο εργασίας—χρήσιμο για εντοπισμό προβλημάτων διαδρομών. + +## Βήμα 4 – Εκτέλεση της Διαδικασίας OCR (εξαγωγή κειμένου από εικόνα) + +Τώρα συμβαίνει η μαγεία. Η κλήση `process()` στέλνει την εικόνα μέσω του pipeline OCR και επιστρέφει ένα αντικείμενο αποτελέσματος. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Στο παρασκήνιο η μηχανή μπορεί να μετατρέπει την εικόνα σε αποχρώσεις του γκρι, να εφαρμόζει κατώφλι και να τη στέλνει σε ένα νευρωνικό δίκτυο. Δεν χρειάζεται να διαχειριστείτε αυτά τα βήματα· η βιβλιοθήκη τα αφαιρεί. + +## Βήμα 5 – Εκτύπωση του Αναγνωρισμένου Κειμένου (μετατροπή κειμένου από σαρωμένη εικόνα) + +Τέλος, εμφανίστε το κείμενο. Σε πραγματικά έργα πιθανότατα θα το γράψετε σε αρχείο ή βάση δεδομένων, αλλά η εκτύπωση κρατά το παράδειγμα καθαρό. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Όταν τρέξετε το script, θα πρέπει να δείτε κάτι σαν: + +``` +Hello, world! +This is a sample scanned document. +``` + +Αν η έξοδος φαίνεται ακατάστατη, ελέγξτε ξανά ότι η πηγή εικόνας είναι καθαρή και ότι η γλώσσα OCR ταιριάζει με το κείμενο. + +## Πλήρες Λειτουργικό Script + +Συνδυάζοντας όλα τα παραπάνω, εδώ είναι το πλήρες, έτοιμο‑για‑εκτέλεση πρόγραμμα: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Αναμενόμενη Έξοδος + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Αν χρειαστεί να **μετατρέψετε κείμενο από σαρωμένη εικόνα** σε PDF με δυνατότητα αναζήτησης, μπορείτε να περάσετε το `ocr_result.text` σε έναν δημιουργό PDF όπως το `reportlab`—αλλά αυτό είναι ένα ολοκληρωμένο tutorial από μόνο του. + +## Συνηθισμένα Πιθανά Προβλήματα & Pro Tips + +- **Σαρώσεις χαμηλής ανάλυσης**: Το OCR δυσκολεύεται κάτω από 150 DPI. Αν το TIFF είναι θολό, αυξήστε το μέγεθος πρώτα με το Pillow (`Image.open(...).resize(...)`). +- **Πολλαπλές σελίδες**: Για TIFF πολλαπλών σελίδων, επαναλάβετε πάνω από το `Image.load_multi_page()` (αν η βιβλιοθήκη το υποστηρίζει) και συνδυάστε τα αποτελέσματα. +- **Υποστήριξη γλώσσας**: Πολλές μηχανές προεπιλογή είναι τα Αγγλικά. Ορίστε `ocr_engine.language = "spa"` για Ισπανικά, για παράδειγμα. +- **Διαχείριση κενών**: Το OCR συχνά προσθέτει περιττές αλλαγές γραμμής. Χρησιμοποιήστε `str.splitlines()` ή κανονικές εκφράσεις για να καθαρίσετε την έξοδο. +- **Απόδοση**: Για μαζική επεξεργασία, επαναχρησιμοποιήστε ένα μόνο αντικείμενο `OcrEngine` αντί να δημιουργείτε νέο για κάθε αρχείο. + +## Επέκταση του Παραδείγματος + +Τώρα που έχετε κατακτήσει το **πώς να κάνετε OCR με Python** για μια εικόνα, σκεφτείτε τα επόμενα βήματα: + +1. **Επεξεργασία παρτίδας** – Επανάληψη σε έναν φάκελο TIFF και αποθήκευση κάθε αποτελέσματος σε αρχείο `.txt`. +2. **Ενσωμάτωση με Pandas** – Αποθήκευση του εξαγόμενου κειμένου μαζί με μεταδεδομένα για γρήγορη ανάλυση. +3. **Υβριδική προσέγγιση** – Συνδυάστε OCR με βιβλιοθήκες NLP όπως το `spaCy` για εξαγωγή οντοτήτων (ονόματα, ημερομηνίες, ποσά) από σαρωμένα τιμολόγια. +4. **Εναλλακτικές μορφές αρχείων** – Αντικαταστήστε το `Image.load` με `Image.from_bytes` για επεξεργασία εικόνων που προέρχονται από API ή βάση δεδομένων. + +Όλα αυτά βασίζονται στην κεντρική ιδέα της **εξαγωγής κειμένου από εικόνα** και της **μετατροπής κειμένου από σαρωμένη εικόνα** σε κάτι που οι μηχανές μπορούν να καταλάβουν. + +## Συμπέρασμα + +Διασχίσαμε ένα σαφές, από‑αρχή‑μέχρι‑τέλος **βασικό παράδειγμα OCR** που δείχνει **πώς να κάνετε OCR με Python**, πώς να **διαβάσετε αρχείο tiff με Python**, και πώς να **εξάγετε κείμενο από εικόνα** με μόνο λίγες γραμμές κώδικα. Το script είναι αυτόνομο, περιλαμβάνει διαχείριση σφαλμάτων και εκτυπώνει το αποτέλεσμα άμεσα, καθιστώντας το μια στιβαρή βάση για οποιοδήποτε έργο που χρειάζεται να μετατρέπει σαρωμένα έγγραφα σε επεξεργάσιμο κείμενο. + +Μη διστάσετε να πειραματιστείτε—αλλάξτε το backend OCR, ρυθμίστε την προεπεξεργασία, ή συνδέστε την έξοδο με μια επόμενη ροή εργασίας. Ο ουρανός είναι το όριο όταν μπορείτε αξιόπιστα να **μετατρέψετε κείμενο από σαρωμένη εικόνα** σε δεδομένα με δυνατότητα αναζήτησης. + +Έχετε ερωτήσεις για ειδικές περιπτώσεις, πακέτα γλωσσών ή βελτιστοποίηση απόδοσης; Αφήστε ένα σχόλιο παρακάτω, και καλή προγραμματιστική! + +![πώς να κάνετε OCR με Python παράδειγμα](/images/ocr-python-example.png "Στιγμιότυπο οθόνης του αποτελέσματος του script OCR με Python") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/greek/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..b737bb630 --- /dev/null +++ b/ocr/greek/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-04-26 +description: Πώς να εκτελέσετε OCR σε μια σαρωμένη φόρμα, μάθετε πώς να προεπεξεργαστείτε + την εικόνα για να μειώσετε τον θόρυβο και να εξάγετε κείμενο από την εικόνα γρήγορα. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: el +og_description: Πώς να εκτελέσετε OCR σε σαρωμένα έγγραφα, να προεπεξεργαστείτε εικόνες, + να μειώσετε τον θόρυβο και να εξάγετε κείμενο αποδοτικά. +og_title: Πώς να εκτελέσετε OCR και να προεπεξεργαστείτε εικόνες – Σύντομος οδηγός +tags: +- OCR +- image processing +- Python +title: Πώς να εκτελέσετε OCR και να προεπεξεργαστείτε εικόνες – Εξαγωγή κειμένου από + σαρωμένες φόρμες +url: /el/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Εκτελέσετε OCR – Ένας Πλήρης Οδηγός για την Εξαγωγή Κειμένου από Εικόνες + +Έχετε αναρωτηθεί ποτέ **πώς να εκτελέσετε OCR** σε μια ακατάστατη σαρωμένη φόρμα και να λάβετε καθαρό, αναζητήσιμο κείμενο; Δεν είστε ο μόνος. Σε πολλά πραγματικά έργα η ακατέργαστη εικόνα είναι γεμάτη στίγματα, άνιση φωτισμό και άλλα ιδιόμορφα χαρακτηριστικά που κάνουν το έτοιμο για χρήση OCR να δυσκολεύεται. + +Τα καλά νέα; Με λίγες μόνο γραμμές Python και μια έξυπνη αλυσίδα προεπεξεργασίας, μπορείτε να αυξήσετε δραματικά την ακρίβεια αναγνώρισης, **να μειώσετε τον θόρυβο**, και να εξάγετε τις ακριβείς λέξεις που χρειάζεστε. Σε αυτό το tutorial θα περάσουμε από κάθε βήμα — από τη φόρτωση της εικόνας μέχρι την εκτύπωση της τελικής συμβολοσειράς — ώστε να φύγετε με ένα έτοιμο κομμάτι κώδικα που μπορείτε να προσαρμόσετε σε τιμολόγια, αποδείξεις ή οποιοδήποτε σαρωμένο έγγραφο. + +## Τι Θα Δημιουργήσετε + +- Μια παρουσίαση `OcrEngine` που επικοινωνεί με τη βασική βιβλιοθήκη OCR. +- Μια αλυσίδα προεπεξεργασίας που **δυαδικοποιεί** (binarizes) την εικόνα και εφαρμόζει **median blur** για να εξομαλύνει τα στίγματα. +- Μια απλή κλήση στο `process()` που επιστρέφει ένα αντικείμενο με την ιδιότητα `text`, τη εξαγόμενη συμβολοσειρά. + +Στο τέλος θα έχετε ένα αυτόνομο script που μπορείτε να εκτελέσετε σε οποιοδήποτε αρχείο εικόνας και να δείτε αμέσως το εξαγόμενο κείμενο στην κονσόλα. + +## Προαπαιτούμενα + +- Python 3.9+ (η σύνταξη που χρησιμοποιείται εδώ ταιριάζει με την τελευταία σταθερή έκδοση). +- Το φανταστικό πακέτο `aocr` — σκεφτείτε το ως μια ελαφριά επικάλυψη γύρω από το Tesseract ή οποιοδήποτε σύγχρονο OCR engine. Εγκαταστήστε το με `pip install aocr`. +- Μια σαρωμένη εικόνα (`scanned_form.jpg`) τοποθετημένη σε φάκελο που μπορείτε να αναφέρετε. + +Αν χρησιμοποιείτε μια πραγματική βιβλιοθήκη OCR όπως το `pytesseract`, μπορείτε να αντικαταστήσετε το `OcrEngine` με την κατάλληλη κλάση — όλα τα άλλα παραμένουν τα ίδια. + +![](how-to-run-ocr-example.png "πώς να εκτελέσετε OCR παράδειγμα που δείχνει μια σαρωμένη φόρμα και το εξαγόμενο κείμενο") + +*Κείμενο εναλλακτικής περιγραφής: πώς να εκτελέσετε OCR σε ένα σαρωμένο έγγραφο και να δείτε το εξαγόμενο κείμενο.* + +--- + +## Βήμα 1: Πώς να Εκτελέσετε OCR – Αρχικοποίηση του Μηχανήματος + +Πριν το μηχάνημα μπορέσει να διαβάσει οτιδήποτε, πρέπει να δημιουργήσουμε μια παρουσία. Σκεφτείτε το `OcrEngine` ως τον εγκέφαλο που θα ερμηνεύσει αργότερα τα οπτικά δεδομένα. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Γιατί είναι σημαντικό:** Η δημιουργία του αντικειμένου μηχανήματος ρυθμίζει τα εσωτερικά μοντέλα, φορτώνει πακέτα γλώσσας και προετοιμάζει το περιβάλλον εκτέλεσης. Η παράλειψη αυτού του βήματος συνήθως οδηγεί σε σφάλμα `NoneType` όταν καλέσετε αργότερα το `process()`. + +--- + +## Βήμα 2: Πώς να Προεπεξεργαστείτε την Εικόνα – Φορτώστε τη Σαρωμένη Φόρμα Σας + +Τώρα που ο εγκέφαλος είναι έτοιμος, του δίνουμε μια εικόνα. Η εικόνα μπορεί να είναι σε οποιαδήποτε μορφή υποστηρίζεται από το `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Συμβουλή:** Χρησιμοποιήστε απόλυτες διαδρομές κατά την ανάπτυξη για να αποφύγετε εκπλήξεις «αρχείο δεν βρέθηκε» όταν το script εκτελείται από διαφορετικό φάκελο εργασίας. + +--- + +## Βήμα 3: Πώς να Μειώσετε τον Θόρυβο – Εφαρμόστε Δυαδικοποίηση & Median Blur + +Οι ακατέργαστες σαρώσεις συχνά περιέχουν τυχαία σημεία, άνιχο φόντο ή αχνές σκιές. Δύο κλασικές τεχνικές — **δυαδικοποίηση** και **median blur** — καθαρίζουν τα πάντα χωρίς να θυσιάζουν τις άκρες που ορίζουν τους χαρακτήρες. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Βαθύτερη Εξέταση + +- **Δυαδικοποίηση**: Η τιμή `threshold=180` λέει στον αλγόριθμο: «Οτιδήποτε φωτεινότερο από 180 γίνεται λευκό· όλα τα άλλα γίνονται μαύρα». Ρυθμίστε αυτόν τον αριθμό αν η σάρωση σας είναι υπερβολικά σκοτεινή ή φωτεινή. +- **Median Blur**: Ακτίνα `2` σημαίνει ότι το φίλτρο εξετάζει ένα παράθυρο 5×5 pixel και αντικαθιστά το κεντρικό pixel με τη μεσαία τιμή. Αυτό εξομαλύνει τα απομονωμένα στίγματα διατηρώντας τα στίγματα των γραμμάτων ανέπαφα. + +> **Ακρόατο σενάριο:** Αν το έγγραφό σας έχει χρωματιστές επισημάνσεις, ένα απλό δυαδικό κατώφλι μπορεί να τις διαγράψει. Σε αυτήν την περίπτωση, σκεφτείτε να χρησιμοποιήσετε το `aocr.ImageFilters.adaptive_threshold()` — αυτό προσαρμόζει το όριο τοπικά σε όλη την εικόνα. + +--- + +## Βήμα 4: Πώς να Εξάγετε Κείμενο – Εκτελέστε τη Διαδικασία OCR + +Με μια καθαρή εικόνα στα χέρια, επιτρέπουμε τελικά στο μηχάνημα να κάνει τη μαγεία του. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Τι συμβαίνει στο παρασκήνιο;** Το μηχάνημα εκτελεί ένα νευρωνικό δίκτυο (ή κληρονομικό matcher προτύπων) πάνω στον πίνακα pixel, μετατρέπει κάθε αναγνωρισμένο γλύφο σε χαρακτήρες Unicode και τα συναρμολογεί σε γραμμές και παραγράφους. + +--- + +## Βήμα 5: Πώς να Εξάγετε Κείμενο – Εκτυπώστε το Αποτέλεσμα + +Το αντικείμενο `ocr_result` εκθέτει μια βολική ιδιότητα `text`. Ας δούμε τι έχουμε. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Αναμενόμενη Έξοδος + +Αν η σαρωμένη φόρμα περιέχει: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Θα πρέπει να δείτε κάτι σαν: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Παρατηρήστε πώς το βήμα προεπεξεργασίας εξάλειψε τα τυχαία στίγματα που προηγουμένως μετέτρεψαν το “Amount” σε “Am0unt”. Αυτή είναι η δύναμη του **πώς να μειώσετε τον θόρυβο** πριν το OCR. + +--- + +## Συνηθισμένα Προβλήματα & Πώς να Τα Διορθώσετε + +| Συμπτωμα | Πιθανή Αιτία | Γρήγορη Διόρθωση | +|----------|--------------|-------------------| +| Χαλασμένοι χαρακτήρες (π.χ., “@#%”) | Η εικόνα είναι πολύ σκοτεινή ή πολύ φωτεινή | Ρυθμίστε το `threshold` στο `binarize()`· δοκιμάστε `adaptive_threshold`. | +| Λείπουν λέξεις | Ο θόρυβος παραμένει | Αυξήστε το `radius` για `median_blur` ή προσθέστε φίλτρο `gaussian_blur`. | +| Λάθος γλώσσα (π.χ., αγγλικά γράμματα γίνονται κινέζικα) | Έχει φορτωθεί λανθασμένο πακέτο γλώσσας | Περνάτε `language="eng"` κατά τη δημιουργία του `OcrEngine()` αν η βιβλιοθήκη το υποστηρίζει. | +| Αργή επεξεργασία σε μεγάλα αρχεία | Υψηλή ανάλυση | Μειώστε πρώτα το μέγεθος της εικόνας: `aocr.ImageFilters.resize(width=1200)` πριν τη δυαδικοποίηση. | + +--- + +## Προχωρώντας – Επόμενα Βήματα και Σχετικά Θέματα + +- **Batch processing**: Τυλίξτε τη λογική παραπάνω σε ένα βρόχο για να επεξεργαστείτε αυτόματα δεκάδες αρχεία. +- **Structured output**: Χρησιμοποιήστε κανονικές εκφράσεις στο `ocr_result.text` για να εξάγετε πεδία όπως ημερομηνίες ή ποσά. +- **Alternative libraries**: Αντικαταστήστε το `aocr` με το `pytesseract` — ο κώδικας αλλάζει μόνο στο βήμα αρχικοποίησης του μηχανήματος. +- **How to preprocess image for PDFs**: Μετατρέψτε κάθε σελίδα PDF σε εικόνα, έπειτα εφαρμόστε την ίδια αλυσίδα. + +Αυτές οι επεκτάσεις σας επιτρέπουν να κλιμακώσετε τη λύση από μια μόνο φόρμα σε μια εταιρική γραμμή εισαγωγής εγγράφων. + +--- + +## Συμπέρασμα + +Καλύψαμε **πώς να εκτελέσετε OCR** από την αρχή μέχρι το τέλος, δείξαμε **πώς να προεπεξεργαστείτε την εικόνα** για **να μειώσετε τον θόρυβο**, και επιδείξαμε **πώς να εξάγετε κείμενο από εικόνα** με ένα καθαρό, αναπαραγώγιμο script. Το κύριο συμπέρασμα; Μερικά απλά φίλτρα — δυαδικοποίηση και median blur — μπορούν να μετατρέψουν μια θορυβώδη σάρωση σε αξιόπιστη πηγή δεδομένων, εξοικονομώντας σας ώρες χειροκίνητης καθαρισμού. + +Δοκιμάστε το script με τα δικά σας έγγραφα, ρυθμίστε τα όρια και παρακολουθήστε την ακρίβεια να αυξάνεται. Όταν είστε έτοιμοι, εξερευνήστε την επεξεργασία παρτίδας ή ενσωματώστε το αποτέλεσμα σε μια βάση δεδομένων για αναζητήσιμα αρχεία. Καλή προγραμματιστική, και εύχομαι το 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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/greek/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..13aa49f41 --- /dev/null +++ b/ocr/greek/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-04-26 +description: Μάθετε πώς να ορίσετε την άδεια στο Aspose OCR και πώς να την επαληθεύσετε + με ένα σύντομο script Python. Ακολουθήστε οδηγίες βήμα‑βήμα για άνετη ενεργοποίηση + χωρίς προβλήματα. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: el +og_description: Πώς να ορίσετε την άδεια στο Aspose OCR και πώς να επαληθεύσετε την + άδεια χρησιμοποιώντας Python. Λάβετε ένα πλήρες, εκτελέσιμο παράδειγμα σε λίγα λεπτά. +og_title: Πώς να ορίσετε την άδεια στο Aspose OCR – Σύντομος οδηγός Python +tags: +- Aspose OCR +- Python +- Licensing +title: Πώς να ορίσετε την άδεια στο Aspose OCR – Γρήγορος οδηγός Python +url: /el/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να ορίσετε άδεια στο Aspose OCR – Σύντομος οδηγός Python + +Έχετε αναρωτηθεί ποτέ **πώς να ορίσετε άδεια** για το Aspose OCR χωρίς να σας τρελαίνει; Δεν είστε οι μόνοι. Οι περισσότεροι προγραμματιστές αντιμετωπίζουν πρόβλημα την πρώτη φορά που προσπαθούν να ξεκλειδώσουν τη πλήρη ισχύ της βιβλιοθήκης, μόνο για να τους στοιχειώνει το υδατογράφημα “Trial version”. Τα καλά νέα είναι ότι η λύση είναι αρκετά απλή και μπορείτε να την επαληθεύσετε αμέσως. + +Σε αυτό το tutorial θα περάσουμε από **πώς να ορίσετε άδεια** *και* **πώς να επαληθεύσετε άδεια** χρησιμοποιώντας ένα μικρό script Python. Στο τέλος θα έχετε ένα λειτουργικό παράδειγμα που εκτυπώνει “License OK”, συν ένα σύνολο συμβουλών για να αποφύγετε κοινά λάθη. + +## Προαπαιτούμενα + +Πριν ξεκινήσουμε, βεβαιωθείτε ότι έχετε: + +- Εγκατεστημένο Python 3.8+ (ο κώδικας λειτουργεί σε 3.9, 3.10 και νεότερες εκδόσεις). +- Ένα ενεργό αρχείο άδειας Aspose OCR για Java (ή .NET) – συνήθως ονομάζεται `Aspose.OCR.Java.lic`. +- Το πακέτο `asposeocr` εγκατεστημένο μέσω `pip install asposeocr`. +- Βασική εξοικείωση με την εκτέλεση script Python από τη γραμμή εντολών. + +Τα έχετε όλα; Τέλεια—ας ξεκινήσουμε. + +## Πώς να ορίσετε άδεια στο Aspose OCR (Βήμα 1) + +Η ρύθμιση της άδειας είναι ουσιαστικά μια τριγραμμική ενέργεια, αλλά κάθε γραμμή έχει σκοπό. Θα το αναλύσουμε ώστε να καταλάβετε *γιατί* κάνουμε ό,τι κάνουμε. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Γιατί να εισάγουμε το `License`;** +Η κλάση `License` είναι η πύλη που λέει στη μηχανή Aspose OCR ότι έχετε πληρώσει για το προϊόν. Χωρίς τη δημιουργία ενός αντικειμένου, η βιβλιοθήκη θα συνεχίσει να υποθέτει ότι βρίσκεστε σε δοκιμαστική έκδοση. + +**Γιατί να δημιουργήσουμε ένα αντικείμενο `License`;** +Η δημιουργία αντικειμένου σας δίνει ένα αντικείμενο (`license_obj`) που μπορεί να κρατήσει τη διαδρομή προς το αρχείο `.lic` σας και στη συνέχεια να το εφαρμόσει στο runtime. + +## Πώς να ορίσετε άδεια στο Aspose OCR – Παροχή του αρχείου άδειας + +Τώρα δείχνουμε το αντικείμενο στο πραγματικό αρχείο άδειας στο δίσκο. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Συμβουλές & κόλπα:** + +- **Απόλυτη vs. σχετική διαδρομή** – Αν εκτελείτε το script από διαφορετικό φάκελο, μια απόλυτη διαδρομή (`C:/licenses/...`) εξαλείφει τα σφάλματα “file not found”. +- **Μεταβλητές περιβάλλοντος** – Η αποθήκευση της διαδρομής σε μια μεταβλητή περιβάλλοντος (`OCR_LICENSE_PATH`) κρατά τα μυστικά εκτός ελέγχου πηγαίου κώδικα: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Πώς να επαληθεύσετε την άδεια – Διασφαλίζοντας ότι λειτούργησε + +Η ρύθμιση της άδειας είναι μόνο το ήμισυ του αγώνα· πρέπει να επιβεβαιώσετε ότι η βιβλιοθήκη την αποδέχτηκε. Εδώ έρχεται στο προσκήνιο το βήμα επαλήθευσης. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Αν το αρχείο άδειας λείπει, είναι κατεστραμμένο ή δεν ταιριάζει, η μέθοδος `validate()` θα ρίξει μια εξαίρεση. Το σύλληψη αυτής της εξαίρεσης σας δίνει έναν καθαρό τρόπο να αναφέρετε προβλήματα. + +## Πλήρες λειτουργικό παράδειγμα (Όλα τα βήματα συνδυασμένα) + +Παρακάτω είναι το πλήρες, έτοιμο‑για‑εκτέλεση script. Εκτελέστε το από ένα τερματικό (`python set_license.py`) και θα πρέπει να δείτε την εκτύπωση “License OK”. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Αναμενόμενη έξοδος** + +``` +License OK +``` + +Αν κάτι πάει στραβά, θα δείτε κάτι σαν: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Αυτό το μήνυμα σας λέει ακριβώς τι πρέπει να διορθώσετε—χωρίς εικασίες. + +## Πώς να επαληθεύσετε την άδεια – Διαχείριση κοινών περιπτώσεων άκρων + +Ακόμη και με το παραπάνω script, μερικά σενάρια μπορούν να σας προκαλέσουν προβλήματα: + +| Κατάσταση | Τι συμβαίνει | Πώς να το διορθώσετε | +|-----------|--------------|----------------------| +| **Λάθος στην διαδρομή αρχείου** | `FileNotFoundError` από `set_license` | Επαληθεύστε τη διαδρομή· χρησιμοποιήστε `os.path.abspath()` για εντοπισμό σφαλμάτων. | +| **Λάθος τύπος αρχείου** | Η επαλήθευση ρίχνει “Invalid license format” | Βεβαιωθείτε ότι χρησιμοποιείτε το αρχείο `.lic` που ταιριάζει με την έκδοση του προϊόντος σας. | +| **Λήξη άδειας** | Η επαλήθευση ρίχνει “License expired” | Ανανεώστε την άδεια μέσω της υποστήριξης Aspose και αντικαταστήστε το αρχείο. | +| **Εκτέλεση σε περιορισμένο περιβάλλον** (π.χ., AWS Lambda) | Σφάλμα δικαιωμάτων | Δώστε δικαίωμα ανάγνωσης στον φάκελο ή ενσωματώστε την άδεια στο πακέτο ανάπτυξης. | + +Pro tip: τυλίξτε την κλήση `set_license` σε ένα δικό της `try/except` block αν θέλετε να διακρίνετε μεταξύ σφαλμάτων “file not found” και “invalid format”. + +## Οπτική σύνοψη + +![πώς να ορίσετε άδεια στο Aspose OCR παράδειγμα](/images/aspose-ocr-license.png "πώς να ορίσετε άδεια στο Aspose OCR παράδειγμα") + +*Το στιγμιότυπο δείχνει το script να εκτυπώνει “License OK” μετά από επιτυχή ενεργοποίηση.* + +## Συνηθισμένα λάθη & βέλτιστες πρακτικές + +- **Ποτέ μην ανεβάζετε το αρχείο άδειας σε δημόσιο αποθετήριο.** Χρησιμοποιήστε μεταβλητές περιβάλλοντος ή διαχειριστές μυστικών (GitHub Secrets, Azure Key Vault) αντ' αυτού. +- **Επαληθεύστε νωρίς.** Η τοποθέτηση του `license_obj.validate()` αμέσως μετά το `set_license` εντοπίζει σφάλματα πριν ξεκινήσει οποιαδήποτε εργασία OCR. +- **Ξαναχρησιμοποιήστε το αντικείμενο License.** Χρειάζεται να ορίσετε την άδεια μόνο μία φορά ανά διεργασία· οι επόμενες κλήσεις OCR θα χρησιμοποιούν αυτόματα την ενεργοποιημένη άδεια. +- **Καταγράψτε τη διαδρομή της άδειας (χωρίς το όνομα αρχείου) σε παραγωγή** για να βοηθήσετε στην αποσφαλμάτωση χωρίς να εκθέτετε το πραγματικό αρχείο. + +## Επόμενα βήματα – Επέκταση της ροής εργασίας OCR + +Τώρα που γνωρίζετε **πώς να ορίσετε άδεια** και **πώς να επαληθεύσετε άδεια**, μπορείτε να προχωρήσετε στις κύριες εργασίες OCR: + +- **πώς να διαβάσετε εικόνα** – `Image.load("sample.png")` +- **πώς να εξάγετε κείμενο** – `ocr_engine.recognize(image)` +- **πώς να ρυθμίσετε επιλογές OCR** – προσαρμόστε τις ρυθμίσεις του `OcrEngine` για γλώσσα, ακρίβεια κ.λπ. + +Κάθε ένα από αυτά τα θέματα βασίζεται σε μια επιτυχώς αδειοδοτημένη μηχανή, ώστε να μην δείτε ποτέ ξανά το υδατογράφημα δοκιμής. + +## Συμπέρασμα + +Καλύψαμε όλη τη διαδικασία του **πώς να ορίσετε άδεια** για το Aspose OCR, δείξαμε **πώς να επαληθεύσετε άδεια**, και σας δώσαμε ένα πλήρες, εκτελέσιμο script που εκτυπώνει “License OK”. Με την προληπτική διαχείριση σφαλμάτων και τη χρήση μεταβλητών περιβάλλοντος, διατηρείτε την εφαρμογή σας ασφαλή και ανθεκτική. + +Έχετε περισσότερες ερωτήσεις σχετικά με OCR, αδειοδότηση ή ενσωμάτωση του Aspose σε μεγαλύτερο pipeline; Αφήστε ένα σχόλιο, και καλή προγραμματιστική δουλειά! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/greek/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..cdf744de7 --- /dev/null +++ b/ocr/greek/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-04-26 +description: πώς να χρησιμοποιήσετε OCR σε σαρωμένα PDF, να εξάγετε κείμενο από PDF, + να εκτελέσετε OCR σε PDF και να μετατρέψετε το σαρωμένο PDF σε αναζητήσιμα αρχεία + σε λίγα βήματα. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: el +og_description: 'πώς να χρησιμοποιήσετε OCR στην Python: μάθετε πώς να εξάγετε κείμενο + από PDF, να εκτελείτε OCR σε PDF και να μετατρέπετε σαρωμένα PDF σε έγγραφα με δυνατότητα + αναζήτησης.' +og_title: πώς να χρησιμοποιήσετε OCR – Σύντομος οδηγός για την εξαγωγή κειμένου από + PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: πώς να χρησιμοποιήσετε OCR – Εξαγωγή κειμένου από PDF με Python +url: /el/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# πώς να χρησιμοποιήσετε OCR – Εξαγωγή κειμένου από PDF με Python + +Έχετε αναρωτηθεί ποτέ **πώς να χρησιμοποιήσετε OCR** για να εξάγετε κείμενο από ένα σαρωμένο συμβόλαιο, απόδειξη ή ebook; Δεν είστε μόνοι. Σε πολλά πραγματικά έργα το PDF που λαμβάνετε είναι απλώς μια εικόνα, και χωρίς OCR δεν μπορείτε να αναζητήσετε, να ευρετηριάσετε ή να αναλύσετε το περιεχόμενό του. + +Σε αυτό το tutorial θα περάσουμε από ένα πλήρες, εκτελέσιμο παράδειγμα που δείχνει **πώς να χρησιμοποιήσετε OCR**, πώς να **εξάγετε κείμενο από PDF**, και γιατί ίσως θέλετε να **μετατρέψετε σαρωμένα PDF** σε έγγραφα που μπορούν να αναζητηθούν. Θα καλύψουμε επίσης τη λεπτή τέχνη του **φόρτωμα PDF ως εικόνα** ώστε η μηχανή OCR να μπορεί να δει κάθε σελίδα καθαρά. + +> **Γρήγορη προεπισκόπηση:** Στο τέλος θα έχετε ένα script που φορτώνει ένα πολυ-σελίδων PDF, εκτελεί OCR σε κάθε σελίδα, και εκτυπώνει το αναγνωρισμένο κείμενο – χωρίς εξωτερικές υπηρεσίες. + +## Τι Θα Χρειαστεί + +- Python 3.9+ (οποιαδήποτε πρόσφατη έκδοση λειτουργεί) +- `aocr` package (ή οποιαδήποτε συμβατή βιβλιοθήκη OCR που παρέχει `OcrEngine` και `Image.load`) +- Ένα σαρωμένο αρχείο PDF που θέλετε να επεξεργαστείτε (π.χ., `contract.pdf`) +- Μια μέτρια ποσότητα RAM (≈ 200 MB ανά 100‑σελίδων PDF συνήθως είναι επαρκής) + +Αν δεν έχετε εγκαταστήσει ακόμη τη βιβλιοθήκη OCR, εκτελέστε: + +```bash +pip install aocr +``` + +> **Συμβουλή επαγγελματία:** Χρησιμοποιήστε ένα εικονικό περιβάλλον για να διατηρήσετε τις εξαρτήσεις σας οργανωμένες. + +## Βήμα 1: Φόρτωση PDF ως Εικόνα – Το Πρώτο Κομμάτι του Παζλ + +Πριν μπορέσει να γίνει οποιοδήποτε OCR, το PDF πρέπει να αναπαρασταθεί ως εικόνα. Εδώ έρχεται σε δράση η δευτερεύουσα λέξη-κλειδί **load pdf as image**. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Γιατί είναι σημαντικό:* `aocr.Image.load` εσωτερικά rasterizes (μετατρέπει) κάθε σελίδα PDF σε bitmap που η μηχανή OCR μπορεί να καταλάβει. Αν παραλείψετε αυτό το βήμα και δώσετε το ακατέργαστο PDF, η μηχανή θα εμφανίσει σφάλμα επειδή αναμένει δεδομένα pixel, όχι διανυσματικά δεδομένα. + +> **Σημείωση:** Η διαδρομή μπορεί να είναι απόλυτη ή σχετική. Βεβαιωθείτε ότι το αρχείο είναι αναγνώσιμο· διαφορετικά θα αντιμετωπίσετε `FileNotFoundError`. + +## Βήμα 2: Εκτέλεση OCR σε PDF – Μετατροπή Pixels σε Χαρακτήρες + +Τώρα που το PDF υπάρχει ως εικόνα, μπορούμε τελικά να **εκτελέσουμε OCR σε PDF**. Το παρακάτω απόσπασμα επεξεργάζεται κάθε σελίδα με τη μία: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Τι συμβαίνει στο παρασκήνιο;* `process_all_pages` διασχίζει τις rasterized σελίδες, εφαρμόζει το μοντέλο OCR, και επιστρέφει μια λίστα αντικειμένων αποτελεσμάτων — ένα ανά σελίδα. Κάθε αποτέλεσμα περιέχει το αναγνωρισμένο κείμενο, τις βαθμολογίες εμπιστοσύνης, και τα bounding boxes (αν τα χρειαστείτε αργότερα). + +## Βήμα 3: Εξαγωγή Κειμένου από PDF – Αποκόλληση των Συμβολοσειρών + +Με τα αποτελέσματα OCR στα χέρια, η εξαγωγή του απλού κειμένου γίνεται τετριμμένο. Θα διατρέξουμε τις σελίδες και θα εκτυπώσουμε το αποτέλεσμα, δείχνοντας τη δευτερεύουσα λέξη-κλειδί **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Αναμενόμενο αποτέλεσμα** (περιορισμένο για συντομία): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Αν χρειάζεστε το κείμενο σε μια ενιαία συμβολοσειρά, απλώς συνενώστε: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Τώρα έχετε εξάγει επιτυχώς **κείμενο από PDF** χρησιμοποιώντας OCR. + +## Βήμα 4: Μετατροπή Σαρωμένου PDF – Δημιουργία Αναζητήσιμου + +Πολλά downstream εργαλεία (όπως Elasticsearch ή SharePoint) αναμένουν ένα αναζητήσιμο PDF αντί για ένα αρχείο απλού κειμένου. Μπορείτε να ενσωματώσετε την έξοδο OCR πίσω στο αρχικό PDF, μετατρέποντας αποτελεσματικά **scanned PDF** σε μια αναζητήσιμη έκδοση. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Γιατί να ασχοληθείτε;* Ένα αναζητήσιμο PDF διατηρεί την αρχική διάταξη και τις εικόνες ενώ επιτρέπει την επιλογή κειμένου και την ευρετηρίαση — κέρδος για ανθρώπους και μηχανές. + +## Συνηθισμένα Πιθανά Προβλήματα & Ακραίες Περιπτώσεις + +### Πολυ‑σελίδες PDFs Μεγαλύτερα από τη Μνήμη + +Αν το PDF σας έχει εκατοντάδες σελίδες, η φόρτωση όλων ταυτόχρονα μπορεί να εξαντλήσει τη RAM. Η βιβλιοθήκη `aocr` υποστηρίζει lazy loading: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Στη συνέχεια επεξεργαστείτε τις σελίδες μία-μία: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Σαρώσεις Χαμηλής Ποιότητας + +Η ακρίβεια του OCR μειώνεται δραστικά σε θολές ή χαμηλής αντίθεσης σαρώσεις. Πριν τροφοδοτήσετε την εικόνα στη μηχανή, σκεφτείτε προεπεξεργασία: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Υποστήριξη Γλώσσας + +Από προεπιλογή η μηχανή υποθέτει Αγγλικά. Για να **run OCR on PDF** σε άλλη γλώσσα, ορίστε τον κωδικό γλώσσας: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Βεβαιωθείτε ότι το αντίστοιχο μοντέλο γλώσσας είναι εγκατεστημένο. + +## Πλήρες Παράδειγμα Λειτουργίας + +Συνδυάζοντας όλα, εδώ είναι ένα αυτόνομο script που μπορείτε να αποθηκεύσετε σε αρχείο με όνομα `ocr_pdf.py` και να το εκτελέσετε αμέσως: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Τρέξτε το ως εξής: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Θα δείτε το κείμενο να εκτυπώνεται στην κονσόλα, και αν παρείχατε `-o`, ένα αναζητήσιμο PDF θα εμφανιστεί δίπλα στο αρχικό αρχείο. + +## Συμβουλές Επαγγελματία & Καλές Πρακτικές + +- **Batch processing:** Όταν διαχειρίζεστε δεκάδες PDFs, τυλίξτε τη λογική σε έναν βρόχο και καταγράψτε την επιτυχία/αποτυχία κάθε αρχείου. +- **Confidence filtering:** Κάθε `page_result` περιλαμβάνει ένα μέτρο εμπιστοσύνης. Απορρίψτε ή σημαδέψτε σελίδες με χαμηλή εμπιστοσύνη για χειροκίνητη ανασκόπηση. +- **Parallelism:** Αν η CPU σας έχει πολλούς πυρήνες, σκεφτείτε να χρησιμοποιήσετε `concurrent.futures` για επεξεργασία σελίδων παράλληλα — απλώς προσέξτε τη χρήση μνήμης. +- **Version lock:** Το API του `aocr` μπορεί να εξελιχθεί. Καθορίστε την έκδοση στο `requirements.txt` (π.χ., `aocr==2.3.1`) για να αποφύγετε αλλαγές που σπάζουν. + +## Συμπέρασμα + +Διασχίσαμε **πώς να χρησιμοποιήσετε OCR** για **εξαγωγή κειμένου από PDF**, **εκτέλεση OCR σε PDF**, **φόρτωση PDF ως εικόνα**, και ακόμη **μετατροπή σαρωμένου PDF** σε αναζητήσιμο φορμάτ. Ο κώδικας είναι πλήρης, οι εξηγήσεις καλύπτουν τόσο το *τι* όσο και το *γιατί*, και τώρα έχετε ένα επαναχρησιμοποιήσιμο πρότυπο για οποιοδήποτε έργο που ασχολείται με PDFs βασισμένα σε εικόνες. + +Τι ακολουθεί; Δοκιμάστε να τροφοδοτήσετε το εξαγόμενο κείμενο σε μια αλυσίδα επεξεργασίας φυσικής γλώσσας, ευρετηριάστε τα αναζητήσιμα PDFs με Elasticsearch, ή πειραματιστείτε με διαφορετικά OCR back‑ends όπως Tesserent ή Azure Computer Vision. Ο ουρανός είναι το όριο, και τα εργαλεία είναι στα χέρια σας. + +Καλή προγραμματιστική δουλειά, και ας είναι πάντα τα PDFs σας αναζητήσιμα! + +![παράδειγμα χρήσης OCR](/images/ocr_workflow.png "χρήση 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/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/greek/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..057f190ac --- /dev/null +++ b/ocr/greek/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Πώς να χρησιμοποιήσετε νήματα για τη φόρτωση εικόνας για OCR σε Python. + Μάθετε την ασύγχρονη επεξεργασία OCR με callbacks, νήματα παρασκηνίου και φόρτωση + εικόνας σε λίγα μόνο βήματα. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: el +og_description: Πώς να χρησιμοποιήσετε νήματα για τη φόρτωση εικόνας για OCR σε Python. + Αυτός ο οδηγός παρουσιάζει ένα πλήρες, εκτελέσιμο παράδειγμα με κλήσεις επιστροφής + και εκτέλεση στο παρασκήνιο. +og_title: Πώς να χρησιμοποιήσετε το threading για τη φόρτωση εικόνας για OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Πώς να χρησιμοποιήσετε το threading για τη φόρτωση εικόνας για OCR +url: /el/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Πώς να Χρησιμοποιήσετε Threading για Φόρτωση Εικόνας για OCR + +Έχετε αναρωτηθεί ποτέ **πώς να χρησιμοποιήσετε threading** για να φορτώσετε μια εικόνα για OCR χωρίς να παγώσει η εφαρμογή σας; Είναι ένα σενάριο που εμφανίζεται είτε χτίζετε έναν επιτραπέζιο σαρωτή, μια υπηρεσία web, ή ένα απλό script που επεξεργάζεται τεράστιες εικόνες. Τα καλά νέα; Μερικές γραμμές Python και το σωστό μοτίβο threading θα κρατήσουν το UI σας γρήγορο ενώ η μηχανή OCR κάνει τη μαγεία της. + +Σε αυτό το tutorial θα περάσουμε από ένα πλήρες, end‑to‑end παράδειγμα: φόρτωση ενός μεγάλου PNG, εκκίνηση OCR σε νήμα background, και διαχείριση του αποτελέσματος με callback. Στο τέλος δεν θα ξέρετε μόνο **πώς να χρησιμοποιήσετε threading**, αλλά και **πώς να φορτώσετε εικόνα για OCR** με καθαρό, επαναχρησιμοποιήσιμο τρόπο. + +## Τι Θα Χρειαστείτε + +- Python 3.9+ (η σύνταξη που χρησιμοποιούμε λειτουργεί σε οποιαδήποτε πρόσφατη έκδοση) +- `pillow` για διαχείριση εικόνων (`pip install pillow`) +- `pytesseract` ως ελαφρύ wrapper γύρω από το Tesseract OCR (`pip install pytesseract`) +- Μηχανή Tesseract OCR εγκατεστημένη στο σύστημά σας (κατεβάστε από [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Ένα μεγάλο αρχείο εικόνας που θέλετε να επεξεργαστείτε (`large_image.png` σε αυτόν τον οδηγό) + +Καμία επιπλέον βιβλιοθήκη, χωρίς async/await—μόνο κλασικό `threading` και ένα callback. + +## Βήμα 1: Εισαγωγή του Module Threading (Απαιτείται για Εκτέλεση στο Παρασκήνιο) + +Το πρώτο που κάνουμε είναι να φέρουμε το module `threading`. Σας παρέχει την κλάση `Thread`, η οποία μας επιτρέπει να τρέξουμε οποιαδήποτε συνάρτηση σε ξεχωριστό νήμα του λειτουργικού συστήματος. + +```python +import threading +``` + +*Γιατί είναι σημαντικό*: Αν τρέξετε OCR στο κύριο νήμα, το πρόγραμμά σας (ιδιαίτερα ένα GUI) θα παγώσει μέχρι να ολοκληρωθεί το OCR. Αναθέτοντας τη δουλειά σε νήμα background, το κύριο νήμα παραμένει ελεύθερο για ενημέρωση του UI, διαχείριση εισόδου χρήστη ή εκκίνηση άλλων εργασιών. + +## Βήμα 2: Ορισμός Callback που Θα Κληθεί Όταν Το OCR Ολοκληρωθεί + +Ένα callback είναι απλώς μια συνάρτηση που καλείται από άλλο κομμάτι κώδικα όταν ολοκληρωθεί. Εδώ θα τυπώσουμε το αναγνωρισμένο κείμενο, αλλά μπορείτε να το αποθηκεύσετε, να το στείλετε μέσω δικτύου ή να ενημερώσετε ένα widget UI. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Συμβουλή*: Κρατήστε το callback ελαφρύ. Η βαριά επεξεργασία μέσα στο callback αναιρεί το σκοπό του threading, επειδή θα μπλοκάρει ακόμα το νήμα που το κάλεσε (συχνά το κύριο νήμα). + +## Βήμα 3: Φόρτωση της Εικόνας που Θέλετε να Επεξεργαστείτε + +Η φόρτωση της εικόνας είναι ξεχωριστό ζήτημα από το OCR, αλλά αποτελεί μέρος της συνολικής ροής εργασίας. Η χρήση του Pillow το κάνει τελείως απλό. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Γιατί το κάνουμε εδώ*: Αν η εικόνα είναι τεράστια, η φόρτωση στο κύριο νήμα μπορεί ήδη να προκαλέσει καθυστέρηση. Σε πολλές πραγματικές εφαρμογές θα αποθέτατε και τη φόρτωση σε νήμα, αλλά για σαφήνεια τη διατηρούμε συγχρονισμένη. + +## Βήμα 4: Δημιουργία Μικρού Wrapper για τη Μηχανή OCR + +Το αρχικό απόσπασμα χρησιμοποίησε `engine.process_async`. Θα μιμηθούμε αυτό με μια μικρή κλάση που δημιουργεί εσωτερικά ένα νήμα και καλεί το παρεχόμενο callback όταν τελειώσει. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Εξήγηση*: +- `_run_ocr` κάνει τη βαριά δουλειά. +- `process_async` δημιουργεί ένα αντικείμενο `Thread`, το ορίζει ως daemon (ώστε ο διερμηνέας να μπορεί να τερματιστεί ακόμη και αν το νήμα τρέχει) και το ξεκινά. +- Το callback λαμβάνει είτε το κείμενο OCR είτε ένα μήνυμα σφάλματος. + +## Βήμα 5: Συνδυάστε Όλα και Κάντε Άλλο Καθώς Το OCR Εκτελείται + +Τώρα οργανώνουμε όλη τη ροή: φορτώνουμε την εικόνα, δημιουργούμε την μηχανή, ξεκινάμε το async OCR, και κρατάμε το κύριο νήμα απασχολημένο με κάτι άλλο (εδώ απλώς τυπώνουμε ένα μήνυμα). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Αναμενόμενο αποτέλεσμα (κομμένο για συντομία):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Αν το OCR αποτύχει, το callback θα τυπώσει ένα μήνυμα σφάλματος αντί για το κείμενο. + +--- + +## Γιατί Αυτή η Προσέγγιση Λειτουργεί Καλύτερα Από Έναν Απλό Βρόχο + +- **Ανταπόκριση**: Το κύριο νήμα ποτέ δεν μπλοκάρει στην κλήση OCR, η οποία μπορεί να διαρκέσει δευτερόλεπτα για μεγάλες εικόνες. +- **Κλιμάκωση**: Μπορείτε να δημιουργήσετε πολλαπλά στιγμιότυπα `SimpleOcrEngine`, το καθένα σε δικό του νήμα, για επεξεργασία παρτίδας εικόνων ταυτόχρονα. +- **Διαχωρισμός Ευθυνών**: Η φόρτωση, η επεξεργασία και η διαχείριση αποτελεσμάτων είναι καθαρά διαχωρισμένες, καθιστώντας τον κώδικα πιο εύκολο στη δοκιμή και συντήρηση. + +## Συνηθισμένα Παγίδες και Πώς να τις Αποφύγετε + +| Παγίδα | Τι Συμβαίνει | Διόρθωση | +|--------|--------------|----------| +| Ξέχνατε να ορίσετε το νήμα ως *daemon* | Το script κολλάει μετά το τέλος της κύριας εργασίας επειδή το νήμα OCR είναι ακόμα ζωντανό. | Ορίστε `worker.daemon = True` **ή** καλέστε `join()` στο νήμα πριν την έξοδο. | +| Χρήση παγκόσμιας μεταβλητής για το αποτέλεσμα χωρίς κλειδώματα | Συνθήκες αγώνα μπορεί να καταστρέψουν τα δεδομένα όταν πολλά νήματα γράφουν ταυτόχρονα. | Περάστε το αποτέλεσμα μέσω callback (όπως κάνουμε) ή χρησιμοποιήστε δομές ασφαλείς για νήματα όπως `queue.Queue`. | +| Φόρτωση τεράστιας εικόνας στο κύριο νήμα | Το UI παγώνει πριν καν ξεκινήσει το OCR στο παρασκήνιο. | Αποθέστε τη φόρτωση της εικόνας σε νήμα επίσης, ή χρησιμοποιήστε τεχνικές lazy loading. | +| Μη διαχείριση εξαιρέσεων μέσα στο νήμα εργασίας | Απρόσμενες εξαιρέσεις σκοτώνουν σιωπηλά το νήμα, αφήνοντάς σας χωρίς αποτέλεσμα. | Τυλίξτε τη λογική OCR σε `try/except` και προωθήστε το σφάλμα στο callback. | + +## Επέκταση Αυτού του Μοτίβου + +- **Αναφορά Προόδου**: Χρησιμοποιήστε ένα κοινό `queue.Queue` για να στέλνετε ενδιάμεσες ποσοστιαίες προόδους από το νήμα OCR στο κύριο νήμα. +- **Thread Pool**: Για επεξεργασία παρτίδας, αντικαταστήστε τα μεμονωμένα αντικείμενα `Thread` με ένα `concurrent.futures.ThreadPoolExecutor`. +- **Ενσωμάτωση σε GUI**: Σε εφαρμογή Tkinter ή PyQt, προγραμματίστε το callback με `after()` (Tkinter) ή `QTimer.singleShot` (Qt) ώστε οι ενημερώσεις UI να γίνονται στο κύριο νήμα. + +## Πλήρες Παράδειγμα Εργασίας (Ready για Copy‑Paste) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/hindi/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..f2698b01c --- /dev/null +++ b/ocr/hindi/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-04-26 +description: Python Aspose OCR का उपयोग करके हेडर टेक्स्ट OCR निकालें। जानें कि कैसे + आप छवियों से विशिष्ट क्षेत्र का टेक्स्ट तेज़ और भरोसेमंद तरीके से निकाल सकते हैं। +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: hi +og_description: हेडर टेक्स्ट OCR को जल्दी निकालें। यह गाइड दिखाता है कि Python Aspose + OCR का उपयोग करके विशिष्ट क्षेत्र के टेक्स्ट को केवल कुछ लाइनों में कैसे निकाला + जाए। +og_title: Python Aspose OCR के साथ हेडर टेक्स्ट निकालें – पूर्ण ट्यूटोरियल +tags: +- OCR +- Python +- Aspose +title: Python Aspose OCR के साथ हेडर टेक्स्ट निकालें – चरण‑दर‑चरण गाइड +url: /hi/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# हेडर टेक्स्ट OCR निकालें – पूर्ण Python Aspose OCR ट्यूटोरियल + +क्या आपको कभी स्कैन किए गए इनवॉइस से **हेडर टेक्स्ट OCR निकालने** की जरूरत पड़ी है लेकिन पूरे पेज को प्रोसेस नहीं करना चाहते थे? आप अकेले नहीं हैं। कई वास्तविक‑दुनिया के पाइपलाइन में हेडर में सबसे महत्वपूर्ण जानकारी होती है—इनवॉइस नंबर, तारीख, विक्रेता का नाम—और इसे जल्दी निकालना नीचे के काम में काफी बचत कर सकता है। + +इस ट्यूटोरियल में हम आपको एक तैयार‑चलाने‑योग्य समाधान दिखाएंगे जो **Python Aspose OCR** लाइब्रेरी का उपयोग करके **विशिष्ट क्षेत्र का टेक्स्ट निकालता** है। कोई अस्पष्ट बाहरी दस्तावेज़ लिंक नहीं, सिर्फ एक पूर्ण स्क्रिप्ट, प्रत्येक पंक्ति की स्पष्ट व्याख्या, और ऐसे टिप्स जो आप कल ही उपयोग कर सकते हैं। + +## आप क्या सीखेंगे + +- Python के लिए Aspose OCR पैकेज को कैसे इंस्टॉल और इम्पोर्ट करें। +- इमेज लोड करके **रिज़न ऑफ़ इंटरेस्ट (ROI)** कैसे परिभाषित करें जो हेडर को अलग करता है। +- उस ROI पर OCR इंजन चलाकर साफ़ टेक्स्ट कैसे प्राप्त करें। +- सामान्य pitfalls (जैसे DPI मिसमैच) और उन्हें कैसे टालें। +- अपेक्षित आउटपुट कैसा दिखेगा ताकि आप सब कुछ सही काम कर रहा है, यह सत्यापित कर सकें। + +इन सबके अंत में आप इस कोड को किसी भी प्रोजेक्ट में डाल सकेंगे जिसे इनवॉइस, रसीद या किसी भी पूर्वनिर्धारित लेआउट वाले दस्तावेज़ से **हेडर टेक्स्ट OCR निकालने** की जरूरत हो। + +## पूर्वापेक्षाएँ + +- आपके मशीन पर Python 3.8 या उससे नया इंस्टॉल हो। +- एक वैध Aspose OCR for Python लाइसेंस (मुफ़्त ट्रायल मूल्यांकन के लिए काम करता है)। +- एक इमेज फ़ाइल (`invoice.png`) जिसमें स्पष्ट हेडर क्षेत्र हो। +- Python फ़ंक्शन और फ़ाइल पाथ्स की बुनियादी समझ। + +> **Pro tip:** यदि आप कम‑रिज़ॉल्यूशन स्कैन पर टेस्ट कर रहे हैं, तो Aspose OCR को फ़ीड करने से पहले DPI बढ़ा दें – यह सटीकता को काफी सुधारता है। + +--- + +## Step 1: Install the Aspose OCR Package + +पहले, लाइब्रेरी को अपने वातावरण में जोड़ें। आधिकारिक पैकेज `aspose-ocr` है। इसे एक बार चलाएँ: + +```bash +pip install aspose-ocr +``` + +यदि आप वर्चुअल एनवायरनमेंट (बहुत अनुशंसित) का उपयोग कर रहे हैं, तो इंस्टॉल करने से पहले उसे एक्टिवेट करें। इससे पैकेज अन्य प्रोजेक्ट्स के साथ टकराएगा नहीं। + +## Step 2: Import Required Classes and Load the Image + +अब हम आवश्यक क्लासेस को स्क्रिप्ट में इम्पोर्ट करते हैं और इनवॉइस इमेज लोड करते हैं। **पूर्ण पाथ** का उपयोग देखें; रिलेटिव पाथ भी काम करेंगे, लेकिन एब्सोल्यूट पाथ सर्वर पर स्क्रिप्ट चलाते समय अस्पष्टता को हटाते हैं। + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Why this matters:** `OcrEngine` को एक बार इनिशियलाइज़ करके कई इमेजेज़ के लिए री‑यूज़ करना, हर बार नया इंजन बनाने की तुलना में अधिक कुशल है। + +## Step 3: Define the Header Region (ROI) + +हेडर आमतौर पर पेज के शीर्ष पर होता है, लेकिन इसके सटीक कोऑर्डिनेट्स बदल सकते हैं। यहाँ हम एक रेक्टैंगल (`x`, `y`, `width`, `height`) परिभाषित करते हैं जो हेडर को कवर करता है। अपने दस्तावेज़ लेआउट के अनुसार नंबर बदलें। + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **How it works:** `set_roi` को कॉल करके OCR इंजन का विश्लेषण इस रेक्टैंगल तक सीमित हो जाता है, जिससे प्रोसेसिंग तेज़ होती है और पेज के बाकी हिस्सों से शोर कम हो जाता है। + +## Step 4: Apply the ROI and Run OCR + +अब हम इंजन को हेडर क्षेत्र पर फोकस करने के लिए कहते हैं और OCR प्रक्रिया चलाते हैं। परिणाम ऑब्जेक्ट में पहचाना गया टेक्स्ट और अतिरिक्त मेटाडेटा (कॉन्फिडेंस स्कोर, भाषा, आदि) होते हैं। + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +यदि OCR फेल हो जाता है (जैसे असमर्थित इमेज फ़ॉर्मेट), तो `ocr_result` `None` रहेगा। एक त्वरित गार्ड क्लॉज़ आपके स्क्रिप्ट को अधिक मजबूत बना सकता है: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Step 5: Retrieve and Print the Extracted Header Text + +अंत में, हम परिणाम ऑब्जेक्ट से टेक्स्ट निकालते हैं और प्रदर्शित करते हैं। आप इसे फ़ाइल में लिख भी सकते हैं या आगे की पार्सिंग के लिए किसी अन्य फ़ंक्शन को पास कर सकते हैं। + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Expected Output + +जब सब कुछ सही ढंग से सेट हो, तो आपको कुछ इस तरह दिखना चाहिए: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +यदि आउटपुट गड़बड़ दिखे, तो ROI कोऑर्डिनेट्स दोबारा जांचें और सुनिश्चित करें कि स्रोत इमेज हाई‑कॉन्ट्रास्ट हो। + +--- + +## Variations & Edge Cases + +### 1. Multiple Headers in One Document + +कभी‑कभी PDF में कई पेज होते हैं, प्रत्येक का अपना हेडर होता है। पेजों पर लूप करें और प्रत्येक पेज के लिए ROI को समायोजित करें: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Dealing with Skewed Scans + +यदि इनवॉइस थोड़ा घुमा हुआ है, तो Aspose OCR को फ़ीड करने से पहले OpenCV से इमेज को प्री‑प्रोसेस करें: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Changing Language Settings + +Aspose OCR भाषा को ऑटो‑डिटेक्ट कर सकता है, लेकिन तेज़ परिणामों के लिए आप English को फोर्स कर सकते हैं: + +```python +ocr_engine.language = "en" +``` + +--- + +## Full Working Example + +नीचे पूरा स्क्रिप्ट है जिसे आप `extract_header.py` नाम की फ़ाइल में कॉपी‑पेस्ट कर सकते हैं। इमेज पाथ को अपने अनुसार बदलना न भूलें। + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +इस स्क्रिप्ट को चलाने पर हेडर लाइन्स ठीक उसी तरह आउटपुट होंगी जैसा ऊपर दिखाया गया था। अपने विशेष इनवॉइस टेम्पलेट के अनुसार `roi` वैल्यूज़ को समायोजित करने में संकोच न करें। + +--- + +## Common Questions Answered + +**Q: क्या यह सीधे PDFs के साथ काम करता है?** +A: बॉक्स‑आउट‑ऑफ़‑द‑बॉक्स नहीं। प्रत्येक PDF पेज को इमेज (जैसे `pdf2image` से) में बदलें, फिर PNG/JPG को स्क्रिप्ट में फ़ीड करें। + +**Q: यदि मेरे हेडर में लोगो और टेक्स्ट दोनों हों तो क्या करें?** +A: Aspose OCR मुख्यतः टेक्स्ट पर फोकस करता है। लोगो के लिए आप अलग इमेज‑रिकग्निशन लाइब्रेरी जैसे `opencv` या कस्टम मॉडल के साथ `tesseract` इस्तेमाल कर सकते हैं। + +**Q: क्या फ्री ट्रायल में कोई सीमा है?** +A: ट्रायल में महीने में अधिकतम 10 पेज की सीमा है। प्रोडक्शन के लिए लाइसेंस खरीदें ताकि सीमा हटे और उच्च सटीकता सेटिंग्स अनलॉक हों। + +--- + +## Conclusion + +अब आपके पास **Python Aspose OCR** का उपयोग करके **हेडर टेक्स्ट OCR निकालने** के लिए एक **पूरा, उद्धरण‑योग्य** गाइड है। ट्यूटोरियल ने इंस्टॉलेशन से लेकर एज केस हैंडलिंग तक सब कुछ कवर किया, और आपको एक पुन: उपयोग योग्य फ़ंक्शन दिया जो बड़े वर्कफ़्लो में डाल सकते हैं। + +अगला कदम: **फ़ुटर** या **लाइन‑आइटम** जैसे अन्य क्षेत्रों के लिए **विशिष्ट क्षेत्र टेक्स्ट निकालना** एक्सप्लोर करें, या इस अप्रोच को PDF‑से‑इमेज कन्वर्टर के साथ मिलाकर पूरी‑डॉक्यूमेंट पाइपलाइन ऑटोमेट करें। संभावनाएँ अनंत हैं—बस ROI कोऑर्डिनेट्स सटीक रखें और इमेज हाई‑रिज़ॉल्यूशन रखें। + +कोई जटिल लेआउट है? कमेंट में शेयर करें, हम मिलकर ROI को एडजस्ट करेंगे। 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/hindi/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/hindi/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..0874816fc --- /dev/null +++ b/ocr/hindi/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,223 @@ +--- +category: general +date: 2026-04-26 +description: Aspose OCR का उपयोग करके Python में छवि से टेक्स्ट निकालें। सीखें कि + टेक्स्ट कैसे निकालें, छवि को टेक्स्ट में कैसे बदलें, और बहुभाषी समर्थन के साथ OCR + के लिए छवि कैसे लोड करें। +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: hi +og_description: इमेज से तुरंत टेक्स्ट निकालें। यह गाइड दिखाता है कि कैसे टेक्स्ट निकाला + जाए, इमेज को टेक्स्ट में बदला जाए, और Aspose OCR का उपयोग करके पायथन में OCR के + लिए इमेज लोड की जाए। +og_title: Python के साथ छवि से टेक्स्ट निकालें – पूर्ण बहुभाषी OCR ट्यूटोरियल +tags: +- OCR +- Python +- Aspose +title: Python के साथ छवि से टेक्स्ट निकालें – बहुभाषी OCR गाइड +url: /hi/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python के साथ इमेज से टेक्स्ट निकालें – मल्टिलिंगुअल OCR गाइड + +क्या आपको कभी **इमेज से टेक्स्ट निकालना** पड़ा है लेकिन यह नहीं पता था कि कौन सी लाइब्रेरी मिश्रित‑भाषा वाले पेजों को संभाल सकती है? आप अकेले नहीं हैं। कई वास्तविक‑दुनिया के ऐप्स—जैसे इनवॉइस प्रोसेसिंग, सोशल‑मीडिया मॉनिटरिंग, या बहुभाषी दस्तावेज़ आर्काइविंग—में आपको ऐसी तस्वीरें मिलेंगी जिनमें लैटिन और सिरीलिक दोनों अक्षर होते हैं। + +अच्छी खबर? Aspose OCR for Python के साथ आप **टेक्स्ट निकाल सकते हैं**, **इमेज को टेक्स्ट में बदल सकते हैं**, और **OCR के लिए इमेज लोड कर सकते हैं** सिर्फ कुछ लाइनों में, और इंजन को भाषा का स्वतः‑पता लगाने दे सकते हैं। इस ट्यूटोरियल में हम एक पूर्ण, चलाने योग्य उदाहरण के माध्यम से जाएंगे, समझाएंगे कि प्रत्येक कदम क्यों महत्वपूर्ण है, और कुछ एज केसों को कवर करेंगे जो आपको रास्ते में मिल सकते हैं। + +> **आप क्या सीखेंगे** +> * एक तैयार‑चलाने‑योग्य स्क्रिप्ट जो मिश्रित‑भाषा वाले PNG से टेक्स्ट निकालती है। +> * Python में मल्टिलिंगुअल OCR को कॉन्फ़िगर करने की समझ। +> * बड़े फ़ाइलों, विभिन्न इमेज फ़ॉर्मैट्स को संभालने और सामान्य समस्याओं को डिबग करने के टिप्स। + +## आवश्यकताएँ + +- Python 3.8 या नया (कोड f‑strings का उपयोग करता है)। +- `asposeocr` पैकेज स्थापित किया हुआ (`pip install asposeocr`)। +- एक इमेज फ़ाइल (जैसे `mixed_lang.png`) जिसमें एक से अधिक स्क्रिप्ट में टेक्स्ट हो। +- Python इम्पोर्ट्स और ऑब्जेक्ट‑ओरिएंटेड APIs की बुनियादी परिचितता। + +कोई भारी डिपेंडेंसी नहीं, कोई बाहरी सर्विस नहीं—सिर्फ एक pip इंस्टॉल और आप तैयार हैं। + +--- + +## चरण 1 – Aspose OCR लाइब्रेरी स्थापित करें और इम्पोर्ट करें + +OCR के लिए इमेज लोड करने से पहले, हमें लाइब्रेरी की आवश्यकता है। पैकेज में कोर OCR इंजन और एक हल्का इमेज लोडर शामिल है। + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*यह क्यों महत्वपूर्ण है*: विशिष्ट क्लासेस को इम्पोर्ट करने से नेमस्पेस साफ़ रहता है और बाद का कोड स्पष्ट होता है। यदि आप केवल `asposeocr` इम्पोर्ट करते हैं, तो आपको हर कॉल को क्वालिफ़ाई करना पड़ेगा (`aocr.OcrEngine()`), जो शोरपूर्ण हो सकता है। + +## चरण 2 – OCR इंजन बनाएं और मल्टिलिंगुअल डिटेक्शन सक्षम करें + +Aspose OCR इमेज में मौजूद भाषा(यों) का स्वतः अनुमान लगा सकता है। `Language.AUTO` सेट करने से लैटिन, सिरीलिक, अरबी और कई अन्य भाषाएँ कवर हो जाती हैं। + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*प्रो टिप*: यदि आप पहले से भाषा सेट जानते हैं, तो आप `Language.ENGLISH` या `Language.RUSSIAN` असाइन कर सकते हैं जिससे थोड़ा प्रदर्शन बढ़ेगा। लेकिन वास्तव में मिश्रित दस्तावेज़ों के लिए, `AUTO` सबसे सुरक्षित विकल्प है। + +## चरण 3 – वह इमेज लोड करें जिसे आप प्रोसेस करना चाहते हैं + +यहीं पर हम **OCR के लिए इमेज लोड** करते हैं। Aspose PNG, JPEG, BMP, TIFF, और यहां तक कि PDF पेजेज़ को भी इमेज के रूप में सपोर्ट करता है। + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **टिप**: यदि आपकी इमेज 2 MB से बड़ी है, तो पहले उसका आकार बदलने पर विचार करें। बड़ी इमेजेज़ मेमोरी उपयोग बढ़ाती हैं और डिटेक्शन स्टेप को धीमा कर सकती हैं। + +## चरण 4 – OCR प्रोसेस चलाएँ और परिणाम कैप्चर करें + +`process()` को कॉल करने से भारी काम होता है: टेक्स्ट डिटेक्शन, लेआउट एनालिसिस, और भाषा डिकोडिंग। + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +रिटर्न किया गया `ocr_result` ऑब्जेक्ट कई उपयोगी प्रॉपर्टीज़ रखता है: + +| Property | Description | +|----------|-------------| +| `text` | पहचाने गए टेक्स्ट की साधारण स्ट्रिंग (जो आप सबसे अधिक उपयोग करेंगे)। | +| `confidence` | कुल विश्वास स्कोर (0‑100)। | +| `lines` | `OcrLine` ऑब्जेक्ट्स की सूची जिसमें पोज़िशनल डेटा होता है (PDF के लिए उपयोगी)। | + +## चरण 5 – निकाले गए टेक्स्ट को प्रदर्शित करें + +अंत में, हम आउटपुट को प्रिंट करते हैं। वास्तविक एप्लिकेशन में आप इसे डेटाबेस में लिख सकते हैं या ट्रांसलेशन API में फीड कर सकते हैं। + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**अपेक्षित आउटपुट** (मिश्रित‑भाषा वाली इमेज का उदाहरण): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +यदि आपको गड़बड़ अक्षर दिखें, तो दोबारा जांचें कि इमेज क्षतिग्रस्त नहीं है और आप `asposeocr` का नवीनतम संस्करण (लेखन के समय v23.7) उपयोग कर रहे हैं। + +--- + +## चरण 6 – पूरी स्क्रिप्ट जिसे आप कॉपी‑पेस्ट कर सकते हैं + +सब कुछ एक साथ रखने से “कोड कहाँ से शुरू होता है?” की उलझन दूर होती है। इसे `multilingual_ocr.py` के रूप में सेव करें और कमांड लाइन से चलाएँ। + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +इसे चलाएँ: + +```bash +python multilingual_ocr.py +``` + +आपको कंसोल में निकाले गए स्ट्रिंग्स प्रिंट होते दिखेंगे। बस इतना ही—**इमेज को टेक्स्ट में बदलें** कुछ ही लाइनों से। + +--- + +## सामान्य प्रश्न और एज‑केस हैंडलिंग + +### यदि मेरी इमेज में हैंडराइटिंग है तो क्या? + +Aspose OCR प्रिंटेड टेक्स्ट के लिए ट्यून किया गया है। हैंडराइटेड स्क्रिप्ट्स को अक्सर एक समर्पित मॉडल की जरूरत होती है (जैसे Azure Read या Google Vision)। आप अभी भी `Language.AUTO` आज़मा सकते हैं, लेकिन कम विश्वास की उम्मीद रखें। + +### शोरयुक्त स्कैन पर सटीकता कैसे बढ़ाएँ? + +1. इमेज को प्री‑प्रोसेस करें (बाइनराइज़ेशन, डीस्पेक्लिंग)। +2. DPI को कम से कम 300 ppi तक बढ़ाएँ इससे पहले कि आप इसे इंजन को दें। +3. यदि इमेज तिरछी है तो `ocr_engine.config.deskew = True` स्पष्ट रूप से सेट करें। + +```python +ocr_engine.config.deskew = True +``` + +### क्या मैं PDF से सीधे टेक्स्ट निकाल सकता हूँ बिना पहले इमेज में बदलें? + +हाँ—Aspose OCR सीधे PDF पेजेज़ खोल सकता है: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +सिर्फ याद रखें कि प्रत्येक पेज को आंतरिक रूप से इमेज माना जाता है, इसलिए वही क्वालिटी विचार लागू होते हैं। + +--- + +## निष्कर्ष + +अब आपके पास Aspose OCR को Python में उपयोग करके **इमेज से टेक्स्ट निकालने** की एक ठोस, एंड‑टू‑एंड रेसिपी है, जिसमें मल्टिलिंगुअल सपोर्ट भी शामिल है। स्क्रिप्ट दिखाती है कि कैसे **OCR के लिए इमेज लोड** करें, **इमेज को टेक्स्ट में बदलें**, और सबसे सामान्य समस्याओं को कैसे संभालें। + +अब आप: + +- फ़ंक्शन को वेब सर्विस में इंटीग्रेट करें जो यूज़र अपलोड्स स्वीकार करे। +- निकाले गए टेक्स्ट को भाषा‑डिटेक्शन लाइब्रेरी के साथ जोड़ें ताकि इसे सही ट्रांसलेशन इंजन तक रूट किया जा सके। +- `ocr_engine.config` विकल्पों (जैसे `max_recognition_time`, `text_orientation`) के साथ प्रयोग करें ताकि प्रदर्शन को फाइन‑ट्यून किया जा सके। + +कोडिंग का आनंद लें, और आपके OCR पाइपलाइन हमेशा सटीक रहें! + +--- + +![निकाले गए बहुभाषी टेक्स्ट का स्क्रीनशॉट – इमेज से टेक्स्ट निकालने का उदाहरण](image-placeholder.png "इमेज से टेक्स्ट निकालने का उदाहरण") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/hindi/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..46cd27539 --- /dev/null +++ b/ocr/hindi/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: Python में अपने दस्तावेज़ों को बैच OCR करके स्कैन से टेक्स्ट निकालना + सीखें। JSON आउटपुट के लिए OcrEngine के साथ चरण‑दर‑चरण बैच प्रोसेसिंग जानें। +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: hi +og_description: कैसे एक ही स्क्रिप्ट में अपने स्कैन किए गए फ़ाइलों को बैच OCR करके + स्कैन से टेक्स्ट निकालें। पूर्ण कोड, टिप्स और किनारी मामलों का समाधान। +og_title: बैच OCR कैसे करें – तेज़ पायथन गाइड +tags: +- OCR +- Python +- Automation +title: बैच OCR कैसे करें – स्कैन से टेक्स्ट को कुशलता से निकालें +url: /hi/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# कैसे बैच OCR करें – स्कैन से टेक्स्ट को प्रभावी ढंग से निकालें + +क्या आपने कभी सोचा है **कैसे बैच OCR** करके बड़ी मात्रा में स्कैन किए गए PDF को बिना पागल हुए निकालें? आप अकेले नहीं हैं—डेवलपर्स लगातार पूछते हैं, *“एक ही बार में स्कैन से टेक्स्ट कैसे निकालें?”* अच्छी खबर यह है कि कुछ पंक्तियों का Python कोड इस थकाऊ काम को एक सुगम, स्वचालित पाइपलाइन में बदल सकता है। + +इस ट्यूटोरियल में हम एक पूर्ण, तैयार‑चलाने‑योग्य समाधान से गुजरेंगे जो **स्कैन से टेक्स्ट निकालता है**, परिणामों को JSON के रूप में सहेजता है, और अंत में एक त्वरित sanity check देता है। कोई बाहरी सेवा नहीं, कोई जादू नहीं—सिर्फ साधारण Python, `OcrEngine` क्लास, और थोड़ा फ़ोल्डर प्लंबिंग। + +## आप क्या सीखेंगे + +- एक पूरी तरह कार्यशील स्क्रिप्ट जो **बैच OCR** को किसी भी इमेज फ़ोल्डर पर चलाती है। +- प्रत्येक पंक्ति के *क्यों* मौजूद है, न कि केवल *क्या* करता है, की स्पष्ट व्याख्याएँ। +- खाली फ़ोल्डर, गैर‑इमेज फ़ाइलें, और बड़े बैच को संभालने के टिप्स। +- यह सत्यापित करने का तरीका कि JSON आउटपुट में वास्तव में निकाला गया टेक्स्ट है। + +### पूर्वापेक्षाएँ (बुनियादी न्यूनतम) + +| Requirement | Why it matters | +|-------------|----------------| +| Python 3.8+ | आधुनिक सिंटैक्स और टाइप हिंट्स | +| `OcrEngine` लाइब्रेरी (या संगत रैपर) | मुख्य OCR कार्यक्षमता | +| स्कैन की गई इमेज फ़ाइलों (PNG, JPG, TIFF) वाला डायरेक्टरी | इनपुट डेटा | +| आउटपुट फ़ोल्डर के लिए लिखने की अनुमति | JSON परिणाम सहेजना | + +यदि आपके पास ये सब है, तो चलिए शुरू करते हैं। + +![how to batch OCR workflow](image-placeholder.png){alt="बैच OCR कैसे करें कार्यप्रवाह"} + +## चरण 1 – OCR इंजन को इनिशियलाइज़ करें (how to batch OCR) + +किसी भी चीज़ को प्रोसेस करने से पहले, हमें OCR इंजन का एक इंस्टेंस चाहिए। इसे वह “दिमाग” समझें जो प्रत्येक इमेज को पढ़ेगा और टेक्स्ट निकालेगा। इसे एक बार इनिशियलाइज़ करके पूरे बैच में पुनः उपयोग करना सबसे कुशल पैटर्न है। + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **एक ही इंस्टेंस को पुनः उपयोग क्यों करें?** +> हर फ़ाइल के लिए नया इंजन बनाना भारी मॉडल को मेमोरी में बार‑बार लोड करेगा, जिससे बैच काफी धीमा हो जाएगा। एक ही इंस्टेंस मॉडल को RAM में रखता है और आप हजारों इमेज को बिना noticeable slowdown के प्रोसेस कर सकते हैं। + +## चरण 2 – अपने स्कैन फ़ोल्डर की ओर इशारा करें (extract text from scans) + +आपके स्कैन डिस्क पर कहीं मौजूद हैं। स्क्रिप्ट को बताइए कि उन्हें कहाँ ढूँढना है। एब्सोल्यूट पाथ का उपयोग करने से “फ़ाइल नहीं मिली” जैसी आश्चर्यजनक समस्याएँ नहीं आतीं, भले ही स्क्रिप्ट किसी अलग वर्किंग डायरेक्टरी से चलायी जाए। + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **प्रो टिप:** +> यदि आप Windows पर हैं, तो फॉरवर्ड स्लैश (`/`) `os.path.abspath` के साथ बिल्कुल ठीक काम करते हैं, इसलिए आपको बैकस्लैश एस्केप करने की ज़रूरत नहीं है। + +## चरण 3 – JSON परिणामों के लिए गंतव्य चुनें + +संभवतः आप OCR परिणामों के लिए एक साफ़ फ़ोल्डर चाहते हैं। आउटपुट को स्रोत से अलग रखने से बाद में साफ‑सफ़ाई आसान हो जाती है या JSON को किसी अन्य पाइपलाइन में फीड किया जा सकता है। + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **फ़ोल्डर को प्रोग्रामेटिकली क्यों बनाएं?** +> यह सुनिश्चित करता है कि यदि डायरेक्टरी मौजूद नहीं है तो स्क्रिप्ट क्रैश न हो, और `exist_ok=True` ऑपरेशन को idempotent बनाता है—स्क्रिप्ट को कई बार चलाने पर भी त्रुटि नहीं आती। + +## चरण 4 – बैच प्रोसेस चलाएँ (how to batch OCR) + +अब मुख्य भाग: `ocr_engine` को बताना कि वह `input_dir` में हर फ़ाइल पर जाए, OCR चलाए, और JSON को `output_dir` में डंप करे। `format="json"` फ़्लैग इंजन को परिणाम को एक संरचित तरीके से सीरियलाइज़ करने को कहता है, जिसे डाउनस्ट्रीम टूल्स पसंद करते हैं। + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### पर्दे के पीछे क्या हो रहा है? + +1. **फ़ाइल खोज** – इंजन `input_folder` को रीकर्सिवली स्कैन करता है, हिडन फ़ाइलों को छोड़ता है। +2. **फ़ाइल वैलिडेशन** – केवल समर्थित इमेज एक्सटेंशन (`.png`, `.jpg`, `.tif`, आदि) को OCR मॉडल को भेजा जाता है। +3. **OCR निष्पादन** – प्रत्येक इमेज को OCR इंजन को भेजा जाता है; टेक्स्ट, confidence स्कोर, और लेआउट डेटा कैप्चर होते हैं। +4. **JSON सीरियलाइज़ेशन** – परिणाम को उसी बेस नेम लेकिन `.json` एक्सटेंशन के साथ `output_folder` में लिखा जाता है। + +> **एज केस हैंडलिंग:** +> - **खाली फ़ोल्डर:** इंजन “No files found” लॉग करता है और सुगमता से रिटर्न करता है। +> - **करप्ट इमेज:** फ़ाइल को स्किप करता है, `batch_errors.log` में एक एरर एंट्री रिकॉर्ड करता है, और आगे बढ़ता है। +> - **बड़ा बैच (10k+ फ़ाइलें):** मेमोरी उपयोग कम रहता है क्योंकि प्रत्येक इमेज को स्वतंत्र रूप से प्रोसेस किया जाता है। + +## चरण 5 – रूपांतरण समाप्ति की पुष्टि करें + +एक साधारण `print` स्टेटमेंट कंसोल में तुरंत फीडबैक देता है। प्रोडक्शन पाइपलाइन में आप इसे लॉगिंग कॉल या ईमेल नोटिफिकेशन से बदल सकते हैं। + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +जब आप वह लाइन देखते हैं, तो आप सुरक्षित रूप से `json_output` फ़ोल्डर को देख सकते हैं। प्रत्येक JSON फ़ाइल लगभग इस तरह दिखेगी: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +अब आप इन JSON फ़ाइलों को डेटाबेस, सर्च इंडेक्स, या किसी भी डाउनस्ट्रीम एनालिटिक्स टूल में फीड कर सकते हैं। + +## अक्सर पूछे जाने वाले प्रश्न (और त्वरित उत्तर) + +**प्रश्न: अगर मुझे इमेज के बजाय PDF प्रोसेस करने हैं तो क्या करें?** +उत्तर: पहले प्रत्येक PDF पेज को इमेज में बदलें (जैसे `pdf2image` का उपयोग करके) और उत्पन्न PNG/JPG फ़ाइलों को `input_dir` में रखें। बैच OCR लॉजिक वही रहता है। + +**प्रश्न: क्या मैं आउटपुट फ़ॉर्मेट को प्लेन टेक्स्ट में बदल सकता हूँ?** +उत्तर: बिल्कुल। `format="json"` को `format="txt"` से बदलें और इंजन केवल निकाले गए टेक्स्ट वाला `.txt` फ़ाइल लिखेगा। + +**प्रश्न: मेरे स्कैन कई सब‑फ़ोल्डरों में हैं—क्या स्क्रिप्ट रीकर्स करेगा?** +उत्तर: हाँ। `batch_process` डिफ़ॉल्ट रूप से डायरेक्टरी ट्री को वॉक करता है। अगर आप फ्लैट आउटपुट चाहते हैं, तो `flatten=True` सेट करें (यदि लाइब्रेरी सपोर्ट करती है) या JSON फ़ाइल नामों को पोस्ट‑प्रोसेस करें। + +**प्रश्न: मैं गैर‑लैटिन स्क्रिप्ट्स को कैसे हैंडल करूँ?** +उत्तर: `OcrEngine` को भाषा पैरामीटर के साथ इनिशियलाइज़ करें, जैसे `OcrEngine(lang="spa+eng")`। बैच लूप को कोई बदलाव नहीं चाहिए। + +## प्रो टिप्स & सामान्य जाल + +- **बैच साइज महत्वपूर्ण है:** अगर आपको CPU स्पाइक्स दिखें, तो फ़ाइलों के बीच `time.sleep(0.1)` जोड़कर प्रोसेस को थ्रॉटल करें। +- **लॉगिंग:** `print` कॉल को Python के `logging` मॉड्यूल से बदलें ताकि टाइमस्टैम्प और एरर लेवल कैप्चर हो सके। +- **फ़ाइल नाम टकराव:** अगर दो स्कैन का बेस नेम समान है लेकिन अलग‑अलग सब‑फ़ोल्डर में हैं, तो JSON फ़ाइलें एक‑दूसरे को ओवरराइट कर देंगी। आउटपुट नेम में रिलेटिव पाथ का हैश जोड़ें ताकि टकराव न हो। +- **मेमोरी लीक:** कुछ OCR बैक‑एंड नेटिव रिसोर्सेज़ को पकड़ कर रखते हैं। यदि लाइब्रेरी क्लीन‑अप मेथड देती है तो स्क्रिप्ट के अंत में `ocr_engine.close()` कॉल करें। + +## पूर्ण स्क्रिप्ट – कॉपी & पेस्ट के लिए तैयार + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**अपेक्षित कंसोल आउटपुट** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +आप किसी भी फ़ाइल को `json_output` में टेक्स्ट एडिटर से खोलकर या Python में लोड करके JSON की पुष्टि कर सकते हैं: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +आपको कंसोल में कच्चा OCR‑निकाला गया टेक्स्ट प्रिंट हुआ दिखेगा। + +## निष्कर्ष + +हमने अभी **कैसे बैच OCR** करके स्कैन की गई इमेज की पूरी डायरेक्टरी को प्रोसेस किया और **स्कैन से टेक्स्ट** को साफ़, मशीन‑रीडेबल JSON फ़ाइलों में निकाला। यह तरीका जानबूझकर सरल है: इंजन को एक बार सेट‑अप करें, फ़ोल्डर की ओर इशारा करें, और लाइब्रेरी को भारी काम करने दें। अब आप आगे कर सकते हैं: + +- JSON को प्लग‑इन करें + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/hindi/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..d7f3c41c7 --- /dev/null +++ b/ocr/hindi/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-04-26 +description: OCR को जल्दी और भरोसेमंद तरीके से कैसे बनाएं। छवि से टेक्स्ट निकालना, + OCR के लिए छवि लोड करना, और कस्टम शब्दकोश के साथ PNG पर OCR चलाना सीखें। +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: hi +og_description: Python में OCR कैसे बनाएं और छवि से टेक्स्ट निकालें। यह गाइड दिखाता + है कि OCR के लिए छवि कैसे लोड करें, PNG पर OCR चलाएँ, और एक कस्टम शब्दकोश का उपयोग + करें। +og_title: Python में OCR कैसे बनाएं – तेज़ टेक्स्ट निष्कर्षण +tags: +- OCR +- Python +- Image Processing +title: Python में OCR कैसे बनाएं – छवि से टेक्स्ट निकालें +url: /hi/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python में OCR कैसे बनाएं – चरण‑दर‑चरण गाइड + +क्या आपने कभी सोचा है **कैसे OCR बनाया जाए** जो आपके स्कैन किए गए PDFs, स्क्रीनशॉट या हाथ से लिखे नोट्स को पढ़ सके? आप अकेले नहीं हैं। कई वास्तविक‑दुनिया प्रोजेक्ट्स में हमें *इमेज से टेक्स्ट निकालना* पड़ता है, लेकिन बॉक्स से बाहर के इंजन अक्सर डोमेन‑स्पेसिफिक शब्दों पर अटक जाते हैं। + +इस ट्यूटोरियल में आप एक पूर्ण, चलाने योग्य उदाहरण देखेंगे जो OCR के लिए इमेज लोड करता है, एक कस्टम डिक्शनरी लागू करता है, और अंत में **PNG फ़ाइलों पर OCR चलाता** है। अंत तक आप किसी भी इमेज से टेक्स्ट निकाल सकेंगे और इंजन को अपनी शब्दावली के अनुसार अनुकूलित कर सकेंगे। + +## इस ट्यूटोरियल में क्या कवर किया गया है + +हम हर एक आवश्यक कदम को विस्तार से बताएंगे: + +* छोटे लेकिन शक्तिशाली `aocr` पैकेज को इंस्टॉल करना (या कोई भी संगत लाइब्रेरी)। +* **कस्टम डिक्शनरी** कॉन्फ़िगर करना ताकि `aspocorp` या `licensekey` जैसे शब्द पहचाने जाएँ। +* **OCR के लिए इमेज लोड करना**, चाहे वह PNG, JPEG या स्कैन किया गया PDF पेज हो। +* OCR प्रक्रिया चलाना और परिणाम प्रिंट करना। + +कोई बाहरी डॉक्यूमेंटेशन लिंक नहीं, सिर्फ एक स्व-समावेशी समाधान जिसे आप आज ही कॉपी‑पेस्ट करके चला सकते हैं। + +### पूर्वापेक्षाएँ + +* Python 3.8 या उससे नया (कोड f‑strings का उपयोग करता है)। +* कमांड लाइन की बुनियादी समझ – आपको कुछ `pip install` कमांड टाइप करनी होगी। +* एक इमेज फ़ाइल (`technical_doc.png` उदाहरण में) जिसे आप रेफ़रेंस कर सकें। + +यदि आप ये तीन बातें पूरी करते हैं, तो आप तैयार हैं। + +--- + +## चरण 1: OCR लाइब्रेरी इंस्टॉल करें + +पहले हमें एक OCR इंजन चाहिए जो प्रोग्रामेबल कॉन्फ़िगरेशन ऑब्जेक्ट को सपोर्ट करता हो। `aocr` पैकेज एक हल्का रैपर है एक नेटिव OCR इंजन के ऊपर और डेमो के लिए बहुत उपयुक्त है। + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Pro tip:** यदि आप Windows पर हैं और कंपाइलेशन एरर मिल रहा है, तो `pip install aocr‑binary` आज़माएँ जो प्री‑बिल्ट व्हील्स प्रदान करता है। + +### इस लाइब्रेरी को क्यों इंस्टॉल करें? + +`aocr` हमें सीधे `config` ऑब्जेक्ट तक पहुंच देता है जहाँ हम **कस्टम डिक्शनरी** इन्जेक्ट कर सकते हैं। यही वह गुप्त मसाला है जो निचे की शब्दावली पर सटीकता बढ़ाता है। + +--- + +## चरण 2: OCR इंजन इंस्टेंस बनाएं और कस्टम डिक्शनरी जोड़ें + +अब हम इंजन को शुरू करते हैं और उसे बताते हैं कि किन शब्दों को ज्ञात माना जाए। + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### कस्टम डिक्शनरी क्यों महत्वपूर्ण है + +स्टैंडर्ड OCR मॉडल सामान्य कॉर्पोरा पर प्रशिक्षित होते हैं। जब मॉडल को “aspocorp” दिखता है, तो वह इसे “aspo corp” में विभाजित कर सकता है या अक्षर ही छोड़ सकता है। कस्टम लिस्ट फीड करके हम रिकग्नाइज़र को ठीक वही स्पेलिंग देने के लिए बायस करते हैं, जिससे पोस्ट‑प्रोसेसिंग का काम काफी घट जाता है। + +--- + +## चरण 3: वह इमेज लोड करें जिसे आप प्रोसेस करना चाहते हैं + +यहीं पर हम **OCR के लिए इमेज लोड** करते हैं। `Image.load` मेथड एक पाथ स्ट्रिंग लेता है और फ़ाइल टाइप को स्वचालित रूप से पहचान लेता है। + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Edge case:** यदि आपका स्रोत मल्टी‑पेज PDF है, तो पहले प्रत्येक पेज को PNG में बदलें (जैसे `pdf2image` से) और उन्हें एक‑एक करके इंजन को दें। + +### बेहतर इमेज क्वालिटी के टिप्स + +* रिज़ॉल्यूशन कम से कम 300 dpi रखें। +* इमेज को सीधा रखें; आवश्यक हो तो `Pillow` से रोटेट करें। +* रंगीन स्कैन को ग्रेस्केल में बदलें ताकि शोर कम हो। + +--- + +## चरण 4: PNG फ़ाइल पर OCR प्रक्रिया चलाएँ + +इंजन कॉन्फ़िगर हो गया और इमेज लोड हो गई, अब हम अंत में **PNG पर OCR चलाते** हैं। + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +`process()` कॉल एक ऑब्जेक्ट रिटर्न करता है जिसमें पहचाना गया टेक्स्ट, कॉन्फिडेंस स्कोर, और प्रत्येक शब्द के बाउंडिंग बॉक्स शामिल होते हैं। + +--- + +## चरण 5: पहचाना गया टेक्स्ट आउटपुट करें + +इंजन ने क्या पाया, इसे देखने का सबसे आसान तरीका है `text` एट्रिब्यूट को प्रिंट करना। + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### अपेक्षित आउटपुट + +यदि `technical_doc.png` में वाक्य *“The Aspocorp licensekey expires on 2025‑12‑31.”* है, तो कंसोल में यह दिखना चाहिए: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +ध्यान दें कि कस्टम डिक्शनरी ने ब्रांड नाम को ठीक रखा—जो एक साधारण OCR शायद बिगाड़ देता। + +--- + +## पूर्ण कार्यशील उदाहरण (कॉपी‑पेस्ट तैयार) + +नीचे पूरा स्क्रिप्ट दिया गया है, जिसे `run_ocr.py` के रूप में सेव करें। प्लेसहोल्डर पाथ को अपनी इमेज के लोकेशन से बदलें। + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +टर्मिनल से चलाएँ: + +```bash +python run_ocr.py +``` + +आपको कंसोल पर निकाला गया टेक्स्ट दिखेगा, बिल्कुल वही जैसा पहले के उदाहरण में था। + +--- + +## अक्सर पूछे जाने वाले प्रश्न (FAQ) + +| Question | Answer | +|----------|--------| +| **क्या मैं स्कैन किए गए PDF से टेक्स्ट निकाल सकता हूँ?** | हाँ। पहले प्रत्येक पेज को PNG (या TIFF) में बदलें, फिर इमेज को उसी स्क्रिप्ट में फीड करें। | +| **अगर मेरी इमेज PNG की बजाय JPEG है तो क्या होगा?** | `Image.load` मेथड JPEG, BMP, TIFF, और PNG को बॉक्स से बाहर सपोर्ट करता है। बस फ़ाइल एक्सटेंशन बदल दें। | +| **कम‑कॉन्ट्रास्ट स्कैन की सटीकता कैसे बढ़ाएँ?** | `Pillow` से प्री‑प्रोसेस करें – कॉन्ट्रास्ट बढ़ाएँ, बाइनराइज़ेशन लागू करें, या `opencv` से डेस्क्यू करें। | +| **क्या प्रत्येक शब्द के लिए कॉन्फिडेंस स्कोर प्राप्त करना संभव है?** | `ocr_result` में `words` शामिल हैं – प्रत्येक शब्द का `confidence` एट्रिब्यूट होता है जिसे आप इटररेट कर सकते हैं। | +| **क्या मैं इसे हेडलेस सर्वर पर चला सकता हूँ?** | बिल्कुल। `aocr` में कोई GUI डिपेंडेंसी नहीं है, इसलिए CI पाइपलाइन के लिए परफेक्ट है। | + +--- + +## अगले कदम और संबंधित विषय + +अब जब आप **OCR कैसे बनाएं** और **इमेज से टेक्स्ट निकालें** जानते हैं, तो आप आगे देख सकते हैं: + +* **प्रि‑प्रोसेसिंग तकनीकें** – `load image for OCR` सिर्फ पहला कदम है; `opencv` से डीनॉइज़ या शार्पन करें। +* **बैच प्रोसेसिंग** – PNG की डायरेक्टरी पर लूप चलाकर सर्चेबल आर्काइव बनाएं। +* **मल्टी‑लैंग्वेज सपोर्ट** – यदि आपको फ्रेंच या जर्मन दस्तावेज़ पढ़ने हैं तो इंजन में लैंग्वेज पैक्स जोड़ें। +* **Elasticsearch के साथ इंटीग्रेशन** – निकाले गए टेक्स्ट को इंडेक्स करें ताकि स्कैन किए गए एसेट्स पर फुल‑टेक्स्ट सर्च हो सके। + +इनमें से प्रत्येक एक्सटेंशन उसी कोर पैटर्न पर आधारित है जो हमने अभी कवर किया, इसलिए ट्रांज़िशन आसान रहेगा। + +--- + +## समापन + +कुछ ही मिनटों में हमने **OCR कैसे बनाएं** जिसका भरोसेमंद **इमेज से टेक्स्ट निकालना** (विशेषकर PNG) है, दिखाया और बताया कि **OCR के लिए इमेज लोड** कैसे करें, **कस्टम डिक्शनरी** लागू करें, और **PNG पर 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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/hindi/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..78659ad0e --- /dev/null +++ b/ocr/hindi/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: Python का उपयोग करके छवियों से OCR निकालना – एक Python OCR उदाहरण जो + दिखाता है कि OCR के लिए छवि कैसे लोड करें और रसीद से टेक्स्ट निकालें। +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: hi +og_description: Python का उपयोग करके छवियों से OCR निकालने का तरीका। एक Python OCR + उदाहरण सीखें, OCR के लिए छवि लोड करें, और मिनटों में रसीद से टेक्स्ट निकालें। +og_title: Python में OCR निकालना कैसे करें – पूर्ण गाइड +tags: +- OCR +- Python +- Image Processing +title: Python में OCR निकालने का तरीका – चरण-दर-चरण ट्यूटोरियल +url: /hi/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to extract ocr in Python – Complete Guide + +क्या आपने कभी **how to extract ocr** को धुंधली रसीद या स्कैन किए गए इनवॉइस से निकालने के बारे में सोचा है? आप अकेले नहीं हैं—डेवलपर्स अक्सर तब रुक जाते हैं जब उन्हें इमेज से साफ़, मशीन‑रीडेबल टेक्स्ट चाहिए होता है। अच्छी खबर? सिर्फ कुछ पंक्तियों के Python कोड से आप रसीद की तस्वीर को उच्च‑विश्वास, सर्चेबल टेक्स्ट में बदल सकते हैं। + +इस ट्यूटोरियल में हम एक **python ocr example** के माध्यम से दिखाएंगे कि **how to load image for ocr** कैसे किया जाता है, इंजन को चलाया जाता है, और केवल उन अक्षरों को रखा जाता है जिनका confidence 85 % से ऊपर है। अंत तक आप **extract text from receipt** इमेजेज़ को बिना दस्तावेज़ों की खोज या API पैरामीटर अनुमान लगाए निकाल पाएँगे। + +## What You’ll Need + +- Python 3.9 या नया (हम जो सिंटैक्स उपयोग करते हैं वह 3.8+ पर काम करता है) +- `aocr` पैकेज (या कोई भी OCR लाइब्रेरी जो `OcrEngine` क्लास प्रदान करती हो)। इसे इस तरह इंस्टॉल करें: + +```bash +pip install aocr +``` + +- एक सैंपल रसीद इमेज (`receipt.png`) जिसे आप किसी फ़ोल्डर में रख सकते हैं। +- एक टेक्स्ट एडिटर या IDE—VS Code, PyCharm, या यहाँ तक कि एक साधा नोटबुक भी चलेगा। + +बस इतना ही। कोई भारी‑फ़्रेमवर्क नहीं, कोई बाहरी सर्विस नहीं, सिर्फ शुद्ध Python। + +![High‑confidence OCR result – how to extract ocr from a receipt](/images/ocr-high-confidence.png) + +*Image alt text: Python OCR का उपयोग करके रसीद से OCR निकालने का तरीका* + +## Step 1 – Create the OCR Engine Instance (how to extract ocr) + +सबसे पहले हम एक OCR इंजन बनाते हैं। इसे ऐसे समझें जैसे वह दिमाग जो पिक्सेल को पढ़ेगा। + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Why?** `OcrEngine` को इंस्टैंशिएट करने से आपको एक नई कॉन्फ़िगरेशन ऑब्जेक्ट मिलती है। बाद में आप भाषा मॉडल, DPI सेटिंग्स, या प्री‑प्रोसेसिंग स्टेप्स को बदल सकते हैं—बिना कोर प्रोसेसिंग लूप को छुए। + +## Step 2 – Load the Image for OCR + +अब हम इंजन को उस इमेज की ओर इशारा करते हैं जिसे हम विश्लेषण करना चाहते हैं। यहाँ **load image for ocr** कीवर्ड काम आता है। + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tip:** यदि आपकी इमेज किसी अलग डायरेक्टरी में है, तो `os.path.join` का उपयोग करके प्लेटफ़ॉर्म‑इंडिपेंडेंट पाथ बनाएँ। + +**Why load the image this way?** `Image.load` हेल्पर फ़ाइल को ऐसे फॉर्मेट में पढ़ता है जिसे इंजन समझता है, और सामान्य फॉर्मेट्स (PNG, JPEG, TIFF) को स्वचालित रूप से हैंडल करता है। इस स्टेप को छोड़ने या रॉ बाइट्स देने से `ValueError` आएगा। + +## Step 3 – Run the OCR Process + +अब हम वास्तव में OCR चलाते हैं। `process` मेथड एक रिच रिज़ल्ट ऑब्जेक्ट लौटाता है जिसमें पहचाने गए सिम्बॉल, confidence स्कोर, और बाउंडिंग बॉक्स शामिल होते हैं। + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**What does `ocr_result` contain?** अधिकांश लाइब्रेरीज़ में यह शामिल होता है: + +- `text`: कच्चा संयोजित स्ट्रिंग। +- `symbol_confidences`: `(char, confidence)` ट्यूपल की लिस्ट। +- `boxes`: प्रत्येक अक्षर के लिए कोऑर्डिनेट्स (विज़ुअल डिबगिंग में उपयोगी)। + +प्रति‑अक्षर confidence तक पहुँच होना अगले स्टेप के लिए आवश्यक है। + +## Step 4 – Keep Only High‑Confidence Symbols (≥ 85 %) + +रसीद में अक्सर धब्बे, हल्की प्रिंट, या बैकग्राउंड शोर होते हैं। लो‑confidence सिम्बॉल को फ़िल्टर करने से डाउनस्ट्रीम पार्सिंग में काफी सुधार होता है। + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Why 85 %?** अनुभवजन्य रूप से, 0.85 के आसपास का थ्रेशोल्ड अधिकांश प्रिंटेड रसीदों के लिए recall और precision के बीच संतुलन बनाता है। यदि आपको नंबर गायब दिखें, तो थ्रेशोल्ड कम करें; यदि गड़बड़ टेक्स्ट मिले, तो इसे बढ़ाएँ। + +## Step 5 – Output the High‑Confidence Extracted Text + +अंत में, हम सफ़ाई किया हुआ स्ट्रिंग प्रिंट (या स्टोर) करते हैं। यही हमारे **extract text from receipt** वर्कफ़्लो का मुख्य भाग है। + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +आम तौर पर आउटपुट इस प्रकार दिखता है: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +अब आप इस स्ट्रिंग को CSV राइटर, डेटाबेस, या किसी भी डाउनस्ट्रीम एनालिटिक्स पाइपलाइन में फीड कर सकते हैं। + +## Full, Ready‑to‑Run Script + +नीचे पूरा कोड स्निपेट दिया गया है जिसे आप `ocr_receipt.py` में कॉपी‑पेस्ट करके तुरंत चला सकते हैं। + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +फ़ाइल सेव करें, सुनिश्चित करें कि `receipt.png` मौजूद है, और चलाएँ: + +```bash +python ocr_receipt.py +``` + +आपको कंसोल में साफ़ की गई रसीद टेक्स्ट दिखाई देगी। + +## Edge Cases & What‑If Scenarios + +| Situation | Suggested Fix | +|-----------|----------------| +| **Very low confidence across the board** | इमेज को प्री‑प्रोसेस करें: कंट्रास्ट बढ़ाएँ, ग्रेस्केल में बदलें, या डिनॉइज़िंग फ़िल्टर (`cv2.GaussianBlur`) लागू करें। | +| **Non‑Latin characters** | `OcrEngine` को भाषा मॉडल पास करें (उदाहरण: `ocr_engine.language = "spa"` स्पेनिश के लिए)। | +| **Multiple receipts in one image** | पूरी इमेज पर OCR चलाएँ, फिर परिणाम को रेगुलर एक्सप्रेशन से विभाजित करें जो `\n\n+` (डबल लाइन ब्रेक) को पहचानता हो। | +| **Need the raw OCR text as well** | डिबगिंग के लिए फ़िल्टर किए हुए संस्करण के साथ `ocr_result.text` भी रखें। | + +इन विविधताओं से आपका **how to use OCR** ज्ञान सबसे सरल केस से आगे बढ़ता है। + +## Common Pitfalls (And How to Avoid Them) + +- **Forgetting to install the library** – `pip install aocr` को इम्पोर्ट करने से पहले सफलतापूर्वक चलना चाहिए। +- **Using the wrong path separator** on Windows (`\` vs `/`). `os.path.join` का उपयोग करें। +- **Hard‑coding the confidence threshold** without testing – पहले कुछ रसीदों पर तेज़ विज़ुअल चेक ज़रूर करें। +- **Ignoring Unicode normalisation** – कुछ रसीदों में विशेष डैश कैरेक्टर होते हैं; आउटपुट को स्टोर करने से पहले `unicodedata.normalize('NFKC', text)` चलाएँ। + +## Next Steps – Going Beyond the Basics + +अब जब आप एकल रसीद से **how to extract ocr** डेटा निकालना जानते हैं, तो आप आगे कर सकते हैं: + +1. **Batch process a folder of receipts** – सभी PNG/JPG फ़ाइलों पर लूप चलाएँ और प्रत्येक परिणाम को CSV में लिखें। +2. **Integrate with a database** – `high_confidence_text` को SQLite में स्टोर करें ताकि तेज़ लुक‑अप हो सके। +3. **Apply natural‑language parsing** – रेगेक्स या `dateutil` का उपयोग करके डेट, टोटल, और टैक्स एंपाउंट निकालें। +4. **Experiment with alternative libraries** – `pytesseract`, `easyocr`, या क्लाउड सर्विसेज़ (Google Vision, Azure OCR) को आज़माएँ यदि आपको मल्टी‑लिंगुअल सपोर्ट या उच्च सटीकता चाहिए। + +इन सभी टॉपिक्स में हमारे सेकेंडरी कीवर्ड्स स्वाभाविक रूप से शामिल होते हैं: *python ocr example*, *extract text from receipt*, *load image for ocr*, और *how to use OCR*। + +## Conclusion + +हमने एक पूर्ण **python ocr example** के माध्यम से दिखाया कि **how to extract ocr** टेक्स्ट को रसीद इमेज से कैसे निकाला जाए, लो‑confidence सिम्बॉल को फ़िल्टर किया जाए, और साफ़ परिणाम आउटपुट किया जाए। स्टेप्स सरल हैं, कोड स्वयं‑समाहित है, और यह तरीका बड़े प्रोजेक्ट्स में आसानी से अनुकूलित किया जा सकता है। + +अपनी रसीदों के साथ इसे आज़माएँ, confidence थ्रेशोल्ड को समायोजित करें, और फिर बैच प्रोसेसिंग की ओर बढ़ें। यदि आपको कोई अजीब चीज़ मिलती है—जैसे धुंधला लोगो या अनोखा फ़ॉन्ट—तो ऊपर दिए गए एज़‑केस टिप्स याद रखें। 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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/hindi/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..f132deeb4 --- /dev/null +++ b/ocr/hindi/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-04-26 +description: 'Python में OCR कैसे करें: बुनियादी OCR उदाहरण का उपयोग करके छवि से टेक्स्ट + निकालना और TIFF फ़ाइल को पढ़ना सीखें। तेज़, चलाने योग्य कोड शामिल है।' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: hi +og_description: 'Python में OCR कैसे करें: एक चरण‑दर‑चरण मार्गदर्शिका जो दिखाती है + कि छवि से टेक्स्ट कैसे निकालें, Python में TIFF फ़ाइल कैसे पढ़ें, और सरल, चलाने + योग्य स्क्रिप्ट के साथ स्कैन की गई छवि का टेक्स्ट कैसे परिवर्तित करें।' +og_title: Python में OCR कैसे करें – टेक्स्ट निकालने के लिए बुनियादी OCR उदाहरण +tags: +- OCR +- Python +- Image Processing +title: Python में OCR कैसे करें – टेक्स्ट निकालने के लिए बेसिक OCR उदाहरण +url: /hi/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# पायथन में OCR कैसे करें – टेक्स्ट निकालने के लिए बेसिक OCR उदाहरण + +क्या आपने कभी सोचा है **पायथन में OCR कैसे करें** जब आपके डेस्क पर एक स्कैन किया हुआ TIFF फ़ाइल पड़ी हो? आप अकेले नहीं हैं जो कई इमेज फ़ाइलों को देख कर पूछ रहे हैं, “इससे शब्द कैसे निकालूँ?” अच्छी खबर यह है कि सही लाइब्रेरी और कुछ स्पष्ट चरणों के साथ तस्वीर को साधारण टेक्स्ट में बदलना बहुत आसान है। + +इस ट्यूटोरियल में हम एक **बेसिक OCR उदाहरण** के माध्यम से चलेंगे जो एक TIFF फ़ाइल पढ़ता है, टेक्स्ट निकालता है, और उसे कंसोल में प्रिंट करता है। अंत तक आप बिल्कुल जान पाएँगे कि **इमेज फ़ाइल से टेक्स्ट कैसे निकालें**, TIFF फ़ॉर्मेट की ख़ासियतों को कैसे संभालें, और यदि आपको **स्कैन किए गए इमेज टेक्स्ट को** कुछ अधिक उपयोगी में बदलना हो तो क्या समायोजन करना है। कोई छुपा जादू नहीं—सिर्फ सीधा‑सादा पायथन कोड जिसे आप आज़ ही कॉपी‑पेस्ट करके चला सकते हैं। + +## आपको क्या चाहिए + +शुरू करने से पहले सुनिश्चित करें कि आपके पास हैं: + +- Python 3.9+ स्थापित (नवीनतम स्थिर संस्करण सबसे अच्छा है)। +- एक pip‑installable OCR लाइब्रेरी। इस गाइड में हम एक काल्पनिक `aocr` पैकेज का उपयोग करेंगे जो लोकप्रिय टूल्स जैसे Tesseract की नकल करता है; बाद में आप इसे `pytesseract` या `easyocr` से बदल सकते हैं। +- एक TIFF इमेज जिसे आप प्रोसेस करना चाहते हैं – इसे `input.tiff` नाम दें और उस फ़ोल्डर में रखें जिसका आप कोड में रेफ़रेंस देंगे। +- कमांड लाइन की बुनियादी जानकारी (सिर्फ पैकेज इंस्टॉल करने के लिए)। + +बस इतना ही। कोई भारी‑भारी डिपेंडेंसी नहीं, कोई Docker कंटेनर नहीं, सिर्फ कुछ ही लाइनों का कोड। + +## चरण 1 – डिपेंडेंसीज़ इंस्टॉल और इम्पोर्ट करें (पायथन में OCR कैसे करें) + +सबसे पहले OCR पैकेज प्राप्त करें। टर्मिनल खोलें और चलाएँ: + +```bash +pip install aocr +``` + +यदि आप वास्तविक लाइब्रेरी चाहते हैं, तो `aocr` को `pytesseract` से बदलें और Tesseract इंजन को अलग से इंस्टॉल करें। + +अब आवश्यक मॉड्यूल इम्पोर्ट करें। `pathlib` से `Path` क्लास फ़ाइल पाथ्स को विभिन्न ऑपरेटिंग सिस्टम्स पर सहजता से हैंडल करने का साफ़ तरीका देता है। + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*`Path` क्यों उपयोग करें?* क्योंकि यह स्लैश (`/` बनाम `\`) को एब्स्ट्रैक्ट कर देता है और आपको डायरेक्टरीज़ को जोड़ने में OS की परवाह नहीं करनी पड़ती। यह छोटा सा विवरण बाद में स्क्रिप्ट को CI सर्वर पर ले जाने पर सिरदर्द बचा सकता है। + +## चरण 2 – OCR इंजन का इंस्टेंस बनाएं (बेसिक OCR उदाहरण) + +अब OCR इंजन को इनिशियलाइज़ करें। `OcrEngine` को उस दिमाग़ की तरह समझें जो तस्वीर पढ़ेगा और अक्षर निकाल देगा। + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +अधिकांश OCR लाइब्रेरीज़ यहाँ भाषा, DPI, या कॉन्फिडेंस थ्रेशहोल्ड जैसे पैरामीटर को ट्यून करने की अनुमति देती हैं। इस **बेसिक OCR उदाहरण** में हम डिफ़ॉल्ट सेटिंग्स ही रखेंगे, लेकिन बाद में `ocr_engine.config` को एक्सप्लोर करके मल्टी‑लैंग्वेज डॉक्यूमेंट्स को हैंडल कर सकते हैं। + +## चरण 3 – अपना TIFF इमेज लोड करें (पायथन में TIFF फ़ाइल पढ़ें) + +यहीं पर **पायथन में TIFF फ़ाइल पढ़ें** वाला भाग आता है। TIFF मल्टी‑पेज हो सकता है, लेकिन `Image.load` डिफ़ॉल्ट रूप से पहला पेज ले लेता है—सिंगल‑पेज स्कैन के लिए एकदम सही। + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +`"YOUR_DIRECTORY"` को उस वास्तविक फ़ोल्डर से बदलें जहाँ `input.tiff` रखा है। यदि आप नहीं जानते कि स्क्रिप्ट कहाँ चल रही है, तो `Path.cwd()` वर्तमान वर्किंग डायरेक्टरी प्रिंट करता है—पाथ समस्याओं को डिबग करने में मददगार। + +## चरण 4 – OCR प्रोसेस चलाएँ (इमेज से टेक्स्ट निकालें) + +अब जादू शुरू होता है। `process()` को कॉल करने से इमेज OCR पाइपलाइन से होकर गुजरती है और एक रिज़ल्ट ऑब्जेक्ट रिटर्न होता है। + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +बैकग्राउंड में इंजन इमेज को ग्रेस्केल में बदल सकता है, थ्रेशहोल्ड लागू कर सकता है, और उसे न्यूरल नेटवर्क में फीड कर सकता है। आपको इन स्टेप्स को मैनेज करने की जरूरत नहीं; लाइब्रेरी यह सब आपके लिए कर देती है। + +## चरण 5 – पहचाना गया टेक्स्ट प्रिंट करें (स्कैन किए गए इमेज टेक्स्ट को बदलें) + +अंत में, टेक्स्ट आउटपुट करें। वास्तविक प्रोजेक्ट्स में आप इसे फ़ाइल या डेटाबेस में लिख सकते हैं, लेकिन प्रिंट करने से उदाहरण साफ़ रहता है। + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +स्क्रिप्ट चलाने पर आपको कुछ इस तरह का आउटपुट दिखना चाहिए: + +``` +Hello, world! +This is a sample scanned document. +``` + +यदि आउटपुट गड़बड़ दिखे, तो सुनिश्चित करें कि स्रोत इमेज साफ़ है और OCR भाषा टेक्स्ट से मेल खाती है। + +## पूर्ण कार्यशील स्क्रिप्ट + +सब कुछ मिलाकर, यहाँ पूरा, तैयार‑टू‑रन प्रोग्राम है: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### अपेक्षित आउटपुट + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +यदि आपको **स्कैन किए गए इमेज टेक्स्ट को** एक सर्चेबल PDF में बदलना है, तो `ocr_result.text` को `reportlab` जैसे PDF जेनरेटर में पाइप कर सकते हैं—पर यह एक अलग ट्यूटोरियल होगा। + +## सामान्य समस्याएँ एवं प्रो टिप्स + +- **कम‑रिज़ॉल्यूशन स्कैन**: OCR 150 DPI से नीचे संघर्ष करता है। यदि आपका TIFF धुंधला है, तो Pillow (`Image.open(...).resize(...)`) से पहले अप‑सैंपल करें। +- **एकाधिक पेज**: मल्टी‑पेज TIFF के लिए `Image.load_multi_page()` (यदि लाइब्रेरी सपोर्ट करती है) पर इटरेट करें और परिणामों को जोड़ें। +- **भाषा समर्थन**: कई इंजन डिफ़ॉल्ट रूप से अंग्रेज़ी रखते हैं। उदाहरण के लिए स्पेनिश के लिए `ocr_engine.language = "spa"` सेट करें। +- **व्हाइटस्पेस हैंडलिंग**: OCR अक्सर अनावश्यक लाइन ब्रेक जोड़ देता है। `str.splitlines()` या रेगुलर एक्सप्रेशन से आउटपुट को साफ़ करें। +- **परफ़ॉर्मेंस**: बैच प्रोसेसिंग के लिए हर फ़ाइल के लिए नया `OcrEngine` बनाने की बजाय एक ही इंस्टेंस को री‑यूज़ करें। + +## उदाहरण का विस्तार + +अब जब आप एक इमेज के लिए **पायथन में OCR कैसे करें** में निपुण हो गए हैं, तो इन अगले कदमों पर विचार करें: + +1. **बैच प्रोसेसिंग** – एक डायरेक्टरी में मौजूद कई TIFF फ़ाइलों पर लूप चलाएँ और प्रत्येक परिणाम को `.txt` फ़ाइल में लिखें। +2. **Pandas के साथ इंटीग्रेशन** – निकाले गए टेक्स्ट को मेटाडेटा के साथ स्टोर करें ताकि तेज़ एनालिसिस हो सके। +3. **हाइब्रिड अप्रोच** – OCR को `spaCy` जैसे NLP लाइब्रेरी के साथ मिलाकर स्कैन किए गए इनवॉइस से एंटिटी (नाम, तारीख, राशि) निकालें। +4. **वैकल्पिक फ़ाइल फ़ॉर्मेट** – `Image.load` को `Image.from_bytes` से बदलें ताकि API या डेटाबेस से आने वाली इमेज को हैंडल किया जा सके। + +इन सभी का आधार **इमेज से टेक्स्ट निकालना** और **स्कैन किए गए इमेज टेक्स्ट को** मशीन‑रीडेबल फ़ॉर्मेट में बदलना है। + +## निष्कर्ष + +हमने एक स्पष्ट, एंड‑टू‑एंड **बेसिक OCR उदाहरण** के माध्यम से दिखाया कि **पायथन में OCR कैसे करें**, **पायथन में TIFF फ़ाइल पढ़ें**, और कैसे **इमेज से टेक्स्ट निकालें** केवल कुछ लाइनों के कोड से। स्क्रिप्ट स्व-निहित है, एरर हैंडलिंग शामिल है, और परिणाम सीधे प्रिंट करता है, जिससे यह किसी भी प्रोजेक्ट के लिए ठोस आधार बन जाता है जिसे स्कैन किए हुए दस्तावेज़ों को एडिटेबल टेक्स्ट में बदलना हो। + +बिना झिझक प्रयोग करें—OCR बैकएंड बदलें, प्री‑प्रोसेसिंग ट्यून करें, या आउटपुट को किसी डाउनस्ट्रीम वर्कफ़्लो में जोड़ें। जब आप भरोसेमंद रूप से **स्कैन किए गए इमेज टेक्स्ट को** सर्चेबल डेटा में बदल सकते हैं, तो संभावनाएँ असीम हैं। + +कोई सवाल है एज केस, लैंग्वेज पैक्स, या परफ़ॉर्मेंस ट्यूनिंग के बारे में? नीचे कमेंट करें, और हैप्पी कोडिंग! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/hindi/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..aff464d3c --- /dev/null +++ b/ocr/hindi/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-04-26 +description: स्कैन किए गए फ़ॉर्म पर OCR कैसे चलाएँ, शोर को कम करने के लिए छवि को कैसे + प्री‑प्रोसेस करें, और छवि से तेज़ी से टेक्स्ट निकालें। +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: hi +og_description: स्कैन किए गए दस्तावेज़ों पर OCR चलाना, छवियों को पूर्व-प्रसंस्करण + करना, शोर को कम करना और प्रभावी ढंग से पाठ निकालना। +og_title: OCR चलाना और छवियों का पूर्व‑प्रसंस्करण – त्वरित गाइड +tags: +- OCR +- image processing +- Python +title: OCR कैसे चलाएँ और छवियों को पूर्व‑प्रसंस्करण करें – स्कैन किए गए फ़ॉर्म से + टेक्स्ट निकालें +url: /hi/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# OCR चलाने का तरीका – छवियों से टेक्स्ट निकालने के लिए पूर्ण गाइड + +क्या आपने कभी सोचा है **OCR कैसे चलाएँ** एक गंदे स्कैन किए हुए फ़ॉर्म पर और साफ़, खोज योग्य टेक्स्ट प्राप्त करें? आप अकेले नहीं हैं। कई वास्तविक‑दुनिया प्रोजेक्ट्स में कच्ची छवि धब्बों, असमान रोशनी, और अन्य विचित्रताओं से भरी होती है जो बॉक्स से बाहर सीधे OCR को फँसा देती हैं। + +अच्छी खबर? सिर्फ कुछ पायथन लाइनों और एक स्मार्ट प्री‑प्रोसेसिंग पाइपलाइन के साथ, आप पहचान की सटीकता को नाटकीय रूप से बढ़ा सकते हैं, **शोर कम** कर सकते हैं, और आवश्यक शब्द निकाल सकते हैं। इस ट्यूटोरियल में हम हर कदम से गुजरेंगे—चित्र लोड करने से लेकर अंतिम स्ट्रिंग प्रिंट करने तक—ताकि आप एक तैयार‑स्निपेट प्राप्त करें जिसे आप इनवॉइस, रसीदें, या किसी भी स्कैन किए हुए दस्तावेज़ में अनुकूलित कर सकें। + +## आप क्या बनाएँगे + +- `OcrEngine` का एक इंस्टेंस जो अंतर्निहित OCR लाइब्रेरी से बात करता है। +- एक प्री‑प्रोसेसिंग चेन जो इमेज को **binarizes** करती है और **median blur** लागू करके धब्बों को स्मूद करती है। +- `process()` का एक सरल कॉल जो एक ऑब्जेक्ट रिटर्न करता है जिसमें `text` एक्सपोज़्ड है, यानी निकाला गया स्ट्रिंग। + +अंत तक आपके पास एक स्व-निहित स्क्रिप्ट होगी जिसे आप किसी भी इमेज फ़ाइल पर चला सकते हैं और तुरंत कंसोल में निकाला गया टेक्स्ट देख सकते हैं। + +## पूर्वापेक्षाएँ + +- Python 3.9+ (यहाँ उपयोग किया गया सिंटैक्स नवीनतम स्थिर रिलीज़ से मेल खाता है)। +- काल्पनिक `aocr` पैकेज – इसे Tesseract या किसी भी आधुनिक OCR इंजन के चारों ओर एक हल्का रैपर मानें। इसे `pip install aocr` से इंस्टॉल करें। +- एक स्कैन किया हुआ इमेज (`scanned_form.jpg`) जिसे आप किसी फ़ोल्डर में रख सकते हैं। + +यदि आप `pytesseract` जैसी वास्तविक OCR लाइब्रेरी उपयोग कर रहे हैं, तो आप `OcrEngine` को उपयुक्त क्लास से बदल सकते हैं—बाकी सब वैसा ही रहता है। + +![](how-to-run-ocr-example.png "OCR चलाने का उदाहरण जिसमें स्कैन किया हुआ फ़ॉर्म और निकाला गया टेक्स्ट दिखाया गया है") + +*Alt text: स्कैन किए हुए दस्तावेज़ पर OCR चलाएँ और निकाला गया टेक्स्ट देखें.* + +--- + +## चरण 1: OCR चलाने का तरीका – इंजन को इनिशियलाइज़ करें + +इंजन कुछ भी पढ़ने से पहले, हमें एक इंस्टेंस बनाना होगा। `OcrEngine` को उस दिमाग की तरह सोचें जो बाद में विज़ुअल डेटा की व्याख्या करेगा। + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **यह क्यों महत्वपूर्ण है:** इंजन को इंस्टैंशिएट करने से आंतरिक मॉडल सेट होते हैं, भाषा पैक लोड होते हैं, और रनटाइम एनवायरनमेंट तैयार होता है। इस चरण को छोड़ने से आमतौर पर `process()` कॉल करने पर `NoneType` त्रुटि आती है। + +--- + +## चरण 2: इमेज को प्री‑प्रोसेस कैसे करें – अपना स्कैन किया हुआ फ़ॉर्म लोड करें + +अब जब दिमाग तैयार है, हम उसे एक चित्र देते हैं। इमेज कोई भी फ़ॉर्मेट हो सकता है जो `aocr.Image` द्वारा समर्थित हो। + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **प्रो टिप:** विकास के दौरान एब्सोल्यूट पाथ्स का उपयोग करें ताकि स्क्रिप्ट किसी अलग कार्यशील डायरेक्टरी से चलने पर “file not found” जैसी आश्चर्यजनक समस्याओं से बचा जा सके। + +--- + +## चरण 3: शोर कम कैसे करें – बाइनराइज़ेशन और मीडियन ब्लर लागू करें + +कच्चे स्कैन में अक्सर बिखरे हुए डॉट्स, असमान बैकग्राउंड, या हल्की छायाएँ होती हैं। दो क्लासिक ट्रिक्स—**binarization** और **median blur**—बिना अक्षरों की किनारों को नुकसान पहुँचाए चीज़ों को साफ़ करती हैं। + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### गहराई से देखें + +- **Binarization**: `threshold=180` मान एल्गोरिदम को बताता है: “180 से अधिक उज्ज्वल चीज़ सफ़ेद हो जाती है; बाकी सब काला।” यदि आपका स्कैन बहुत डार्क या बहुत लाइट है तो इस संख्या को समायोजित करें। +- **Median Blur**: `2` का रेडियस मतलब फ़िल्टर 5×5 पिक्सेल विंडो देखता है और केंद्र पिक्सेल को मीडियन वैल्यू से बदलता है। यह अलग‑अलग धब्बों को स्मूद करता है जबकि अक्षरों की स्ट्रोक को बरकरार रखता है। + +> **एज केस:** यदि आपके दस्तावेज़ में रंगीन हाइलाइट्स हैं, तो साधा बाइनरी थ्रेशोल्ड उन्हें मिटा सकता है। ऐसे में `aocr.ImageFilters.adaptive_threshold()` का उपयोग करने पर विचार करें—यह इमेज के विभिन्न हिस्सों में स्थानीय रूप से कटऑफ़ को अनुकूलित करता है। + +--- + +## चरण 4: टेक्स्ट निकालें – OCR प्रक्रिया चलाएँ + +साफ़ इमेज हाथ में होने पर, हम अंत में इंजन को अपना जादू करने देते हैं। + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **अंदर क्या हो रहा है?** इंजन पिक्सेल मैट्रिक्स पर एक न्यूरल नेटवर्क (या लेगेसी पैटर्न मैचर) चलाता है, प्रत्येक पहचाने गए ग्लिफ़ को यूनिकोड कैरेक्टर्स में बदलता है, और उन्हें लाइनों व पैराग्राफ़ में जोड़ता है। + +--- + +## चरण 5: टेक्स्ट निकालें – परिणाम प्रिंट करें + +`ocr_result` ऑब्जेक्ट एक सुविधाजनक `text` एट्रिब्यूट एक्सपोज़ करता है। चलिए देखते हैं हमें क्या मिला। + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### अपेक्षित आउटपुट + +यदि स्कैन किया हुआ फ़ॉर्म इसमें शामिल है: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +आपको कुछ इस तरह दिखना चाहिए: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +ध्यान दें कि प्री‑प्रोसेसिंग चरण ने उन बिखरे हुए डॉट्स को हटा दिया जो पहले “Amount” को “Am0unt” बना रहे थे। यही है OCR से पहले **शोर कम करने** की शक्ति। + +--- + +## सामान्य समस्याएँ और उन्हें कैसे ठीक करें + +| लक्षण | संभावित कारण | त्वरित समाधान | +|---------|--------------|-----------| +| बिखरे हुए अक्षर (जैसे “@#%”) | इमेज बहुत डार्क या बहुत ब्राइट | `binarize()` में `threshold` को समायोजित करें; `adaptive_threshold` आज़माएँ। | +| शब्द गायब | शोर अभी भी मौजूद | `median_blur` के लिए `radius` बढ़ाएँ या `gaussian_blur` फ़िल्टर जोड़ें। | +| गलत भाषा (जैसे अंग्रेज़ी अक्षर चीनी में बदल गए) | गलत भाषा पैक लोड हुआ | `OcrEngine()` बनाते समय `language="eng"` पास करें यदि लाइब्रेरी इसका समर्थन करती है। | +| बड़ी फ़ाइलों पर धीमी प्रोसेसिंग | उच्च रिज़ॉल्यूशन | पहले इमेज को डाउनस्केल करें: बाइनराइज़ेशन से पहले `aocr.ImageFilters.resize(width=1200)`। | + +--- + +## आगे बढ़ें – अगले कदम और संबंधित विषय + +- **Batch processing**: ऊपर की लॉजिक को एक लूप में रैप करें ताकि दर्जनों फ़ाइलों को स्वचालित रूप से संभाला जा सके। +- **Structured output**: `ocr_result.text` पर रेगुलर एक्सप्रेशन का उपयोग करके तिथियों या राशियों जैसे फ़ील्ड निकालें। +- **Alternative libraries**: `aocr` को `pytesseract` से बदलें—कोड केवल इंजन इनिशियलाइज़ेशन चरण में बदलता है। +- **How to preprocess image for PDFs**: प्रत्येक PDF पेज को इमेज में बदलें, फिर वही पाइपलाइन लागू करें। + +ये एक्सटेंशन आपको समाधान को एक फ़ॉर्म से एंटरप्राइज़‑ग्रेड दस्तावेज़ इनजेशन पाइपलाइन तक स्केल करने की अनुमति देते हैं। + +--- + +## निष्कर्ष + +हमने **OCR कैसे चलाएँ** को शुरू से अंत तक कवर किया, **इमेज को प्री‑प्रोसेस कैसे करें** ताकि **शोर कम** हो, और **इमेज से टेक्स्ट निकालें** को एक साफ़, पुनरुत्पादनीय स्क्रिप्ट के साथ दिखाया। मुख्य निष्कर्ष? कुछ सरल फ़िल्टर—binarization और median blur—एक शोरयुक्त स्कैन को विश्वसनीय डेटा स्रोत में बदल सकते हैं, जिससे आपको मैन्युअल सफ़ाई में घंटे बचते हैं। + +अपने दस्तावेज़ों के साथ स्क्रिप्ट चलाएँ, थ्रेशोल्ड को समायोजित करें, और सटीकता बढ़ते देखें। जब आप तैयार हों, बैच प्रोसेसिंग का पता लगाएँ या आउटपुट को डेटाबेस में इंटीग्रेट करें ताकि खोज योग्य आर्काइव बन सके। कोडिंग का आनंद लें, और आपका 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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/hindi/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..dd98ff76e --- /dev/null +++ b/ocr/hindi/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-04-26 +description: Aspose OCR में लाइसेंस सेट करना और संक्षिप्त Python स्क्रिप्ट के साथ + लाइसेंस को वैध करना सीखें। परेशानी‑रहित सक्रियण के लिए चरण‑दर‑चरण निर्देशों का पालन + करें। +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: hi +og_description: Aspose OCR में लाइसेंस कैसे सेट करें और Python का उपयोग करके लाइसेंस + कैसे वैध करें। मिनटों में एक पूर्ण, चलाने योग्य उदाहरण प्राप्त करें। +og_title: Aspose OCR में लाइसेंस कैसे सेट करें – त्वरित पायथन गाइड +tags: +- Aspose OCR +- Python +- Licensing +title: Aspose OCR में लाइसेंस कैसे सेट करें – त्वरित Python गाइड +url: /hi/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR में लाइसेंस सेट करने का तरीका – त्वरित Python गाइड + +क्या आपने कभी Aspose OCR के लिए **लाइसेंस सेट करने** के बारे में सोचा है बिना सिर खुजलाए? आप अकेले नहीं हैं। अधिकांश डेवलपर्स पहली बार लाइब्रेरी की पूरी शक्ति को अनलॉक करने की कोशिश में अटक जाते हैं, और “Trial version” वॉटरमार्क से परेशान हो जाते हैं। अच्छी खबर यह है कि समाधान काफी सरल है, और आप इसे तुरंत सत्यापित कर सकते हैं। + +इस ट्यूटोरियल में हम **लाइसेंस सेट करने** *और* **लाइसेंस वैलिडेट करने** को एक छोटे Python स्क्रिप्ट के माध्यम से दिखाएंगे। अंत तक आपके पास एक कार्यशील उदाहरण होगा जो “License OK” प्रिंट करेगा, साथ ही कुछ टिप्स जो सामान्य गलतियों से बचाएंगे। + +## Prerequisites + +शुरू करने से पहले सुनिश्चित करें कि आपके पास है: + +- Python 3.8+ स्थापित हो (कोड 3.9, 3.10 और नए संस्करणों पर काम करता है)। +- एक सक्रिय Aspose OCR for Java (या .NET) लाइसेंस फ़ाइल – आमतौर पर `Aspose.OCR.Java.lic` नाम से। +- `asposeocr` पैकेज `pip install asposeocr` के माध्यम से स्थापित हो। +- कमांड लाइन से Python स्क्रिप्ट चलाने की बुनियादी जानकारी। + +सब कुछ तैयार है? बढ़िया—चलिए शुरू करते हैं। + +## How to Set License in Aspose OCR (Step 1) + +लाइसेंस सेट करना मूलतः तीन‑लाइन का ऑपरेशन है, लेकिन प्रत्येक लाइन का अपना उद्देश्य है। हम इसे तोड़‑कर समझाएंगे कि हम *क्यों* ऐसा करते हैं। + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**`License` को इम्पोर्ट क्यों करें?** +`License` क्लास वह गेटवे है जो Aspose OCR इंजन को बताता है कि आपने उत्पाद के लिए भुगतान किया है। बिना इंस्टेंस बनाए, लाइब्रेरी यह मानती रहेगी कि आप ट्रायल पर हैं। + +**`License` को इंस्टैंशिएट क्यों करें?** +इंस्टैंशिएट करने से आपको एक ऑब्जेक्ट (`license_obj`) मिलता है जो आपके `.lic` फ़ाइल का पाथ रख सकता है और उसे रनटाइम पर लागू कर सकता है। + +## How to Set License in Aspose OCR – Providing the License File + +अब हम ऑब्जेक्ट को डिस्क पर मौजूद वास्तविक लाइसेंस फ़ाइल की ओर इशारा करते हैं। + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Tips & tricks:** + +- **Absolute बनाम relative पाथ** – यदि आप स्क्रिप्ट को किसी अलग फ़ोल्डर से चलाते हैं, तो absolute पाथ (`C:/licenses/...`) “file not found” त्रुटियों को समाप्त करता है। +- **Environment variables** – पाथ को env var (`OCR_LICENSE_PATH`) में स्टोर करने से सीक्रेट्स स्रोत नियंत्रण से बाहर रहते हैं: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## How to Validate License – Making Sure It Worked + +लाइसेंस सेट करना केवल आधा काम है; आपको यह पुष्टि करनी होगी कि लाइब्रेरी ने इसे स्वीकार किया है। यहाँ वैलिडेशन स्टेप काम आता है। + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +यदि लाइसेंस फ़ाइल गायब, भ्रष्ट या मेल नहीं खाती, तो `validate()` एक एक्सेप्शन उठाएगा। उस एक्सेप्शन को पकड़ने से आप समस्याओं को साफ़‑साफ़ रिपोर्ट कर सकते हैं। + +## Full Working Example (All Steps Combined) + +नीचे पूरा, तैयार‑से‑चलाने वाला स्क्रिप्ट है। इसे टर्मिनल से चलाएँ (`python set_license.py`) और आपको “License OK” प्रिंट होता दिखना चाहिए। + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Expected output** + +``` +License OK +``` + +यदि कुछ गड़बड़ होती है, तो आपको कुछ इस तरह दिखेगा: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +वह संदेश आपको ठीक‑ठीक बताता है कि क्या सुधारना है—कोई अनुमान नहीं लगाना पड़ेगा। + +## How to Validate License – Handling Common Edge Cases + +ऊपर की स्क्रिप्ट के साथ भी कुछ स्थितियाँ आपको उलझा सकती हैं: + +| स्थिति | क्या होता है | कैसे ठीक करें | +|-----------|--------------|------------| +| **फ़ाइल पाथ टाइपो** | `FileNotFoundError` from `set_license` | पाथ को दोबारा जांचें; डिबग करने के लिए `os.path.abspath()` का उपयोग करें। | +| **गलत फ़ाइल प्रकार** | Validation “Invalid license format” त्रुटि देता है | सुनिश्चित करें कि आप वह `.lic` फ़ाइल उपयोग कर रहे हैं जो आपके प्रोडक्ट एडिशन से मेल खाती है। | +| **समाप्त लाइसेंस** | Validation “License expired” त्रुटि देता है | Aspose सपोर्ट से लाइसेंस नवीनीकृत करें और फ़ाइल को बदलें। | +| **सीमित वातावरण में चलाना** (जैसे, AWS Lambda) | Permission त्रुटि | डायरेक्टरी को पढ़ने की अनुमति दें या लाइसेंस को डिप्लॉयमेंट पैकेज में एम्बेड करें। | + +Pro tip: यदि आप “file not found” और “invalid format” त्रुटियों में अंतर करना चाहते हैं तो `set_license` कॉल को अपने स्वयं के `try/except` ब्लॉक में रैप करें। + +## Visual Summary + +![Aspose OCR में लाइसेंस सेट करने का उदाहरण](/images/aspose-ocr-license.png "Aspose OCR में लाइसेंस सेट करने का उदाहरण") + +*स्क्रीनशॉट दिखाता है कि सफल सक्रियण के बाद स्क्रिप्ट “License OK” आउटपुट कर रही है।* + +## Common Pitfalls & Best Practices + +- **कभी भी अपनी लाइसेंस फ़ाइल को सार्वजनिक रेपो में कमिट न करें।** इसके बजाय environment variables या secret managers (GitHub Secrets, Azure Key Vault) का उपयोग करें। +- **जल्दी वैलिडेट करें।** `set_license` के तुरंत बाद `license_obj.validate()` रखने से OCR कार्य शुरू होने से पहले त्रुटियों का पता चलता है। +- **License ऑब्जेक्ट को पुन: उपयोग करें।** आपको प्रक्रिया में केवल एक बार लाइसेंस सेट करना होता है; बाद के OCR कॉल स्वचालित रूप से सक्रिय लाइसेंस का उपयोग करेंगे। +- **प्रोडक्शन में लाइसेंस पाथ (फ़ाइल नाम के बिना) लॉग करें** ताकि डिबगिंग में मदद मिले और वास्तविक फ़ाइल उजागर न हो। + +## Next Steps – Extending Your OCR Workflow + +अब जब आप **लाइसेंस सेट करने** और **लाइसेंस वैलिडेट करने** को जानते हैं, तो आप कोर OCR कार्यों की ओर बढ़ सकते हैं: + +- **इमेज कैसे पढ़ें** – `Image.load("sample.png")` +- **टेक्स्ट कैसे निकालें** – `ocr_engine.recognize(image)` +- **OCR विकल्प कैसे कॉन्फ़िगर करें** – भाषा, सटीकता आदि के लिए `OcrEngine` सेटिंग्स को समायोजित करें। + +इनमें से प्रत्येक विषय सफलतापूर्वक लाइसेंस प्राप्त इंजन पर आधारित है, इसलिए आप फिर कभी ट्रायल वॉटरमार्क नहीं देखेंगे। + +## Conclusion + +हमने Aspose OCR के लिए **लाइसेंस सेट करने** की पूरी प्रक्रिया को कवर किया, **लाइसेंस वैलिडेट करने** को दर्शाया, और आपको एक पूर्ण, चलाने योग्य स्क्रिप्ट दी जो “License OK” प्रिंट करती है। त्रुटियों को पहले से संभालकर और environment variables का उपयोग करके आप अपने एप्लिकेशन को सुरक्षित और मजबूत बनाते हैं। + +OCR, लाइसेंसिंग, या Aspose को बड़े पाइपलाइन में इंटीग्रेट करने के बारे में और प्रश्न हैं? टिप्पणी छोड़ें, और कोडिंग का आनंद लें! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hindi/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/hindi/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..5ee65cb5d --- /dev/null +++ b/ocr/hindi/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: स्कैन किए गए PDF पर OCR का उपयोग कैसे करें, PDF से टेक्स्ट निकालें, PDF + पर OCR चलाएँ, और कुछ चरणों में स्कैन किए गए PDF को खोज योग्य फ़ाइलों में बदलें। +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: hi +og_description: 'Python में OCR का उपयोग कैसे करें: PDF से टेक्स्ट निकालना सीखें, + PDF पर OCR चलाएँ, और स्कैन किए गए PDF को खोज योग्य दस्तावेज़ों में बदलें।' +og_title: OCR का उपयोग कैसे करें – PDF से टेक्स्ट निकालने के लिए त्वरित गाइड +tags: +- OCR +- Python +- PDF +- Text Extraction +title: OCR का उपयोग कैसे करें – Python के साथ PDF से टेक्स्ट निकालें +url: /hi/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# OCR का उपयोग कैसे करें – Python के साथ PDF से टेक्स्ट निकालें + +क्या आप कभी सोचते रहे हैं **how to use OCR** को स्कैन किए गए कॉन्ट्रैक्ट, रसीद, या ईबुक से टेक्स्ट निकालने के लिए? आप अकेले नहीं हैं। कई वास्तविक‑दुनिया प्रोजेक्ट्स में प्राप्त PDF सिर्फ एक इमेज होती है, और OCR के बिना आप उसकी सामग्री को सर्च, इंडेक्स या विश्लेषण नहीं कर सकते। + +इस ट्यूटोरियल में हम एक पूर्ण, चलाने योग्य उदाहरण के माध्यम से दिखाएंगे **how to use OCR**, **extract text from PDF**, और क्यों आपको **convert scanned PDF** फ़ाइलों को सर्चेबल डॉक्यूमेंट्स में बदलना चाहिए। हम **loading PDF as image** की बारीकियों को भी कवर करेंगे ताकि OCR इंजन हर पेज को स्पष्ट रूप से देख सके। + +> **त्वरित पूर्वावलोकन:** अंत तक आपके पास एक स्क्रिप्ट होगी जो मल्टी‑पेज PDF को लोड करती है, प्रत्येक पेज पर OCR चलाती है, और पहचाने गए टेक्स्ट को प्रिंट करती है – कोई बाहरी सेवा आवश्यक नहीं। + +## आपको क्या चाहिए + +- Python 3.9+ (कोई भी हालिया संस्करण काम करेगा) +- `aocr` पैकेज (या कोई भी संगत OCR लाइब्रेरी जो `OcrEngine` और `Image.load` प्रदान करती हो) +- एक स्कैन किया हुआ PDF फ़ाइल जिसे आप प्रोसेस करना चाहते हैं (उदाहरण के लिए `contract.pdf`) +- एक मध्यम मात्रा में RAM (≈ 200 MB प्रति 100‑पेज PDF आमतौर पर ठीक रहता है) + +यदि आपने अभी तक OCR लाइब्रेरी इंस्टॉल नहीं की है, तो चलाएँ: + +```bash +pip install aocr +``` + +> **Pro tip:** डिपेंडेंसीज़ को व्यवस्थित रखने के लिए एक वर्चुअल एनवायरनमेंट का उपयोग करें। + +## चरण 1: PDF को इमेज के रूप में लोड करें – पहेली का पहला टुकड़ा + +किसी भी OCR के होने से पहले, PDF को एक इमेज के रूप में प्रस्तुत किया जाना चाहिए। यहाँ पर द्वितीयक कीवर्ड **load pdf as image** काम आता है। + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Why this matters:* `aocr.Image.load` आंतरिक रूप से प्रत्येक PDF पेज को एक बिटमैप में रास्टराइज़ करता है जिसे OCR इंजन समझ सकता है। यदि आप इस चरण को छोड़ देते हैं और कच्चा PDF फीड करते हैं, तो इंजन एक त्रुटि देगा क्योंकि वह पिक्सेल डेटा की अपेक्षा करता है, वेक्टर डेटा नहीं। + +> **Note:** पाथ एब्सोल्यूट या रिलेटिव हो सकता है। सुनिश्चित करें कि फ़ाइल पढ़ी जा सकती है; अन्यथा आपको `FileNotFoundError` मिलेगा। + +## चरण 2: PDF पर OCR चलाएँ – पिक्सेल को अक्षरों में बदलना + +अब जब PDF इमेज के रूप में मौजूद है, हम अंततः **run OCR on PDF** कर सकते हैं। नीचे दिया गया स्निपेट सभी पेजों को एक साथ प्रोसेस करता है: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*What’s happening under the hood?* `process_all_pages` रास्टराइज़्ड पेजों के माध्यम से लूप करता है, OCR मॉडल लागू करता है, और परिणाम ऑब्जेक्ट्स की एक सूची लौटाता है—प्रति पेज एक। प्रत्येक परिणाम में पहचाना गया टेक्स्ट, कॉन्फिडेंस स्कोर, और बाउंडिंग बॉक्स (यदि बाद में चाहिए) शामिल होते हैं। + +## चरण 3: PDF से टेक्स्ट निकालें – स्ट्रिंग्स को बाहर निकालना + +OCR परिणाम हाथ में होने पर, साधारण टेक्स्ट निकालना बहुत आसान हो जाता है। हम पेजों पर इटररेट करेंगे और आउटपुट प्रिंट करेंगे, जिससे द्वितीयक कीवर्ड **extract text from pdf** प्रदर्शित होगा। + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Expected output** (संक्षिप्त रूप में): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +यदि आपको टेक्स्ट एक ही स्ट्रिंग में चाहिए, तो बस कंकैटेनेट करें: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +अब आपने सफलतापूर्वक OCR का उपयोग करके **extracted text from PDF** कर लिया है। + +## चरण 4: स्कैन किए गए PDF को बदलें – इसे सर्चेबल बनाना + +कई डाउनस्ट्रीम टूल्स (जैसे Elasticsearch या SharePoint) एक सर्चेबल PDF की अपेक्षा करते हैं, न कि साधारण‑टेक्स्ट डंप की। आप OCR आउटपुट को मूल PDF में एम्बेड कर सकते हैं, जिससे प्रभावी रूप से **convert scanned PDF** को सर्चेबल संस्करण में बदल दिया जाता है। + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Why bother?* एक सर्चेबल PDF मूल लेआउट और इमेजेज़ को बरकरार रखता है, जबकि टेक्स्ट चयन और इंडेक्सिंग की सुविधा देता है—मानव और मशीन दोनों के लिए जीत‑जीत। + +## सामान्य समस्याएँ और किनारे के मामले + +### मेमोरी से बड़े मल्टी‑पेज PDFs + +यदि आपका PDF सैकड़ों पेजों का है, तो सभी को एक साथ लोड करना RAM को समाप्त कर सकता है। `aocr` लाइब्रेरी लेज़ी लोडिंग का समर्थन करती है: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +फिर पेजों को एक‑एक करके प्रोसेस करें: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### कम‑गुणवत्ता वाले स्कैन + +ब्लरी या लो‑कॉन्ट्रास्ट स्कैन पर OCR की सटीकता बहुत घट जाती है। इमेज को इंजन में फीड करने से पहले प्री‑प्रोसेसिंग पर विचार करें: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### भाषा समर्थन + +डिफ़ॉल्ट रूप से इंजन इंग्लिश मानता है। किसी अन्य भाषा में **run OCR on PDF** करने के लिए, भाषा कोड सेट करें: + +```python +ocr_engine.language = "spa" # Spanish +``` + +सुनिश्चित करें कि संबंधित भाषा मॉडल इंस्टॉल किया हुआ है। + +## पूर्ण कार्यशील उदाहरण + +सब कुछ मिलाकर, यहाँ एक स्व-निहित स्क्रिप्ट है जिसे आप `ocr_pdf.py` नाम की फ़ाइल में डाल सकते हैं और तुरंत चला सकते हैं: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +इसे इस तरह चलाएँ: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +आप कंसोल में टेक्स्ट प्रिंट होते देखेंगे, और यदि आपने `-o` दिया है, तो मूल फ़ाइल के बगल में एक सर्चेबल PDF बन जाएगा। + +## प्रो टिप्स और सर्वोत्तम प्रथाएँ + +- **Batch processing:** जब दर्जनों PDFs को हैंडल कर रहे हों, तो ऊपर दिया गया लॉजिक एक लूप में रैप करें और प्रत्येक फ़ाइल की सफलता/विफलता को लॉग करें। +- **Confidence filtering:** प्रत्येक `page_result` में एक कॉन्फिडेंस मीट्रिक शामिल होता है। कम कॉन्फिडेंस वाले पेजों को मैन्युअल रिव्यू के लिए डिस्कार्ड या फ़्लैग करें। +- **Parallelism:** यदि आपके CPU में कई कोर हैं, तो `concurrent.futures` का उपयोग करके पेजों को पैरलल में प्रोसेस करने पर विचार करें—सिर्फ मेमोरी उपयोग का ध्यान रखें। +- **Version lock:** `aocr` API विकसित हो सकता है। `requirements.txt` में संस्करण पिन करें (उदाहरण के लिए `aocr==2.3.1`) ताकि ब्रेकिंग चेंजेज़ से बचा जा सके। + +## निष्कर्ष + +हमने **how to use OCR** को **extract text from PDF**, **run OCR on PDF**, **load PDF as image**, और यहाँ तक कि **convert scanned PDF** को सर्चेबल फ़ॉर्मेट में बदलने तक कवर किया। कोड पूर्ण है, व्याख्याएँ *क्या* और *क्यों* दोनों को कवर करती हैं, और अब आपके पास किसी भी इमेज‑बेस्ड PDF प्रोजेक्ट के लिए एक पुन: उपयोग योग्य पैटर्न है। + +अब आगे क्या? निकाले गए टेक्स्ट को एक नेचुरल‑लैंग्वेज पाइपलाइन में फीड करें, सर्चेबल PDFs को Elasticsearch के साथ इंडेक्स करें, या Tesseract या Azure Computer Vision जैसे विभिन्न OCR बैक‑एंड्स के साथ प्रयोग करें। संभावनाएँ असीमित हैं, और टूल्स आपके हाथों में हैं। + +हैप्पी कोडिंग, और आपके PDFs हमेशा सर्चेबल रहें! + +![how to use OCR example](/images/ocr_workflow.png "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/hindi/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/hindi/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..e6594aa93 --- /dev/null +++ b/ocr/hindi/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Python में OCR के लिए छवि लोड करने हेतु थ्रेडिंग का उपयोग कैसे करें। + कॉलबैक, बैकग्राउंड थ्रेड और छवि लोडिंग के साथ असिंक्रोनस OCR प्रोसेसिंग को कुछ ही + चरणों में सीखें। +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: hi +og_description: Python में OCR के लिए इमेज लोड करने हेतु थ्रेडिंग का उपयोग कैसे करें। + यह गाइड कॉलबैक्स और बैकग्राउंड निष्पादन के साथ एक पूर्ण, चलाने योग्य उदाहरण दिखाता + है। +og_title: OCR के लिए इमेज लोड करने हेतु थ्रेडिंग का उपयोग कैसे करें +tags: +- Python +- Threading +- OCR +- Image Processing +title: OCR के लिए इमेज लोड करने हेतु थ्रेडिंग का उपयोग कैसे करें +url: /hi/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# थ्रेडिंग का उपयोग करके OCR के लिए इमेज लोड करना + +क्या आपने कभी सोचा है **थ्रेडिंग का उपयोग कैसे करें** OCR के लिए इमेज लोड करने के बारे में, बिना आपके ऐप को फ्रीज़ किए? यह वह स्थिति है जो तब आती है जब आप डेस्कटॉप स्कैनर, वेब सर्विस, या बड़ी तस्वीरों को प्रोसेस करने वाली साधारण स्क्रिप्ट बना रहे हों। अच्छी खबर? कुछ पंक्तियों का Python कोड और सही थ्रेडिंग पैटर्न आपके UI को तेज़ रखेगा जबकि OCR इंजन अपना जादू चलाएगा। + +इस ट्यूटोरियल में हम एक पूर्ण, अंत‑से‑अंत उदाहरण के माध्यम से चलेंगे: बड़ी PNG लोड करना, बैकग्राउंड थ्रेड पर OCR शुरू करना, और परिणाम को एक कॉलबैक के साथ हैंडल करना। अंत तक आप न केवल **थ्रेडिंग का उपयोग कैसे करें** बल्कि **OCR के लिए इमेज लोड करना** भी एक साफ़, पुन: उपयोग योग्य तरीके से जानेंगे। + +## आपको क्या चाहिए + +- Python 3.9+ (हमारा सिंटैक्स किसी भी हालिया संस्करण पर काम करता है) +- `pillow` इमेज हैंडलिंग के लिए (`pip install pillow`) +- `pytesseract` Tesseract OCR के लिए एक हल्का रैपर है (`pip install pytesseract`) +- Tesseract OCR इंजन आपके मशीन पर इंस्टॉल होना चाहिए (डाउनलोड करें [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- एक बड़ी इमेज फ़ाइल जिसे आप प्रोसेस करना चाहते हैं (`large_image.png` इस गाइड में) + +कोई अतिरिक्त फ्रेमवर्क नहीं, कोई async/await नहीं—सिर्फ क्लासिक `threading` और एक कॉलबैक। + +## चरण 1: थ्रेडिंग मॉड्यूल इम्पोर्ट करें (बैकग्राउंड एक्सिक्यूशन के लिए आवश्यक) + +सबसे पहले हम `threading` मॉड्यूल को इम्पोर्ट करते हैं। यह हमें `Thread` क्लास देता है, जो किसी भी फ़ंक्शन को अलग OS थ्रेड में चलाने की अनुमति देता है। + +```python +import threading +``` + +*Why this matters*: यदि आप OCR को मुख्य थ्रेड पर चलाते हैं, तो आपका प्रोग्राम (विशेषकर GUI) OCR समाप्त होने तक फ्रीज़ हो जाएगा। कार्य को बैकग्राउंड थ्रेड को सौंपने से मुख्य थ्रेड UI को अपडेट करने, उपयोगकर्ता इनपुट संभालने, या अन्य कार्य शुरू करने के लिए मुक्त रहता है। + +## चरण 2: एक कॉलबैक परिभाषित करें जो OCR समाप्त होने पर कॉल किया जाएगा + +एक कॉलबैक बस एक फ़ंक्शन है जिसे कोई अन्य कोड भाग काम समाप्त होने पर कॉल करता है। यहाँ हम पहचाने गए टेक्स्ट को प्रिंट करेंगे, लेकिन आप इसे स्टोर कर सकते हैं, नेटवर्क पर भेज सकते हैं, या UI विजेट को अपडेट कर सकते हैं। + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Pro tip*: कॉलबैक को हल्का रखें। कॉलबैक के अंदर भारी प्रोसेसिंग थ्रेडिंग के उद्देश्य को नष्ट कर देती है क्योंकि यह अभी भी उस थ्रेड को ब्लॉक कर देगा जो इसे कॉल करता है (अक्सर मुख्य थ्रेड)। + +## चरण 3: वह इमेज लोड करें जिसे आप प्रोसेस करना चाहते हैं + +इमेज लोड करना OCR से अलग कार्य है, लेकिन यह समग्र वर्कफ़्लो का हिस्सा है। Pillow का उपयोग इसे बहुत आसान बनाता है। + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Why we do it here*: यदि इमेज बहुत बड़ी है, तो मुख्य थ्रेड पर लोड करने से पहले ही एक झटका लग सकता है। कई वास्तविक‑दुनिया के ऐप्स में आप लोडिंग को भी थ्रेड में ऑफ‑लोड करेंगे, लेकिन स्पष्टता के लिए हम इसे सिंक्रोनस रखते हैं। + +## चरण 4: एक छोटा OCR इंजन रैपर बनाएं + +मूल स्निपेट ने `engine.process_async` का उपयोग किया था। हम इसे एक छोटे क्लास के साथ नकल करेंगे जो आंतरिक रूप से एक थ्रेड शुरू करता है और समाप्त होने पर प्रदान किए गए कॉलबैक को कॉल करता है। + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Explanation*: +- `_run_ocr` भारी काम करता है। +- `process_async` एक `Thread` ऑब्जेक्ट बनाता है, इसे डेमन के रूप में मार्क करता है (ताकि इंटरप्रेटर थ्रेड चल रहा हो तो भी बाहर निकल सके), और इसे शुरू करता है। +- कॉलबैक को या तो OCR टेक्स्ट या एक एरर मैसेज मिलता है। + +## चरण 5: सब कुछ जोड़ें और OCR चलते समय अन्य काम करें + +अब हम पूरे फ्लो को व्यवस्थित करते हैं: इमेज लोड करना, इंजन को इंस्टैंशिएट करना, async OCR शुरू करना, और मुख्य थ्रेड को कुछ और काम से व्यस्त रखना (यहाँ हम बस एक संदेश प्रिंट करते हैं)। + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**अपेक्षित आउटपुट (संक्षिप्त रूप में):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +यदि OCR विफल हो जाता है, तो कॉलबैक टेक्स्ट के बजाय एक एरर मैसेज प्रिंट करेगा। + +--- + +## यह तरीका साधारण लूप से बेहतर क्यों काम करता है + +- **Responsiveness**: मुख्य थ्रेड कभी भी OCR कॉल पर ब्लॉक नहीं होता, जो बड़ी इमेज के लिए सेकंड ले सकता है। +- **Scalability**: आप कई `SimpleOcrEngine` इंस्टेंस बना सकते हैं, प्रत्येक अपने थ्रेड पर, जिससे इमेजों का बैच एक साथ प्रोसेस हो सके। +- **Separation of Concerns**: लोडिंग, प्रोसेसिंग, और परिणाम हैंडलिंग स्पष्ट रूप से अलग हैं, जिससे कोड का परीक्षण और रखरखाव आसान हो जाता है। + +## सामान्य pitfalls और उन्हें कैसे टालें + +| समस्या | क्या होता है | समाधान | +|---------|--------------|-----| +| थ्रेड को *daemon* के रूप में मार्क करना भूल जाना | मुख्य कार्य समाप्त होने के बाद स्क्रिप्ट लटक जाती है क्योंकि OCR थ्रेड अभी भी जीवित है। | एक्ज़िट करने से पहले `worker.daemon = True` सेट करें **या** थ्रेड को `join()` करें। | +| परिणाम के लिए ग्लोबल वेरिएबल का उपयोग बिना लॉक के | जब कई थ्रेड एक साथ लिखते हैं तो रेस कंडीशन डेटा को भ्रष्ट कर सकती है। | परिणाम को कॉलबैक के माध्यम से पास करें (जैसा हम करते हैं) या `queue.Queue` जैसे थ्रेड‑सेफ़ कंटेनर का उपयोग करें। | +| मुख्य थ्रेड पर बड़ी इमेज लोड करना | बैकग्राउंड OCR शुरू होने से पहले UI फ्रीज़ हो जाता है। | इमेज लोडिंग को भी थ्रेड पर ऑफ‑लोड करें, या लेज़ी लोडिंग तकनीकें उपयोग करें। | +| वर्कर थ्रेड के अंदर एक्सेप्शन को हैंडल न करना | अनहैंडल्ड एक्सेप्शन थ्रेड को चुपचाप समाप्त कर देती है, जिससे आपको कोई परिणाम नहीं मिलता। | `try/except` में OCR लॉजिक को रैप करें और एरर को कॉलबैक तक पहुंचाएँ। | + +## इस पैटर्न का विस्तार + +- **Progress Reporting**: OCR थ्रेड से मुख्य थ्रेड तक मध्यवर्ती प्रोग्रेस प्रतिशत पुश करने के लिए साझा `queue.Queue` का उपयोग करें। +- **Thread Pool**: बैच प्रोसेसिंग के लिए व्यक्तिगत `Thread` ऑब्जेक्ट्स को `concurrent.futures.ThreadPoolExecutor` से बदलें। +- **GUI Integration**: Tkinter या PyQt ऐप में, कॉलबैक को `after()` (Tkinter) या `QTimer.singleShot` (Qt) के साथ शेड्यूल करें ताकि UI अपडेट मुख्य थ्रेड पर हों। + +## पूर्ण कार्यशील उदाहरण (कॉपी‑पेस्ट तैयार) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/hongkong/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..c90f9c065 --- /dev/null +++ b/ocr/hongkong/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-04-26 +description: 使用 Python Aspose OCR 提取標題文字。學習如何快速且可靠地從圖像中提取特定區域的文字。 +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: zh-hant +og_description: 快速提取標題文字 OCR。本指南示範如何使用 Python Aspose OCR 僅需幾行程式碼即可提取特定區域文字。 +og_title: 使用 Python Aspose OCR 提取標題文字 – 完整教學 +tags: +- OCR +- Python +- Aspose +title: 使用 Python Aspose OCR 提取標題文字 – 逐步指南 +url: /zh-hant/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 提取標題文字 OCR – 完整 Python Aspose OCR 教程 + +是否曾需要從掃描的發票中 **extract header text OCR**,但又不想處理整頁?你並非唯一遇到此情況的人。在許多實務流程中,標題通常包含最關鍵的資訊——發票號碼、日期、供應商名稱——快速抽取它可以節省大量後續工作。 + +在本教程中,我們將展示一個即用即跑的解決方案,使用 **Python Aspose OCR** 函式庫 **extracts specific area text**。不會有模糊的外部文件參考,僅提供完整腳本、每行程式的清晰說明,以及您明天真的會用到的技巧。 + +## 您將學習的內容 + +- 如何安裝並匯入 Aspose OCR 套件(Python 版)。 +- 如何載入影像並定義 **region of interest (ROI)** 以分離標題。 +- 如何在該 ROI 上執行 OCR 引擎並取得乾淨的文字。 +- 常見陷阱(例如 DPI 不匹配)以及如何避免。 +- 預期的輸出樣式是什麼,以便您能驗證一切正常。 + +完成後,您即可將此程式碼嵌入任何需要 **extract header text OCR** 的發票、收據或任何具有可預測版面的文件中。 + +## 前置條件 + +- 已在機器上安裝 Python 3.8 或更新版本。 +- 有效的 Aspose OCR for Python 授權(免費試用可用於評估)。 +- 包含清晰標題區域的影像檔 (`invoice.png`)。 +- 對 Python 函式與檔案路徑有基本了解。 + +> **專業提示:** 若在低解析度掃描檔上測試,請在送入 Aspose OCR 前提升 DPI —— 這會顯著提升準確度。 + +--- + +## 步驟 1:安裝 Aspose OCR 套件 + +首先,將函式庫加入您的環境。官方套件名稱為 `aspose-ocr`。執行一次以下指令: + +```bash +pip install aspose-ocr +``` + +若使用虛擬環境(強烈建議),請在安裝前先啟動它。這可確保套件不會與其他專案衝突。 + +## 步驟 2:匯入必要類別並載入影像 + +現在我們將必要的類別匯入腳本,並載入發票影像。請注意使用 **full paths**;相對路徑亦可,但絕對路徑可在腳本於伺服器上執行時消除歧義。 + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **為何重要:** 只初始化一次 `OcrEngine`,並在多張影像間重複使用,比每次都建立新引擎更有效率。 + +## 步驟 3:定義標題區域 (ROI) + +標題通常位於頁面頂部,但其精確座標可能會有所不同。此處我們定義一個矩形 (`x`, `y`, `width`, `height`) 以覆蓋標題。請依文件版面調整數值。 + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **運作原理:** 呼叫 `set_roi` 後,OCR 引擎僅分析此矩形區域,顯著加快處理速度並減少頁面其他部分的雜訊。 + +## 步驟 4:套用 ROI 並執行 OCR + +現在我們指示引擎聚焦於標題區域,然後執行 OCR 程序。結果物件包含辨識出的文字以及其他中繼資料(信心分數、語言等)。 + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +若 OCR 失敗(例如不支援的影像格式),`ocr_result` 會是 `None`。加入簡易的防護條件可提升腳本的韌性: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## 步驟 5:取得並列印抽取的標題文字 + +最後,我們從結果物件中取出文字並顯示。您亦可將其寫入檔案或傳遞給其他函式以作進一步解析。 + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### 預期輸出 + +若一切設定正確,您應會看到類似以下的結果: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +若輸出呈現亂碼,請再次確認 ROI 座標,並確保來源影像具高對比度。 + +--- + +## 變體與邊緣案例 + +### 1. 單文件多個標題 + +有時 PDF 包含多頁,每頁都有自己的標題。可對每頁迴圈並依頁面調整 ROI: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. 處理傾斜掃描 + +若發票稍有旋轉,可在送入 Aspose OCR 前使用 OpenCV 先行前處理影像: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. 語言設定變更 + +Aspose OCR 能自動偵測語言,但您可強制使用英文以獲得更快的結果: + +```python +ocr_engine.language = "en" +``` + +--- + +## 完整範例 + +以下是完整腳本,您可直接複製貼上至名為 `extract_header.py` 的檔案。請記得將影像路徑替換為您自己的。 + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +執行此腳本應會輸出與前述相同的標題行。隨時調整 `roi` 數值以符合您的特定發票範本。 + +--- + +## 常見問題解答 + +**Q: 這能直接處理 PDF 嗎?** +A: 不是即時支援。需先將每頁 PDF 轉為影像(例如使用 `pdf2image`),再將 PNG/JPG 送入腳本。 + +**Q: 若我的標題同時包含商標與文字該怎麼辦?** +A: Aspose OCR 只聚焦於文字內容。若需辨識商標,可考慮使用其他影像辨識函式庫,如 `opencv` 或 `tesseract` 搭配自訂模型。 + +**Q: 免費試用有什麼限制?** +A: 試用版每月最多可處理 10 頁。若投入正式環境,請購買授權以解除限制並解鎖更高精度設定。 + +## 結論 + +您現在擁有一份 **完整、可作引用** 的 **extract header text OCR** 使用 **Python Aspose OCR** 的指南。教程涵蓋了從安裝到處理邊緣案例的全部內容,並提供可重複使用的函式,讓您可直接嵌入更大的工作流程中。 + +接下來,您可以探索 **extract specific area text** 用於頁腳或項目列等其他區域,或將此方法與 PDF 轉影像的轉換器結合,以自動化完整文件的流水線。可能性無窮——只要記得保持 ROI 座標精確,且影像具高解析度。 + +遇到複雜版面嗎?在留言區分享,我們會一起調整 ROI。祝程式開發愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/hongkong/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..0b2489b54 --- /dev/null +++ b/ocr/hongkong/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,213 @@ +--- +category: general +date: 2026-04-26 +description: 使用 Aspose OCR 在 Python 中從圖片提取文字。了解如何提取文字、將圖片轉換為文字,以及載入圖片進行 OCR,支援多語言。 +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: zh-hant +og_description: 即時從圖像提取文字。本指南示範如何提取文字、將圖像轉換為文字,以及使用 Aspose OCR 在 Python 中載入圖像進行 OCR。 +og_title: 使用 Python 從圖片提取文字 – 完整多語言 OCR 教程 +tags: +- OCR +- Python +- Aspose +title: 使用 Python 從圖像提取文字 – 多語言 OCR 指南 +url: /zh-hant/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 使用 Python 從圖像中提取文字 – 多語言 OCR 指南 + +是否曾需要**從圖像中提取文字**,卻不確定哪個函式庫能處理混合語言的頁面?你並不孤單。在許多實務應用中——例如發票處理、社交媒體監控或多語言文件歸檔——你會遇到同時包含拉丁字母與西里爾字母的圖片。 + +好消息是?使用 Aspose OCR for Python,你可以在幾行程式碼內**提取文字**、**將圖像轉換為文字**,以及**載入圖像進行 OCR**,同時讓引擎自動偵測語言。在本教學中,我們將逐步示範完整、可執行的範例,說明每一步的原因,並涵蓋你在實作過程中可能遇到的幾個邊緣案例。 + +> **學習成果** +> * 一個可直接執行的腳本,能從混合語言的 PNG 中提取文字。 +> * 了解如何在 Python 中設定多語言 OCR。 +> * 處理大型檔案、不同圖像格式以及除錯常見問題的技巧。 + +## 前置條件 + +- Python 3.8 或更新版本(程式碼使用 f‑strings)。 +- 已安裝 `asposeocr` 套件(`pip install asposeocr`)。 +- 一個圖像檔案(例如 `mixed_lang.png`),其中包含多種文字系統。 +- 具備 Python 匯入與物件導向 API 的基本概念。 + +不需要繁重的相依套件,也不需外部服務——只要一次 pip 安裝,即可開始使用。 + +--- + +## 步驟 1 – 安裝與匯入 Aspose OCR 函式庫 + +在我們能**載入圖像進行 OCR**之前,需要先安裝函式庫本身。此套件內含核心 OCR 引擎與輕量級的圖像載入器。 + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*為什麼這很重要*:匯入特定類別可保持命名空間整潔,讓後續程式碼更易讀。如果只匯入 `asposeocr`,則每次呼叫都必須加上前綴(`aocr.OcrEngine()`),會顯得雜亂。 + +## 步驟 2 – 建立 OCR 引擎並啟用多語言偵測 + +Aspose OCR 能自動推測圖像中出現的語言。將 `Language.AUTO` 設為偵測模式,可涵蓋拉丁文、西里爾文、阿拉伯文等多種語言。 + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*小技巧*:若事先知道語言,可指定 `Language.ENGLISH` 或 `Language.RUSSIAN` 以略提升效能。但對於真正的混合文件,使用 `AUTO` 是最安全的選擇。 + +## 步驟 3 – 載入要處理的圖像 + +這裡就是我們**載入圖像進行 OCR**的地方。Aspose 支援 PNG、JPEG、BMP、TIFF,甚至可將 PDF 頁面視為圖像載入。 + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **提示**:若圖像大小超過 2 MB,建議先行調整尺寸。大型圖像會增加記憶體使用,且可能拖慢偵測步驟。 + +## 步驟 4 – 執行 OCR 程序並取得結果 + +呼叫 `process()` 會完成繁重的工作:文字偵測、版面分析與語言解碼。 + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +回傳的 `ocr_result` 物件包含多個實用屬性: + +| Property | Description | +|----------|-------------| +| `text` | 辨識出的純文字字串(最常使用的欄位)。 | +| `confidence` | 整體信心水平(0‑100)。 | +| `lines` | `OcrLine` 物件的列表,包含位置資訊(對 PDF 特別有用)。 | + +## 步驟 5 – 顯示提取的文字 + +最後,我們將輸出列印到螢幕。實際應用中,你可能會將結果寫入資料庫,或傳遞給翻譯 API。 + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**預期輸出**(混合語言圖像的範例): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +如果看到亂碼,請確認圖像未損毀,且使用的是最新版本的 `asposeocr`(本文撰寫時為 v23.7)。 + +## 步驟 6 – 完整腳本(可直接複製貼上) + +將所有步驟整合在一起,可避免「程式碼從哪裡開始?」的困惑。將此檔案另存為 `multilingual_ocr.py`,並於命令列執行。 + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +執行指令: + +```bash +python multilingual_ocr.py +``` + +你應該會在主控台看到提取的字串。就這樣——只需幾行程式碼即可**將圖像轉換為文字**。 + +## 常見問題與邊緣案例處理 + +### 如果圖像中包含手寫文字呢? + +Aspose OCR 針對印刷文字進行最佳化。手寫文字通常需要專用模型(例如 Azure Read 或 Google Vision)。仍可嘗試 `Language.AUTO`,但預期信心較低。 + +### 如何提升噪點掃描的辨識準確度? + +1. 先行前處理圖像(二值化、去斑點)。 +2. 將 DPI 提升至至少 300 ppi 再送入引擎。 +3. 若圖像傾斜,明確設定 `ocr_engine.config.deskew = True`。 + +```python +ocr_engine.config.deskew = True +``` + +### 能否直接從 PDF 提取文字,而不先轉換為圖像? + +可以——Aspose OCR 能直接開啟 PDF 頁面: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +只要記得每一頁在內部都會被視為圖像處理,因此相同的品質考量仍然適用。 + +## 結論 + +現在你已擁有一套完整、端到端的流程,能使用 Aspose OCR 在 Python 中**從圖像中提取文字**,並支援多語言。此腳本示範了如何**載入圖像進行 OCR**、**將圖像轉換為文字**,以及處理最常見的陷阱。 + +從此你可以: + +- 將此功能整合至接受使用者上傳的 Web 服務。 +- 將提取的文字與語言偵測函式庫結合,以導向正確的翻譯引擎。 +- 嘗試調整 `ocr_engine.config` 選項(例如 `max_recognition_time`、`text_orientation`)以微調效能。 + +祝程式開發順利,願你的 OCR 流程永遠精確! + +--- + +![提取多語言文字的螢幕截圖 – 從圖像提取文字範例](image-placeholder.png "從圖像提取文字範例") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/hongkong/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..58e0ac8eb --- /dev/null +++ b/ocr/hongkong/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: 如何在 Python 中批量 OCR 您的文件並從掃描檔案中提取文字。學習使用 OcrEngine 逐步批次處理,輸出 JSON。 +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: zh-hant +og_description: 如何批量 OCR 您的掃描檔案,並在單一腳本中提取掃描文字。完整程式碼、技巧與邊緣案例處理。 +og_title: 如何批次 OCR – 快速 Python 指南 +tags: +- OCR +- Python +- Automation +title: 如何批次 OCR – 高效從掃描檔提取文字 +url: /zh-hant/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何批量 OCR – 從掃描檔案高效提取文字 + +有沒有想過 **如何批量 OCR** 那堆掃描的 PDF 而不讓自己抓狂?你並不是唯一有這個疑問的人——開發者常常會問:「一次過要怎樣從掃描檔案提取文字?」好消息是,只要幾行 Python 程式碼,就能把這項繁瑣工作變成順暢、全自動的流程。 + +在本教學中,我們將一步步示範完整、可直接執行的解決方案,**從掃描檔案提取文字**、將結果儲存為 JSON,並在最後給予簡易的 sanity check。無需外部服務、無需魔法——只要純 Python、`OcrEngine` 類別,以及一點目錄操作。 + +## 你將學會什麼 + +- 一個能 **批量 OCR** 任意圖片資料夾的完整腳本。 +- 為何每一行程式碼會出現的清楚說明,而不只是它做了什麼。 +- 處理空資料夾、非圖片檔案與大型批次的技巧。 +- 驗證 JSON 輸出確實包含已提取文字的方法。 + +### 前置條件(最低需求) + +| Requirement | Why it matters | +|-------------|----------------| +| Python 3.8+ | Modern syntax & type hints | +| `OcrEngine` library (or a compatible wrapper) | Core OCR functionality | +| A directory with scanned image files (PNG, JPG, TIFF) | Input data | +| Write permissions for the output folder | Saving JSON results | + +如果你已經具備上述條件,太好了——讓我們直接開始吧。 + +![how to batch OCR workflow](image-placeholder.png){alt="批量 OCR 工作流程"} + +## 步驟 1 – 初始化 OCR 引擎(how to batch OCR) + +在處理任何檔案之前,我們需要先建立一個 OCR 引擎實例。把它想成會閱讀每張圖片並輸出文字的「大腦」。只初始化一次並在整個批次中重複使用,是最有效率的做法。 + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **為什麼要重複使用同一個實例?** +> 若每個檔案都重新建立引擎,會不斷把龐大的模型載入記憶體,導致批次處理速度急劇下降。單一實例只需在 RAM 中保留模型,即可處理上千張圖片而不會明顯變慢。 + +## 步驟 2 – 指定掃描檔案所在資料夾(extract text from scans) + +你的掃描檔案儲存在磁碟的某個位置。現在告訴腳本它們在哪裡。使用絕對路徑可以避免在不同工作目錄下執行腳本時出現「找不到檔案」的狀況。 + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **小技巧:** +> 若你使用 Windows,`os.path.abspath` 同樣支援正斜線(`/`),因此不必對反斜線進行跳脫。 + +## 步驟 3 – 設定 JSON 結果的輸出位置 + +你可能想要一個整潔的資料夾來存放 OCR 結果。把輸出與原始檔案分開,日後清理或將 JSON 匯入其他流程都會更方便。 + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **為什麼要程式化建立資料夾?** +> 這樣即使目錄不存在,腳本也不會崩潰;`exist_ok=True` 讓操作具備冪等性——可多次執行腳本而不會產生錯誤。 + +## 步驟 4 – 執行批次處理(how to batch OCR) + +現在進入重點:告訴 `ocr_engine` 逐一走訪 `input_dir` 中的每個檔案、執行 OCR,並把 JSON 寫入 `output_dir`。`format="json"` 參數會指示引擎以結構化的方式序列化結果,方便下游工具使用。 + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### 背後發生了什麼? + +1. **檔案探索** – 引擎會遞迴掃描 `input_folder`,自動忽略隱藏檔案。 +2. **檔案驗證** – 只會把支援的影像副檔名(`.png`、`.jpg`、`.tif` 等)送入 OCR 模型。 +3. **OCR 執行** – 每張圖片都會傳給 OCR 引擎,取得文字、信心分數與版面資訊。 +4. **JSON 序列化** – 結果會寫入與原檔名相同、但副檔名為 `.json` 的檔案於 `output_folder`。 + +> **邊緣案例處理:** +> - **空資料夾:** 引擎會記錄「No files found」並優雅返回。 +> - **損毀的影像:** 會跳過該檔案,於 `batch_errors.log` 中留下錯誤紀錄,然後繼續執行。 +> - **超大型批次(10k+ 檔案):** 記憶體使用量仍保持低位,因為每次只處理單一圖片。 + +## 步驟 5 – 確認轉換已完成 + +一行簡單的 `print` 陳述式即可在主控台即時回饋。若在正式流水線上,可改為使用 logging 或發送 email 通知。 + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +當你看到那行訊息時,就可以安全地檢查 `json_output` 資料夾。每個 JSON 檔案大致會長這樣: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +接著,你可以把這些 JSON 檔案匯入資料庫、搜尋索引,或任何下游分析工具。 + +## 常見問題(快速解答) + +**Q: 若要處理 PDF 而不是影像該怎麼辦?** +A: 先把每頁 PDF 轉成影像(例如使用 `pdf2image`),再把產生的 PNG/JPG 放入 `input_dir`。批次 OCR 的邏輯不需要變動。 + +**Q: 可以把輸出格式改成純文字嗎?** +A: 當然可以。將 `format="json"` 改成 `format="txt"`,引擎就會產生只包含提取文字的 `.txt` 檔案。 + +**Q: 我的掃描檔分散在多個子資料夾,腳本會遞迴嗎?** +A: 會的。`batch_process` 預設會遍歷整個目錄樹。若想要平面輸出,可設定 `flatten=True`(若函式庫支援)或在後處理時自行調整 JSON 檔名。 + +**Q: 如何處理非拉丁文字?** +A: 在建立 `OcrEngine` 時加入語言參數,例如 `OcrEngine(lang="spa+eng")`。批次迴圈本身不需要任何修改。 + +## 專業小技巧與常見陷阱 + +- **批次大小很重要:** 若發現 CPU 使用率飆升,可在每個檔案之間加入 `time.sleep(0.1)` 以降低負載。 +- **日誌記錄:** 把 `print` 換成 Python 的 `logging` 模組,能取得時間戳記與錯誤等級。 +- **檔名衝突:** 若不同子資料夾內的掃描檔案基礎名稱相同,輸出的 JSON 會互相覆蓋。可在輸出名稱後加上相對路徑的雜湊值以避免衝突。 +- **記憶體洩漏:** 某些 OCR 後端會保留原生資源。腳本結尾若函式庫提供清理方法,請呼叫 `ocr_engine.close()`。 + +## 完整腳本 – 直接複製貼上使用 + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**預期的主控台輸出** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +你可以打開 `json_output` 中的任意檔案,用文字編輯器檢視,或在 Python 中載入: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +應該會在主控台印出原始的 OCR 提取文字。 + +## 結語 + +我們剛剛完成了 **如何批量 OCR** 整個掃描影像資料夾,並將 **從掃描檔案提取文字** 成為乾淨、機器可讀的 JSON 檔案。整個流程刻意保持簡單:一次設定引擎、指向資料夾,讓函式庫負責繁重的運算。接下來,你可以: + +- 把 JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/hongkong/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..46d179345 --- /dev/null +++ b/ocr/hongkong/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-04-26 +description: 快速且可靠地建立 OCR。學習如何從圖像提取文字、載入圖像進行 OCR,並使用自訂詞典對 PNG 進行 OCR。 +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: zh-hant +og_description: 如何在 Python 中建立 OCR 並從圖像提取文字。本指南示範如何載入圖像以進行 OCR、在 PNG 上執行 OCR,以及使用自訂字典。 +og_title: 如何在 Python 中建立 OCR – 快速文字提取 +tags: +- OCR +- Python +- Image Processing +title: 如何在 Python 中建立 OCR – 從影像提取文字 +url: /zh-hant/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中建立 OCR – 步驟指南 + +有沒有想過 **如何建立 OCR**,讓它能讀取你的掃描 PDF、螢幕截圖或手寫筆記?你並不孤單。在許多實務專案中,我們需要 *從影像檔案中擷取文字*,但現成的引擎常常在領域特定詞彙上卡關。 + +在本教學中,你將看到一個完整、可執行的範例,示範如何 **載入影像進行 OCR**、套用自訂字典,最後 **對 PNG 檔執行 OCR**。完成後,你就能從任何影像擷取文字,並依照自己的術語調整引擎。 + +## 本教學涵蓋內容 + +我們會一步步說明你需要的所有操作: + +* 安裝小巧卻功能強大的 `aocr` 套件(或任何相容的函式庫)。 +* 設定 **自訂字典**,讓 `aspocorp` 或 `licensekey` 等詞彙被正確辨識。 +* **載入影像進行 OCR**,不論是 PNG、JPEG,或是掃描的 PDF 頁面。 +* 執行 OCR 程序並印出結果。 + +不提供外部文件連結,全部都是可直接複製貼上、立即執行的完整解決方案。 + +### 前置條件 + +* Python 3.8 或更新版本(程式碼使用 f‑string)。 +* 基本的指令列操作知識 – 只要打幾個 `pip install` 指令即可。 +* 一個影像檔(教學範例中的 `technical_doc.png`),放在可參考的路徑下。 + +只要符合上述三項,你就可以開始了。 + +--- + +## 步驟 1:安裝 OCR 函式庫 + +首先,我們需要一個支援可程式化設定物件的 OCR 引擎。`aocr` 套件是原生 OCR 引擎的輕量包裝,十分適合示範使用。 + +```bash +# Install the library (run once) +pip install aocr +``` + +> **小技巧:** 若你在 Windows 上遇到編譯錯誤,請改用 `pip install aocr‑binary`,它提供已編譯好的 wheel。 + +### 為何要安裝這個函式庫? + +`aocr` 讓我們可以直接存取 `config` 物件,並注入 **自訂字典**。這正是提升特定詞彙辨識準確度的關鍵。 + +--- + +## 步驟 2:建立 OCR 引擎實例並加入自訂字典 + +現在我們啟動引擎,並告訴它哪些詞彙應被視為已知。 + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### 為何自訂字典如此重要 + +標準 OCR 模型是以通用語料庫訓練的。當模型看到 “aspocorp” 時,可能會把它切成 “aspo corp” 或直接遺漏字母。透過自訂清單,我們能將辨識器偏向正確的拼寫,大幅減少後處理工作。 + +--- + +## 步驟 3:載入要處理的影像 + +接下來就是 **載入影像進行 OCR**。`Image.load` 方法接受路徑字串,會自動判斷檔案類型。 + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **特殊情況:** 若來源是多頁 PDF,請先將每頁轉成 PNG(例如使用 `pdf2image`),再逐一送入引擎。 + +### 提升影像品質的技巧 + +* 解析度至少保持在 300 dpi。 +* 確保影像方向正確,必要時使用 `Pillow` 旋轉。 +* 將彩色掃描轉為灰階,以降低雜訊。 + +--- + +## 步驟 4:對 PNG 檔執行 OCR + +在引擎設定完成且影像已載入後,我們終於 **對 PNG 執行 OCR**。 + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +`process()` 呼叫會回傳一個物件,內含辨識出的文字、信心分數以及每個單字的邊界框。 + +--- + +## 步驟 5:輸出辨識結果文字 + +最簡單的方式就是印出 `text` 屬性。 + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### 預期輸出 + +如果 `technical_doc.png` 包含句子 *“The Aspocorp licensekey expires on 2025‑12‑31.”*,控制台應顯示: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +可見自訂字典成功保留了品牌名稱——這是一般 OCR 常會搞亂的部分。 + +--- + +## 完整可執行範例(即貼即用) + +以下是完整腳本,請存成 `run_ocr.py`。只要把佔位路徑改成你的影像所在位置即可。 + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +在終端機執行: + +```bash +python run_ocr.py +``` + +你應該會在控制台看到與前述範例相同的擷取文字。 + +--- + +## 常見問題 (FAQ) + +| 問題 | 答案 | +|----------|--------| +| **我可以從掃描的 PDF 取得文字嗎?** | 可以。先將每頁轉成 PNG(或 TIFF),再使用相同腳本處理。 | +| **如果我的影像是 JPEG 而不是 PNG,怎麼辦?** | `Image.load` 本身支援 JPEG、BMP、TIFF 與 PNG,只要更換副檔名即可。 | +| **如何提升低對比度掃描的準確度?** | 使用 `Pillow` 前處理——提升對比、二值化,或使用 `opencv` 去除傾斜。 | +| **能取得每個單字的信心分數嗎?** | `ocr_result` 包含 `words`,每個 word 都有 `confidence` 屬性,可自行迭代。 | +| **可以在無頭伺服器上執行嗎?** | 完全可以。`aocr` 沒有 GUI 依賴,適合 CI pipeline 使用。 | + +--- + +## 後續步驟與相關主題 + +既然你已掌握 **如何建立 OCR** 以及 **從影像檔案擷取文字**,可以進一步探索: + +* **前處理技術** – `load image for OCR` 只是第一步,使用 `opencv` 進行去噪或銳化。 +* **批次處理** – 迴圈遍歷 PNG 目錄,產生可搜尋的檔案庫。 +* **多語言支援** – 若需讀取法文或德文文件,可加入語言套件。 +* **結合 Elasticsearch** – 將擷取文字索引至 Elasticsearch,實現掃描資產的全文搜尋。 + +上述延伸皆以本教學的核心模式為基礎,轉換起來相當順暢。 + +--- + +## 小結 + +只要幾分鐘,我們就說明了 **如何建立 OCR**,讓它可靠 **從影像檔案(特別是 PNG)擷取文字**,並示範了 **載入影像進行 OCR**、套用 **自訂字典**、以及 **對 PNG 執行 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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/hongkong/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..49bc9fc57 --- /dev/null +++ b/ocr/hongkong/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-04-26 +description: 如何使用 Python 從圖像提取 OCR – 一個 Python OCR 範例,展示如何載入圖像進行 OCR 並從收據中提取文字。 +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: zh-hant +og_description: 如何使用 Python 從圖像中提取 OCR。學習 Python OCR 範例,載入圖像進行 OCR,並在數分鐘內從收據中提取文字。 +og_title: 如何在 Python 中提取 OCR – 完整指南 +tags: +- OCR +- Python +- Image Processing +title: 如何在 Python 中提取 OCR – 步驟教學 +url: /zh-hant/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Python 中提取 OCR – 完整指南 + +有沒有想過 **how to extract ocr** 從模糊的收據或掃描的發票?你並不是唯一的——開發者在需要乾淨、機器可讀的文字時,常常卡住。好消息是,只要幾行 Python 程式碼,就能把收據的照片轉換成高信心、可搜尋的文字。 + +在本教學中,我們將逐步示範一個 **python ocr example**,展示 **how to load image for ocr**,執行引擎,並僅保留符合 85 % 信心門檻的字元。完成後,你將能夠 **extract text from receipt** 圖片,而不必四處搜尋文件或猜測 API 參數。 + +## 需要的環境 + +- Python 3.9 或更新版本(我們使用的語法在 3.8+ 亦可運作) +- `aocr` 套件(或任何提供 `OcrEngine` 類別的 OCR 函式庫)。使用以下指令安裝: + +```bash +pip install aocr +``` + +- 一張範例收據圖片(`receipt.png`),放在可參照的資料夾中。 +- 文字編輯器或 IDE——如 VS Code、PyCharm,甚至簡易的 Notebook 都可。 + +就這樣。沒有笨重的框架,亦無外部服務,僅僅是純粹的 Python。 + +![高信心 OCR 結果 – how to extract ocr from a receipt](/images/ocr-high-confidence.png) + +*圖片說明:使用 Python OCR how to extract ocr from a receipt* + +## 第一步 – 建立 OCR 引擎實例 (how to extract ocr) + +我們首先要啟動一個 OCR 引擎。可以把它想像成會為我們讀取像素的“大腦”。 + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Why?** 建立 `OcrEngine` 會得到一個全新的設定物件。之後你可以調整語言模型、DPI 設定或前處理步驟——全部不需要觸碰核心處理迴圈。 + +## 第二步 – 載入 OCR 圖片 + +接著我們將引擎指向要分析的圖片。這時 **load image for ocr** 關鍵字就會派上用場。 + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tip:** 如果你的圖片位於其他目錄,請使用 `os.path.join` 來建立跨平台的路徑。 + +**Why load the image this way?** `Image.load` 輔助函式會將檔案讀入引擎能理解的格式,會自動處理常見的格式(PNG、JPEG、TIFF)。若跳過此步驟或直接傳入原始位元組,將拋出 `ValueError`。 + +## 第三步 – 執行 OCR 程序 + +現在我們真正執行 OCR。`process` 方法會回傳一個豐富的結果物件,內含辨識出的符號、信心分數與邊界框。 + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**What does `ocr_result` contain?** 在大多數函式庫中,它包含: + +- `text`:原始的串接字串。 +- `symbol_confidences`:`(char, confidence)` 元組的列表。 +- `boxes`:每個字元的座標(對視覺除錯很有幫助)。 + +取得每個字元的信心分數對於下一步至關重要。 + +## 第四步 – 只保留高信心符號 (≥ 85 %) + +收據常會有污漬、淡印或背景噪音。過濾掉低信心的符號,我們可以大幅提升後續解析的品質。 + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Why 85 %?** 實務上,約 0.85 的門檻能在大多數印刷收據中取得召回率與精確度的平衡。若發現缺少數字,可降低門檻;若出現亂碼,則提高門檻。 + +## 第五步 – 輸出高信心的擷取文字 + +最後,我們列印(或儲存)已清理的字串。這就是我們 **extract text from receipt** 工作流程的核心。 + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +典型的輸出如下: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +現在你可以將此字串輸入 CSV 寫入器、資料庫,或任何後續的分析管線。 + +## 完整、可直接執行的腳本 + +以下是完整的程式碼片段,你可以直接複製貼上至 `ocr_receipt.py` 並立即執行。 + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +儲存檔案,確認 `receipt.png` 存在,然後執行: + +```bash +python ocr_receipt.py +``` + +你應該會在主控台看到已清理的收據文字。 + +## 邊緣案例與假設情境 + +| Situation | Suggested Fix | +|-----------|----------------| +| **Very low confidence across the board** | 預先處理圖片:提升對比、轉為灰階,或套用去噪濾波 (`cv2.GaussianBlur`)。 | +| **Non‑Latin characters** | 傳入語言模型至 `OcrEngine`(例如 `ocr_engine.language = "spa"` 以支援西班牙文)。 | +| **Multiple receipts in one image** | 先對整張圖片執行 OCR,然後使用偵測 `\n\n+`(雙換行)的正規表達式分割結果。 | +| **Need the raw OCR text as well** | 保留 `ocr_result.text` 與過濾後的版本一起以供除錯。 | + +## 常見陷阱(以及如何避免) + +- **忘記安裝套件** – 必須先成功執行 `pip install aocr` 才能匯入。 +- **在 Windows 使用錯誤的路徑分隔符**(`\` 與 `/`)。請使用 `os.path.join`。 +- **未經測試就硬編碼信心門檻**——先在幾張收據上快速視覺檢查。 +- **忽略 Unicode 正規化**——有些收據含特殊破折號;若要儲存輸出,請執行 `unicodedata.normalize('NFKC', text)`。 + +## 下一步 – 超越基礎應用 + +既然你已了解如何 **how to extract ocr** 單張收據的資料,接下來可能想要: + +1. **批次處理收據資料夾** – 迴圈遍歷所有 PNG/JPG 檔案,將每個結果寫入 CSV。 +2. **整合資料庫** – 將 `high_confidence_text` 存入 SQLite,以便快速查詢。 +3. **套用自然語言解析** – 使用正規表達式或 `dateutil` 抽取日期、總金額與稅額。 +4. **嘗試其他函式庫** – 若需多語言支援或更高準確度,可使用 `pytesseract`、`easyocr`,或雲端服務(Google Vision、Azure OCR)。 + +上述每個主題自然會涵蓋我們的次要關鍵字:*python ocr example*、*extract text from receipt*、*load image for ocr* 與 *how to use OCR*。 + +## 結論 + +我們剛剛完整示範了一個 **python ocr example**,說明如何 **how to extract 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/hongkong/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/hongkong/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..fc98c97bf --- /dev/null +++ b/ocr/hongkong/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,191 @@ +--- +category: general +date: 2026-04-26 +description: 如何在 Python 中使用 OCR:學習從圖像提取文字並使用基本 OCR 範例讀取 TIFF 檔案。附上快速可執行的程式碼。 +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: zh-hant +og_description: 如何在 Python 中使用 OCR:一步一步的指南,展示如何從圖像提取文字、在 Python 中讀取 TIFF 檔案,以及使用簡單、可執行的腳本將掃描圖像文字轉換。 +og_title: 如何在 Python 中進行 OCR – 基本 OCR 範例:提取文字 +tags: +- OCR +- Python +- Image Processing +title: 如何使用 Python OCR – 基本 OCR 範例:提取文字 +url: /zh-hant/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 Python 進行 OCR – 基本 OCR 範例:提取文字 + +有沒有想過 **如何使用 Python 進行 OCR**,當你桌上擺著一個掃描好的 TIFF 檔時?你並不是唯一一個盯著一堆影像檔,問自己「要怎樣把裡面的文字取出來?」的使用者。好消息是,只要有合適的函式庫和幾個清晰的步驟,將圖片轉成純文字其實輕而易舉。 + +在本教學中,我們會一步步示範一個 **基本 OCR 範例**,讀取 TIFF 檔、擷取文字,並將結果印到主控台。完成後,你將清楚知道如何 **從影像檔提取文字**、如何處理 TIFF 格式的特殊情況,以及在需要 **將掃描影像文字轉換** 成更有用的形式時該如何調整。沒有隱藏的魔法——只有直接可複製、可立即執行的 Python 程式碼。 + +## 需要的前置條件 + +在開始之前,請確保你已具備: + +- 已安裝 Python 3.9 以上(建議使用最新穩定版)。 +- 可透過 pip 安裝的 OCR 函式庫。本教學使用虛構的 `aocr` 套件,模擬 Tesseract 等常見工具;之後你可以改成 `pytesseract` 或 `easyocr`。 +- 一個想要處理的 TIFF 影像——將它命名為 `input.tiff`,放在程式碼會參照的資料夾內。 +- 基本的指令列操作知識(僅用於安裝套件)。 + +就這樣。沒有大型依賴、沒有 Docker 容器,只要幾行程式碼即可。 + +## 步驟 1 – 安裝與匯入相依套件(how to ocr python) + +首先,取得 OCR 套件。打開終端機並執行: + +```bash +pip install aocr +``` + +如果你想使用真實的函式庫,只要把 `aocr` 換成 `pytesseract`,並另行安裝 Tesseract 引擎即可。 + +接著匯入我們需要的模組。`pathlib` 中的 `Path` 類別讓我們能以跨平台的方式處理檔案路徑。 + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*為什麼使用 `Path`?* 因為它抽象化了斜線(`/` 與 `\`)的差異,讓你在拼接目錄時不必擔心底層作業系統。這個小細節常常能避免日後把腳本搬到 CI 伺服器時的頭痛。 + +## 步驟 2 – 建立 OCR 引擎實例(basic ocr example) + +接下來,啟動 OCR 引擎。把 `OcrEngine` 想成會閱讀圖片並輸出字元的「大腦」。 + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +大多數 OCR 函式庫都允許在此調整語言、DPI 或信心門檻。對於這個 **基本 OCR 範例** 我們直接使用預設值,之後若需處理多語言文件,可自行探索 `ocr_engine.config`。 + +## 步驟 3 – 載入 TIFF 影像(read tiff file python) + +這裡就是 **read tiff file python** 的關鍵。TIFF 可能包含多頁,但 `Image.load` 預設只抓取第一頁——對單頁掃描來說正好。 + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +把 `"YOUR_DIRECTORY"` 替換成實際存放 `input.tiff` 的資料夾路徑。若不確定腳本的執行目錄,`Path.cwd()` 會印出目前工作目錄,方便除錯路徑問題。 + +## 步驟 4 – 執行 OCR 處理(extract text from image) + +現在魔法發生了。呼叫 `process()` 會把影像送入 OCR 流程,並回傳一個結果物件。 + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +在背後,引擎可能會先將影像轉成灰階、套用二值化,然後送入神經網路。這些步驟你不需要自行管理,函式庫已為你抽象化。 + +## 步驟 5 – 印出辨識結果(convert scanned image text) + +最後,將文字輸出。實務上你可能會寫入檔案或資料庫,但在範例中直接印出最為簡潔。 + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +執行腳本後,預期會看到類似以下的輸出: + +``` +Hello, world! +This is a sample scanned document. +``` + +如果結果雜亂,請再次確認原始影像是否清晰,以及 OCR 語言設定是否與文字相符。 + +## 完整可執行腳本 + +將上述所有片段組合起來,即得到完整、可直接執行的程式: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### 預期輸出 + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +若你需要 **將掃描影像文字轉換** 成可搜尋的 PDF,只要把 `ocr_result.text` 丟給像 `reportlab` 這樣的 PDF 產生器即可——但那又是另一篇完整教學。 + +## 常見問題與進階小技巧 + +- **低解析度掃描**:OCR 在 150 DPI 以下表現不佳。若 TIFF 模糊,可先使用 Pillow (`Image.open(...).resize(...)`) 進行升採樣。 +- **多頁文件**:對多頁 TIFF,可遍歷 `Image.load_multi_page()`(若函式庫支援)並將結果串接。 +- **語言支援**:多數引擎預設英文。若要辨識西班牙文,可設定 `ocr_engine.language = "spa"`。 +- **空白處理**:OCR 常會產生多餘的換行。使用 `str.splitlines()` 或正規表達式清理輸出。 +- **效能**:大量處理時,建議重複使用同一個 `OcrEngine` 實例,而非每個檔案都重新建立。 + +## 延伸範例 + +既然已掌握 **如何使用 Python 進行 OCR** 單張影像的技巧,接下來可以嘗試以下方向: + +1. **批次處理** – 迴圈走訪資料夾中的所有 TIFF,將每個結果寫入 `.txt` 檔。 +2. **結合 Pandas** – 把擷取的文字與中繼資料一起存入 DataFrame,方便後續分析。 +3. **混合應用** – 結合 OCR 與 NLP 函式庫(如 `spaCy`)抽取發票中的實體(姓名、日期、金額)等資訊。 +4. **支援其他檔案格式** – 把 `Image.load` 換成 `Image.from_bytes`,處理來自 API 或資料庫的影像資料。 + +以上皆以 **從影像檔提取文字** 與 **將掃描影像文字轉換** 成機器可理解的形式為核心概念。 + +## 結語 + +我們已完整示範一個 **基本 OCR 範例**,說明了 **如何使用 Python 進行 OCR**、**如何讀取 TIFF 檔** 以及 **如何從影像檔提取文字**,整個流程只需幾行程式碼。腳本自包含、具備錯誤處理,並直接印出結果,是任何需要將掃描文件轉成可編輯文字的專案的堅實基礎。 + +歡迎自行實驗——換掉 OCR 後端、微調前處理,或把輸出接到下游工作流程。只要能可靠地 **將掃描影像文字轉換** 成可搜尋、可分析的資料,未來的可能性就無限。 + +有關特殊情境、語言套件或效能調校的問題嗎?歡迎在下方留言,祝開發順利! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/hongkong/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..e47358dac --- /dev/null +++ b/ocr/hongkong/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,179 @@ +--- +category: general +date: 2026-04-26 +description: 如何對掃描表格執行 OCR,學習如何預處理圖像以減少雜訊,並快速從圖像中提取文字。 +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: zh-hant +og_description: 如何在掃描文件上執行 OCR,預處理圖像、降低噪點,並高效提取文字。 +og_title: 如何執行 OCR 與圖像前處理 – 快速指南 +tags: +- OCR +- image processing +- Python +title: 如何執行 OCR 及圖像預處理 – 從掃描表格提取文字 +url: /zh-hant/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何執行 OCR – 完整的圖像文字提取指南 + +有沒有想過 **如何執行 OCR** 在雜亂的掃描表格上,並取得乾淨、可搜尋的文字?你並非唯一有此疑問的人。在許多實務專案中,原始影像充斥斑點、光線不均以及其他會讓即時 OCR 表現不佳的因素。 + +好消息是?只需幾行 Python 程式碼加上一條聰明的前處理流程,即可大幅提升辨識準確度、**降低雜訊**,並抽取出你需要的精確文字。在本教學中,我們會逐步說明每個步驟——從載入圖片到印出最終字串——讓你得到一段可直接套用的程式碼,能夠應用於發票、收據或任何掃描文件。 + +## 你將建立的功能 + +- 一個與底層 OCR 函式庫互動的 `OcrEngine` 實例。 +- 一條前處理鏈,**二值化**影像並套用 **中值模糊** 以平滑斑點。 +- 一個簡單的 `process()` 呼叫,回傳包含 `text`(即抽取字串)的物件。 + +完成後,你將擁有一個獨立的腳本,能在任何影像檔上執行,並立即在主控台顯示抽取出的文字。 + +## 前置條件 + +- Python 3.9+(此處使用的語法符合最新穩定版)。 +- 虛構的 `aocr` 套件——可視為 Tesseract 或其他現代 OCR 引擎的輕量包裝。使用 `pip install aocr` 安裝。 +- 一張掃描圖像(`scanned_form.jpg`),放在可供參照的資料夾中。 + +如果你使用的是實際的 OCR 函式庫,例如 `pytesseract`,只要將 `OcrEngine` 換成相應的類別,其他程式碼皆保持不變。 + +![](how-to-run-ocr-example.png "how to run OCR example showing a scanned form and extracted text") + +*Alt text: 在掃描文件上執行 OCR 並檢視抽取文字的示例。* + +--- + +## 步驟 1:如何執行 OCR – 初始化引擎 + +在引擎能讀取任何內容之前,我們必須先建立實例。把 `OcrEngine` 想像成之後會解讀視覺資料的大腦。 + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **為什麼這很重要:** 建立引擎實例會設定內部模型、載入語言套件,並準備執行環境。若跳過此步驟,之後呼叫 `process()` 時通常會出現 `NoneType` 錯誤。 + +--- + +## 步驟 2:如何前處理影像 – 載入掃描表單 + +大腦已就緒,我們將圖片餵入。影像可以是 `aocr.Image` 支援的任何格式。 + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **專業提示:** 開發時使用絕對路徑,可避免腳本在不同工作目錄執行時出現「找不到檔案」的意外。 + +--- + +## 步驟 3:如何降低雜訊 – 套用二值化與中值模糊 + +原始掃描常會有雜散點、背景不均或淡淡陰影。兩個經典技巧——**二值化**與**中值模糊**——能在不犧牲字元邊緣的前提下清理影像。 + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### 深入探討 + +- **二值化**:`threshold=180` 參數告訴演算法「亮度高於 180 的像素變成白色,其他則變成黑色」。若掃描過暗或過亮,可調整此數值。 +- **中值模糊**:半徑 `2` 表示濾波器會檢視 5×5 像素的視窗,並以中位數取代中心像素。此方式可平滑孤立斑點,同時保留字母筆畫。 + +> **邊緣情況:** 若文件有彩色標記,簡單的二值閾值可能會將其抹除。此時可考慮改用 `aocr.ImageFilters.adaptive_threshold()`——它會在影像上局部調整閾值。 + +--- + +## 步驟 4:如何抽取文字 – 執行 OCR 程序 + +取得乾淨的影像後,我們終於讓引擎發揮魔法。 + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **背後發生什麼?** 引擎會在像素矩陣上運行神經網路(或傳統的模式匹配器),將每個辨識出的字形轉換為 Unicode 字元,並組合成行與段落。 + +--- + +## 步驟 5:如何抽取文字 – 輸出結果 + +`ocr_result` 物件提供方便的 `text` 屬性。讓我們看看得到什麼。 + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### 預期輸出 + +如果掃描的表單內容為: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +你應該會看到類似以下的結果: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +請注意,前處理步驟消除了原本會把 “Amount” 變成 “Am0unt” 的雜散點。這正是 **在 OCR 前降低雜訊** 的威力所在。 + +--- + +## 常見問題與解決方法 + +| 症狀 | 可能原因 | 快速解決方案 | +|---------|--------------|-----------| +| 亂碼(例如 “@#%”) | 影像過暗或過亮 | 微調 `binarize()` 中的 `threshold`;嘗試 `adaptive_threshold`。 | +| 遺漏文字 | 雜訊仍然存在 | 增加 `median_blur` 的 `radius`,或加入 `gaussian_blur` 濾鏡。 | +| 語言錯誤(例如英文字母變成中文) | 載入了錯誤的語言套件 | 在建立 `OcrEngine()` 時傳入 `language="eng"`(若函式庫支援)。 | +| 大型檔案處理緩慢 | 解析度過高 | 先縮小影像:在二值化前使用 `aocr.ImageFilters.resize(width=1200)`。 | + +--- + +## 更進一步 – 後續步驟與相關主題 + +- **批次處理**:將上述邏輯包在迴圈中,以自動處理數十個檔案。 +- **結構化輸出**:使用正規表達式於 `ocr_result.text` 取得日期、金額等欄位。 +- **替代函式庫**:將 `aocr` 換成 `pytesseract`——程式碼僅在引擎初始化步驟有所變化。 +- **如何為 PDF 前處理影像**:將每頁 PDF 轉為影像,然後套用相同的流程。 + +這些延伸功能可讓你將解決方案從單一表單擴展至企業級的文件擷取管線。 + +--- + +## 結論 + +我們已完整說明 **如何執行 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/hongkong/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/hongkong/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..8226b7c56 --- /dev/null +++ b/ocr/hongkong/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: 了解如何在 Aspose OCR 中設定授權以及如何使用簡潔的 Python 程式驗證授權。遵循一步一步的說明,輕鬆完成啟用。 +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: zh-hant +og_description: 如何在 Aspose OCR 中設定授權以及如何使用 Python 驗證授權。只需幾分鐘即可取得完整、可執行的範例。 +og_title: 如何在 Aspose OCR 中設定授權 – 快速 Python 指南 +tags: +- Aspose OCR +- Python +- Licensing +title: 如何在 Aspose OCR 中設定授權 – 快速 Python 教程 +url: /zh-hant/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何在 Aspose OCR 中設定授權 – 快速 Python 教學 + +有沒有想過 **如何設定 Aspose OCR 的授權** 而不讓自己抓狂?你並不是唯一的。大多數開發者第一次嘗試解鎖完整功能時,都會卡在「Trial version」浮水印的困擾。好消息是,解決方法相當簡單,而且可以立即驗證。 + +在本教學中,我們將一步步說明 **如何設定授權** *以及* **如何驗證授權**,使用一段簡短的 Python 程式碼。完成後,你將得到一個會印出「License OK」的範例,同時提供一些避免常見陷阱的技巧。 + +## 前置條件 + +在開始之前,請確保你已具備以下條件: + +- 已安裝 Python 3.8+(程式碼在 3.9、3.10 以及更新版本皆可執行)。 +- 一份有效的 Aspose OCR for Java(或 .NET)授權檔案,通常命名為 `Aspose.OCR.Java.lic`。 +- 透過 `pip install asposeocr` 安裝 `asposeocr` 套件。 +- 具備在命令列執行 Python 腳本的基本知識。 + +都準備好了嗎?太好了——讓我們開始吧。 + +## 如何在 Aspose OCR 中設定授權(步驟 1) + +設定授權本質上只需要三行程式碼,但每一行都有其目的。我們會逐一說明,讓你了解 *為什麼* 要這樣做。 + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**為什麼要匯入 `License`?** +`License` 類別是告訴 Aspose OCR 引擎你已購買產品的入口。若未建立實例,函式庫會一直假設你使用的是試用版。 + +**為什麼要實例化 `License`?** +實例化會產生一個物件(`license_obj`),它可以保存 `.lic` 檔案的路徑,並將授權套用至執行階段。 + +## 如何在 Aspose OCR 中設定授權 – 提供授權檔案 + +接下來,我們把物件指向磁碟上的實際授權檔案。 + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**小技巧:** + +- **絕對路徑 vs. 相對路徑** – 若從不同資料夾執行腳本,使用絕對路徑(`C:/licenses/...`)可避免「找不到檔案」的錯誤。 +- **環境變數** – 將路徑存於環境變數(`OCR_LICENSE_PATH`)可將機密資訊從原始碼中抽離: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## 如何驗證授權 – 確認設定成功 + +設定授權只是成功的一半;你還需要確認函式庫已接受授權。這一步驟正是驗證的關鍵。 + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +如果授權檔案遺失、損壞或不匹配,`validate()` 會拋出例外。捕捉此例外即可提供清晰的錯誤回報。 + +## 完整可執行範例(結合所有步驟) + +以下是完整、可直接執行的腳本。於終端機執行(`python set_license.py`)後,應會看到「License OK」的輸出。 + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**預期輸出** + +``` +License OK +``` + +若發生錯誤,則會看到類似以下訊息: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +此訊息會精確指出需要修正的地方——不必猜測。 + +## 如何驗證授權 – 處理常見例外情況 + +即使使用上述腳本,仍有幾種情況可能讓你卡住: + +| 情況 | 會發生什麼 | 解決方式 | +|-----------|--------------|------------| +| **檔案路徑拼寫錯誤** | `FileNotFoundError` 由 `set_license` 拋出 | 再次確認路徑;使用 `os.path.abspath()` 進行除錯。 | +| **檔案類型錯誤** | 驗證拋出「Invalid license format」 | 確認使用的 `.lic` 檔案與產品版本相符。 | +| **授權過期** | 驗證拋出「License expired」 | 向 Aspose 支援申請續約,並替換新檔案。 | +| **執行於受限環境**(例如 AWS Lambda) | 權限錯誤 | 為目錄授予讀取權限,或將授權檔案嵌入部署套件中。 | + +小技巧:若想分辨「檔案找不到」與「格式無效」的錯誤,可將 `set_license` 呼叫包在自己的 `try/except` 區塊中。 + +## 視覺摘要 + +![如何在 Aspose OCR 中設定授權範例](/images/aspose-ocr-license.png "如何在 Aspose OCR 中設定授權範例") + +*此截圖顯示腳本在成功啟用後輸出「License OK」。* + +## 常見陷阱與最佳實踐 + +- **絕不要將授權檔案提交至公開倉庫。** 請使用環境變數或密鑰管理服務(GitHub Secrets、Azure Key Vault)來保存。 +- **盡早驗證。** 在 `set_license` 後立即呼叫 `license_obj.validate()`,可在任何 OCR 工作開始前捕捉錯誤。 +- **重複使用 License 物件。** 每個執行緒只需設定一次授權;之後的 OCR 呼叫會自動使用已啟用的授權。 +- **在正式環境中記錄授權路徑(不含檔名)**,以便除錯,同時不會洩漏實際檔案。 + +## 後續步驟 – 擴展你的 OCR 工作流程 + +既然已掌握 **如何設定授權** 以及 **如何驗證授權**,接下來即可進入核心的 OCR 任務: + +- **如何讀取影像** – `Image.load("sample.png")` +- **如何擷取文字** – `ocr_engine.recognize(image)` +- **如何設定 OCR 選項** – 調整 `OcrEngine` 的語言、精度等設定 + +上述每個主題都建立在已成功授權的引擎之上,從此不再看到試用浮水印。 + +## 結論 + +我們完整說明了 **如何在 Aspose OCR 中設定授權** 的全過程,示範了 **如何驗證授權**,並提供一段可直接執行、會印出「License OK」的腳本。透過提前處理錯誤與使用環境變數,你的應用程式將既安全又穩健。 + +對 OCR、授權或將 Aspose 整合至更大管線有更多疑問嗎?歡迎留言,祝開發愉快! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hongkong/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/hongkong/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..34a5df557 --- /dev/null +++ b/ocr/hongkong/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-04-26 +description: 如何在掃描 PDF 上使用 OCR、從 PDF 提取文字、對 PDF 執行 OCR,並在幾個步驟內將掃描 PDF 轉換為可搜尋檔案。 +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: zh-hant +og_description: 如何在 Python 中使用 OCR:學習如何從 PDF 提取文字、對 PDF 執行 OCR,並將掃描版 PDF 轉換為可搜尋的文件。 +og_title: 如何使用 OCR – 從 PDF 提取文字的快速指南 +tags: +- OCR +- Python +- PDF +- Text Extraction +title: 如何使用 OCR – 用 Python 從 PDF 提取文字 +url: /zh-hant/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用 OCR – 使用 Python 從 PDF 提取文字 + +有沒有想過 **如何使用 OCR** 從掃描的合約、收據或電子書中抽取文字?你並不孤單。在許多實務專案中,收到的 PDF 只是一張影像,若沒有 OCR,就無法搜尋、索引或分析其內容。 + +在本教學中,我們將逐步示範一個完整、可執行的範例,說明 **如何使用 OCR**、**從 PDF 抽取文字**,以及為什麼你可能想 **將掃描的 PDF** 轉換成可搜尋的文件。還會介紹 **將 PDF 載入為影像** 的微妙技巧,讓 OCR 引擎能清晰看到每一頁。 + +> **快速預覽:** 完成後,你將擁有一支腳本,能載入多頁 PDF、對每一頁執行 OCR,並印出辨識出的文字——不需要任何外部服務。 + +## 需要的環境 + +- Python 3.9+(任何較新的版本皆可) +- `aocr` 套件(或任何提供 `OcrEngine` 與 `Image.load` 的相容 OCR 函式庫) +- 一個你想處理的掃描 PDF 檔案(例如 `contract.pdf`) +- 适量的記憶體(約 200 MB 內可處理 100 頁的 PDF,通常足夠) + +如果尚未安裝 OCR 函式庫,請執行: + +```bash +pip install aocr +``` + +> **小技巧:** 使用虛擬環境來保持相依套件的整潔。 + +## 步驟 1:將 PDF 載入為影像 – 拼圖的第一塊 + +在執行任何 OCR 之前,必須先把 PDF 轉成影像。這正是次要關鍵字 **load pdf as image** 發揮作用的地方。 + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*為什麼重要:* `aocr.Image.load` 會在內部將每一頁 PDF 光柵化為位圖,讓 OCR 引擎能夠理解。若直接將原始 PDF 傳入,引擎會拋出錯誤,因為它期待的是像素資料,而非向量資料。 + +> **注意:** 路徑可以是絕對或相對。請確保檔案可讀取,否則會遇到 `FileNotFoundError`。 + +## 步驟 2:對 PDF 執行 OCR – 把像素變成字元 + +現在 PDF 已經是影像,我們終於可以 **對 PDF 執行 OCR**。以下程式碼一次處理所有頁面: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*底層在做什麼?* `process_all_pages` 會遍歷光柵化的頁面,套用 OCR 模型,並回傳每頁的結果物件列表。每個結果都包含辨識出的文字、信心分數,以及(若需要)邊界框資訊。 + +## 步驟 3:從 PDF 抽取文字 – 把字串拉出來 + +取得 OCR 結果後,抽取純文字變得非常簡單。我們會遍歷每頁並印出結果,示範次要關鍵字 **extract text from pdf**。 + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**預期輸出**(為簡潔起見已截斷): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +如果你需要將文字合併成單一字串,只要這樣串接即可: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +現在,你已成功 **從 PDF 抽取文字**,且是透過 OCR 完成的。 + +## 步驟 4:將掃描的 PDF 轉換 – 讓它可搜尋 + +許多下游工具(如 Elasticsearch 或 SharePoint)期待的是可搜尋的 PDF,而非純文字檔。你可以將 OCR 輸出嵌回原始 PDF,實際上 **將掃描的 PDF** 轉換成可搜尋的版本。 + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*為什麼要這麼做?* 可搜尋的 PDF 保留原始版面與影像,同時允許文字選取與索引,對人與機器皆是雙贏。 + +## 常見陷阱與邊緣案例 + +### 大於記憶體的多頁 PDF + +如果 PDF 有上百頁,一次載入全部可能會耗盡記憶體。`aocr` 函式庫支援延遲載入: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +接著逐頁處理: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### 低品質掃描 + +模糊或低對比度的掃描會大幅降低 OCR 準確度。將影像送入引擎前,建議先做前處理: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### 語言支援 + +預設情況下引擎假設使用英文。若要 **對 PDF 執行 OCR** 並使用其他語言,請設定語言代碼: + +```python +ocr_engine.language = "spa" # Spanish +``` + +確保已安裝對應的語言模型。 + +## 完整可執行範例 + +將所有步驟整合起來,以下是一支可直接存為 `ocr_pdf.py` 並立即執行的腳本: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +執行方式如下: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +執行後,你會在主控台看到文字輸出;若提供 `-o` 參數,則會在原始檔旁產生可搜尋的 PDF。 + +## 小技巧與最佳實踐 + +- **批次處理:** 若要一次處理數十份 PDF,將上述邏輯包在迴圈中,並記錄每個檔案的成功或失敗。 +- **信心過濾:** 每個 `page_result` 都包含信心指標。對信心低的頁面進行捨棄或標記,以便手動檢查。 +- **平行處理:** 若 CPU 有多核心,可考慮使用 `concurrent.futures` 進行平行頁面處理——但要留意記憶體使用量。 +- **版本鎖定:** `aocr` API 可能會變動。請在 `requirements.txt` 中鎖定版本(例如 `aocr==2.3.1`),以避免破壞性更新。 + +## 結論 + +我們已完整說明 **如何使用 OCR** 來 **從 PDF 抽取文字**、**對 PDF 執行 OCR**、**將 PDF 載入為影像**,甚至 **將掃描的 PDF** 轉換成可搜尋的格式。程式碼已備妥,說明同時涵蓋 *什麼* 與 *為什麼*,讓你在任何處理影像型 PDF 的專案中,都能套用這套可重用的模式。 + +接下來可以嘗試把抽出的文字送入自然語言處理管線,或使用 Elasticsearch 索引可搜尋的 PDF,亦或實驗不同的 OCR 後端(如 Tesseract 或 Azure Computer Vision)。只要有想法,工具就在你手邊。 + +祝編程愉快,願你的 PDF 永遠可搜尋! + +![how to use OCR example](/images/ocr_workflow.png "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/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/hongkong/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..87858da83 --- /dev/null +++ b/ocr/hongkong/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-04-26 +description: 如何在 Python 中使用執行緒載入影像以進行 OCR。只需幾個步驟,即可學習使用回呼、背景執行緒和影像載入的非同步 OCR 處理。 +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: zh-hant +og_description: 如何在 Python 中使用執行緒載入影像以進行 OCR。本指南展示了一個完整、可執行的範例,包含回呼函式與背景執行。 +og_title: 如何使用執行緒載入影像以進行 OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: 如何使用執行緒載入圖像以進行光學字符辨識 +url: /zh-hant/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 如何使用執行緒載入影像以進行 OCR + +有沒有想過 **如何使用執行緒** 來載入影像以進行 OCR,而不會凍結你的應用程式?這種情況無論你是在開發桌面掃描器、網路服務,或是處理大量圖片的簡單腳本,都會出現。好消息是?只要幾行 Python 程式碼加上正確的執行緒模式,就能在 OCR 引擎運作時保持 UI 的流暢。 + +在本教學中,我們將一步步示範完整的端對端範例:載入大型 PNG、在背景執行緒上啟動 OCR,並以回呼函式處理結果。完成後,你不僅會了解 **如何使用執行緒**,還會掌握 **如何載入影像以進行 OCR** 的乾淨且可重用方式。 + +## 需要的環境 + +- Python 3.9+(我們使用的語法在任何近期版本皆可運作) +- `pillow` 用於影像處理(`pip install pillow`) +- `pytesseract` 作為 Tesseract OCR 的輕量封裝(`pip install pytesseract`) +- 在你的機器上安裝 Tesseract OCR 引擎(從 [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract) 下載) +- 一個你想處理的大型影像檔案(本教學中的 `large_image.png`) + +不需要額外框架,也不使用 async/await——只要傳統的 `threading` 與回呼函式即可。 + +## 步驟 1:匯入 Threading 模組(背景執行所必需) + +首先,我們匯入 `threading` 模組。它提供了 `Thread` 類別,讓我們能在獨立的作業系統執行緒中執行任意函式。 + +```python +import threading +``` + +*為什麼這很重要*:如果在主執行緒上執行 OCR,程式(尤其是 GUI)會在 OCR 完成前凍結。將工作委派給背景執行緒後,主執行緒即可自由更新 UI、處理使用者輸入,或啟動其他任務。 + +## 步驟 2:定義 OCR 完成時會被呼叫的回呼函式 + +回呼函式就是在另一段程式碼完成時被呼叫的函式。此處我們會印出辨識出的文字,但你也可以將其儲存、傳送至網路,或更新 UI 元件。 + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*小技巧*:保持回呼函式輕量。若在回呼內執行大量處理,會抵消執行緒的效益,因為仍會阻塞呼叫它的執行緒(通常是主執行緒)。 + +## 步驟 3:載入要處理的影像 + +載入影像與 OCR 本身是分開的工作,但仍屬於整體流程的一部份。使用 Pillow 可以輕鬆完成。 + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*為什麼在此載入*:若影像非常大,在主執行緒載入可能已經造成卡頓。實務上許多應用會將載入工作也交給執行緒,但為了說明清楚,我們在此保持同步執行。 + +## 步驟 4:建立簡易的 OCR 引擎包裝類別 + +原始範例使用 `engine.process_async`。我們將以一個小型類別模擬此行為,內部會啟動執行緒,並在完成時呼叫提供的回呼函式。 + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*說明*: +- `_run_ocr` 負責執行繁重的 OCR 工作。 +- `process_async` 會建立 `Thread` 物件,將其設為 daemon(即使執行緒仍在執行,直譯器也能正常退出),並啟動它。 +- 回呼函式會收到 OCR 文字或錯誤訊息。 + +## 步驟 5:將所有步驟串接起來,並在 OCR 執行期間處理其他工作 + +現在我們把整個流程串起來:載入影像、實例化引擎、觸發非同步 OCR,並讓主執行緒在 OCR 執行期間繼續做其他事(此處僅示範印出訊息)。 + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**預期輸出(為簡潔起見已截斷)**: + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +如果 OCR 失敗,回呼函式會印出錯誤訊息而非文字。 + +--- + +## 為什麼此方法較單純迴圈更有效 + +- **Responsiveness**:主執行緒不會因 OCR 呼叫而阻塞,對於大型影像可能需要數秒的處理時間。 +- **Scalability**:可以同時啟動多個 `SimpleOcrEngine` 實例,各自於獨立執行緒處理批次影像。 +- **Separation of Concerns**:載入、處理與結果處理明確分離,使程式碼更易測試與維護。 + +## 常見陷阱與避免方法 + +| 陷阱 | 會發生什麼 | 解決方法 | +|------|------------|----------| +| 忘記將執行緒標記為 *daemon* | 主工作完成後腳本仍會掛住,因為 OCR 執行緒仍在執行。 | 設定 `worker.daemon = True` **或** 在結束前 `join()` 執行緒。 | +| 使用全域變數儲存結果卻未加鎖 | 多執行緒同時寫入時可能產生競爭條件,導致資料損壞。 | 透過回呼傳遞結果(如本範例),或使用像 `queue.Queue` 這樣的執行緒安全容器。 | +| 在主執行緒載入巨量影像 | UI 在背景 OCR 開始前就已凍結。 | 同樣將載入工作交給執行緒,或使用延遲載入技術。 | +| 未在工作執行緒內處理例外 | 未捕獲的例外會悄悄終止執行緒,導致沒有結果。 | 在 OCR 邏輯外層加上 `try/except`,並將錯誤傳遞給回呼函式。 | + +## 擴充此模式 + +- **進度回報**:使用共享的 `queue.Queue`,將 OCR 執行緒的中間進度百分比推送至主執行緒。 +- **執行緒池**:針對批次處理時,將單一 `Thread` 物件改為 `concurrent.futures.ThreadPoolExecutor`。 +- **GUI 整合**:在 Tkinter 或 PyQt 應用中,使用 `after()`(Tkinter)或 `QTimer.singleShot`(Qt)排程回呼,以確保 UI 更新發生在主執行緒。 + +## 完整可執行範例(直接複製貼上) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/hungarian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..d5e12c9be --- /dev/null +++ b/ocr/hungarian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,251 @@ +--- +category: general +date: 2026-04-26 +description: Fejléc szöveg kinyerése OCR-rel Python Aspose OCR használatával. Tanulja + meg, hogyan lehet gyorsan és megbízhatóan kinyerni a képek meghatározott területének + szövegét. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: hu +og_description: Gyorsan kinyerheti a fejléc szövegét OCR-rel. Ez az útmutató megmutatja, + hogyan lehet néhány sor kóddal kinyerni egy adott terület szövegét a Python Aspose + OCR segítségével. +og_title: Fejléc szöveg kinyerése OCR-rel Python és Aspose OCR segítségével – Teljes + útmutató +tags: +- OCR +- Python +- Aspose +title: Fejléc szöveg kinyerése OCR-rel Python Aspose OCR használatával – Lépésről + lépésre útmutató +url: /hu/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Fejléc szöveg kinyerése OCR – Teljes Python Aspose OCR útmutató + +Valaha szükséged volt **extract header text OCR**-ra egy beolvasott számláról, de nem akartad az egész oldalt feldolgozni? Nem vagy egyedül. Sok valós‑világú folyamatban a fejléc tartalmazza a legkritikusabb információkat—számlaszám, dátum, szállító neve—így a gyors kinyerése sok későbbi munkát takaríthat meg. + +Ebben az útmutatóban bemutatunk egy azonnal futtatható megoldást, amely **extracts specific area text**-t használja a **Python Aspose OCR** könyvtárral. Nincsenek homályos hivatkozások külső dokumentumokra, csak egy teljes szkript, minden sor részletes magyarázata, és olyan tippek, amelyeket már holnap is használni fogsz. + +## Mit tanulhatsz meg + +- Hogyan telepítsd és importáld az Aspose OCR csomagot Pythonhoz. +- Hogyan tölts be egy képet, és definiálj egy **region of interest (ROI)**-t, amely elkülöníti a fejlécet. +- Hogyan futtasd az OCR motorját azon ROI-n, és nyerj ki tiszta szöveget. +- Gyakori buktatók (pl. DPI eltérések) és hogyan kerüld el őket. +- Milyen a várt kimenet, hogy ellenőrizhesd, minden működik. + +A végére képes leszel ezt a kódot bármely projektbe beilleszteni, amelynek **extract header text OCR**-ra van szüksége számlákból, nyugtákból vagy bármely előre meghatározott elrendezésű dokumentumból. + +## Előfeltételek + +- Python 3.8 vagy újabb telepítve a gépeden. +- Érvényes Aspose OCR for Python licenc (az ingyenes próba a kiértékeléshez elegendő). +- Egy képfájl (`invoice.png`), amely egy tiszta fejléc területet tartalmaz. +- Alapvető ismeretek a Python függvényekről és fájlutakról. + +> **Pro tip:** Ha alacsony felbontású beolvasást tesztelsz, növeld a DPI-t, mielőtt az Aspose OCR-nek adnád – ez drámaian javítja a pontosságot. + +--- + +## 1. lépés: Az Aspose OCR csomag telepítése + +Először add hozzá a könyvtárat a környezetedhez. A hivatalos csomag neve `aspose-ocr`. Futtasd egyszer: + +```bash +pip install aspose-ocr +``` + +Ha virtuális környezetet használsz (erősen ajánlott), aktiváld azt a telepítés előtt. Ez biztosítja, hogy a csomag ne ütközzön más projektekbe. + +## 2. lépés: Szükséges osztályok importálása és a kép betöltése + +Most behozzuk a szükséges osztályokat a szkriptünkbe, és betöltjük a számla képet. Figyeld meg a **full paths** használatát; a relatív útvonalak is működnek, de az abszolút útvonalak eltávolítják a kétértelműséget, amikor a szkript egy szerveren fut. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Why this matters:** Az `OcrEngine` egyszeri inicializálása és többszöri újrahasználata több képnél hatékonyabb, mint minden alkalommal új motor létrehozása. + +## 3. lépés: A fejléc terület (ROI) definiálása + +A fejléc általában az oldal tetején helyezkedik el, de a pontos koordináták változhatnak. Itt egy téglalapot (`x`, `y`, `width`, `height`) definiálunk, amely lefedi a fejlécet. Állítsd a számokat a dokumentumod elrendezéséhez. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **How it works:** A `set_roi` hívásával az OCR motor a elemzést erre a téglalapra korlátozza, ami drámaian felgyorsítja a feldolgozást és csökkenti a zajt az oldal többi részéről. + +## 4. lépés: ROI alkalmazása és OCR futtatása + +Most megmondjuk a motornak, hogy a fejléc területre fókuszáljon, majd végrehajtjuk az OCR folyamatot. Az eredményobjektum tartalmazza a felismert szöveget és további metaadatokat (bizonyossági pontszámok, nyelv, stb.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Ha az OCR hibát jelez (pl. nem támogatott képfájl formátum), az `ocr_result` `None` lesz. Egy gyors védelmi ellenőrzés robusztusabbá teheti a szkriptet: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## 5. lépés: A kinyert fejléc szöveg lekérése és kiírása + +Végül kinyerjük a szöveget az eredményobjektumból, és megjelenítjük. Írhatod is egy fájlba, vagy átadhatod egy másik függvénynek további feldolgozásra. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Várt kimenet + +Ha minden helyesen van beállítva, valami ilyesmit kell látnod: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Ha a kimenet összezavartnak tűnik, ellenőrizd újra az ROI koordinátákat, és győződj meg róla, hogy a forráskép nagy kontrasztú. + +--- + +## Variációk és szélsőséges esetek + +### 1. Több fejléc egy dokumentumban + +Néha egy PDF több oldalt tartalmaz, mindegyiknek saját fejléce van. Ciklusba vegyük az oldalakat, és állítsuk be az ROI-t oldalanként: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Dőlő beolvasások kezelése + +Ha a számla kissé el van forgatva, előfeldolgozd a képet OpenCV-vel, mielőtt az Aspose OCR-nek adnád: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Nyelvi beállítások módosítása + +Az Aspose OCR képes automatikusan felismerni a nyelvet, de kényszerítheted az angolt a gyorsabb eredményért: + +```python +ocr_engine.language = "en" +``` + +--- + +## Teljes működő példa + +Az alábbi teljes szkriptet bemásolhatod egy `extract_header.py` nevű fájlba. Ne felejtsd el a képadat útvonalát a sajátodra cserélni. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +A szkript futtatása a fejléc sorokat pontosan úgy kell, hogy kiírja, ahogy korábban láttad. Nyugodtan módosítsd a `roi` értékeket, hogy illeszkedjenek a saját számla sablonodhoz. + +--- + +## Gyakori kérdések megválaszolva + +**Q: Működik ez közvetlenül PDF-ekkel?** +A: Nem "out‑of‑the‑box". Konvertáld minden PDF oldalt képpé (pl. `pdf2image` használatával), majd add a PNG/JPG-t a szkriptnek. + +**Q: Mi van, ha a fejlécem logót és szöveget is tartalmaz?** +A: Az Aspose OCR a szöveges tartalomra koncentrál. Logókhoz fontold meg egy külön képfelismerő könyvtár használatát, például `opencv` vagy `tesseract` egyedi modellel. + +**Q: Korlátozott a ingyenes próba?** +A: A próba havonta legfeljebb 10 oldalt engedélyez. Termeléshez vásárolj licencet, hogy eltávolítsd a korlátot és felold a magasabb pontosságú beállításokat. + +--- + +## Összegzés + +Most már van egy **complete, citation‑worthy** útmutatód a **extract header text OCR** használatához **Python Aspose OCR**-rel. Az útmutató mindent lefedett a telepítéstől a szélsőséges esetek kezeléséig, és egy újrahasználható függvényt adott, amelyet nagyobb munkafolyamatokba beilleszthetsz. + +Ezután érdemes lehet **extract specific area text**-et felfedezni más területeken, például láblécekben vagy tételsorokban, vagy kombinálni ezt a megközelítést egy PDF‑kép konverterrel a teljes dokumentum folyamatok automatizálásához. A lehetőségek végtelenek—csak ne feledd, hogy a ROI koordináták pontosak legyenek, és a képek nagy felbontásúak. + +Van egy bonyolult elrendezésed? Oszd meg a kommentekben, és együtt finomítjuk a ROI-t. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/hungarian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..743e6060f --- /dev/null +++ b/ocr/hungarian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,217 @@ +--- +category: general +date: 2026-04-26 +description: Kép szövegének kinyerése az Aspose OCR használatával Pythonban. Tanulja + meg, hogyan nyerhet ki szöveget, konvertálhatja a képet szöveggé, és töltheti be + a képet OCR-hez többnyelvű támogatással. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: hu +og_description: Képből azonnali szövegkinyerés. Ez az útmutató bemutatja, hogyan lehet + szöveget kinyerni, képet szöveggé konvertálni, és képet betölteni OCR-hez az Aspose + OCR Python használatával. +og_title: Szöveg kinyerése képből Python segítségével – Teljes többnyelvű OCR útmutató +tags: +- OCR +- Python +- Aspose +title: Szöveg kinyerése képből Python segítségével – Többnyelvű OCR útmutató +url: /hu/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# szöveg kinyerése képből Python‑nal – Többnyelvű OCR útmutató + +Valaha is szükséged volt **szöveg kinyerésére képből**, de nem tudtad, melyik könyvtár tudja kezelni a vegyes nyelvű oldalakat? Nem vagy egyedül. Sok valós alkalmazásban—például számlafeldolgozás, közösségi média monitorozás vagy többnyelvű dokumentumarchiválás—olyan képekkel találkozol, amelyek latin és cirill karaktereket egyaránt tartalmaznak. + +A jó hír? Az Aspose OCR for Python segítségével **szöveget nyerhetsz ki**, **képet szöveggé konvertálhatsz**, és **képet betölthetsz OCR‑hez** néhány sorban, miközben a motor automatikusan felismeri a nyelvet. Ebben az útmutatóban egy teljes, futtatható példán keresztül vezetünk végig, elmagyarázzuk, miért fontos minden lépés, és bemutatunk néhány olyan szélhelyzetet, amellyel útközben találkozhatsz. + +> **Mit fogsz elsajátítani** +> * Egy azonnal futtatható szkript, amely vegyes nyelvű PNG‑ből nyeri ki a szöveget. +> * A tudás, hogyan konfiguráljuk a többnyelvű OCR‑t Pythonban. +> * Tippek nagy fájlok, különböző képformátumok kezelésére és a gyakori hibák hibakeresésére. + +## Előkövetelmények + +- Python 3.8 vagy újabb (a kód f‑stringeket használ). +- `asposeocr` csomag telepítve (`pip install asposeocr`). +- Egy képfájl (például `mixed_lang.png`), amely több írásrendszerben is tartalmaz szöveget. +- Alapvető ismeretek a Python importokkal és az objektum‑orientált API‑kkal. + +Nincsenek nehéz függőségek, nincs külső szolgáltatás—csak egyetlen pip telepítés, és már használhatod. + +--- + +## 1. lépés – Az Aspose OCR könyvtár telepítése és importálása + +Mielőtt **képet betölthetnénk OCR‑hez**, szükségünk van magára a könyvtárra. A csomag a fő OCR motorral és egy könnyűsúlyú képtöltővel érkezik. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Miért fontos*: A konkrét osztályok importálása tisztán tartja a névtér­et, és átláthatóbbá teszi a későbbi kódot. Ha csak `asposeocr`‑t importálsz, minden hívást ki kell egészítened (`aocr.OcrEngine()`), ami zajos lehet. + +## 2. lépés – OCR motor létrehozása és a többnyelvű felismerés engedélyezése + +Az Aspose OCR automatikusan kitalálja a képen jelen lévő nyelv(ek)et. A `Language.AUTO` beállítás lefedi a latin, cirill, arab és még sok más nyelvet. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Pro tipp*: Ha előre tudod a nyelvkészletet, használhatod a `Language.ENGLISH` vagy `Language.RUSSIAN` beállítást egy kis teljesítményjavításért. De a valóban vegyes dokumentumok esetén az `AUTO` a legbiztonságosabb választás. + +## 3. lépés – A feldolgozandó kép betöltése + +Itt jön a **képet betöltése OCR‑hez**. Az Aspose támogatja a PNG, JPEG, BMP, TIFF formátumokat, sőt a PDF oldalakat is, amelyeket képként kezel. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Tipp**: Ha a képed nagyobb, mint 2 MB, érdemes előtte átméretezni. A nagy képek növelik a memóriahasználatot, és lelassíthatják a felismerési lépést. + +## 4. lépés – OCR folyamat futtatása és az eredmény rögzítése + +A `process()` hívása végzi a nehéz munkát: szövegfelismerés, elrendezés‑elemzés és nyelvi dekódolás. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +A visszaadott `ocr_result` objektum több hasznos tulajdonságot tartalmaz: + +| Property | Description | +|----------|-------------| +| `text` | A felismert szöveg egyszerű karakterlánca (amit a leggyakrabban használni fogsz). | +| `confidence` | Általános biztonsági pontszám (0‑100). | +| `lines` | `OcrLine` objektumok listája pozíciós adatokkal (nagyszerű PDF‑ekhez). | + +## 5. lépés – A kinyert szöveg megjelenítése + +Végül kiírjuk a kimenetet. Egy valódi alkalmazásban adatbázisba írhatod, vagy egy fordítási API‑nak továbbíthatod. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Várható kimenet** (példa egy vegyes nyelvű képre): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Ha hibás karaktereket látsz, ellenőrizd, hogy a kép nem sérült-e, és hogy a `asposeocr` legújabb verzióját (v23.7 a cikk írásakor) használod-e. + +## 6. lépés – Teljes szkript, amelyet másolhatsz‑beilleszthetsz + +Mindezt egyben összevonva megszűnik a „hol kezdődik a kód?” zavar. Mentsd el `multilingual_ocr.py`‑ként, és futtasd a parancssorból. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Futtasd: + +```bash +python multilingual_ocr.py +``` + +A konzolon meg kell jelennie a kinyert szövegeknek. Ennyi—**képet szöveggé konvertálva** csak néhány sorral. + +## Gyakori kérdések és szélhelyzetek kezelése + +### Mi van, ha a képen kézírás szerepel? + +Az Aspose OCR nyomtatott szövegre van optimalizálva. A kézírásos írások gyakran dedikált modellt igényelnek (például Azure Read vagy Google Vision). Még mindig használhatod a `Language.AUTO`‑t, de alacsonyabb biztonságra számíts. + +### Hogyan javíthatom a pontosságot zajos beolvasásoknál? + +1. Előfeldolgozni a képet (binarizálás, zajcsökkentés). +2. Növeld a DPI‑t legalább 300 ppi‑re, mielőtt a motorhoz adod. +3. Állítsd be explicit módon `ocr_engine.config.deskew = True`, ha a kép ferde. + +```python +ocr_engine.config.deskew = True +``` + +### Kinyerhetek szöveget PDF‑ből anélkül, hogy előbb képpé konvertálnám? + +Igen—az Aspose OCR közvetlenül megnyithat PDF oldalakat: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Csak ne feledd, hogy minden oldal belsőleg képként van kezelve, így ugyanazok a minőségi szempontok érvényesek. + +## Összegzés + +Most már egy szilárd, vég‑től‑végig megoldásod van a **szöveg kinyerésére képből** az Aspose OCR Python‑ban való használatával, többnyelvű támogatással. A szkript bemutatja, hogyan **tölts be képet OCR‑hez**, **konvertáld a képet szöveggé**, és kezeld a leggyakoribb buktatókat. + +Mostantól: + +- Integráld a funkciót egy webszolgáltatásba, amely felhasználói feltöltéseket fogad. +- Párosítsd a kinyert szöveget egy nyelvfelismerő könyvtárral, hogy a megfelelő fordító motorhoz irányítsd. +- Kísérletezz a `ocr_engine.config` beállításokkal (például `max_recognition_time`, `text_orientation`) a teljesítmény finomhangolásához. + +Boldog kódolást, és legyen az OCR csővezetéked mindig pontos! + +--- + +![Képernyőkép a kinyert többnyelvű szövegről – szöveg kinyerése képből példa](image-placeholder.png "szöveg kinyerése képből 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/hungarian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/hungarian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..a02d6fb77 --- /dev/null +++ b/ocr/hungarian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-04-26 +description: Hogyan végezz kötegelt OCR-t a dokumentumaidon és nyerj ki szöveget a + beolvasott képekből Pythonban. Tanulj meg lépésről‑lépésre kötegelt feldolgozást + az OcrEngine segítségével JSON kimenethez. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: hu +og_description: Hogyan végezzünk kötegelt OCR‑t a beolvasott fájlokon, és egyetlen + szkriptben nyerjünk ki szöveget a beolvasott anyagokból. Teljes kód, tippek és szélsőséges + esetek kezelése. +og_title: Hogyan végezzünk tömeges OCR-t – Gyors Python útmutató +tags: +- OCR +- Python +- Automation +title: Hogyan végezzünk kötegelt OCR-t – Hatékony szövegkinyerés szkennelésekből +url: /hu/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan végezzünk kötegelt OCR-t – Szöveg kinyerése a beolvasott dokumentumokból hatékonyan + +Gondolkodtál már azon, **hogyan végezzünk kötegelt OCR-t** egy hegy óriási beolvasott PDF-en anélkül, hogy elveszítenéd a józan eszed? Nem vagy egyedül – a fejlesztők állandóan kérdezik, *„Hogyan tudok szöveget kinyerni a beolvasott dokumentumokból egyetlen lépésben?”* A jó hír, hogy néhány Python sor átalakíthatja ezt a fáradságos feladatot egy sima, automatizált folyamatba. + +Ebben az útmutatóban végigvezetünk egy teljes, azonnal futtatható megoldáson, amely **kinyeri a szöveget a beolvasott dokumentumokból**, JSON‑ként menti az eredményeket, és a végén egy gyors ellenőrzést biztosít. Nincs külső szolgáltatás, nincs varázslat – csak tiszta Python, az `OcrEngine` osztály, és egy kis mappakezelés. + +## Mit fogsz megtanulni + +- Egy teljesen működő szkript, amely **kötegelt OCR‑t** végez bármely képmappán. +- Világos magyarázatok arra, *miért* létezik az egyes sor, nem csak arra, *mit* csinál. +- Tippek üres mappák, nem‑képfájlok és nagy kötegek kezelésére. +- Egy módszer annak ellenőrzésére, hogy a JSON‑kimenet valóban tartalmazza-e a kinyert szöveget. + +### Előfeltételek (a legszükségesebb) + +| Követelmény | Miért fontos | +|-------------|--------------| +| Python 3.8+ | Modern szintaxis és típusjelölések | +| `OcrEngine` library (or a compatible wrapper) | Az OCR alapfunkcionalitása | +| A directory with scanned image files (PNG, JPG, TIFF) | Bemeneti adatok | +| Write permissions for the output folder | JSON eredmények mentése | + +Ha már megvannak ezek, nagyszerű – merüljünk el. + +![hogyan kötegelt OCR munkafolyamat](image-placeholder.png){alt="hogyan kötegelt OCR munkafolyamat"} + +## 1. lépés – Az OCR motor inicializálása (hogyan kötegelt OCR) + +Mielőtt bármit feldolgoznánk, szükségünk van egy OCR motor példányra. Gondolj rá úgy, mint egy „agyra”, amely minden képet beolvas és szöveget ad vissza. Egyszeri inicializálása és a teljes köteg során újra‑használata a leghatékonyabb mintázat. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Miért használjuk újra ugyanazt a példányt?** +> Új motor létrehozása minden egyes fájlhoz újra és újra betöltené a nehéz modelleket a memóriába, ami drámaian lelassítaná a köteget. Egyetlen példány a modellt a RAM‑ban tartja, és lehetővé teszi, hogy több ezer képet dolgozz fel anélkül, hogy jelentős lassulást észlelnél. + +## 2. lépés – A beolvasott fájlok mappájának megadása (szöveg kinyerése a beolvasott dokumentumokból) + +A beolvasott fájlok valahol a lemezen vannak. Mondjuk meg a szkriptnek, hol találja meg őket. Az abszolút útvonalak használata elkerüli a „fájl nem található” meglepetéseket, ha a szkriptet más munkakönyvtárból indítják. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Pro tipp:** +> Ha Windows‑on vagy, a perjel (`/`) tökéletesen működik az `os.path.abspath`‑szal, így nem kell a visszaperjeleket (`\`) escape‑elned. + +## 3. lépés – Válaszd ki, hová kerüljenek a JSON eredmények + +Valószínűleg szeretnél egy rendezett mappát az OCR eredményeknek. A kimenet elkülönítése a forrástól megkönnyíti a későbbi takarítást vagy a JSON egy másik folyamatba való betáplálását. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Miért hozd létre a mappát programozottan?** +> Ez garantálja, hogy a szkript nem omlik össze, ha a könyvtár hiányzik, és az `exist_ok=True` idempotens műveletet biztosít – a szkriptet többször is futtathatod hibák nélkül. + +## 4. lépés – A kötegelt folyamat futtatása (hogyan kötegelt OCR) + +Most jön a lényeg: a `ocr_engine` megmondása, hogy járja be az `input_dir` minden fájlját, futtassa az OCR‑t, és a JSON‑t az `output_dir`‑be írja. A `format="json"` jelző azt mondja a motornak, hogy a eredményt egy strukturált módon sorosítsa, amit a downstream eszközök szeretnek. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Mi történik a háttérben? + +1. **Fájl felfedezés** – A motor rekurzívan bejárja az `input_folder`‑t, figyelmen kívül hagyva a rejtett fájlokat. +2. **Fájl validáció** – Csak a támogatott képkiterjesztések (`.png`, `.jpg`, `.tif`, stb.) kerülnek az OCR modellhez. +3. **OCR végrehajtás** – Minden képet elküld a OCR motor, a szöveg, a megbízhatósági pontszámok és az elrendezési adatok rögzítésre kerülnek. +4. **JSON sorosítás** – Az eredmény egy azonos alappal, de `.json` kiterjesztéssel rendelkező fájlba íródik az `output_folder`‑ben. + +> **Szélsőséges esetek kezelése:** +> - **Üres mappa:** A motor naplózza a „No files found” üzenetet, és elegánsan visszatér. +> - **Sérült kép:** Kihagyja a fájlt, egy `batch_errors.log` bejegyzésben rögzíti a hibát, és folytatja. +> - **Nagy köteg (10 000+ fájl):** A memóriahasználat alacsony marad, mivel minden képet önállóan dolgoz fel. + +## 5. lépés – A konverzió befejezésének megerősítése + +Egy egyszerű `print` utasítás azonnali visszajelzést ad a konzolon. Gyártási folyamatoknál ezt helyettesítheted egy naplózási hívással vagy e‑mail értesítéssel. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Amikor látod ezt a sort, nyugodtan ellenőrizheted a `json_output` mappát. Minden JSON fájl nagyjából így fog kinézni: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Most már betáplálhatod ezeket a JSON fájlokat egy adatbázisba, keresőindexbe vagy bármilyen downstream analitikai eszközbe. + +## Gyakran Ismételt Kérdések (és gyors válaszok) + +**Q: Mi van, ha PDF‑eket kell feldolgozni képek helyett?** +A: Először minden PDF oldalt konvertálj képpé (pl. a `pdf2image` használatával), majd helyezd a keletkezett PNG/JPG fájlokat az `input_dir`‑be. A kötegelt OCR logika változatlan marad. + +**Q: Át tudom-e állítani a kimeneti formátumot egyszerű szövegre?** +A: Természetesen. Cseréld le a `format="json"`‑t `format="txt"`‑re, és a motor egy `.txt` fájlt ír, amely csak a kinyert szöveget tartalmazza. + +**Q: A beolvasott fájlok több alkönyvtárban vannak – a szkript rekurzívan bejárja őket?** +A: Igen. A `batch_process` alapértelmezés szerint bejárja a könyvtárfát. Ha lapos kimenetet szeretnél, állítsd `flatten=True`‑ra (ha a könyvtár támogatja), vagy utólag dolgozd fel a JSON fájlneveket. + +**Q: Hogyan kezeljem a nem latin írásrendszereket?** +A: Inicializáld az `OcrEngine`‑t egy nyelvi paraméterrel, pl. `OcrEngine(lang="spa+eng")`. Maga a kötegelt ciklusnak nincs szüksége változtatásra. + +## Pro tippek és gyakori buktatók + +- **A köteg mérete számít:** Ha CPU‑csúcsokat észlelsz, lassítsd le a folyamatot egy egyszerű `time.sleep(0.1)` hívással a fájlok között. +- **Naplózás:** Cseréld le a `print` hívást a Python `logging` moduljára, hogy időbélyegeket és hibaszinteket rögzíts. +- **Fájlnév-ütközések:** Ha két beolvasott fájl ugyanazzal az alappal rendelkezik, de külön alkönyvtárban van, a JSON fájlok felülírják egymást. Adj egy hash‑t a relatív útvonalhoz a kimeneti névhez, hogy elkerüld ezt. +- **Memóriaszivárgások:** Egyes OCR backendek natív erőforrásokat tartanak fenn. Hívd meg a `ocr_engine.close()`‑t a szkript végén, ha a könyvtár biztosít takarítási metódust. + +## Teljes szkript – Kész a másoláshoz és beillesztéshez + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Várt konzol kimenet** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Ellenőrizheted a JSON‑t, ha megnyitsz bármelyik fájlt a `json_output`‑ban egy szövegszerkesztővel, vagy betöltöd Pythonban: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +A nyers OCR‑kivont szöveget kell látnod a konzolon. + +## Összegzés + +Már lefedtük, **hogyan végezzünk kötegelt OCR‑t** egy teljes könyvtár beolvasott képeken, és **kinyerjük a szöveget a beolvasott dokumentumokból** tiszta, gép‑olvasható JSON fájlokba. A megközelítés szándékosan egyszerű: egyszer állítsd be a motort, mutasd rá egy mappára, és hagyd, hogy a könyvtár elvégezze a nehéz munkát. Innen tovább: + +- Plug the JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/hungarian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..1aa607129 --- /dev/null +++ b/ocr/hungarian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-26 +description: Hogyan készítsünk OCR-t gyorsan és megbízhatóan. Tanulja meg, hogyan + lehet szöveget kinyerni képből, betölteni a képet OCR-hez, és futtatni az OCR-t + PNG-n egy egyéni szótárral. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: hu +og_description: Hogyan készítsünk OCR-t Pythonban és vonjunk ki szöveget képből. Ez + az útmutató bemutatja, hogyan töltsünk be képet OCR-hez, hogyan futtassuk az OCR-t + PNG-n, és hogyan használjunk egy egyéni szótárat. +og_title: Hogyan készítsünk OCR-t Pythonban – Gyors szövegkivonás +tags: +- OCR +- Python +- Image Processing +title: Hogyan készítsünk OCR-t Pythonban – Szöveg kinyerése képből +url: /hu/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan hozzunk létre OCR-t Pythonban – Lépésről‑lépésre útmutató + +Gondoltad már valaha, **hogyan hozzunk létre OCR-t**, amely képes beolvasni a beolvasott PDF-jeidet, képernyőképeidet vagy kézzel írt jegyzeteidet? Nem vagy egyedül. Sok valós projektben szükségünk van *szöveg kinyerésére képfájlokból*, de a kész megoldások gyakran elakadhatnak a szakterület‑specifikus szavaknál. + +Ebben az útmutatóban egy teljes, futtatható példát látsz, amely betölt egy képet OCR-hez, alkalmaz egy egyedi szótárat, és végül **futtat OCR-t PNG** fájlokon. A végére képes leszel bármilyen képről szöveget kinyerni, és a motorot a saját terminológiádhoz igazítani. + +## Amit ez az útmutató lefed + +* A kis, de erőteljes `aocr` csomag telepítése (vagy bármely kompatibilis könyvtár). +* Egy **egyedi szótár** konfigurálása, hogy a `aspocorp` vagy `licensekey` kifejezések fel legyenek ismerve. +* **Kép betöltése OCR-hez**, legyen az PNG, JPEG vagy egy beolvasott PDF oldal. +* Az OCR folyamat futtatása és az eredmény kiírása. + +Nincs külső dokumentációs hivatkozás, csak egy önálló megoldás, amelyet ma másolhatsz és futtathatsz. + +### Előfeltételek + +* Python 3.8 vagy újabb (a kód f‑stringeket használ). +* Alapvető ismeretek a parancssorral – néhány `pip install` parancsot kell beírnod. +* Egy képfájl (`technical_doc.png` a példában), amelyet valahol elhelyezel, ahonnan hivatkozhatsz. + +Ha megfelelsz ezeknek a három pontnak, már indulhatsz. + +--- + +## 1. lépés: Az OCR könyvtár telepítése + +Először is szükségünk van egy OCR motorra, amely támogatja a programozható konfigurációs objektumot. A `aocr` csomag egy könnyű réteg egy natív OCR motor körül, és jól működik demókhoz. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Pro tipp:** Ha Windows-on vagy és fordítási hibát kapsz, próbáld a `pip install aocr‑binary` parancsot, amely előre lefordított kerekeket (wheels) tartalmaz. + +### Miért telepítsük ezt a könyvtárat? + +`aocr` közvetlen hozzáférést biztosít egy `config` objektumhoz, ahol beilleszthetünk egy **egyedi szótárat**. Ez a titkos összetevő a pontosság javításához szűkebb szókészleteken. + +--- + +## 2. lépés: OCR motor példány létrehozása és egyedi szótár hozzáadása + +Most elindítjuk a motort, és megmondjuk, mely szavakat tekintse ismertnek. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Miért fontos egy egyedi szótár + +A standard OCR modellek általános korpuszokon vannak betanítva. Amikor a modell a “aspocorp” szót látja, előfordulhat, hogy “aspo corp”‑ra bontja, vagy teljesen elhagyja a betűket. Egy egyedi lista betáplálásával a felismerőt a szükséges pontos helyesírás felé irányítjuk, ezzel drasztikusan csökkentve az utófeldolgozási munkát. + +--- + +## 3. lépés: A feldolgozni kívánt kép betöltése + +Itt jön a **kép betöltése OCR-hez**. A `Image.load` metódus egy útvonal karakterláncot fogad, és automatikusan meghatározza a fájltípust. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Különleges eset:** Ha a forrásod egy többoldalas PDF, először konvertáld minden oldalt PNG‑re (pl. a `pdf2image`‑vel), és egyesével add át a motorhoz. + +### Tippek a jobb képminőséghez + +* Tartsd a felbontást legalább 300 dpi‑n. +* Győződj meg róla, hogy a kép függőleges; ha szükséges, forgasd a `Pillow`‑al. +* A színes beolvasásokat konvertáld szürkeárnyalatosra a zaj csökkentése érdekében. + +--- + +## 4. lépés: OCR folyamat futtatása a PNG fájlon + +A motor konfigurálása és a kép betöltése után végül **futtatjuk az OCR-t a PNG‑en**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +A `process()` hívás egy objektumot ad vissza, amely tartalmazza a felismert szöveget, a biztonsági pontszámokat és a szavak körülhatároló dobozait. + +--- + +## 5. lépés: A felismert szöveg kiírása + +A legegyszerűbb módja annak, hogy lásd, mit talált a motor, a `text` attribútum kiírása. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Várt kimenet + +Ha a `technical_doc.png` a *“The Aspocorp licensekey expires on 2025‑12‑31.”* mondatot tartalmazza, a konzolnak a következőt kell mutatnia: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Vedd észre, hogy az egyedi szótár megőrizte a márkanevet – amit egy alap OCR eltorzíthatott volna. + +--- + +## Teljes működő példa (másolás‑beillesztés kész) + +Az alábbiakban az egész szkript található, amelyet elmenthetsz `run_ocr.py`‑ként. Csak cseréld ki a helyőrző útvonalat a saját képed helyére. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Futtasd a terminálból: + +```bash +python run_ocr.py +``` + +A konzolon meg kell jelennie a kinyert szövegnek, pontosan úgy, ahogy az előző példában láttad. + +--- + +## Gyakran Ismételt Kérdések (GYIK) + +| Kérdés | Válasz | +|----------|--------| +| **Kinyerhetek szöveget egy beolvasott PDF‑ből?** | Igen. Először konvertáld minden oldalt PNG‑re (vagy TIFF‑re), majd add át a képeket ugyanabban a szkriptben. | +| **Mi van, ha a képem JPEG a PNG helyett?** | A `Image.load` metódus natívan támogatja a JPEG, BMP, TIFF és PNG formátumokat. Csak változtasd meg a fájlkiterjesztést. | +| **Hogyan javíthatom a pontosságot alacsony kontrasztú beolvasásokon?** | Előfeldolgozás `Pillow`‑rel – növeld a kontrasztot, alkalmazz binarizációt, vagy használd az `opencv`‑t a dőlés korrigálásához. | +| **Van mód arra, hogy minden szóhoz kapjak biztonsági pontszámot?** | `ocr_result` tartalmazza a `words` elemet – minden szó rendelkezik `confidence` attribútummal, amelyet iterálhatsz. | +| **Futtathatom ezt egy fej nélküli szerveren?** | Természetesen. Az `aocr` nem igényel GUI függőségeket, így tökéletes CI pipeline‑okhoz. | + +--- + +## Következő lépések és kapcsolódó témák + +Most, hogy tudod, **hogyan hozzunk létre OCR-t** és **szöveget nyerjünk ki képfájlokból**, érdemes tovább kutatni: + +* **Előfeldolgozási technikák** – a `load image for OCR` csak az első lépés; használj `opencv`‑t a zajcsökkentéshez vagy élesítéshez. +* **Kötegelt feldolgozás** – iterálj egy PNG‑k könyvtárán, hogy kereshető archívumot hozz létre. +* **Többnyelvű támogatás** – adj hozzá nyelvi csomagokat a motorhoz, ha francia vagy német dokumentumokat kell olvasnod. +* **Integráció Elasticsearch‑szel** – indexeld a kinyert szöveget a teljes szöveges kereséshez a beolvasott anyagok között. + +Ezek a kiegészítések mind a most bemutatott alapmintára épülnek, így a váltás zökkenőmentes lesz. + +--- + +## Összegzés + +Néhány perc alatt megválaszoltuk, **hogyan hozzunk létre OCR-t**, amely megbízhatóan **kivonja a szöveget képfájlokból**, különösen PNG‑kből, és megmutattuk, hogyan **tölts be képet OCR-hez**, alkalmazz egy **egyedi szótárat**, és **futtass OCR-t PNG‑n** külső szolgáltatások nélkül. + +Próbáld ki a szkriptet, finomítsd a szótárat a saját zsargonodhoz, és egy erős alapot kapsz bármilyen dokumentum‑digitalizációs projekthez. + +Ha bármilyen problémába ütköztél, írj egy megjegyzést alább – szívesen segítek. És ne felejtsd el megosztani a sikertörténeteidet; a közösség a valós példákból tanul a legjobban. + +**Készen állsz a papírmunka automatizálására?** Szerezd meg a kódot, igazítsd a saját igényeidhez, és kezdj el ma pixelből kereshető szöveget varázsolni! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/hungarian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..c2b6a67d1 --- /dev/null +++ b/ocr/hungarian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: hogyan lehet OCR-t kinyerni képekből Python használatával – egy python + OCR példa, amely bemutatja, hogyan töltsünk be képet OCR-hez, és hogyan nyerjünk + ki szöveget egy nyugtából. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: hu +og_description: hogyan lehet OCR-t kinyerni képekből Python használatával. Tanulj + meg egy Python OCR példát, tölts be képet OCR-hez, és percek alatt nyerd ki a szöveget + egy nyugtáról. +og_title: Hogyan lehet OCR-t kinyerni Pythonban – Teljes útmutató +tags: +- OCR +- Python +- Image Processing +title: Hogyan lehet OCR-t kinyerni Pythonban – Lépésről lépésre útmutató +url: /hu/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hogyan kell OCR-t kinyerni Pythonban – Teljes útmutató + +Gondolkodtál már azon, **hogyan kell OCR-t kinyerni** egy elmosódott nyugtából vagy egy beolvasott számlából? Nem vagy egyedül – a fejlesztők gyakran akadnak szembe a problémával, amikor tiszta, gép‑olvasó szöveget kell kinyerniük a képekből. A jó hír? Néhány Python sorral egy nyugta képét magas biztonságú, kereshető szöveggé alakíthatod. + +Ebben az útmutatóban egy **python ocr példát** mutatunk be, amely bemutatja, **hogyan kell képet betölteni OCR-hez**, futtatja a motort, és csak azokat a karaktereket tartja meg, amelyek legalább 85 % biztonsági küszöböt érnek el. A végére képes leszel **szöveget kinyerni nyugta** képekből anélkül, hogy dokumentációban keresgélnél vagy API paramétereket tippelnél. + +## Amire szükséged lesz + +- Python 3.9 vagy újabb (az általunk használt szintaxis 3.8‑on is működik) +- A `aocr` csomag (vagy bármely OCR könyvtár, amely `OcrEngine` osztályt biztosít). Telepítsd a következővel: + +```bash +pip install aocr +``` + +- Egy minta nyugta kép (`receipt.png`), amely egy olyan mappában van, amelyre hivatkozhatsz. +- Egy szövegszerkesztő vagy IDE – VS Code, PyCharm, vagy akár egy egyszerű notebook is megfelel. + +Ennyi. Nincs nehéz keretrendszer, nincs külső szolgáltatás, csak tiszta Python. + +![Magas‑biztonságú OCR eredmény – hogyan lehet OCR-t kinyerni egy nyugtából](/images/ocr-high-confidence.png) + +*Kép alternatív szöveg: hogyan lehet OCR-t kinyerni egy nyugtából Python OCR használatával* + +## 1. lépés – OCR motor példány létrehozása (hogyan kell OCR-t kinyerni) + +Az első dolog, amit teszünk, egy OCR motor elindítása. Gondolj rá úgy, mint egy agyra, amely a pixeleket olvassa helyettünk. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Miért?** Az `OcrEngine` példányosítása egy friss konfigurációs objektumot ad. Később módosíthatod a nyelvi modelleket, DPI beállításokat vagy az előfeldolgozási lépéseket – mindezt anélkül, hogy a fő feldolgozási ciklust érintenéd. + +## 2. lépés – Kép betöltése OCR-hez + +Ezután a motort a analizálni kívánt kép felé irányítjuk. Itt jön képbe a **load image for ocr** kulcsszó. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tipp:** Ha a képed egy másik könyvtárban van, használd az `os.path.join`-t egy platform‑független útvonal építéséhez. + +**Miért töltsük be a képet így?** A `Image.load` segédfüggvény beolvassa a fájlt egy olyan formátumba, amelyet a motor ért, és automatikusan kezeli a gyakori formátumokat (PNG, JPEG, TIFF). Ennek a lépésnek a kihagyása vagy nyers bájtok átadása `ValueError`-t eredményezne. + +## 3. lépés – OCR folyamat futtatása + +Most ténylegesen futtatjuk az OCR-t. A `process` metódus egy gazdag eredményobjektust ad vissza, amely tartalmazza a felismert szimbólumokat, a biztonsági pontszámokat és a határoló dobozokat. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Mit tartalmaz az `ocr_result`?** A legtöbb könyvtárban ez a következőket tartalmazza: + +- `text`: a nyers összefűzött karakterlánc. +- `symbol_confidences`: egy `(char, confidence)` párokat tartalmazó lista. +- `boxes`: minden karakter koordinátái (hasznos vizuális hibakereséshez). + +A karakterenkénti biztonság elérése elengedhetetlen a következő lépéshez. + +## 4. lépés – Csak a magas biztonságú szimbólumok megtartása (≥ 85 %) + +Egy nyugtán gyakran vannak foltok, halvány nyomtatás vagy háttérzaj. Az alacsony biztonságú szimbólumok kiszűrésével jelentősen javítható a további feldolgozás. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Miért 85 %?** Empirikusan a 0,85 körüli küszöb a legtöbb nyomtatott nyugtán a visszahívás és a pontosság egyensúlyát biztosítja. Ha hiányzó számokat látsz, csökkentsd a küszöböt; ha értelmetlen szöveget kapsz, emeld. + +## 5. lépés – A magas biztonságú kinyert szöveg kiírása + +Végül kiírjuk (vagy elmentjük) a megtisztított karakterláncot. Ez a **extract text from receipt** munkafolyamatunk középpontja. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +A tipikus kimenet így néz ki: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Most már ezt a karakterláncot átadhatod egy CSV írónak, egy adatbázisnak vagy bármely további elemzési csővezetéknek. + +## Teljes, azonnal futtatható szkript + +Az alábbiakban a teljes kódrészlet található, amelyet beilleszthetsz a `ocr_receipt.py` fájlba, és azonnal futtathatsz. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Mentsd el a fájlt, győződj meg róla, hogy a `receipt.png` létezik, és futtasd: + +```bash +python ocr_receipt.py +``` + +A konzolon meg kell jelennie a megtisztított nyugta szövegnek. + +## Szélsőséges esetek és „Mi lenne ha” szcenáriók + +| Helyzet | Javasolt megoldás | +|-----------|----------------| +| **Nagyon alacsony biztonság mindenhol** | Előfeldolgozd a képet: növeld a kontrasztot, konvertáld szürkeárnyalatosra, vagy alkalmazz zajszűrő szűrőt (`cv2.GaussianBlur`). | +| **Nem latin karakterek** | Adj át egy nyelvi modellt az `OcrEngine`-nek (pl. `ocr_engine.language = "spa"` a spanyolhoz). | +| **Több nyugta egy képen** | Futtasd az OCR-t a teljes képen, majd oszd szét az eredményt reguláris kifejezésekkel, amelyek a `\n\n+` (dupla sortörés) mintát észlelik. | +| **Szükség van a nyers OCR szövegre is** | Tartsd meg az `ocr_result.text`-et a szűrt verzió mellett a hibakereséshez. | + +Ezek a változatok biztosítják, hogy a **how to use OCR** tudásod túlmutasson a legegyszerűbb eseten. + +## Gyakori buktatók (és hogyan kerüld el őket) + +- **Elfelejted telepíteni a könyvtárat** – a `pip install aocr`-nek sikeresnek kell lennie, mielőtt importálnád. +- **Rossz útvonal-elválasztó használata** Windows-on (`\` vs `/`). Használd az `os.path.join`-t. +- **A biztonsági küszöb hard‑kódolása** tesztelés nélkül – mindig végezz egy gyors vizuális ellenőrzést néhány nyugtán először. +- **Az Unicode normalizáció figyelmen kívül hagyása** – egyes nyugták speciális kötőjeleket tartalmaznak; futtasd a `unicodedata.normalize('NFKC', text)`-et, ha a kimenetet tárolni szeretnéd. + +## Következő lépések – Túl a alapokon + +Most, hogy tudod, **hogyan kell OCR-t kinyerni** egyetlen nyugtából, lehet, hogy szeretnéd: + +1. **Kötegelt feldolgozása egy nyugták mappájának** – iterálj minden PNG/JPG fájlon, és írd az egyes eredményeket egy CSV-be. +2. **Integrálás adatbázissal** – tárold a `high_confidence_text`-et SQLite-ben a gyors lekérdezésekhez. +3. **Természetes nyelvi feldolgozás alkalmazása** – használj regex-et vagy `dateutil`-t a dátumok, összegek és adóösszegek kinyeréséhez. +4. **Kísérletezz alternatív könyvtárakkal** – `pytesseract`, `easyocr`, vagy felhőszolgáltatások (Google Vision, Azure OCR), ha többnyelvű támogatásra vagy nagyobb pontosságra van szükséged. + +Ezek a témák természetesen beépítik a másodlagos kulcsszavainkat: *python ocr example*, *extract text from receipt*, *load image for ocr*, és *how to use OCR*. + +## Következtetés + +Most egy teljes **python ocr example**-t vettünk át, amely bemutatja, **hogyan kell OCR-t kinyerni** egy nyugta képből, kiszűri az alacsony biztonságú szimbólumokat, és tiszta eredményt ad. A lépések egyszerűek, a kód önálló, és a megközelítés elég rugalmas ahhoz, hogy nagyobb projektekhez is alkalmazkodjon. + +Próbáld ki a saját nyugtáiddal, állítsd be a biztonsági küszöböt, majd méretezz fel kötegelt feldolgozásra. Ha furcsaságokba ütközöl – például halvány logó vagy szokatlan betűtípus – emlékezz a fenti szélsőséges esetek tippeire. Boldog kódolást, és legyen az OCR csővezeted mindig pontos! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/hungarian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..449faeede --- /dev/null +++ b/ocr/hungarian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,192 @@ +--- +category: general +date: 2026-04-26 +description: 'hogyan OCR Python: Tanulja meg a szöveg kinyerését képből és a TIFF + fájl olvasását Pythonban egy egyszerű OCR példával. Gyors, futtatható kód mellékelve.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: hu +og_description: 'hogyan OCR Python: Lépésről‑lépésre útmutató, amely megmutatja, hogyan + lehet szöveget kinyerni képből, TIFF‑fájlt olvasni Pythonban, és beolvasott képszöveget + átalakítani egy egyszerű, futtatható szkripttel.' +og_title: hogyan OCR Pythonban – Alap OCR példa a szöveg kinyeréséhez +tags: +- OCR +- Python +- Image Processing +title: hogyan OCR Python – Alap OCR példa a szöveg kinyeréséhez +url: /hu/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to ocr python – Alap OCR példa szöveg kinyeréséhez + +Valaha is elgondolkodtál **how to ocr python**-on, amikor egy beolvasott TIFF-ot találsz az asztalodon? Nem vagy egyedül, aki egy csomó képfájlra bámul és azt kérdezi: „Hogyan tudom kinyerni a szavakat ebből?” A jó hír, hogy egy képet egyszerű szöveggé alakítani egy könnyű feladat a megfelelő könyvtárral és néhány egyszerű lépéssel. + +Ebben a bemutatóban egy **basic OCR example**-et fogunk végigjárni, amely beolvassa a TIFF fájlt, kinyeri a szöveget, és kiírja a konzolra. A végére pontosan tudni fogod, hogyan **extract text from image** fájlokból, hogyan kezeld a TIFF formátum sajátosságait, és mit kell finomhangolni, ha **convert scanned image text**-et szeretnél hasznosabb formába hozni. Nincs rejtett varázslat – csak egyszerű Python, amit ma másolhatsz‑beilleszthetsz és futtathatsz. + +## Amire szükséged lesz + +- Python 3.9+ telepítve (a legújabb stabil kiadás a legjobb). +- Egy pip‑installálható OCR könyvtár. Ebben az útmutatóban egy fiktív `aocr` csomagot használunk, amely a népszerű eszközökhöz, mint a Tesseract, hasonlít; később helyettesítheted `pytesseract`‑tal vagy `easyocr`‑ral. +- Egy TIFF kép, amelyet feldolgozni szeretnél – nevezd el `input.tiff`‑nek, és helyezd egy mappába, amelyre a kódban hivatkozol. +- Alapvető ismeretek a parancssorról (csak a csomag telepítéséhez). + +Ennyi. Nincs nehéz függőség, nincs Docker konténer, csak néhány sor kód. + +## 1. lépés – Függőségek telepítése és importálása (how to ocr python) + +Először szerezd be az OCR csomagot. Nyiss egy terminált és futtasd: + +```bash +pip install aocr +``` + +Ha egy valós könyvtárat szeretnél, cseréld le a `aocr`‑t `pytesseract`‑ra, és telepítsd külön a Tesseract motorját. + +Most importáljuk, amire szükségünk van. A `Path` osztály a `pathlib`‑ből tiszta módot ad a fájlutak kezelésére különböző operációs rendszerek között. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Miért használjuk a `Path`‑t?* Mert elrejti a perjeleket (`/` vs `\`), és lehetővé teszi a könyvtárak összekapcsolását anélkül, hogy az alatta lévő OS‑től függnénk. Ez a kis részlet gyakran fejfájást spórol, amikor később a szkriptet CI szerverre helyezed. + +## 2. lépés – OCR motor példány létrehozása (basic ocr example) + +Most indítsuk el az OCR motort. Gondolj a `OcrEngine`‑re, mint az agyra, amely elolvassa a képet és karaktereket ad ki. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +A legtöbb OCR könyvtár lehetővé teszi a nyelv, DPI vagy a megbízhatósági küszöbök finomhangolását itt. Ehhez a **basic OCR example**‑hez az alapértelmezéseket használjuk, de később felfedezheted az `ocr_engine.config`‑ot, ha többnyelvű dokumentumokat kell kezelned. + +## 3. lépés – TIFF kép betöltése (read tiff file python) + +Itt jön a **read tiff file python** rész. A TIFF-ek lehetnek többoldalasak, de az `Image.load` alapértelmezés szerint az első oldalt tölti be – tökéletes egyoldalas beolvasáshoz. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Cseréld le a `"YOUR_DIRECTORY"`‑t arra a tényleges mappára, amelyik a `input.tiff`‑t tartalmazza. Ha nem vagy biztos benne, hogy a szkript hol fut, a `Path.cwd()` kiírja az aktuális munkakönyvtárat – hasznos a útvonalak hibakereséséhez. + +## 4. lépés – OCR folyamat futtatása (extract text from image) + +Most jön a varázslat. A `process()` meghívása átküldi a képet az OCR csővezetékén, és egy eredményobjektumot ad vissza. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +A háttérben a motor esetleg a képet szürkeárnyalatossá alakítja, küszöbölést alkalmaz, és egy neurális hálózatba táplálja. Nem kell ezeket a lépéseket kezelned; a könyvtár elrejti őket. + +## 5. lépés – Felismert szöveg kiírása (convert scanned image text) + +Végül, írd ki a szöveget. Valódi projektekben valószínűleg fájlba vagy adatbázisba írnád, de a kiírás tisztán tartja a példát. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +A szkript futtatásakor valami ilyesmit kell látnod: + +``` +Hello, world! +This is a sample scanned document. +``` + +Ha a kimenet összezavarodott, ellenőrizd, hogy a forráskép tiszta‑e, és hogy az OCR nyelv egyezik‑e a szöveggel. + +## Teljes működő szkript + +Összeállítva itt a teljes, azonnal futtatható program: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Várható kimenet + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Ha **convert scanned image text**‑et kereshető PDF‑be szeretnél átalakítani, a `ocr_result.text`‑et átirányíthatod egy PDF generátorba, például a `reportlab`‑ba – de ez egy önálló teljes tutorial. + +## Gyakori buktatók és profi tippek + +- **Alacsony felbontású beolvasások**: Az OCR nehezen működik 150 DPI alatt. Ha a TIFF elmosódott, először up‑sample‑eld a Pillow‑lal (`Image.open(...).resize(...)`). +- **Több oldal**: Többoldalas TIFF‑ek esetén iterálj a `Image.load_multi_page()`‑en (ha a könyvtárad támogatja) és fűzd össze az eredményeket. +- **Nyelvi támogatás**: Sok motor alapértelmezés szerint angolt használ. Állítsd be például `ocr_engine.language = "spa"` a spanyolhoz. +- **Üreshelyek kezelése**: Az OCR gyakran felesleges sortöréseket ad hozzá. Használd a `str.splitlines()`‑t vagy reguláris kifejezéseket a kimenet tisztításához. +- **Teljesítmény**: Tömeges feldolgozásnál használd újra ugyanazt az `OcrEngine` példányt, ahelyett, hogy minden fájlhoz újat hoznál létre. + +## A példa kiterjesztése + +Most, hogy elsajátítottad a **how to ocr python**‑t egyetlen képhez, fontold meg a következő lépéseket: + +1. **Kötegelt feldolgozás** – Iterálj egy TIFF‑ek könyvtárán, és írd minden eredményt egy `.txt` fájlba. +2. **Integráció Pandas‑szal** – Tárold a kinyert szöveget metaadatokkal együtt a gyors elemzéshez. +3. **Hibrid megközelítés** – Kombináld az OCR‑t NLP könyvtárakkal, például `spaCy`‑val, hogy entitásokat (neveket, dátumokat, összegeket) nyerj ki beolvasott számlákból. +4. **Alternatív fájlformátumok** – Cseréld le az `Image.load`‑t `Image.from_bytes`‑re, hogy API‑ból vagy adatbázisból érkező képeket kezelj. + +Mindez a **extract text from image** és a **convert scanned image text** alapötletére épül, hogy a gépek megértsék a beolvasott tartalmat. + +## Következtetés + +Áttekintettünk egy világos, vég‑ponttól‑végig **basic OCR example**‑et, amely megmutatja, hogyan **how to ocr python**, hogyan **read tiff file python**, és hogyan **extract text from image** fájlokból csak néhány sor kóddal. A szkript önálló, tartalmaz hibakezelést, és közvetlenül kiírja az eredményt, így szilárd alapot nyújt bármely projekthez, amely beolvasott dokumentumokat szerkeszthető szöveggé akar alakítani. + +Nyugodtan kísérletezz – cseréld le az OCR backendet, finomítsd az előfeldolgozást, vagy csatlakoztasd a kimenetet egy downstream munkafolyamathoz. A lehetőségek határtalanok, ha megbízhatóan **convert scanned image text**‑et tudsz kereshető, kereshető adatokba alakítani. + +Van kérdésed a szélsőséges esetekről, nyelvi csomagokról vagy a teljesítményhangolásról? Hagyj egy megjegyzést alább, és jó kódolást! + +![hogyan OCR Python példája](/images/ocr-python-example.png "Képernyőkép a how to ocr python szkript kimenetérő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/hungarian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/hungarian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..5dd32dd01 --- /dev/null +++ b/ocr/hungarian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,183 @@ +--- +category: general +date: 2026-04-26 +description: Hogyan hajtsunk végre OCR-t egy beolvasott űrlapon, tanuljuk meg a kép + előfeldolgozását a zaj csökkentése érdekében, és gyorsan nyerjünk ki szöveget a + képből. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: hu +og_description: Hogyan futtass OCR-t beolvasott dokumentumokon, előfeldolgozd a képeket, + csökkentsd a zajt, és hatékonyan nyerd ki a szöveget. +og_title: Hogyan futtass OCR-t és előfeldolgozd a képeket – Gyors útmutató +tags: +- OCR +- image processing +- Python +title: Hogyan futtassunk OCR-t és előfeldolgozzuk a képeket – Szöveg kinyerése beolvasott + űrlapokból +url: /hu/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan futtassuk az OCR‑t – Teljes útmutató a képek szövegének kinyeréséhez + +Gondolkodtál már azon, **hogyan futtassuk az OCR‑t** egy rendezetlen beolvasott űrlapon, és tiszta, kereshető szöveget kapjunk? Nem vagy egyedül. Sok valós projektben a nyers kép tele van foltokkal, egyenetlen megvilágítással és egyéb sajátosságokkal, amelyek miatt a kész‑out‑of‑the‑box OCR elakadhat. + +A jó hír? Néhány Python sorral és egy okos előfeldolgozó csővezetékkel drámaian növelheted a felismerési pontosságot, **csökkentheted a zajt**, és kinyerheted a szükséges szavakat. Ebben az útmutatóban minden lépést végigvezetünk – a kép betöltésétől a végső karakterlánc kiírásáig –, így egy kész, könnyen beilleszthető kódrészletet kapsz, amelyet számlákra, nyugtákra vagy bármely beolvasott dokumentumra adaptálhatsz. + +## Mit fogsz építeni + +- Egy `OcrEngine` példány, amely a háttérben lévő OCR könyvtárral kommunikál. +- Egy előfeldolgozó lánc, amely **binarizálja** a képet, és **medián elmosást** alkalmaz a foltok kisimításához. +- Egy egyszerű hívás a `process()`-ra, amely egy olyan objektumot ad vissza, amely a `text` attribútumon keresztül a kinyert karakterláncot tartalmazza. + +A végére egy önálló szkriptet kapsz, amelyet bármilyen képfájlon futtathatsz, és azonnal láthatod a kinyert szöveget a konzolon. + +## Előfeltételek + +- Python 3.9+ (a használt szintaxis a legújabb stabil kiadással egyezik). +- A fiktív `aocr` csomag – tekintsd egy vékony burkolatnak a Tesseract vagy bármely modern OCR motor körül. Telepítsd a `pip install aocr` paranccsal. +- Egy beolvasott kép (`scanned_form.jpg`) egy olyan mappában, amelyre hivatkozhatsz. + +Ha valós OCR könyvtárat, például `pytesseract`-ot használsz, kicserélheted az `OcrEngine`-t a megfelelő osztályra – minden más változatlan marad. + +![](how-to-run-ocr-example.png "hogyan futtassuk az OCR példát, amely egy beolvasott űrlapot és a kinyert szöveget mutatja") + +*Alt szöveg: hogyan futtassuk az OCR‑t egy beolvasott dokumentumon, és tekintsük meg a kinyert szöveget.* + +--- + +## 1. lépés: Hogyan futtassuk az OCR‑t – Az motor inicializálása + +Mielőtt a motor bármit olvasna, létre kell hoznunk egy példányt. Tekintsd a `OcrEngine`-t egy agynak, amely később értelmezi a vizuális adatokat. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Miért fontos:** A motor példányosítása beállítja a belső modelleket, betölti a nyelvi csomagokat, és előkészíti a futtatási környezetet. Ennek a lépésnek a kihagyása általában `NoneType` hibához vezet, amikor később a `process()`-t hívod. + +--- + +## 2. lépés: Hogyan előfeldolgozzuk a képet – Töltsd be a beolvasott űrlapot + +Most, hogy az agy készen áll, betáplálunk egy képet. A kép bármilyen, az `aocr.Image` által támogatott formátumban lehet. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Pro tipp:** Fejlesztés közben használj abszolút útvonalakat, hogy elkerüld a „file not found” meglepetéseket, amikor a szkript más munkakönyvtárból fut. + +--- + +## 3. lépés: Hogyan csökkentsük a zajt – Binarizálás és medián elmosás alkalmazása + +A nyers beolvasások gyakran tartalmaznak szóró pontokat, egyenetlen háttérrel vagy halvány árnyékokkal. Két klasszikus trükk – **binarizálás** és **medián elmosás** – tisztítja a képet anélkül, hogy feláldozná a karaktereket meghatározó éleket. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Mélyebb részletek + +- **Binarizálás**: A `threshold=180` érték azt mondja az algoritmusnak: „Minden, ami 180-nál világosabb, fehér lesz; minden más fekete.” Állítsd ezt a számot, ha a beolvasás túl sötét vagy túl világos. +- **Medián elmosás**: A `2` sugár azt jelenti, hogy a szűrő egy 5×5 pixeles ablakot vizsgál, és a középső pixelt a medián értékkel helyettesíti. Ez kisimítja az elszigetelt foltokat, miközben a betűk vonalai érintetlenek maradnak. + +> **Szélsőséges eset:** Ha a dokumentum színes kiemeléseket tartalmaz, egy egyszerű bináris küszöb eltávolíthatja őket. Ebben az esetben fontold meg a `aocr.ImageFilters.adaptive_threshold()` használatát – ez a küszöböt helyileg alkalmazza a képen. + +--- + +## 4. lépés: Hogyan nyerjünk ki szöveget – Futtassuk az OCR folyamatot + +Egy tiszta képpel a kezünkben végül hagyjuk, hogy a motor elvégezze a varázslatát. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Mi történik a háttérben?** A motor egy neurális hálózatot (vagy régi mintakeresőt) futtat a pixelmátrixon, minden felismert glifet Unicode karakterekké alakít, és sorokba, bekezdésekbe rendezi őket. + +--- + +## 5. lépés: Hogyan nyerjünk ki szöveget – Az eredmény kiírása + +Az `ocr_result` objektum egy kényelmes `text` attribútumot biztosít. Nézzük meg, mit kaptunk. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Várható kimenet + +Ha a beolvasott űrlap tartalmazza: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Valami ilyesmit kell látnod: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Vedd észre, hogy az előfeldolgozó lépés eltávolította a szóró pontokat, amelyek korábban az „Amount” szót „Am0unt”‑ra változtatták. Ez a **zajcsökkentés** ereje az OCR előtt. + +--- + +## Gyakori hibák és megoldások + +| Tünet | Valószínű ok | Gyors megoldás | +|---------|--------------|-----------| +| Széttört karakterek (pl. “@#%”) | A kép túl sötét vagy túl világos | Finomítsd a `threshold` értékét a `binarize()`-ban; próbáld ki az `adaptive_threshold`-ot. | +| Hiányzó szavak | Még mindig zaj van | Növeld a `radius` értékét a `median_blur`-nél vagy adj hozzá egy `gaussian_blur` szűrőt. | +| Rossz nyelv (pl. az angol betűk kínai karakterekké válnak) | Hibás nyelvi csomag betöltve | Adj meg `language="eng"`-et az `OcrEngine()` létrehozásakor, ha a könyvtár támogatja. | +| Lassú feldolgozás nagy fájloknál | Magas felbontás | Először méretezd le a képet: `aocr.ImageFilters.resize(width=1200)` a binarizálás előtt. | + +--- + +## Továbbfejlesztés – Következő lépések és kapcsolódó témák + +- **Kötegelt feldolgozás**: Csomagold a fenti logikát egy ciklusba, hogy automatikusan több tucat fájlt kezelj. +- **Strukturált kimenet**: Használj reguláris kifejezéseket az `ocr_result.text`-en, hogy kinyerd a mezőket, például dátumokat vagy összegeket. +- **Alternatív könyvtárak**: Cseréld le az `aocr`-t `pytesseract`-ra – a kód csak a motor inicializálásánál változik. +- **Hogyan előfeldolgozzuk a képet PDF-ekhez**: Konvertáld minden PDF oldalt képpé, majd alkalmazd ugyanazt a csővezetéket. + +Ezek a kiegészítések lehetővé teszik, hogy a megoldást egyetlen űrlapról egy vállalati szintű dokumentumbeviteli csővezetékre skálázd. + +--- + +## Összegzés + +Áttekintettük, **hogyan futtassuk az OCR‑t** a kezdetektől a végéig, bemutattuk, **hogyan előfeldolgozzuk a képet** a **zajcsökkentés** érdekében, és demonstráltuk, **hogyan nyerjünk ki szöveget a képből** egy tiszta, reprodukálható szkripttel. A fő tanulság? Néhány egyszerű szűrő – a binarizálás és a medián elmosás – egy zajos beolvasást megbízható adatforrássá alakíthat, órákat takarítva meg a kézi tisztítást. + +Próbáld ki a szkriptet a saját dokumentumaiddal, finomítsd a küszöböket, és figyeld, ahogy a pontosság nő. Amikor készen állsz, fedezd fel a kötegelt feldolgozást vagy integráld a kimenetet egy adatbázisba a kereshető archívumokhoz. Boldog kódolást, és legyen az OCR mindig pontos! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/hungarian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..b939ea48b --- /dev/null +++ b/ocr/hungarian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,199 @@ +--- +category: general +date: 2026-04-26 +description: Ismerje meg, hogyan állíthatja be a licencet az Aspose OCR-ben, és hogyan + ellenőrizheti a licencet egy tömör Python‑szkript segítségével. Kövesse a lépésről‑lépésre + útmutatót a gondtalan aktiváláshoz. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: hu +og_description: Hogyan állítsuk be a licencet az Aspose OCR-ben, és hogyan ellenőrizzük + a licencet Python használatával. Szerezz be egy teljes, futtatható példát percek + alatt. +og_title: Hogyan állítsuk be a licencet az Aspose OCR-ben – Gyors Python útmutató +tags: +- Aspose OCR +- Python +- Licensing +title: Hogyan állítsuk be a licencet az Aspose OCR-ben – Gyors Python útmutató +url: /hu/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan állítsuk be a licencet az Aspose OCR‑ban – Gyors Python útmutató + +Gondolkodtál már azon, **hogyan állítsuk be a licencet** az Aspose OCR‑hez anélkül, hogy a hajadba nyúlnál? Nem vagy egyedül. A legtöbb fejlesztő első alkalommal akadályba ütközik, amikor megpróbálja feloldani a könyvtár teljes erejét, és egy „Trial version” vízjel kísérti. A jó hír, hogy a megoldás meglehetősen egyszerű, és azonnal ellenőrizheted. + +Ebben az útmutatóban végigvezetünk a **licenc beállítása** *és* **licenc ellenőrzése** folyamatán egy kis Python szkript segítségével. A végére egy működő példát kapsz, amely kiírja a „License OK” üzenetet, valamint néhány tippet, hogy elkerüld a gyakori buktatókat. + +## Előfeltételek + +Mielőtt belevágnánk, győződj meg róla, hogy rendelkezel: + +- Python 3.8+ telepítve (a kód működik 3.9, 3.10 és újabb verziókon is). +- Aktív Aspose OCR for Java (vagy .NET) licencfájl – általában `Aspose.OCR.Java.lic` néven. +- `asposeocr` csomag telepítve a `pip install asposeocr` paranccsal. +- Alapvető ismeretek a Python szkriptek parancssorból történő futtatásához. + +Mindez megvan? Remek—kezdjünk is. + +## Hogyan állítsuk be a licencet az Aspose OCR‑ban (1. lépés) + +A licenc beállítása lényegében egy három soros művelet, de minden sornak megvan a maga célja. Lépésről lépésre bontjuk, hogy megértsd, *miért* csináljuk, amit csinálunk. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Miért importáljuk a `License` osztályt?** +A `License` osztály az a kapu, amely jelzi az Aspose OCR motor számára, hogy megvásároltad a terméket. Példány létrehozása nélkül a könyvtár továbbra is azt feltételezi, hogy próbaverziót használsz. + +**Miért példányosítjuk a `License` osztályt?** +A példányosítás egy objektumot (`license_obj`) ad, amely tárolhatja a `.lic` fájlod elérési útját, és később alkalmazza azt a futási környezetben. + +## Hogyan állítsuk be a licencet az Aspose OCR‑ban – A licencfájl megadása + +Most az objektumot a lemezen lévő tényleges licencfájlra irányítjuk. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Tippek és trükkök:** + +- **Abszolút vs. relatív útvonal** – Ha a szkriptet egy másik mappából futtatod, egy abszolút útvonal (`C:/licenses/...`) kiküszöböli a „file not found” hibákat. +- **Környezeti változók** – Az útvonal tárolása egy környezeti változóban (`OCR_LICENSE_PATH`) megakadályozza, hogy a titkok a forráskódban legyenek: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Hogyan ellenőrizzük a licencet – Biztosítva, hogy működik + +A licenc beállítása csak a harc felét jelenti; meg kell erősítened, hogy a könyvtár elfogadta-e. Itt jön képbe a validáció lépése. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Ha a licencfájl hiányzik, sérült vagy nem egyezik, a `validate()` kivételt dob. Ennek a kivételnek a kezelése tiszta módot ad a problémák jelentésére. + +## Teljes működő példa (az összes lépés egyben) + +Az alábbiakban a teljes, futtatható szkript látható. Futtasd egy terminálból (`python set_license.py`), és a „License OK” üzenetet kell látnod. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Expected output** + +``` +License OK +``` + +If something goes wrong, you’ll see something like: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Ez az üzenet pontosan megmondja, mit kell javítani – nincs találgatás szükséges. + +## Hogyan ellenőrizzük a licencet – Gyakori szélhelyzetek kezelése + +Még a fenti szkript esetén is néhány szituáció elakadhat: + +| Szituáció | Mi történik | Hogyan javítsuk | +|-----------|--------------|-----------------| +| **Fájlútvonal elírás** | `FileNotFoundError` a `set_license`-tól | Ellenőrizd újra az útvonalat; a hibakereséshez használd az `os.path.abspath()`-t. | +| **Helytelen fájltípus** | A validáció „Invalid license format” hibát dob | Győződj meg arról, hogy a termékkiadásodnak megfelelő `.lic` fájlt használod. | +| **Lejárt licenc** | A validáció „License expired” hibát dob | Újítsd meg a licencet az Aspose támogatásán keresztül, és cseréld le a fájlt. | +| **Futtatás korlátozott környezetben** (pl. AWS Lambda) | Jogosultsági hiba | Adj olvasási jogot a könyvtárhoz, vagy ágyazd be a licencet a telepítési csomagba. | + +Pro tipp: tedd a `set_license` hívást egy saját `try/except` blokkba, ha meg szeretnéd különböztetni a „file not found” és a „invalid format” hibákat. + +## Vizuális összefoglaló + +![hogyan állítsuk be a licencet az Aspose OCR példában](/images/aspose-ocr-license.png "hogyan állítsuk be a licencet az Aspose OCR példában") + +*A képernyőkép azt mutatja, hogy a szkript sikeres aktiválás után a „License OK” üzenetet írja ki.* + +## Gyakori buktatók és legjobb gyakorlatok + +- **Soha ne commitáld a licencfájlodat egy nyilvános repóba.** Használj környezeti változókat vagy titkoskezelőket (GitHub Secrets, Azure Key Vault) helyette. +- **Validáld korán.** A `license_obj.validate()` közvetlenül a `set_license` után elhelyezése már a OCR munka megkezdése előtt elkapja a hibákat. +- **Használd újra a License objektumot.** A licencet csak egyszer kell beállítani folyamatonként; a későbbi OCR hívások automatikusan az aktivált licencet fogják használni. +- **Logold a licenc útvonalát (fájlnév nélkül) éles környezetben** a hibakeresés segítésére anélkül, hogy a tényleges fájlt felfednéd. + +## Következő lépések – Az OCR munkafolyamat kibővítése + +Most, hogy tudod, **hogyan állítsuk be a licencet** és **hogyan ellenőrizzük a licencet**, továbbléphetsz a fő OCR feladatokra: + +- **hogyan olvassunk be képet** – `Image.load("sample.png")` +- **hogyan nyerjünk ki szöveget** – `ocr_engine.recognize(image)` +- **hogyan konfiguráljuk az OCR beállításokat** – állítsd be az `OcrEngine` beállításait nyelv, pontosság stb. szerint. + +Ezek a témák egy sikeresen licencelt motorra épülnek, így többé nem fogod látni a próbaverzió vízjelet. + +## Következtetés + +Áttekintettük a **licenc beállítása** folyamatát az Aspose OCR‑hez, bemutattuk a **licenc ellenőrzését**, és adtunk egy teljes, futtatható szkriptet, amely kiírja a „License OK” üzenetet. A hibák előzetes kezelése és a környezeti változók használata révén alkalmazásod biztonságos és robusztus marad. + +További kérdéseid vannak az OCR‑rel, licenceléssel vagy az Aspose nagyobb pipeline-ba való integrálásával kapcsolatban? Hagyj 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/hungarian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..6edb998a2 --- /dev/null +++ b/ocr/hungarian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: Hogyan használjunk OCR-t beolvasott PDF-eken, szöveget nyerjünk ki PDF-ből, + OCR-t futtassunk PDF-en, és néhány lépésben alakítsuk a beolvasott PDF-et kereshető + fájlokká. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: hu +og_description: 'hogyan használjunk OCR-t Pythonban: tanulja meg, hogyan nyerjen ki + szöveget PDF-ből, futtasson OCR-t PDF-en, és alakítsa a beolvasott PDF-et kereshető + dokumentummá.' +og_title: Hogyan használjuk az OCR-t – Gyors útmutató a PDF-ből szöveg kinyeréséhez +tags: +- OCR +- Python +- PDF +- Text Extraction +title: Hogyan használjuk az OCR-t – Szöveg kinyerése PDF-ből Python segítségével +url: /hu/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan használjuk az OCR-t – Szöveg kinyerése PDF-ből Python segítségével + +Gondoltad már valaha, **hogyan használjuk az OCR-t**, hogy szöveget nyerjünk ki egy beolvasott szerződésből, nyugtából vagy e‑könyvből? Nem vagy egyedül. Sok valós projektben a kapott PDF csak egy kép, és OCR nélkül nem tudod keresni, indexelni vagy elemezni a tartalmát. + +Ebben az oktatóanyagban végigvezetünk egy teljes, futtatható példán, amely bemutatja, **hogyan használjuk az OCR-t**, hogyan **nyerhetünk ki szöveget PDF-ből**, és miért lehet érdemes **beolvasott PDF** fájlokat kereshető dokumentumokká konvertálni. Emellett érintjük a **PDF képként betöltése** finom művészetét is, hogy az OCR motor minden oldalt tisztán láthasson. + +> **Gyors előzetes:** A végére egy olyan szkriptet kapsz, amely betölti a többoldalas PDF-et, OCR-t futtat minden oldalon, és kiírja a felismert szöveget – külső szolgáltatások nélkül. + +## Amire szükséged lesz + +- Python 3.9+ (bármely friss verzió működik) +- `aocr` csomag (vagy bármely kompatibilis OCR könyvtár, amely biztosítja az `OcrEngine` és `Image.load` funkciókat) +- Egy beolvasott PDF fájl, amelyet feldolgozni szeretnél (pl. `contract.pdf`) +- Mérsékelt mennyiségű RAM (≈ 200 MB 100‑oldalas PDF-enként általában elegendő) + +Ha még nem telepítetted az OCR könyvtárat, futtasd: + +```bash +pip install aocr +``` + +> **Pro tipp:** Használj virtuális környezetet a függőségek rendezett tartásához. + +## Step 1: PDF betöltése képként – A kirakós első darabja + +Mielőtt bármilyen OCR végrehajtható lenne, a PDF-et képként kell ábrázolni. Itt jön képbe a másodlagos kulcsszó **load pdf as image**. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Miért fontos ez:* A `aocr.Image.load` belsőleg rasterizálja a PDF minden oldalát egy bitmapre, amelyet az OCR motor megért. Ha kihagyod ezt a lépést és a nyers PDF-et adod át, a motor hibát dob, mert pixel adatot vár, nem vektor adatot. + +> **Megjegyzés:** Az útvonal lehet abszolút vagy relatív. Győződj meg róla, hogy a fájl olvasható; különben `FileNotFoundError`-t kapsz. + +## Step 2: OCR futtatása PDF-en – Pixelek karakterekké alakítása + +Most, hogy a PDF képként létezik, végre **futtathatunk OCR-t PDF-en**. Az alábbi kódrészlet egy lépésben feldolgozza az összes oldalt: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Mi történik a háttérben?* A `process_all_pages` végigiterál a rasterizált oldalakon, alkalmazza az OCR modellt, és egy listát ad vissza az eredményobjektumokról – egyet oldalanként. Minden eredmény tartalmazza a felismert szöveget, a megbízhatósági pontszámokat és a határoló dobozokat (ha később szükséged van rájuk). + +## Step 3: Szöveg kinyerése PDF-ből – A karakterek kihúzása + +Az OCR eredményekkel a tiszta szöveg kinyerése egyszerű. Végigiterálunk az oldalakon és kiírjuk a kimenetet, bemutatva a másodlagos kulcsszót **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Várható kimenet** (rövidítve a tömörség kedvéért): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Ha a szöveget egyetlen karakterláncban szeretnéd, egyszerűen fűzd össze: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Most már sikeresen **kinyerted a szöveget PDF-ből** OCR segítségével. + +## Step 4: Beolvasott PDF konvertálása – Kereshetővé tétele + +Sok downstream eszköz (például Elasticsearch vagy SharePoint) kereshető PDF-et vár el a tiszta szöveg dump helyett. Beágyazhatod az OCR kimenetet az eredeti PDF-be, így hatékonyan **convert scanned PDF**-t kereshető verzióvá alakítva. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Miért éri meg?* A kereshető PDF megtartja az eredeti elrendezést és képeket, miközben lehetővé teszi a szöveg kijelölését és indexelését – nyer-nyer mind az emberek, mind a gépek számára. + +## Gyakori buktatók és szélhelyzetek + +### Többoldalas PDF-ek, amelyek nagyobbak a memóriánál + +Ha a PDF-ed több száz oldalt tartalmaz, az egyszerre történő betöltése kimerítheti a RAM-ot. Az `aocr` könyvtár támogatja a lusta betöltést: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Ezután dolgozd fel az oldalakat egyesével: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Alacsony minőségű beolvasások + +Az OCR pontossága drámaikusan csökken a homályos vagy alacsony kontrasztú beolvasásoknál. Mielőtt a képet az motorba adod, fontold meg az előfeldolgozást: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Nyelvtámogatás + +Alapértelmezés szerint a motor angolt feltételez. Ahhoz, hogy **run OCR on PDF** más nyelven, állítsd be a nyelvkódot: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Győződj meg róla, hogy a megfelelő nyelvi modell telepítve van. + +## Teljes működő példa + +Összeállítva minden elemet, itt egy önálló szkript, amelyet beilleszthetsz egy `ocr_pdf.py` nevű fájlba, és azonnal futtathatsz: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Futtasd így: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Láthatod a szöveget a konzolon, és ha megadtad a `-o` kapcsolót, egy kereshető PDF jelenik meg az eredeti fájl mellett. + +## Pro tippek és legjobb gyakorlatok + +- **Kötegelt feldolgozás:** Több tucat PDF kezelésekor csomagold be a fenti logikát egy ciklusba, és naplózd minden fájl sikerét/kudarcát. +- **Bizalmi szűrés:** Minden `page_result` tartalmaz egy bizalmi mutatót. Dobd el vagy jelöld meg a alacsony bizalomú oldalakat manuális felülvizsgálatra. +- **Párhuzamosság:** Ha a CPU-d több maggal rendelkezik, fontold meg a `concurrent.futures` használatát az oldalak párhuzamos feldolgozásához – csak ügyelj a memóriahasználatra. +- **Verzió rögzítés:** Az `aocr` API változhat. Rögzítsd a verziót a `requirements.txt`-ben (pl. `aocr==2.3.1`), hogy elkerüld a tör breaking változásokat. + +## Összegzés + +Áttekintettük, **hogyan használjuk az OCR-t** a **szöveg kinyeréséhez PDF-ből**, **OCR futtatását PDF-en**, **PDF képként betöltését**, és még a **beolvasott PDF konvertálását** kereshető formátumba. A kód teljes, a magyarázatok lefedik a *mit* és a *miért* is, és most már van egy újrahasználható minta minden olyan projekthez, amely képalapú PDF-ekkel dolgozik. + +Mi a következő? Próbáld meg a kinyert szöveget egy természetes nyelvi csővezetékbe betáplálni, indexeld a kereshető PDF-eket Elasticsearch-szel, vagy kísérletezz különböző OCR háttérrendszerekkel, mint a Tesseract vagy az Azure Computer Vision. A lehetőségek végtelenek, és az eszközök a kezedben vannak. + +Boldog kódolást, és legyenek a PDF-jeid mindig kereshetők! + +![OCR használatának példája](/images/ocr_workflow.png "OCR használata") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/hungarian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/hungarian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..363a2f0f4 --- /dev/null +++ b/ocr/hungarian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Hogyan használjunk szálakat a kép betöltéséhez OCR-hez Pythonban. Tanulja + meg az aszinkron OCR feldolgozást visszahívásokkal, háttérszálakkal és képek betöltésével + néhány lépésben. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: hu +og_description: Hogyan használjuk a szálkezelést a kép betöltéséhez OCR-hez Pythonban. + Ez az útmutató egy teljes, futtatható példát mutat be visszahívásokkal és háttérben + történő végrehajtással. +og_title: Hogyan használjunk szálkezelést a kép betöltéséhez OCR-hez +tags: +- Python +- Threading +- OCR +- Image Processing +title: Hogyan használjuk a szálkezelést a kép OCR-hez történő betöltéséhez +url: /hu/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hogyan használjunk szálkezelést a kép betöltéséhez OCR-hez + +Gondolkodtál már azon, **hogyan használjunk szálkezelést** a kép betöltéséhez OCR-hez anélkül, hogy lefagyna az alkalmazásod? Ez a helyzet bármikor felmerül, akár asztali szkenner, webszolgáltatás vagy egyszerű szkriptet építesz, amely hatalmas képeket dolgoz fel. A jó hír? Néhány Python sor és a megfelelő szálkezelési minta biztosítja, hogy a felhasználói felület gyors maradjon, miközben az OCR motor varázsol. + +Ebben az útmutatóban végigvezetünk egy teljes, vég‑től‑végig példán: egy nagy PNG betöltése, OCR indítása egy háttérszálon, és az eredmény kezelése egy visszahívással. A végére nem csak **hogyan használjunk szálkezelést** fogod tudni, hanem azt is, hogy **hogyan töltsünk be képet OCR-hez** tiszta, újrahasználható módon. + +## Amire szükséged lesz + +- Python 3.9+ (a szintaxis, amit használunk, minden újabb verzión működik) +- `pillow` a képek kezeléséhez (`pip install pillow`) +- `pytesseract` mint egy vékony wrapper a Tesseract OCR körül (`pip install pytesseract`) +- Tesseract OCR motor telepítve a gépedre (letöltés innen [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Egy nagy képfájl, amelyet feldolgozni szeretnél (`large_image.png` ebben az útmutatóban) + +Nincs szükség extra keretrendszerekre, nincs async/await—csak a klasszikus `threading` és egy visszahívás. + +## 1. lépés: A Threading modul importálása (szükséges a háttérben való végrehajtáshoz) + +Az első dolog, amit teszünk, hogy betöltjük a `threading` modult. Ez biztosítja a `Thread` osztályt, amely lehetővé teszi, hogy bármelyik függvényt külön operációs rendszer szálban futtassuk. + +```python +import threading +``` + +*Miért fontos ez*: Ha az OCR-t a fő szálon futtatod, a programod (különösen egy GUI) lefagy, amíg az OCR be nem fejeződik. A munka háttérszálra delegálásával a fő szál szabad marad a felhasználói felület frissítésére, a felhasználói bemenet kezelésére vagy más feladatok indítására. + +## 2. lépés: Visszahívás definiálása, amely az OCR befejezésekor meghívódik + +A visszahívás egyszerűen egy függvény, amelyet egy másik kódrészlet hív meg, amikor befejeződött. Itt a felismert szöveget fogjuk kiírni, de tárolhatod, elküldheted a hálózaton, vagy frissíthetsz egy UI elemet. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Pro tipp*: Tartsd a visszahívást könnyűnek. A nehéz feldolgozás a visszahíváson belül aláássa a szálkezelés célját, mivel még mindig blokkolja azt a szálat, amely meghívta (gyakran a fő szálat). + +## 3. lépés: A feldolgozni kívánt kép betöltése + +A kép betöltése külön kérdés az OCR-től, de mégis az egész munkafolyamat része. A Pillow használata ezt egyszerűvé teszi. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Miért csináljuk itt*: Ha a kép hatalmas, a fő szálon történő betöltés már most is akadozást okozhat. Sok valós alkalmazásban a betöltést is egy szálra helyezik, de a tisztaság kedvéért szinkronban tartjuk. + +## 4. lépés: Kis OCR motor wrapper létrehozása + +Az eredeti kódrészlet a `engine.process_async`-t használta. Egy apró osztállyal fogjuk utánzani, amely belsőleg elindít egy szálat, és a megadott visszahívást hívja meg, amikor befejeződött. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Magyarázat*: +- `_run_ocr` végzi a nehéz munkát. +- `process_async` létrehoz egy `Thread` objektumot, daemonként jelöli (így az interpreter kiléphet, még ha a szál még fut is), és elindítja. +- A visszahívás vagy az OCR szöveget, vagy egy hibaüzenetet kap. + +## 5. lépés: Minden összekapcsolása és egyéb feladatok végzése az OCR futása közben + +Most összehangoljuk az egész folyamatot: betöltjük a képet, példányosítjuk a motort, elindítjuk az aszinkron OCR-t, és a fő szálat más feladattal foglaljuk le (itt csak egy üzenetet írunk ki). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Várható kimenet (rövidítve a tömörség kedvéért):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Ha az OCR hibát jelez, a visszahívás egy hibaüzenetet fog kiírni a szöveg helyett. + +--- + +## Miért működik ez a megközelítés jobban, mint egy egyszerű ciklus + +- **Válaszidő**: A fő szál soha nem blokkolódik az OCR hívásnál, amely nagy képek esetén több másodpercet is igénybe vehet. +- **Skálázhatóság**: Több `SimpleOcrEngine` példányt is indíthatsz, mindegyik saját szálon, hogy egy képkészletet párhuzamosan dolgozzon fel. +- **Felelősségek szétválasztása**: A betöltés, a feldolgozás és az eredménykezelés tisztán el vannak választva, így a kód könnyebben tesztelhető és karbantartható. + +## Gyakori buktatók és hogyan kerüld el őket + +| Buktató | Mi történik | Megoldás | +|---------|--------------|-----| +| Elfelejteni a szál *daemon* jelölését | A szkript lefagy, miután a fő munka befejeződött, mert az OCR szál még él. | Állítsd be `worker.daemon = True` **vagy** `join()` a szálat a kilépés előtt. | +| Globális változó használata az eredményhez zárak nélkül | Versenyhelyzetek adatkorruptiót okozhatnak, ha több szál egyszerre ír. | Add át az eredményt egy visszahíváson keresztül (ahogy mi is tesszük), vagy használj szálbiztos tárolókat, például `queue.Queue`. | +| Masszív kép betöltése a fő szálon | A UI lefagy, mielőtt a háttér OCR elindulna. | A kép betöltését is helyezd szálra, vagy használj lusta betöltési technikákat. | +| Kivételek kezelésének hiánya a munkás szálban | A nem kezelt kivételek csendben leállítják a szálat, és nem kapsz eredményt. | Tekerd be az OCR logikát `try/except`-be, és továbbítsd a hibát a visszahívásnak. | + +## Ennek a mintának a kiterjesztése + +- **Folyamatjelentés**: Használj megosztott `queue.Queue`-t, hogy az OCR szál köztes százalékos előrehaladást küldjön a fő szálnak. +- **Szálkészlet**: Készletfeldolgozáshoz cseréld le az egyes `Thread` objektumokat egy `concurrent.futures.ThreadPoolExecutor`-ra. +- **GUI integráció**: Tkinter vagy PyQt alkalmazásban ütemezd a visszahívást `after()` (Tkinter) vagy `QTimer.singleShot` (Qt) segítségével, hogy a UI frissítések a fő szálon történjenek. + +## Teljes működő példa (másolás‑beillesztés kész) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/indonesian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..501f5f6fe --- /dev/null +++ b/ocr/indonesian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-04-26 +description: Ekstrak teks header OCR menggunakan Python Aspose OCR. Pelajari cara + mengekstrak teks area tertentu dari gambar dengan cepat dan andal. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: id +og_description: Ekstrak teks header OCR dengan cepat. Panduan ini menunjukkan cara + mengekstrak teks area tertentu menggunakan Python Aspose OCR dalam beberapa baris + saja. +og_title: Ekstrak Teks Header OCR dengan Python Aspose OCR – Tutorial Lengkap +tags: +- OCR +- Python +- Aspose +title: Ekstrak Teks Header OCR dengan Python Aspose OCR – Panduan Langkah demi Langkah +url: /id/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ekstrak Teks Header OCR – Tutorial Lengkap Python Aspose OCR + +Pernahkah Anda perlu **extract header text OCR** dari faktur yang dipindai tetapi tidak ingin memproses seluruh halaman? Anda bukan satu-satunya. Dalam banyak alur kerja dunia nyata, header berisi informasi paling penting—nomor faktur, tanggal, nama vendor—sehingga mengekstraknya dengan cepat dapat menghemat banyak pekerjaan di tahap selanjutnya. + +Dalam tutorial ini kami akan menunjukkan solusi siap‑jalankan yang **extracts specific area text** menggunakan pustaka **Python Aspose OCR**. Tanpa referensi samar ke dokumen eksternal, hanya skrip lengkap, penjelasan jelas setiap baris, dan tip yang benar‑benar akan Anda gunakan besok. + +## Apa yang Akan Anda Pelajari + +- Cara menginstal dan mengimpor paket Aspose OCR untuk Python. +- Cara memuat gambar dan mendefinisikan **region of interest (ROI)** yang mengisolasi header. +- Cara menjalankan mesin OCR pada ROI tersebut dan mengambil teks bersih. +- Kesalahan umum (misalnya, ketidaksesuaian DPI) dan cara menghindarinya. +- Seperti apa output yang diharapkan sehingga Anda dapat memverifikasi semuanya berfungsi. + +Pada akhir tutorial, Anda akan dapat menyisipkan kode ini ke dalam proyek apa pun yang membutuhkan **extract header text OCR** dari faktur, kwitansi, atau dokumen apa pun dengan tata letak yang dapat diprediksi. + +## Prasyarat + +- Python 3.8 atau yang lebih baru terinstal di mesin Anda. +- Lisensi Aspose OCR untuk Python yang valid (versi percobaan gratis dapat digunakan untuk evaluasi). +- File gambar (`invoice.png`) yang berisi wilayah header yang jelas. +- Familiaritas dasar dengan fungsi Python dan jalur file. + +> **Pro tip:** Jika Anda menguji pada pemindaian beresolusi rendah, tingkatkan DPI sebelum memberikannya ke Aspose OCR – hal ini secara dramatis meningkatkan akurasi. + +--- + +## Langkah 1: Instal Paket Aspose OCR + +Pertama, tambahkan pustaka ke lingkungan Anda. Paket resmi adalah `aspose-ocr`. Jalankan ini sekali: + +```bash +pip install aspose-ocr +``` + +Jika Anda menggunakan lingkungan virtual (sangat disarankan), aktifkan terlebih dahulu sebelum menginstal. Ini memastikan paket tidak bentrok dengan proyek lain. + +## Langkah 2: Impor Kelas yang Diperlukan dan Muat Gambar + +Sekarang kita memasukkan kelas yang diperlukan ke dalam skrip dan memuat gambar faktur. Perhatikan penggunaan **full paths**; jalur relatif juga dapat digunakan, tetapi jalur absolut menghilangkan ambiguitas saat skrip dijalankan di server. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Mengapa ini penting:** Menginisialisasi `OcrEngine` sekali dan menggunakannya kembali untuk beberapa gambar lebih efisien daripada membuat mesin baru setiap kali. + +## Langkah 3: Definisikan Wilayah Header (ROI) + +Header biasanya berada di bagian atas halaman, tetapi koordinat pastinya dapat bervariasi. Di sini kami mendefinisikan sebuah persegi panjang (`x`, `y`, `width`, `height`) yang mencakup header. Sesuaikan angka-angka tersebut agar cocok dengan tata letak dokumen Anda. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Cara kerjanya:** Dengan memanggil `set_roi`, mesin OCR membatasi analisisnya pada persegi panjang ini, yang secara dramatis mempercepat pemrosesan dan mengurangi noise dari sisa halaman. + +## Langkah 4: Terapkan ROI dan Jalankan OCR + +Sekarang kami memberi tahu mesin untuk fokus pada wilayah header dan kemudian mengeksekusi proses OCR. Objek hasil berisi teks yang dikenali serta metadata tambahan (skor kepercayaan, bahasa, dll). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Jika OCR gagal (misalnya, format gambar tidak didukung), `ocr_result` akan menjadi `None`. Sebuah guard clause singkat dapat membuat skrip Anda lebih tangguh: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Langkah 5: Ambil dan Cetak Teks Header yang Diekstrak + +Akhirnya, kami mengambil teks dari objek hasil dan menampilkannya. Anda juga dapat menuliskannya ke file atau mengirimkannya ke fungsi lain untuk parsing lebih lanjut. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Output yang Diharapkan + +Ketika semuanya telah diatur dengan benar, Anda akan melihat sesuatu seperti: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Jika output terlihat berantakan, periksa kembali koordinat ROI dan pastikan gambar sumber memiliki kontras tinggi. + +--- + +## Variasi & Kasus Tepi + +### 1. Beberapa Header dalam Satu Dokumen + +Kadang-kadang PDF berisi beberapa halaman, masing‑masing dengan headernya sendiri. Lakukan loop pada halaman dan sesuaikan ROI per halaman: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Menangani Pemindaian yang Miring + +Jika faktur sedikit diputar, pra‑proses gambar dengan OpenCV sebelum memberikannya ke Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Mengubah Pengaturan Bahasa + +Aspose OCR dapat mendeteksi bahasa secara otomatis, tetapi Anda dapat memaksa bahasa Inggris untuk hasil yang lebih cepat: + +```python +ocr_engine.language = "en" +``` + +--- + +## Contoh Lengkap yang Berfungsi + +Berikut adalah skrip lengkap yang dapat Anda salin‑tempel ke dalam file bernama `extract_header.py`. Ingat untuk mengganti jalur gambar dengan milik Anda. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Menjalankan skrip ini harus menghasilkan baris header persis seperti yang ditunjukkan sebelumnya. Silakan sesuaikan nilai `roi` agar cocok dengan templat faktur spesifik Anda. + +--- + +## Pertanyaan Umum yang Dijawab + +**Q: Apakah ini bekerja langsung dengan PDF?** +A: Tidak secara langsung. Konversi setiap halaman PDF menjadi gambar (misalnya, menggunakan `pdf2image`) lalu berikan PNG/JPG ke skrip. + +**Q: Bagaimana jika header saya berisi logo dan teks bersamaan?** +A: Aspose OCR fokus pada konten teks. Untuk logo, pertimbangkan menggunakan pustaka pengenalan gambar terpisah seperti `opencv` atau `tesseract` dengan model khusus. + +**Q: Apakah percobaan gratis memiliki batas?** +A: Percobaan memungkinkan hingga 10 halaman per bulan. Untuk produksi, beli lisensi untuk menghapus batas dan membuka pengaturan akurasi yang lebih tinggi. + +--- + +## Kesimpulan + +Anda kini memiliki panduan **lengkap, layak disitasi** untuk **extract header text OCR** menggunakan **Python Aspose OCR**. Tutorial ini mencakup semua mulai dari instalasi hingga penanganan kasus tepi, dan memberikan fungsi yang dapat digunakan kembali yang dapat Anda sisipkan ke dalam alur kerja yang lebih besar. + +Selanjutnya, Anda dapat mengeksplorasi **extract specific area text** untuk zona lain seperti footer atau baris item, atau menggabungkan pendekatan ini dengan konverter PDF‑ke‑gambar untuk mengotomatisasi alur kerja dokumen penuh. Kemungkinannya tak terbatas—ingatlah untuk menjaga koordinat ROI tetap akurat dan gambar Anda beresolusi tinggi. + +Memiliki tata letak yang rumit? Bagikan di komentar dan kami akan menyesuaikan ROI bersama. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/indonesian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..0c5a13d00 --- /dev/null +++ b/ocr/indonesian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-04-26 +description: Ekstrak teks dari gambar menggunakan Aspose OCR di Python. Pelajari cara + mengekstrak teks, mengonversi gambar menjadi teks, dan memuat gambar untuk OCR dengan + dukungan multibahasa. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: id +og_description: Ekstrak teks dari gambar secara instan. Panduan ini menunjukkan cara + mengekstrak teks, mengonversi gambar menjadi teks, dan memuat gambar untuk OCR menggunakan + Aspose OCR di Python. +og_title: Ekstrak teks dari gambar dengan Python – Tutorial OCR Multibahasa Lengkap +tags: +- OCR +- Python +- Aspose +title: Ekstrak teks dari gambar dengan Python – Panduan OCR Multibahasa +url: /id/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# ekstrak teks dari gambar dengan Python – Panduan OCR Multibahasa + +Pernahkah Anda perlu **mengekstrak teks dari gambar** tetapi tidak yakin pustaka mana yang dapat menangani halaman dengan bahasa campuran? Anda tidak sendirian. Dalam banyak aplikasi dunia nyata—seperti pemrosesan faktur, pemantauan media sosial, atau pengarsipan dokumen multibahasa—Anda akan menemukan gambar yang berisi karakter Latin dan Cyrillic. + +Berita baiknya? Dengan Aspose OCR untuk Python Anda dapat **mengekstrak teks**, **mengonversi gambar ke teks**, dan **memuat gambar untuk OCR** dalam beberapa baris kode, sambil membiarkan mesin mendeteksi bahasa secara otomatis. Pada tutorial ini kami akan menelusuri contoh lengkap yang dapat dijalankan, menjelaskan mengapa setiap langkah penting, dan membahas beberapa kasus tepi yang mungkin Anda temui. + +> **Apa yang akan Anda dapatkan** +> * Skrip siap‑jalankan yang mengambil teks dari PNG berbahasa campuran. +> * Pemahaman tentang cara mengonfigurasi OCR multibahasa di Python. +> * Tips menangani file besar, format gambar berbeda, dan men-debug jebakan umum. + +## Prerequisites + +- Python 3.8 atau lebih baru (kode menggunakan f‑strings). +- Paket `asposeocr` terpasang (`pip install asposeocr`). +- Sebuah file gambar (misalnya `mixed_lang.png`) yang berisi teks dalam lebih dari satu skrip. +- Familiaritas dasar dengan impor Python dan API berorientasi‑objek. + +Tanpa ketergantungan berat, tanpa layanan eksternal—hanya satu instalasi pip dan Anda siap meluncur. + +--- + +## Step 1 – Install & import the Aspose OCR library + +Sebelum kita dapat **memuat gambar untuk OCR**, kita memerlukan pustaka itu sendiri. Paket ini menyertakan mesin OCR inti dan pemuat gambar ringan. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Mengapa ini penting*: Mengimpor kelas‑kelas spesifik menjaga namespace tetap rapi dan membuat kode selanjutnya lebih jelas. Jika Anda hanya mengimpor `asposeocr`, Anda harus menqualifikasi setiap pemanggilan (`aocr.OcrEngine()`), yang dapat membuat kode berisik. + +--- + +## Step 2 – Create the OCR engine and enable multilingual detection + +Aspose OCR dapat secara otomatis menebak bahasa yang ada dalam gambar. Menetapkan `Language.AUTO` mencakup Latin, Cyrillic, Arab, dan banyak lagi. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Pro tip*: Jika Anda sudah mengetahui set bahasa sebelumnya, Anda dapat menetapkan `Language.ENGLISH` atau `Language.RUSSIAN` untuk sedikit meningkatkan performa. Namun untuk dokumen yang benar‑benar campuran, `AUTO` adalah pilihan paling aman. + +--- + +## Step 3 – Load the image you want to process + +Di sinilah kita **memuat gambar untuk OCR**. Aspose mendukung PNG, JPEG, BMP, TIFF, dan bahkan halaman PDF yang diperlakukan sebagai gambar. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Tip**: Jika gambar Anda lebih besar dari 2 MB, pertimbangkan untuk mengubah ukurannya terlebih dahulu. Gambar besar meningkatkan penggunaan memori dan dapat memperlambat langkah deteksi. + +--- + +## Step 4 – Run the OCR process and capture the result + +Memanggil `process()` melakukan pekerjaan berat: deteksi teks, analisis tata letak, dan dekoding bahasa. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +Objek `ocr_result` yang dikembalikan berisi beberapa properti berguna: + +| Property | Description | +|----------|-------------| +| `text` | String polos dari teks yang dikenali (yang paling sering Anda gunakan). | +| `confidence` | Skor kepercayaan keseluruhan (0‑100). | +| `lines` | Daftar objek `OcrLine` dengan data posisi (bagus untuk PDF). | + +--- + +## Step 5 – Display the extracted text + +Akhirnya, kita mencetak output. Dalam aplikasi nyata Anda mungkin menulisnya ke basis data atau mengirimkannya ke API terjemahan. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Output yang diharapkan** (contoh untuk gambar berbahasa campuran): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Jika Anda melihat karakter yang kacau, periksa kembali bahwa gambar tidak rusak dan Anda menggunakan versi terbaru `asposeocr` (v23.7 pada saat penulisan). + +--- + +## Step 6 – Full script you can copy‑paste + +Menggabungkan semuanya menghilangkan kebingungan “di mana kode dimulai?”. Simpan ini sebagai `multilingual_ocr.py` dan jalankan dari baris perintah. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Jalankan: + +```bash +python multilingual_ocr.py +``` + +Anda akan melihat string yang diekstrak tercetak di konsol. Itu saja—**mengonversi gambar ke teks** dengan hanya beberapa baris kode. + +--- + +## Common questions & edge‑case handling + +### What if my image contains handwriting? +Aspose OCR dioptimalkan untuk teks cetak. Skrip tulisan tangan sering memerlukan model khusus (mis., Azure Read atau Google Vision). Anda masih dapat mencoba `Language.AUTO`, tetapi harapkan kepercayaan yang lebih rendah. + +### How do I improve accuracy on noisy scans? +1. Praproses gambar (binarisasi, despeckling). +2. Tingkatkan DPI menjadi setidaknya 300 ppi sebelum memberi ke mesin. +3. Tetapkan secara eksplisit `ocr_engine.config.deskew = True` jika gambar miring. + +```python +ocr_engine.config.deskew = True +``` + +### Can I extract text from a PDF without converting it to an image first? +Ya—Aspose OCR dapat membuka halaman PDF secara langsung: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Ingat bahwa setiap halaman diperlakukan sebagai gambar secara internal, jadi pertimbangan kualitas yang sama tetap berlaku. + +--- + +## Conclusion + +Anda kini memiliki resep lengkap‑ujung‑ke‑ujung untuk **mengekstrak teks dari gambar** menggunakan Aspose OCR di Python, lengkap dengan dukungan multibahasa. Skrip ini menunjukkan cara **memuat gambar untuk OCR**, **mengonversi gambar ke teks**, dan menangani jebakan paling umum. + +Dari sini Anda dapat: + +- Mengintegrasikan fungsi ke layanan web yang menerima unggahan pengguna. +- Menggabungkan teks yang diekstrak dengan pustaka deteksi bahasa untuk mengarahkannya ke mesin terjemahan yang tepat. +- Bereksperimen dengan opsi `ocr_engine.config` (mis., `max_recognition_time`, `text_orientation`) untuk menyempurnakan performa. + +Selamat coding, semoga pipeline OCR Anda selalu akurat! + +--- + +![Tangkapan layar teks multibahasa yang diekstrak – contoh ekstrak teks dari gambar](image-placeholder.png "contoh ekstrak teks dari gambar") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/indonesian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..316c49de2 --- /dev/null +++ b/ocr/indonesian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-04-26 +description: Cara melakukan OCR batch pada dokumen Anda dan mengekstrak teks dari + pemindaian menggunakan Python. Pelajari pemrosesan batch langkah demi langkah dengan + OcrEngine untuk output JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: id +og_description: Cara melakukan OCR batch pada file hasil scan Anda dan mengekstrak + teks dari pemindaian dalam satu skrip. Kode lengkap, tips, dan penanganan kasus + tepi. +og_title: Cara Batch OCR – Panduan Python Cepat +tags: +- OCR +- Python +- Automation +title: Cara OCR Massal – Ekstrak Teks dari Scan Secara Efisien +url: /id/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Batch OCR – Ekstrak Teks dari Scan Secara Efisien + +Pernah bertanya-tanya **bagaimana cara batch OCR** tumpukan PDF yang dipindai tanpa kehilangan akal? Anda bukan satu-satunya—para pengembang terus bertanya, *“Bagaimana saya bisa mengekstrak teks dari scan sekaligus?”* Kabar baiknya, beberapa baris Python dapat mengubah pekerjaan membosankan itu menjadi alur kerja otomatis yang mulus. + +Dalam tutorial ini kami akan membahas solusi lengkap yang siap dijalankan yang **mengekstrak teks dari scan**, menyimpan hasilnya sebagai JSON, dan memberikan pemeriksaan cepat di akhir. Tanpa layanan eksternal, tanpa sulap—hanya Python biasa, kelas `OcrEngine`, dan sedikit pengaturan folder. + +## Apa yang Akan Anda Dapatkan + +- Script yang berfungsi penuh yang **batch OCR** pada folder gambar apa pun. +- Penjelasan jelas tentang *mengapa* setiap baris ada, bukan hanya *apa* yang dilakukannya. +- Tips untuk menangani folder kosong, file non‑gambar, dan batch besar. +- Cara untuk memverifikasi bahwa output JSON memang berisi teks yang diekstrak. + +### Prasyarat (minimum yang diperlukan) + +| Persyaratan | Mengapa penting | +|-------------|-----------------| +| Python 3.8+ | Sintaks modern & petunjuk tipe | +| `OcrEngine` library (atau pembungkus yang kompatibel) | Fungsi inti OCR | +| Direktori dengan file gambar hasil scan (PNG, JPG, TIFF) | Data masukan | +| Izin menulis untuk folder output | Menyimpan hasil JSON | + +Jika Anda sudah memiliki ini, bagus—mari kita mulai. + +![alur kerja batch OCR](image-placeholder.png){alt="alur kerja batch OCR"} + +## Langkah 1 – Inisialisasi Mesin OCR (cara batch OCR) + +Sebelum kita dapat memproses apa pun, kita memerlukan instance mesin OCR. Anggaplah itu sebagai “otak” yang akan membaca setiap gambar dan menghasilkan teks. Menginisialisasinya sekali dan menggunakannya kembali di seluruh batch adalah pola paling efisien. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Mengapa menggunakan kembali instance yang sama?** +> Membuat mesin baru untuk setiap file akan berulang kali memuat model berat ke memori, secara dramatis memperlambat batch. Satu instance menjaga model tetap di RAM dan memungkinkan Anda memproses ribuan gambar tanpa perlambatan yang terlihat. + +## Langkah 2 – Arahkan ke Folder Scan Anda (ekstrak teks dari scan) + +Scan Anda berada di suatu tempat di disk. Mari beri tahu skrip di mana menemukannya. Menggunakan path absolut menghindari kejutan “file tidak ditemukan” ketika skrip dijalankan dari direktori kerja yang berbeda. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Tips pro:** +> Jika Anda menggunakan Windows, garis miring maju (`/`) berfungsi dengan baik dengan `os.path.abspath`, sehingga Anda tidak perlu meloloskan backslash. + +## Langkah 3 – Pilih Lokasi Hasil JSON + +Anda mungkin menginginkan folder rapi untuk hasil OCR. Memisahkan output dari sumber memudahkan pembersihan nanti atau memasukkan JSON ke pipeline lain. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Mengapa membuat folder secara programatis?** +> Ini memastikan skrip tidak akan crash jika direktori tidak ada, dan `exist_ok=True` membuat operasi menjadi idempotent—menjalankan skrip berulang kali tanpa error. + +## Langkah 4 – Jalankan Proses Batch (cara batch OCR) + +Sekarang inti permasalahan: memberi tahu `ocr_engine` untuk menelusuri setiap file di `input_dir`, menjalankan OCR, dan menuliskan JSON ke `output_dir`. Flag `format="json"` memberi tahu mesin untuk menyerialisasi hasil dalam format terstruktur yang disukai alat downstream. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Apa yang terjadi di balik layar? + +1. **Penemuan file** – Mesin memindai `input_folder` secara rekursif, mengabaikan file tersembunyi. +2. **Validasi file** – Hanya ekstensi gambar yang didukung (`.png`, `.jpg`, `.tif`, dll.) yang diberikan ke model OCR. +3. **Eksekusi OCR** – Setiap gambar dikirim ke mesin OCR; teks, skor kepercayaan, dan data tata letak ditangkap. +4. **Serialisasi JSON** – Hasil ditulis ke file dengan nama dasar yang sama tetapi ekstensi `.json` di `output_folder`. + +> **Penanganan kasus tepi:** +> - **Folder kosong:** Mesin mencatat “No files found” dan kembali dengan lancar. +> - **Gambar rusak:** Mesin melewati file, mencatat entri error di `batch_errors.log`, dan melanjutkan. +> - **Batch besar (10k+ file):** Penggunaan memori tetap rendah karena setiap gambar diproses secara independen. + +## Langkah 5 – Konfirmasi Konversi Selesai + +Pernyataan `print` sederhana memberikan umpan balik langsung di konsol. Untuk pipeline produksi Anda mungkin menggantinya dengan pemanggilan logging atau notifikasi email. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Ketika Anda melihat baris itu, Anda dapat memeriksa folder `json_output` dengan aman. Setiap file JSON akan tampak kira-kira seperti ini: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Anda sekarang dapat memasukkan file JSON ini ke dalam basis data, indeks pencarian, atau alat analitik downstream apa pun. + +## Pertanyaan yang Sering Diajukan (dan jawaban cepat) + +**Q: Bagaimana jika saya perlu memproses PDF alih-alih gambar?** +A: Ubah setiap halaman PDF menjadi gambar terlebih dahulu (mis., menggunakan `pdf2image`) dan letakkan file PNG/JPG yang dihasilkan di `input_dir`. Logika batch OCR tetap tidak berubah. + +**Q: Bisakah saya mengubah format output menjadi teks biasa?** +A: Tentu saja. Ganti `format="json"` dengan `format="txt"` dan mesin akan menulis file `.txt` yang hanya berisi teks yang diekstrak. + +**Q: Scan saya berada di beberapa sub‑folder—apakah skrip akan menelusuri?** +A: Ya. `batch_process` menelusuri pohon direktori secara default. Jika Anda menginginkan output datar, set `flatten=True` (jika perpustakaan mendukungnya) atau lakukan post‑process pada nama file JSON. + +**Q: Bagaimana cara menangani skrip non‑Latin?** +A: Inisialisasi `OcrEngine` dengan parameter bahasa, misalnya `OcrEngine(lang="spa+eng")`. Loop batch itu sendiri tidak memerlukan perubahan apa pun. + +## Tips Pro & Kesalahan Umum + +- **Ukuran batch penting:** Jika Anda melihat lonjakan CPU, batasi proses dengan `time.sleep(0.1)` sederhana antara file. +- **Logging:** Ganti pemanggilan `print` dengan modul `logging` Python untuk menangkap timestamp dan level error. +- **Tabrakan penamaan file:** Jika dua scan memiliki nama dasar yang sama tetapi berada di sub‑folder berbeda, file JSON akan menimpa satu sama lain. Tambahkan hash dari path relatif ke nama output untuk menghindarinya. +- **Memory leak:** Beberapa back‑end OCR menyimpan sumber daya native. Panggil `ocr_engine.close()` di akhir skrip Anda jika perpustakaan menyediakan metode pembersihan. + +## Skrip Lengkap – Siap Salin & Tempel + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Output konsol yang diharapkan** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Anda dapat memverifikasi JSON dengan membuka file apa pun di `json_output` menggunakan editor teks atau memuatnya di Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Anda akan melihat teks mentah hasil OCR yang dicetak ke konsol. + +## Kesimpulan + +Kami baru saja membahas **cara batch OCR** seluruh direktori gambar yang dipindai dan **mengekstrak teks dari scan** ke dalam file JSON yang bersih dan dapat dibaca mesin. Pendekatannya sengaja sederhana: siapkan mesin sekali, arahkan ke folder, dan biarkan perpustakaan menangani pekerjaan berat. Dari sini Anda dapat: + +- Menghubungkan JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/indonesian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..a278f0835 --- /dev/null +++ b/ocr/indonesian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,244 @@ +--- +category: general +date: 2026-04-26 +description: Cara membuat OCR dengan cepat dan andal. Pelajari cara mengekstrak teks + dari gambar, memuat gambar untuk OCR, dan menjalankan OCR pada PNG dengan kamus + khusus. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: id +og_description: Cara membuat OCR di Python dan mengekstrak teks dari gambar. Panduan + ini menunjukkan cara memuat gambar untuk OCR, menjalankan OCR pada PNG, dan menggunakan + kamus khusus. +og_title: Cara Membuat OCR di Python – Ekstraksi Teks Cepat +tags: +- OCR +- Python +- Image Processing +title: Cara Membuat OCR di Python – Ekstrak Teks dari Gambar +url: /id/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Membuat OCR di Python – Panduan Langkah‑per‑Langkah + +Pernah bertanya-tanya **bagaimana cara membuat OCR** yang dapat membaca PDF yang dipindai, tangkapan layar, atau catatan tulisan tangan Anda? Anda tidak sendirian. Dalam banyak proyek dunia nyata kami perlu *mengekstrak teks dari file gambar*, tetapi mesin bawaan sering kesulitan dengan kata‑kata khusus domain. + +Dalam tutorial ini Anda akan melihat contoh lengkap yang dapat dijalankan yang memuat gambar untuk OCR, menerapkan kamus khusus, dan akhirnya **menjalankan OCR pada file PNG**. Pada akhir tutorial Anda akan dapat mengekstrak teks dari gambar apa pun dan menyesuaikan mesin dengan terminologi Anda sendiri. + +## Apa yang Dibahas dalam Tutorial Ini + +Kami akan membahas setiap langkah yang Anda perlukan: + +* Menginstal paket `aocr` yang kecil namun kuat (atau perpustakaan kompatibel lainnya). +* Mengonfigurasi **kamus khusus** sehingga istilah seperti `aspocorp` atau `licensekey` dikenali. +* **Memuat gambar untuk OCR**, baik itu PNG, JPEG, atau halaman PDF yang dipindai. +* Menjalankan proses OCR dan mencetak hasilnya. + +Tidak ada tautan dokumentasi eksternal, hanya solusi mandiri yang dapat Anda salin‑tempel dan jalankan hari ini. + +### Prasyarat + +* Python 3.8 atau lebih baru (kode menggunakan f‑strings). +* Familiaritas dasar dengan command line – Anda akan mengetik beberapa perintah `pip install`. +* File gambar (`technical_doc.png` dalam contoh) ditempatkan di suatu lokasi yang dapat Anda referensikan. + +Jika Anda memenuhi ketiga hal tersebut, Anda siap melanjutkan. + +--- + +## Langkah 1: Instal Library OCR + +Pertama, kita memerlukan mesin OCR yang mendukung objek konfigurasi yang dapat diprogram. Paket `aocr` adalah pembungkus ringan di atas mesin OCR native dan bekerja dengan baik untuk demo. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Tip Pro:** Jika Anda menggunakan Windows dan mengalami error kompilasi, coba `pip install aocr‑binary` yang menyediakan wheel pra‑dibangun. + +### Mengapa Menginstal Library Ini? + +`aocr` memberi kita akses langsung ke objek `config` dimana kita dapat menyuntikkan **kamus khusus**. Itulah rahasia meningkatkan akurasi pada kosakata khusus. + +--- + +## Langkah 2: Buat Instance Mesin OCR & Tambahkan Kamus Khusus + +Sekarang kita memutar mesin dan memberi tahu kata‑kata apa yang harus dianggap dikenal. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Mengapa Kamus Khusus Penting + +Model OCR standar dilatih pada korpus umum. Ketika model melihat “aspocorp”, ia mungkin memisahkannya menjadi “aspo corp” atau menghilangkan huruf sama sekali. Dengan memberikan daftar khusus, kami memihak pengenalan ke ejaan tepat yang kami butuhkan, secara dramatis mengurangi upaya pasca‑pemrosesan. + +--- + +## Langkah 3: Muat Gambar yang Ingin Diproses + +Di sinilah kita **memuat gambar untuk OCR**. Metode `Image.load` menerima string path dan secara otomatis menentukan tipe file. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Kasus khusus:** Jika sumber Anda adalah PDF multi‑halaman, konversi setiap halaman ke PNG terlebih dahulu (mis., dengan `pdf2image`) dan berikan satu per satu ke mesin. + +### Tips untuk Kualitas Gambar yang Lebih Baik + +* Pertahankan resolusi minimal 300 dpi. +* Pastikan gambar dalam posisi tegak; putar dengan `Pillow` jika diperlukan. +* Konversi pemindaian berwarna ke grayscale untuk mengurangi noise. + +--- + +## Langkah 4: Jalankan Proses OCR pada File PNG + +Dengan mesin yang dikonfigurasi dan gambar yang dimuat, kita akhirnya **menjalankan OCR pada PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +Pemanggilan `process()` mengembalikan objek yang berisi teks yang dikenali, skor kepercayaan, dan bounding box untuk setiap kata. + +--- + +## Langkah 5: Keluarkan Teks yang Dikenali + +Cara paling sederhana untuk melihat apa yang ditemukan mesin adalah mencetak atribut `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Output yang Diharapkan + +Jika `technical_doc.png` berisi kalimat *“The Aspocorp licensekey expires on 2025‑12‑31.”*, konsol akan menampilkan: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Perhatikan bagaimana kamus khusus mempertahankan nama merek tetap utuh—sesuatu yang mungkin diacak oleh OCR standar. + +--- + +## Contoh Lengkap yang Berfungsi (Siap Salin‑Tempel) + +Berikut seluruh skrip, siap disimpan sebagai `run_ocr.py`. Cukup ganti path placeholder dengan lokasi gambar Anda. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Jalankan dari terminal: + +```bash +python run_ocr.py +``` + +Anda akan melihat teks yang diekstrak dicetak ke konsol, persis seperti yang ditunjukkan pada contoh sebelumnya. + +--- + +## Pertanyaan yang Sering Diajukan (FAQ) + +| Question | Answer | +|----------|--------| +| **Apakah Saya dapat mengekstrak teks dari PDF yang dipindai?** | Ya. Konversi setiap halaman ke PNG (atau TIFF) terlebih dahulu, kemudian berikan gambar-gambar tersebut ke skrip yang sama. | +| **Bagaimana jika gambar saya berupa JPEG bukan PNG?** | `Image.load` mendukung JPEG, BMP, TIFF, dan PNG secara bawaan. Cukup ubah ekstensi file. | +| **Bagaimana cara meningkatkan akurasi pada pemindaian dengan kontras rendah?** | Pra‑proses dengan `Pillow` – tingkatkan kontras, terapkan binarisasi, atau gunakan `opencv` untuk mengoreksi kemiringan. | +| **Apakah ada cara untuk mendapatkan skor kepercayaan untuk setiap kata?** | `ocr_result` mencakup `words` – setiap kata memiliki atribut `confidence` yang dapat Anda iterasi. | +| **Apakah saya dapat menjalankan ini di server tanpa tampilan (headless)?** | Tentu saja. `aocr` tidak memiliki ketergantungan GUI, menjadikannya sempurna untuk pipeline CI. | + +--- + +## Langkah Selanjutnya & Topik Terkait + +Sekarang Anda tahu **cara membuat OCR** dan **mengekstrak teks dari file gambar**, pertimbangkan untuk menjelajahi: + +* **Teknik pra‑pemrosesan** – `load image for OCR` hanyalah langkah pertama; gunakan `opencv` untuk mengurangi noise atau menajamkan. +* **Pemrosesan batch** – iterasi melalui direktori PNG untuk menghasilkan arsip yang dapat dicari. +* **Dukungan multi‑bahasa** – tambahkan paket bahasa ke mesin jika Anda perlu membaca dokumen dalam bahasa Prancis atau Jerman. +* **Integrasi dengan Elasticsearch** – indeks teks yang diekstrak untuk pencarian full‑text di seluruh aset yang dipindai. + +Setiap ekstensi ini dibangun di atas pola inti yang baru saja kami bahas, jadi Anda akan menemukan transisinya tanpa kesulitan. + +--- + +## Kesimpulan + +Dalam beberapa menit kami telah menjawab **cara membuat OCR** yang secara andal **mengekstrak teks dari file gambar**, terutama PNG, dan kami telah menunjukkan cara **memuat gambar untuk OCR**, menerapkan **kamus khusus**, dan **menjalankan OCR pada PNG** tanpa layanan eksternal apa pun. + +Jalankan skrip tersebut, sesuaikan kamus agar cocok dengan jargon Anda, dan Anda akan memiliki fondasi yang kuat untuk proyek digitalisasi dokumen apa pun. + +Jika Anda mengalami kendala, tinggalkan komentar di bawah—kami senang membantu. Dan jangan lupa membagikan kisah sukses Anda; komunitas belajar paling baik dari contoh dunia nyata. + +**Siap mengotomatisasi pekerjaan kertas Anda?** Ambil kode, sesuaikan, dan mulailah mengubah piksel menjadi teks yang dapat dicari hari ini! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/indonesian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..66a1c93a4 --- /dev/null +++ b/ocr/indonesian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: cara mengekstrak OCR dari gambar menggunakan Python – contoh OCR Python + yang menunjukkan cara memuat gambar untuk OCR dan mengekstrak teks dari struk. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: id +og_description: cara mengekstrak OCR dari gambar menggunakan Python. Pelajari contoh + OCR Python, muat gambar untuk OCR, dan ekstrak teks dari struk dalam hitungan menit. +og_title: Cara Mengekstrak OCR di Python – Panduan Lengkap +tags: +- OCR +- Python +- Image Processing +title: Cara mengekstrak OCR di Python – Tutorial Langkah demi Langkah +url: /id/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cara mengekstrak ocr di Python – Panduan Lengkap + +Pernah bertanya-tanya **bagaimana cara mengekstrak ocr** dari kwitansi yang buram atau faktur yang dipindai? Anda bukan satu-satunya—para pengembang terus menemui kendala ketika mereka membutuhkan teks bersih yang dapat dibaca mesin dari gambar. Kabar baiknya? Dengan hanya beberapa baris Python Anda dapat mengubah foto kwitansi menjadi teks dengan kepercayaan tinggi yang dapat dicari. + +Dalam tutorial ini kami akan membahas **contoh python ocr** yang menunjukkan **cara memuat gambar untuk ocr**, menjalankan mesin, dan hanya menyimpan karakter yang memenuhi ambang kepercayaan 85 %. Pada akhir tutorial Anda akan dapat **mengekstrak teks dari kwitansi** tanpa harus mencari-cari dokumentasi atau menebak parameter API. + +## Apa yang Anda Butuhkan + +- Python 3.9 atau lebih baru (sintaks yang kami gunakan bekerja pada 3.8+) +- Paket `aocr` (atau perpustakaan OCR apa pun yang menyediakan kelas `OcrEngine`). Instal dengan: + +```bash +pip install aocr +``` + +- Sebuah contoh gambar kwitansi (`receipt.png`) yang ditempatkan di folder yang dapat Anda referensikan. +- Editor teks atau IDE—VS Code, PyCharm, atau bahkan notebook sederhana sudah cukup. + +Itu saja. Tanpa kerangka kerja berat, tanpa layanan eksternal, hanya Python murni. + +![Hasil OCR kepercayaan tinggi – cara mengekstrak ocr dari kwitansi](/images/ocr-high-confidence.png) + +*Image alt text: cara mengekstrak ocr dari kwitansi menggunakan Python OCR* + +## Langkah 1 – Buat Instance Mesin OCR (cara mengekstrak ocr) + +Hal pertama yang kami lakukan adalah memulai mesin OCR. Anggap saja sebagai otak yang akan membaca piksel untuk kita. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Mengapa?** Menginstansiasi `OcrEngine` memberi Anda objek konfigurasi baru. Anda kemudian dapat menyesuaikan model bahasa, pengaturan DPI, atau langkah pra‑pemrosesan—semua tanpa menyentuh loop pemrosesan inti. + +## Langkah 2 – Muat Gambar untuk OCR + +Selanjutnya kami mengarahkan mesin ke gambar yang ingin kami analisis. Di sinilah kata kunci **memuat gambar untuk ocr** berperan. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Tip pro:** Jika gambar Anda berada di direktori lain, gunakan `os.path.join` untuk membuat jalur yang independen platform. + +**Mengapa memuat gambar dengan cara ini?** Helper `Image.load` membaca file ke dalam format yang dipahami mesin, menangani format umum (PNG, JPEG, TIFF) secara otomatis. Melewatkan langkah ini atau memberi byte mentah akan memunculkan `ValueError`. + +## Langkah 3 – Jalankan Proses OCR + +Sekarang kami benar‑benar menjalankan OCR. Metode `process` mengembalikan objek hasil yang kaya berisi simbol yang dikenali, skor kepercayaan, dan kotak pembatas. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Apa yang terkandung dalam `ocr_result`?** Pada kebanyakan perpustakaan, ini meliputi: + +- `text`: string mentah yang digabungkan. +- `symbol_confidences`: daftar tuple `(char, confidence)`. +- `boxes`: koordinat untuk setiap karakter (berguna untuk debugging visual). + +Memiliki akses ke kepercayaan per‑karakter sangat penting untuk langkah berikutnya. + +## Langkah 4 – Simpan Hanya Simbol Kepercayaan Tinggi (≥ 85 %) + +Kwitansi sering memiliki noda, cetakan pudar, atau kebisingan latar belakang. Dengan menyaring simbol kepercayaan rendah, kita secara dramatis meningkatkan parsing selanjutnya. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Mengapa 85 %?** Secara empiris, ambang sekitar 0.85 menyeimbangkan recall dan precision untuk kebanyakan kwitansi cetak. Jika Anda melihat angka yang hilang, turunkan ambang; jika Anda mendapatkan teks tak terbaca, naikkan ambang. + +## Langkah 5 – Keluarkan Teks Ekstrak Kepercayaan Tinggi + +Akhirnya, kami mencetak (atau menyimpan) string yang telah dibersihkan. Ini adalah inti dari alur kerja **mengekstrak teks dari kwitansi** kami. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Output tipikal terlihat seperti: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Anda sekarang dapat memasukkan string ini ke penulis CSV, basis data, atau pipeline analitik selanjutnya mana pun. + +## Skrip Lengkap, Siap‑Jalankan + +Berikut adalah cuplikan kode lengkap yang dapat Anda salin‑tempel ke `ocr_receipt.py` dan jalankan segera. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Simpan file, pastikan `receipt.png` ada, dan jalankan: + +```bash +python ocr_receipt.py +``` + +Anda akan melihat teks kwitansi yang telah dibersihkan dicetak ke konsol. + +## Kasus Pinggir & Skenario What‑If + +| Situasi | Perbaikan yang Disarankan | +|-----------|----------------------------| +| **Kepercayaan sangat rendah di seluruh gambar** | Pra‑proses gambar: tingkatkan kontras, konversi ke grayscale, atau terapkan filter pengurangan noise (`cv2.GaussianBlur`). | +| **Karakter non‑Latin** | Berikan model bahasa ke `OcrEngine` (misalnya `ocr_engine.language = "spa"` untuk bahasa Spanyol). | +| **Beberapa kwitansi dalam satu gambar** | Jalankan OCR pada seluruh gambar, kemudian bagi hasilnya menggunakan ekspresi reguler yang mendeteksi `\n\n+` (baris ganda). | +| **Butuh teks OCR mentah juga** | Simpan `ocr_result.text` bersama versi yang telah disaring untuk debugging. | + +Variasi ini memastikan pengetahuan **cara menggunakan OCR** Anda dapat berkembang melampaui kasus paling sederhana. + +## Kesalahan Umum (Dan Cara Menghindarinya) + +- **Lupa menginstal perpustakaan** – `pip install aocr` harus berhasil sebelum Anda mengimpor. +- **Menggunakan pemisah path yang salah** di Windows (`\` vs `/`). Gunakan `os.path.join`. +- **Menghard‑code ambang kepercayaan** tanpa pengujian – selalu lakukan pemeriksaan visual cepat pada beberapa kwitansi terlebih dahulu. +- **Mengabaikan normalisasi Unicode** – beberapa kwitansi mengandung karakter dash khusus; jalankan `unicodedata.normalize('NFKC', text)` jika Anda berencana menyimpan output. + +## Langkah Selanjutnya – Melampaui Dasar + +Sekarang Anda tahu **cara mengekstrak ocr** data dari satu kwitansi, Anda mungkin ingin: + +1. **Proses batch folder kwitansi** – iterasi semua file PNG/JPG dan tulis setiap hasil ke CSV. +2. **Integrasikan dengan basis data** – simpan `high_confidence_text` di SQLite untuk pencarian cepat. +3. **Terapkan parsing bahasa alami** – gunakan regex atau `dateutil` untuk mengambil tanggal, total, dan jumlah pajak. +4. **Bereksperimen dengan perpustakaan alternatif** – `pytesseract`, `easyocr`, atau layanan cloud (Google Vision, Azure OCR) jika Anda membutuhkan dukungan multibahasa atau akurasi lebih tinggi. + +Setiap topik ini secara alami menggabungkan kata kunci sekunder kami: *python ocr example*, *extract text from receipt*, *load image for ocr*, dan *how to use OCR*. + +## Kesimpulan + +Kami baru saja menelusuri contoh **python ocr** lengkap yang menunjukkan **cara mengekstrak ocr** teks dari gambar kwitansi, menyaring simbol kepercayaan rendah, dan menghasilkan hasil bersih. Langkah‑langkahnya sederhana, kodenya mandiri, dan pendekatannya cukup fleksibel untuk disesuaikan dengan proyek yang lebih besar. + +Cobalah dengan kwitansi Anda sendiri, sesuaikan ambang kepercayaan, dan kemudian skala ke pemrosesan batch. Jika Anda menemukan keanehan—seperti logo yang pudar atau font yang tidak biasa—ingat tips kasus pinggir di atas. Selamat coding, semoga pipeline OCR Anda selalu akurat! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/indonesian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..1e70f9600 --- /dev/null +++ b/ocr/indonesian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-04-26 +description: 'cara ocr python: Pelajari cara mengekstrak teks dari gambar dan membaca + file tiff python menggunakan contoh OCR dasar. Kode cepat yang dapat dijalankan + disertakan.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: id +og_description: 'cara ocr python: Panduan langkah demi langkah yang menunjukkan cara + mengekstrak teks dari gambar, membaca file tiff python, dan mengonversi teks gambar + yang dipindai dengan skrip sederhana yang dapat dijalankan.' +og_title: Cara OCR Python – Contoh OCR Dasar untuk Mengekstrak Teks +tags: +- OCR +- Python +- Image Processing +title: cara OCR python – Contoh OCR Dasar untuk Mengekstrak Teks +url: /id/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to ocr python – Contoh OCR Dasar untuk Mengekstrak Teks + +Pernah bertanya-tanya **how to ocr python** ketika Anda memiliki file TIFF yang dipindai di meja Anda? Anda bukan satu-satunya yang menatap sekumpulan file gambar dan bertanya, “Bagaimana cara saya mengambil kata‑kata dari ini?” Kabar baiknya, mengubah gambar menjadi teks biasa sangat mudah dengan pustaka yang tepat dan beberapa langkah jelas. + +Dalam tutorial ini kami akan membahas **basic OCR example** yang membaca file TIFF, mengekstrak teks, dan mencetaknya ke konsol. Pada akhir tutorial Anda akan tahu persis cara **extract text from image** file, cara menangani keunikan format TIFF, dan apa yang perlu disesuaikan jika Anda perlu **convert scanned image text** menjadi sesuatu yang lebih berguna. Tidak ada sihir tersembunyi—hanya Python sederhana yang dapat Anda salin‑tempel dan jalankan hari ini. + +## Apa yang Anda Butuhkan + +- Python 3.9+ terpasang (rilis stabil terbaru paling baik). +- Pustaka OCR yang dapat di‑install via pip. Untuk panduan ini kami akan menggunakan paket fiktif `aocr` yang meniru alat populer seperti Tesseract; Anda dapat menggantinya dengan `pytesseract` atau `easyocr` nanti. +- Gambar TIFF yang ingin Anda proses – beri nama `input.tiff` dan letakkan di folder yang akan Anda referensikan dalam kode. +- Familiaritas dasar dengan command line (hanya untuk menginstal paket). + +Itu saja. Tidak ada dependensi berat, tidak ada kontainer Docker, hanya beberapa baris kode. + +## Langkah 1 – Instal dan Impor Dependensi (how to ocr python) + +Pertama, dapatkan paket OCR. Buka terminal dan jalankan: + +```bash +pip install aocr +``` + +Jika Anda lebih suka pustaka dunia nyata, ganti `aocr` dengan `pytesseract` dan instal mesin Tesseract secara terpisah. + +Sekarang impor apa yang kita butuhkan. Kelas `Path` dari `pathlib` memberi kita cara bersih untuk bekerja dengan jalur file di berbagai sistem operasi. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Mengapa menggunakan `Path`?* Karena ia mengabstraksi tanda miring (`/` vs `\`) dan memungkinkan Anda menggabungkan direktori tanpa khawatir tentang OS yang mendasarinya. Detail kecil itu sering menyelamatkan dari sakit kepala ketika Anda memindahkan skrip ke server CI. + +## Langkah 2 – Buat Instance Mesin OCR (basic ocr example) + +Selanjutnya, jalankan mesin OCR. Anggap `OcrEngine` sebagai otak yang akan membaca gambar dan mengeluarkan karakter. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +Sebagian besar pustaka OCR memungkinkan Anda menyesuaikan bahasa, DPI, atau ambang kepercayaan di sini. Untuk **basic OCR example** ini kami akan tetap menggunakan nilai default, tetapi Anda dapat menjelajahi `ocr_engine.config` nanti jika perlu menangani dokumen multibahasa. + +## Langkah 3 – Muat Gambar TIFF Anda (read tiff file python) + +Di sinilah bagian **read tiff file python** muncul. TIFF dapat memiliki banyak halaman, tetapi `Image.load` akan mengambil halaman pertama secara default—sempurna untuk pemindaian satu halaman. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Ganti `"YOUR_DIRECTORY"` dengan folder sebenarnya yang berisi `input.tiff`. Jika Anda tidak yakin di mana skrip dijalankan, `Path.cwd()` mencetak direktori kerja saat ini—berguna untuk men-debug masalah jalur. + +## Langkah 4 – Jalankan Proses OCR (extract text from image) + +Sekarang keajaiban terjadi. Memanggil `process()` mengirim gambar melalui pipeline OCR dan mengembalikan objek hasil. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Di balik layar, mesin mungkin mengonversi gambar ke skala abu‑abu, menerapkan threshold, dan memasukkannya ke jaringan saraf. Anda tidak perlu mengelola langkah‑langkah itu; pustaka mengabstraksikannya. + +## Langkah 5 – Cetak Teks yang Diakui (convert scanned image text) + +Akhirnya, keluarkan teks. Dalam proyek nyata Anda mungkin menuliskannya ke file atau basis data, tetapi mencetak menjaga contoh tetap rapi. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Saat Anda menjalankan skrip, Anda akan melihat sesuatu seperti: + +``` +Hello, world! +This is a sample scanned document. +``` + +Jika output terlihat berantakan, periksa kembali bahwa gambar sumber jelas dan bahasa OCR cocok dengan teks. + +## Skrip Lengkap yang Berfungsi + +Menggabungkan semuanya, berikut program lengkap yang siap dijalankan: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Output yang Diharapkan + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Jika Anda perlu **convert scanned image text** menjadi PDF yang dapat dicari, Anda dapat mengalirkan `ocr_result.text` ke generator PDF seperti `reportlab`—tetapi itu merupakan tutorial tersendiri. + +## Kesalahan Umum & Tips Pro + +- **Low‑resolution scans**: OCR kesulitan di bawah 150 DPI. Jika TIFF Anda buram, naikkan resolusinya terlebih dahulu dengan Pillow (`Image.open(...).resize(...)`). +- **Multiple pages**: Untuk TIFF multi‑halaman, iterasi melalui `Image.load_multi_page()` (jika pustaka Anda mendukungnya) dan gabungkan hasilnya. +- **Language support**: Banyak mesin default ke bahasa Inggris. Atur `ocr_engine.language = "spa"` untuk bahasa Spanyol, misalnya. +- **Whitespace handling**: OCR sering menambahkan jeda baris yang tidak diinginkan. Gunakan `str.splitlines()` atau ekspresi reguler untuk membersihkan output. +- **Performance**: Untuk pemrosesan massal, gunakan kembali satu instance `OcrEngine` alih-alih membuat yang baru untuk setiap file. + +## Memperluas Contoh + +Sekarang Anda telah menguasai **how to ocr python** untuk satu gambar, pertimbangkan langkah selanjutnya berikut: + +1. **Batch processing** – Loop melalui direktori TIFF dan tulis setiap hasil ke file `.txt`. +2. **Integration with Pandas** – Simpan teks yang diekstrak bersama metadata untuk analisis cepat. +3. **Hybrid approach** – Gabungkan OCR dengan pustaka NLP seperti `spaCy` untuk mengekstrak entitas (nama, tanggal, jumlah) dari faktur yang dipindai. +4. **Alternative file formats** – Ganti `Image.load` dengan `Image.from_bytes` untuk menangani gambar yang datang dari API atau basis data. + +Semua ini dibangun di atas gagasan inti **extract text from image** dan **convert scanned image text** menjadi sesuatu yang dapat dipahami mesin. + +## Kesimpulan + +Kami telah membahas contoh **basic OCR example** yang jelas, end‑to‑end yang menunjukkan **how to ocr python**, cara **read tiff file python**, dan cara **extract text from image** file dengan hanya beberapa baris kode. Skrip ini mandiri, mencakup penanganan error, dan mencetak hasil secara langsung, menjadikannya fondasi yang kuat untuk proyek apa pun yang perlu mengubah dokumen yang dipindai menjadi teks yang dapat diedit. + +Silakan bereksperimen—ganti backend OCR, sesuaikan preprocessing, atau hubungkan output ke alur kerja selanjutnya. Langit adalah batasnya ketika Anda dapat secara andal **convert scanned image text** menjadi data yang dapat dicari. + +Ada pertanyaan tentang kasus tepi, paket bahasa, atau penyetelan performa? Tinggalkan komentar di bawah, dan selamat coding! + +![contoh ocr python](/images/ocr-python-example.png "Tangkapan layar output skrip how to ocr python") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/indonesian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..e21490c1b --- /dev/null +++ b/ocr/indonesian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,183 @@ +--- +category: general +date: 2026-04-26 +description: Cara menjalankan OCR pada formulir yang dipindai, pelajari cara memproses + gambar terlebih dahulu untuk mengurangi noise, dan mengekstrak teks dari gambar + dengan cepat. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: id +og_description: Cara menjalankan OCR pada dokumen yang dipindai, memproses gambar, + mengurangi noise, dan mengekstrak teks secara efisien. +og_title: Cara Menjalankan OCR dan Memproses Gambar – Panduan Cepat +tags: +- OCR +- image processing +- Python +title: Cara Menjalankan OCR dan Memproses Gambar – Ekstrak Teks dari Formulir yang + Dipindai +url: /id/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menjalankan OCR – Panduan Lengkap untuk Mengekstrak Teks dari Gambar + +Pernah bertanya-tanya **cara menjalankan OCR** pada formulir hasil scan yang berantakan dan mendapatkan teks bersih yang dapat dicari? Anda tidak sendirian. Dalam banyak proyek dunia nyata, gambar mentah penuh dengan bintik‑bintik, pencahayaan tidak merata, dan keanehan lain yang membuat OCR standar kesulitan. + +Berita baiknya? Dengan hanya beberapa baris Python dan pipeline pra‑pemrosesan yang cerdas, Anda dapat secara dramatis meningkatkan akurasi pengenalan, **mengurangi noise**, dan mengambil kata‑kata tepat yang Anda butuhkan. Dalam tutorial ini kami akan membahas setiap langkah—dari memuat gambar hingga mencetak string akhir—sehingga Anda akan memiliki cuplikan kode siap pakai yang dapat Anda sesuaikan untuk faktur, kwitansi, atau dokumen hasil scan apa pun. + +## Apa yang Akan Anda Bangun + +- Sebuah instance `OcrEngine` yang berkomunikasi dengan perpustakaan OCR di bawahnya. +- Rangkaian pra‑pemrosesan yang **binarizes** gambar dan menerapkan **median blur** untuk menghaluskan bintik‑bintik. +- Panggilan sederhana ke `process()` yang mengembalikan objek yang menampilkan `text`, string yang diekstrak. + +Pada akhir tutorial, Anda akan memiliki skrip mandiri yang dapat dijalankan pada file gambar apa pun dan langsung melihat teks yang diekstrak di konsol. + +## Prasyarat + +- Python 3.9+ (sintaks yang digunakan di sini cocok dengan rilis stabil terbaru). +- Paket fiktif `aocr` – anggap sebagai pembungkus tipis di atas Tesseract atau mesin OCR modern apa pun. Instal dengan `pip install aocr`. +- Gambar hasil scan (`scanned_form.jpg`) yang ditempatkan di folder yang dapat Anda referensikan. + +Jika Anda menggunakan perpustakaan OCR nyata seperti `pytesseract`, Anda dapat mengganti `OcrEngine` dengan kelas yang sesuai—semua hal lain tetap sama. + +![](how-to-run-ocr-example.png "contoh cara menjalankan OCR yang menampilkan formulir hasil scan dan teks yang diekstrak") + +*Teks alternatif: cara menjalankan OCR pada dokumen hasil scan dan melihat teks yang diekstrak.* + +--- + +## Langkah 1: Cara Menjalankan OCR – Inisialisasi Engine + +Sebelum engine dapat membaca apa pun, kita perlu membuat sebuah instance. Anggap `OcrEngine` sebagai otak yang nantinya akan menafsirkan data visual. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Mengapa ini penting:** Menginstansiasi engine menyiapkan model internal, memuat paket bahasa, dan menyiapkan lingkungan runtime. Melewatkan langkah ini biasanya menghasilkan error `NoneType` ketika Anda kemudian memanggil `process()`. + +--- + +## Langkah 2: Cara Memproses Gambar – Memuat Form Hasil Scan Anda + +Sekarang otak sudah siap, kita memberinya gambar. Gambar dapat berupa format apa pun yang didukung oleh `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Tips pro:** Gunakan path absolut selama pengembangan untuk menghindari kejutan “file tidak ditemukan” ketika skrip dijalankan dari direktori kerja yang berbeda. + +--- + +## Langkah 3: Cara Mengurangi Noise – Terapkan Binarisasi & Median Blur + +Scan mentah sering mengandung titik‑titik terpisah, latar belakang tidak merata, atau bayangan samar. Dua trik klasik—**binarization** dan **median blur**—membersihkan gambar tanpa mengorbankan tepi yang mendefinisikan karakter. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Menyelam Lebih Dalam + +- **Binarization**: Nilai `threshold=180` memberi tahu algoritma: “Apa pun yang lebih terang dari 180 menjadi putih; sisanya menjadi hitam.” Sesuaikan angka ini jika scan Anda terlalu gelap atau terlalu terang. +- **Median Blur**: Radius `2` berarti filter melihat jendela piksel 5×5 dan mengganti piksel tengah dengan nilai median. Ini menghaluskan bintik‑bintik terisolasi sambil mempertahankan goresan huruf tetap utuh. + +> **Kasus khusus:** Jika dokumen Anda memiliki sorotan berwarna, ambang batas biner sederhana dapat menghapusnya. Dalam skenario tersebut, pertimbangkan menggunakan `aocr.ImageFilters.adaptive_threshold()` sebagai gantinya—ini menyesuaikan ambang secara lokal di seluruh gambar. + +--- + +## Langkah 4: Cara Mengekstrak Teks – Jalankan Proses OCR + +Dengan gambar bersih di tangan, akhirnya kita biarkan engine melakukan keajaibannya. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Apa yang terjadi di balik layar?** Engine menjalankan jaringan saraf (atau pencocokan pola lama) pada matriks piksel, menerjemahkan setiap glyph yang dikenali menjadi karakter Unicode, dan menyusunnya menjadi baris serta paragraf. + +--- + +## Langkah 5: Cara Mengekstrak Teks – Cetak Hasil + +Objek `ocr_result` menyediakan atribut `text` yang nyaman. Mari lihat apa yang kita dapatkan. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Output yang Diharapkan + +Jika formulir hasil scan berisi: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Anda seharusnya melihat sesuatu seperti: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Perhatikan bagaimana langkah pra‑pemrosesan menghilangkan titik‑titik terpisah yang sebelumnya mengubah “Amount” menjadi “Am0unt”. Itulah kekuatan **cara mengurangi noise** sebelum OCR. + +--- + +## Kesalahan Umum & Cara Memperbaikinya + +| Gejala | Penyebab Kemungkinan | Solusi Cepat | +|--------|----------------------|--------------| +| Karakter kacau (mis., “@#%”) | Gambar terlalu gelap atau terlalu terang | Sesuaikan `threshold` di `binarize()`; coba `adaptive_threshold`. | +| Kata hilang | Noise masih ada | Tingkatkan `radius` untuk `median_blur` atau tambahkan filter `gaussian_blur`. | +| Bahasa salah (mis., huruf Inggris menjadi Cina) | Paket bahasa yang salah dimuat | Berikan `language="eng"` saat membuat `OcrEngine()` jika perpustakaan mendukungnya. | +| Pemrosesan lambat pada file besar | Resolusi tinggi | Ukur ulang gambar terlebih dahulu: `aocr.ImageFilters.resize(width=1200)` sebelum binarisasi. | + +--- + +## Melangkah Lebih Jauh – Langkah Selanjutnya dan Topik Terkait + +- **Pemrosesan batch**: Bungkus logika di atas dalam loop untuk menangani puluhan file secara otomatis. +- **Output terstruktur**: Gunakan ekspresi reguler pada `ocr_result.text` untuk mengekstrak bidang seperti tanggal atau jumlah. +- **Perpustakaan alternatif**: Ganti `aocr` dengan `pytesseract`—kode hanya berubah pada langkah inisialisasi engine. +- **Cara memproses gambar untuk PDF**: Konversi setiap halaman PDF menjadi gambar, lalu terapkan pipeline yang sama. + +Ekstensi ini memungkinkan Anda memperluas solusi dari satu formulir menjadi pipeline ingest dokumen tingkat perusahaan. + +--- + +## Kesimpulan + +Kami telah membahas **cara menjalankan OCR** dari awal hingga akhir, menunjukkan **cara memproses gambar** untuk **mengurangi noise**, dan mendemonstrasikan **cara mengekstrak teks dari gambar** dengan skrip yang bersih dan dapat direproduksi. Inti utama? Beberapa filter sederhana—binarization dan median blur—dapat mengubah scan yang berisik menjadi sumber data yang dapat diandalkan, menghemat Anda berjam‑jam pembersihan manual. + +Jalankan skrip ini dengan dokumen Anda sendiri, sesuaikan ambang batas, dan saksikan akurasi meningkat. Saat Anda siap, jelajahi pemrosesan batch atau integrasikan output ke dalam basis data untuk arsip yang dapat dicari. Selamat coding, semoga OCR Anda selalu tepat! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/indonesian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..2f6c5929d --- /dev/null +++ b/ocr/indonesian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-04-26 +description: Pelajari cara mengatur lisensi di Aspose OCR dan cara memvalidasi lisensi + dengan skrip Python yang ringkas. Ikuti petunjuk langkah demi langkah untuk aktivasi + tanpa masalah. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: id +og_description: Cara mengatur lisensi di Aspose OCR dan cara memvalidasi lisensi menggunakan + Python. Dapatkan contoh lengkap yang dapat dijalankan dalam hitungan menit. +og_title: Cara Mengatur Lisensi di Aspose OCR – Panduan Python Cepat +tags: +- Aspose OCR +- Python +- Licensing +title: Cara Mengatur Lisensi di Aspose OCR – Panduan Python Cepat +url: /id/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Mengatur Lisensi di Aspose OCR – Panduan Cepat Python + +Pernah bertanya‑tanya **bagaimana cara mengatur lisensi** untuk Aspose OCR tanpa membuat rambut rontok? Anda bukan satu‑satunya. Kebanyakan pengembang mengalami kebingungan pada percobaan pertama mereka untuk membuka penuh kekuatan pustaka, hanya untuk dihantui oleh watermark “Trial version”. Kabar baiknya, solusinya cukup sederhana, dan Anda dapat memverifikasinya langsung. + +Dalam tutorial ini kami akan membahas **cara mengatur lisensi** *dan* **cara memvalidasi lisensi** menggunakan skrip Python kecil. Pada akhir tutorial Anda akan memiliki contoh yang mencetak “License OK”, plus beberapa tip untuk menghindari jebakan umum. + +## Prasyarat + +Sebelum kita mulai, pastikan Anda memiliki: + +- Python 3.8+ terpasang (kode ini bekerja pada 3.9, 3.10, dan yang lebih baru). +- File lisensi aktif Aspose OCR untuk Java (atau .NET) – biasanya bernama `Aspose.OCR.Java.lic`. +- Paket `asposeocr` terpasang via `pip install asposeocr`. +- Familiaritas dasar dengan menjalankan skrip Python dari command line. + +Sudah semua? Bagus—mari kita mulai. + +## Cara Mengatur Lisensi di Aspose OCR (Langkah 1) + +Mengatur lisensi pada dasarnya adalah operasi tiga baris, tetapi setiap baris memiliki tujuan. Kami akan memecahnya agar Anda memahami *mengapa* kami melakukan hal tersebut. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Mengapa mengimpor `License`?** +Kelas `License` adalah gerbang yang memberi tahu mesin Aspose OCR bahwa Anda telah membayar produk tersebut. Tanpa membuat instance, pustaka akan terus menganggap Anda berada dalam versi percobaan. + +**Mengapa menginstansiasi `License`?** +Instansiasi memberi Anda sebuah objek (`license_obj`) yang dapat menyimpan path ke file `.lic` Anda dan selanjutnya menerapkannya pada runtime. + +## Cara Mengatur Lisensi di Aspose OCR – Menyediakan File Lisensi + +Sekarang kami mengarahkan objek ke file lisensi yang sebenarnya di disk. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Tips & trik:** + +- **Path absolut vs relatif** – Jika Anda menjalankan skrip dari folder yang berbeda, path absolut (`C:/licenses/...`) menghilangkan error “file not found”. +- **Variabel lingkungan** – Menyimpan path dalam env var (`OCR_LICENSE_PATH`) menjaga rahasia tetap di luar kontrol sumber: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Cara Memvalidasi Lisensi – Memastikan Lisensi Berfungsi + +Mengatur lisensi hanya setengah dari perjuangan; Anda perlu memastikan bahwa pustaka menerima lisensi tersebut. Di sinilah langkah validasi berperan. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Jika file lisensi hilang, rusak, atau tidak cocok, `validate()` akan melemparkan exception. Menangkap exception tersebut memberi Anda cara bersih untuk melaporkan masalah. + +## Contoh Lengkap yang Berfungsi (Semua Langkah Digabung) + +Berikut adalah skrip lengkap yang siap dijalankan. Jalankan dari terminal (`python set_license.py`) dan Anda seharusnya melihat “License OK” tercetak. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Output yang diharapkan** + +``` +License OK +``` + +Jika ada yang salah, Anda akan melihat sesuatu seperti: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Pesan itu memberi tahu tepat apa yang harus diperbaiki—tanpa harus menebak. + +## Cara Memvalidasi Lisensi – Menangani Kasus Edge Umum + +Bahkan dengan skrip di atas, beberapa skenario dapat membuat Anda terjebak: + +| Situasi | Apa yang Terjadi | Cara Memperbaiki | +|-----------|--------------|------------| +| **Typo pada path file** | `FileNotFoundError` dari `set_license` | Periksa kembali path; gunakan `os.path.abspath()` untuk debugging. | +| **Tipe file salah** | Validasi melempar “Invalid license format” | Pastikan Anda menggunakan file `.lic` yang sesuai dengan edisi produk Anda. | +| **Lisensi kedaluwarsa** | Validasi mengeluarkan “License expired” | Perbarui lisensi melalui dukungan Aspose dan ganti file tersebut. | +| **Berjalan di lingkungan terbatas** (misalnya, AWS Lambda) | Permission error | Beri akses baca ke direktori atau sematkan lisensi dalam paket deployment. | + +Tip profesional: bungkus pemanggilan `set_license` dalam blok `try/except` terpisah jika Anda ingin membedakan antara error “file not found” dan “invalid format”. + +## Ringkasan Visual + +![cara mengatur lisensi di Aspose OCR contoh](/images/aspose-ocr-license.png "cara mengatur lisensi di Aspose OCR contoh") + +*Screenshot menunjukkan skrip mencetak “License OK” setelah aktivasi berhasil.* + +## Kesalahan Umum & Praktik Terbaik + +- **Jangan pernah meng‑commit file lisensi Anda ke repo publik.** Gunakan variabel lingkungan atau secret manager (GitHub Secrets, Azure Key Vault) sebagai gantinya. +- **Validasi lebih awal.** Menempatkan `license_obj.validate()` tepat setelah `set_license` menangkap error sebelum pekerjaan OCR apa pun dimulai. +- **Gunakan kembali objek License.** Anda hanya perlu mengatur lisensi sekali per proses; panggilan OCR selanjutnya akan otomatis menggunakan lisensi yang sudah diaktifkan. +- **Log path lisensi (tanpa nama file) di produksi** untuk membantu debugging tanpa mengekspos file sebenarnya. + +## Langkah Selanjutnya – Memperluas Alur Kerja OCR Anda + +Sekarang Anda sudah tahu **cara mengatur lisensi** dan **cara memvalidasi lisensi**, Anda dapat melanjutkan ke tugas OCR inti: + +- **cara membaca gambar** – `Image.load("sample.png")` +- **cara mengekstrak teks** – `ocr_engine.recognize(image)` +- **cara mengonfigurasi opsi OCR** – sesuaikan pengaturan `OcrEngine` untuk bahasa, akurasi, dll. + +Setiap topik tersebut dibangun di atas mesin yang telah berhasil dilisensikan, sehingga Anda tidak akan pernah lagi melihat watermark trial. + +## Kesimpulan + +Kami telah membahas seluruh proses **cara mengatur lisensi** untuk Aspose OCR, mendemonstrasikan **cara memvalidasi lisensi**, dan memberikan skrip lengkap yang mencetak “License OK”. Dengan menangani error di awal dan menggunakan variabel lingkungan, Anda menjaga aplikasi tetap aman dan tangguh. + +Masih ada pertanyaan tentang OCR, lisensi, atau mengintegrasikan Aspose ke dalam pipeline yang lebih besar? 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/indonesian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..87c7a174a --- /dev/null +++ b/ocr/indonesian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: cara menggunakan OCR pada PDF yang dipindai, mengekstrak teks dari PDF, + menjalankan OCR pada PDF, dan mengonversi PDF yang dipindai menjadi file yang dapat + dicari dalam beberapa langkah. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: id +og_description: 'cara menggunakan OCR di Python: pelajari cara mengekstrak teks dari + PDF, menjalankan OCR pada PDF, dan mengubah PDF yang dipindai menjadi dokumen yang + dapat dicari.' +og_title: cara menggunakan OCR – Panduan Cepat untuk Mengekstrak Teks dari PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: Cara menggunakan OCR – Ekstrak Teks dari PDF dengan Python +url: /id/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cara menggunakan OCR – Ekstrak Teks dari PDF dengan Python + +Pernah bertanya‑tanya **bagaimana cara menggunakan OCR** untuk mengambil teks dari kontrak, kwitansi, atau ebook yang dipindai? Anda tidak sendirian. Dalam banyak proyek dunia nyata PDF yang Anda terima hanyalah gambar, dan tanpa OCR Anda tidak dapat mencari, mengindeks, atau menganalisis isinya. + +Dalam tutorial ini kami akan menelusuri contoh lengkap yang dapat dijalankan yang menunjukkan **bagaimana cara menggunakan OCR**, cara **mengekstrak teks dari PDF**, dan mengapa Anda mungkin ingin **mengonversi PDF yang dipindai** menjadi dokumen yang dapat dicari. Kami juga akan membahas seni halus **memuat PDF sebagai gambar** sehingga mesin OCR dapat melihat setiap halaman dengan jelas. + +> **Pratinjau cepat:** Pada akhir tutorial Anda akan memiliki skrip yang memuat PDF multi‑halaman, menjalankan OCR pada setiap halaman, dan mencetak teks yang dikenali – tanpa layanan eksternal. + +## Apa yang Anda Butuhkan + +- Python 3.9+ (versi terbaru apa pun dapat digunakan) +- paket `aocr` (atau pustaka OCR kompatibel lain yang menyediakan `OcrEngine` dan `Image.load`) +- File PDF yang dipindai yang ingin Anda proses (misalnya `contract.pdf`) +- Sebagian kecil RAM (≈ 200 MB per PDF 100‑halaman biasanya cukup) + +Jika Anda belum menginstal pustaka OCR, jalankan: + +```bash +pip install aocr +``` + +> **Tips pro:** Gunakan lingkungan virtual untuk menjaga ketergantungan tetap rapi. + +## Langkah 1: Muat PDF sebagai Gambar – Potongan Pertama dari Puzzle + +Sebelum OCR dapat dijalankan, PDF harus direpresentasikan sebagai gambar. Di sinilah kata kunci sekunder **load pdf as image** berperan. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Mengapa ini penting:* `aocr.Image.load` secara internal meraster setiap halaman PDF menjadi bitmap yang dapat dipahami mesin OCR. Jika Anda melewatkan langkah ini dan memberi PDF mentah, mesin akan mengeluarkan error karena mengharapkan data piksel, bukan data vektor. + +> **Catatan:** Jalur dapat berupa absolut atau relatif. Pastikan file dapat dibaca; jika tidak Anda akan mendapatkan `FileNotFoundError`. + +## Langkah 2: Jalankan OCR pada PDF – Mengubah Piksel menjadi Karakter + +Sekarang PDF sudah menjadi gambar, kita akhirnya dapat **run OCR on PDF**. Potongan kode berikut memproses semua halaman sekaligus: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Apa yang terjadi di balik layar?* `process_all_pages` mengulang halaman‑halaman yang telah diraster, menerapkan model OCR, dan mengembalikan daftar objek hasil—satu per halaman. Setiap hasil berisi teks yang dikenali, skor kepercayaan, dan kotak pembatas (jika Anda membutuhkannya nanti). + +## Langkah 3: Ekstrak Teks dari PDF – Mengambil String + +Dengan hasil OCR di tangan, mengekstrak teks polos menjadi sangat mudah. Kami akan mengiterasi halaman‑halaman dan mencetak output, memperlihatkan kata kunci sekunder **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Output yang diharapkan** (dipotong untuk singkat): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Jika Anda memerlukan teks dalam satu string, cukup gabungkan: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Sekarang Anda telah berhasil **mengekstrak teks dari PDF** menggunakan OCR. + +## Langkah 4: Konversi PDF yang Dipindai – Membuatnya Dapat Dicari + +Banyak alat hilir (seperti Elasticsearch atau SharePoint) mengharapkan PDF yang dapat dicari, bukan sekadar dump teks. Anda dapat menyematkan output OCR kembali ke PDF asli, secara efektif **convert scanned PDF** menjadi versi yang dapat dicari. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Mengapa repot?* PDF yang dapat dicari mempertahankan tata letak dan gambar asli sambil memungkinkan pemilihan teks dan pengindeksan—menang‑menang bagi manusia dan mesin. + +## Kesulitan Umum & Kasus Tepi + +### PDF Multi‑Halaman Lebih Besar Dari Memori + +Jika PDF Anda memiliki ratusan halaman, memuat semuanya sekaligus dapat menghabiskan RAM. Pustaka `aocr` mendukung pemuatan malas: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Kemudian proses halaman satu per satu: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Pemindaian Berkualitas Rendah + +Akurasi OCR menurun drastis pada pemindaian yang buram atau kontras rendah. Sebelum memberi gambar ke mesin, pertimbangkan pra‑pemrosesan: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Dukungan Bahasa + +Secara default mesin mengasumsikan bahasa Inggris. Untuk **run OCR on PDF** dalam bahasa lain, atur kode bahasa: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Pastikan model bahasa yang bersangkutan telah diinstal. + +## Contoh Kerja Lengkap + +Menggabungkan semuanya, berikut skrip mandiri yang dapat Anda simpan dalam file bernama `ocr_pdf.py` dan jalankan langsung: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Jalankan seperti ini: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Anda akan melihat teks tercetak di konsol, dan jika Anda menambahkan opsi `-o`, PDF yang dapat dicari akan muncul di samping file asli. + +## Tips Pro & Praktik Terbaik + +- **Pemrosesan batch:** Saat menangani puluhan PDF, bungkus logika di atas dalam loop dan catat keberhasilan/kegagalan tiap file. +- **Penyaringan kepercayaan:** Setiap `page_result` menyertakan metrik kepercayaan. Buang atau beri tanda pada halaman dengan kepercayaan rendah untuk ditinjau secara manual. +- **Paralelisme:** Jika CPU Anda memiliki banyak inti, pertimbangkan menggunakan `concurrent.futures` untuk memproses halaman secara paralel—tetapi perhatikan penggunaan memori. +- **Penguncian versi:** API `aocr` dapat berubah. Kunci versi di `requirements.txt` (misalnya `aocr==2.3.1`) untuk menghindari perubahan yang merusak. + +## Kesimpulan + +Kami telah menelusuri **bagaimana cara menggunakan OCR** untuk **mengekstrak teks dari PDF**, **run OCR on PDF**, **load PDF as image**, dan bahkan **convert scanned PDF** menjadi format yang dapat dicari. Kode lengkap, penjelasan mencakup baik *apa* maupun *mengapa*, dan kini Anda memiliki pola yang dapat digunakan kembali untuk proyek apa pun yang berurusan dengan PDF berbasis gambar. + +Apa selanjutnya? Cobalah mengalirkan teks yang diekstrak ke pipeline bahasa alami, indeks PDF yang dapat dicari dengan Elasticsearch, atau bereksperimen dengan backend OCR lain seperti Tesseract atau Azure Computer Vision. Langit adalah batasnya, dan alat‑alatnya sudah berada di ujung jari Anda. + +Selamat coding, semoga PDF Anda selalu dapat dicari! + +![contoh cara menggunakan OCR](/images/ocr_workflow.png "cara menggunakan OCR") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/indonesian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/indonesian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..e1e4d2b17 --- /dev/null +++ b/ocr/indonesian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Cara menggunakan threading untuk memuat gambar untuk OCR di Python. Pelajari + pemrosesan OCR async dengan callback, thread latar belakang, dan pemuatan gambar + dalam beberapa langkah saja. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: id +og_description: Cara menggunakan threading untuk memuat gambar untuk OCR di Python. + Panduan ini menampilkan contoh lengkap yang dapat dijalankan dengan callback dan + eksekusi di latar belakang. +og_title: Cara Menggunakan Threading untuk Memuat Gambar untuk OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Cara Menggunakan Threading untuk Memuat Gambar untuk OCR +url: /id/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cara Menggunakan Threading untuk Memuat Gambar untuk OCR + +Pernah bertanya-tanya **bagaimana cara menggunakan threading** untuk memuat gambar untuk OCR tanpa membekukan aplikasi Anda? Ini adalah skenario yang muncul baik Anda sedang membangun pemindai desktop, layanan web, atau skrip sederhana yang memproses gambar besar. Kabar baik? Beberapa baris Python dan pola threading yang tepat akan membuat UI Anda tetap responsif sementara mesin OCR bekerja. + +Dalam tutorial ini kami akan membahas contoh lengkap, end‑to‑end: memuat PNG besar, memulai OCR pada thread latar belakang, dan menangani hasilnya dengan callback. Pada akhir Anda tidak hanya akan mengetahui **bagaimana cara menggunakan threading** tetapi juga bagaimana **memuat gambar untuk OCR** dengan cara yang bersih dan dapat digunakan kembali. + +## Apa yang Anda Butuhkan + +- Python 3.9+ (sintaks yang kami gunakan bekerja pada versi terbaru apa pun) +- `pillow` untuk penanganan gambar (`pip install pillow`) +- `pytesseract` sebagai pembungkus tipis di atas Tesseract OCR (`pip install pytesseract`) +- Mesin Tesseract OCR terpasang di mesin Anda (unduh dari [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- File gambar besar yang ingin Anda proses (`large_image.png` dalam panduan ini) + +Tidak ada kerangka kerja tambahan, tidak async/await—hanya `threading` klasik dan sebuah callback. + +## Langkah 1: Impor Modul Threading (Diperlukan untuk Eksekusi Latar Belakang) + +Hal pertama yang kami lakukan adalah mengimpor modul `threading`. Modul ini menyediakan kelas `Thread`, yang memungkinkan kami menjalankan fungsi apa pun di thread OS terpisah. + +```python +import threading +``` + +*Mengapa ini penting*: Jika Anda menjalankan OCR pada thread utama, program Anda (terutama GUI) akan membeku sampai OCR selesai. Dengan mendelegasikan pekerjaan ke thread latar belakang, thread utama tetap bebas untuk memperbarui UI, menangani input pengguna, atau memulai tugas lain. + +## Langkah 2: Definisikan Callback yang Akan Dipanggil Ketika OCR Selesai + +Callback hanyalah sebuah fungsi yang dipanggil oleh potongan kode lain ketika selesai. Di sini kami akan mencetak teks yang dikenali, tetapi Anda dapat menyimpannya, mengirimnya melalui jaringan, atau memperbarui widget UI. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Tips profesional*: Jaga callback tetap ringan. Pemrosesan berat di dalam callback mengalahkan tujuan threading karena tetap akan memblokir thread yang memanggilnya (seringkali thread utama). + +## Langkah 3: Muat Gambar yang Ingin Anda Proses + +Memuat gambar adalah hal terpisah dari OCR, tetapi tetap merupakan bagian dari alur kerja keseluruhan. Menggunakan Pillow membuat ini menjadi sangat mudah. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Mengapa kami melakukannya di sini*: Jika gambar sangat besar, memuatnya pada thread utama dapat menyebabkan gangguan. Pada banyak aplikasi dunia nyata Anda juga akan memindahkan pemuatan ke thread, tetapi demi kejelasan kami tetap melakukannya secara sinkron. + +## Langkah 4: Buat Pembungkus Mesin OCR Kecil + +Potongan kode asli menggunakan `engine.process_async`. Kami akan meniru itu dengan kelas kecil yang memulai thread secara internal dan memanggil callback yang diberikan ketika selesai. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Penjelasan*: +- `_run_ocr` melakukan pekerjaan berat. +- `process_async` membuat objek `Thread`, menandainya sebagai daemon (sehingga interpreter dapat keluar meskipun thread masih berjalan), dan memulainya. +- Callback menerima teks OCR atau pesan error. + +## Langkah 5: Sambungkan Semua dan Lakukan Pekerjaan Lain Sementara OCR Berjalan + +Sekarang kami mengatur seluruh alur: memuat gambar, menginstansiasi mesin, memulai OCR async, dan menjaga thread utama tetap sibuk dengan hal lain (di sini kami hanya mencetak pesan). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Output yang diharapkan (dipotong untuk singkat):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Jika OCR gagal, callback akan mencetak pesan error alih-alih teks. + +--- + +## Mengapa Pendekatan Ini Bekerja Lebih Baik Daripada Loop Sederhana + +- **Responsiveness**: Thread utama tidak pernah terblokir pada panggilan OCR, yang dapat memakan beberapa detik untuk gambar besar. +- **Scalability**: Anda dapat menjalankan beberapa instance `SimpleOcrEngine`, masing‑masing pada threadnya sendiri, untuk memproses batch gambar secara bersamaan. +- **Separation of Concerns**: Memuat, memproses, dan menangani hasil dipisahkan dengan bersih, membuat kode lebih mudah diuji dan dipelihara. + +## Kesalahan Umum dan Cara Menghindarinya + +| Pitfall | What Happens | Fix | +|---------|--------------|-----| +| Lupa menandai thread sebagai *daemon* | Script tetap berjalan setelah pekerjaan utama selesai karena thread OCR masih hidup. | Set `worker.daemon = True` **or** `join()` thread sebelum keluar. | +| Menggunakan variabel global untuk hasil tanpa kunci | Kondisi balapan dapat merusak data ketika beberapa thread menulis secara bersamaan. | Lewatkan hasil melalui callback (seperti yang kami lakukan) atau gunakan kontainer thread‑safe seperti `queue.Queue`. | +| Memuat gambar besar pada thread utama | UI membeku sebelum OCR latar belakang bahkan dimulai. | Pindahkan pemuatan gambar ke thread juga, atau gunakan teknik lazy loading. | +| Tidak menangani pengecualian di dalam thread pekerja | Pengecualian yang tidak tertangkap secara diam-diam menghentikan thread, meninggalkan Anda tanpa hasil. | Bungkus logika OCR dalam `try/except` dan teruskan error ke callback. | + +## Memperluas Pola Ini + +- **Progress Reporting**: Gunakan `queue.Queue` bersama untuk mengirim persentase kemajuan intermediat dari thread OCR ke thread utama. +- **Thread Pool**: Untuk pemrosesan batch, ganti objek `Thread` individual dengan `concurrent.futures.ThreadPoolExecutor`. +- **GUI Integration**: Pada aplikasi Tkinter atau PyQt, jadwalkan callback dengan `after()` (Tkinter) atau `QTimer.singleShot` (Qt) untuk memastikan pembaruan UI terjadi pada thread utama. + +## Contoh Lengkap yang Berfungsi (Siap Salin‑Tempel) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/italian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..318a2027d --- /dev/null +++ b/ocr/italian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-04-26 +description: Estrai il testo dell'intestazione con OCR usando Python Aspose OCR. Scopri + come estrarre il testo di aree specifiche dalle immagini in modo rapido e affidabile. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: it +og_description: Estrai rapidamente il testo dell'intestazione con OCR. Questa guida + mostra come estrarre il testo di un'area specifica usando Python Aspose OCR in poche + righe. +og_title: Estrai il testo dell'intestazione con OCR in Python Aspose OCR – Tutorial + completo +tags: +- OCR +- Python +- Aspose +title: Estrai il testo dell'intestazione con OCR in Python Aspose OCR – Guida passo + passo +url: /it/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Estrai Testo Intestazione OCR – Tutorial Completo Python Aspose OCR + +Hai mai dovuto **estrarre testo intestazione OCR** da una fattura scansionata senza dover elaborare l'intera pagina? Non sei il solo. In molti flussi di lavoro reali l'intestazione contiene le informazioni più critiche—numero fattura, data, nome fornitore—quindi estrarla rapidamente può far risparmiare molto lavoro a valle. + +In questo tutorial ti mostreremo una soluzione pronta all'uso che **estrae testo da un'area specifica** usando la libreria **Python Aspose OCR**. Niente riferimenti vaghi a documenti esterni, solo uno script completo, una spiegazione chiara di ogni riga e consigli che potrai usare già domani. + +## Cosa Imparerai + +- Come installare e importare il pacchetto Aspose OCR per Python. +- Come caricare un'immagine e definire una **region of interest (ROI)** che isola l'intestazione. +- Come eseguire il motore OCR su quella ROI e recuperare il testo pulito. +- Problemi comuni (ad es. mismatch di DPI) e come evitarli. +- Come appare l'output previsto così potrai verificare che tutto funzioni. + +Al termine potrai inserire questo codice in qualsiasi progetto che necessiti di **estrarre testo intestazione OCR** da fatture, ricevute o qualsiasi documento con un layout prevedibile. + +## Prerequisiti + +- Python 3.8 o versioni successive installato sulla tua macchina. +- Una licenza valida di Aspose OCR per Python (la versione di prova gratuita è sufficiente per la valutazione). +- Un file immagine (`invoice.png`) che contenga una chiara zona intestazione. +- Familiarità di base con le funzioni Python e i percorsi dei file. + +> **Pro tip:** Se stai testando su una scansione a bassa risoluzione, aumenta il DPI prima di passarla ad Aspose OCR – migliora drasticamente la precisione. + +--- + +## Passo 1: Installa il Pacchetto Aspose OCR + +Per prima cosa, aggiungi la libreria al tuo ambiente. Il pacchetto ufficiale è `aspose-ocr`. Esegui questo comando una sola volta: + +```bash +pip install aspose-ocr +``` + +Se usi un ambiente virtuale (altamente consigliato), attivalo prima dell'installazione. Questo garantisce che il pacchetto non vada in conflitto con altri progetti. + +## Passo 2: Importa le Classi Necessarie e Carica l'Immagine + +Ora importiamo le classi necessarie nello script e carichiamo l'immagine della fattura. Nota l'uso dei **percorsi completi**; anche i percorsi relativi funzionano, ma i percorsi assoluti eliminano ambiguità quando lo script viene eseguito su un server. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Perché è importante:** Inizializzare `OcrEngine` una sola volta e riutilizzarlo per più immagini è più efficiente rispetto a creare un nuovo motore ad ogni esecuzione. + +## Passo 3: Definisci la Regione Intestazione (ROI) + +L'intestazione di solito si trova nella parte superiore della pagina, ma le coordinate esatte possono variare. Qui definiamo un rettangolo (`x`, `y`, `width`, `height`) che copre l'intestazione. Regola i numeri per adattarli al layout del tuo documento. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Come funziona:** Chiamando `set_roi`, il motore OCR limita la sua analisi a questo rettangolo, velocizzando notevolmente l'elaborazione e riducendo il rumore proveniente dal resto della pagina. + +## Passo 4: Applica la ROI ed Esegui l'OCR + +Ora indichiamo al motore di concentrarsi sulla regione intestazione e poi eseguiamo il processo OCR. L'oggetto risultato contiene il testo riconosciuto e metadati aggiuntivi (punteggi di confidenza, lingua, ecc.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Se l'OCR fallisce (ad es. formato immagine non supportato), `ocr_result` sarà `None`. Una semplice guard clause può rendere lo script più robusto: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Passo 5: Recupera e Stampa il Testo Intestazione Estratto + +Infine, estraiamo il testo dall'oggetto risultato e lo mostriamo. Puoi anche scriverlo su un file o passarlo a un'altra funzione per ulteriori analisi. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Output Previsto + +Quando tutto è configurato correttamente, dovresti vedere qualcosa di simile: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Se l'output appare confuso, ricontrolla le coordinate della ROI e assicurati che l'immagine di origine abbia alto contrasto. + +--- + +## Varianti & Casi Limite + +### 1. Intestazioni Multiple in un Documento + +A volte un PDF contiene diverse pagine, ognuna con la propria intestazione. Itera sulle pagine e regola la ROI per ciascuna: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Gestione di Scansioni Inclinate + +Se la fattura è leggermente ruotata, pre‑elabora l'immagine con OpenCV prima di passarla ad Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Modifica delle Impostazioni Lingua + +Aspose OCR può rilevare automaticamente la lingua, ma puoi forzare l'inglese per risultati più rapidi: + +```python +ocr_engine.language = "en" +``` + +--- + +## Esempio Completo Funzionante + +Di seguito trovi lo script completo da copiare‑incollare in un file chiamato `extract_header.py`. Ricorda di sostituire il percorso dell'immagine con quello corretto. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Eseguendo questo script dovresti ottenere le righe dell'intestazione esattamente come mostrato in precedenza. Sentiti libero di modificare i valori di `roi` per adattarli al tuo modello di fattura specifico. + +--- + +## Domande Frequenti + +**D: Funziona direttamente con i PDF?** +R: Non subito. Converte ogni pagina PDF in un'immagine (ad es. con `pdf2image`) poi passa il PNG/JPG allo script. + +**D: E se la mia intestazione contiene un logo insieme al testo?** +R: Aspose OCR si concentra sul contenuto testuale. Per i loghi, considera l'uso di una libreria di riconoscimento immagini separata come `opencv` o `tesseract` con un modello personalizzato. + +**D: La versione di prova è limitata?** +R: La prova consente fino a 10 pagine al mese. Per la produzione acquista una licenza per rimuovere il limite e sbloccare impostazioni di precisione più elevate. + +--- + +## Conclusione + +Ora disponi di una guida **completa e citabile** per **estrarre testo intestazione OCR** usando **Python Aspose OCR**. Il tutorial ha coperto tutto, dall'installazione alla gestione dei casi limite, fornendoti una funzione riutilizzabile da inserire in flussi di lavoro più ampi. + +Come passo successivo, potresti esplorare **estrarre testo da aree specifiche** per altre zone come piè di pagina o righe di dettaglio, o combinare questo approccio con un convertitore PDF‑to‑image per automatizzare pipeline di documenti completi. Le possibilità sono infinite—ricorda solo di mantenere le coordinate ROI precise e le immagini ad alta risoluzione. + +Hai un layout difficile? Condividilo nei commenti e aggiusteremo insieme la ROI. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/italian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..08b5b0478 --- /dev/null +++ b/ocr/italian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-04-26 +description: estrarre testo da un'immagine usando Aspose OCR in Python. Scopri come + estrarre il testo, convertire l'immagine in testo e caricare l'immagine per OCR + con supporto multilingue. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: it +og_description: estrai testo da un'immagine istantaneamente. Questa guida mostra come + estrarre il testo, convertire l'immagine in testo e caricare l'immagine per OCR + usando Aspose OCR in Python. +og_title: Estrarre testo da un'immagine con Python – Tutorial completo di OCR multilingue +tags: +- OCR +- Python +- Aspose +title: estrarre testo da immagine con Python – Guida OCR multilingue +url: /it/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# estrarre testo da immagine con Python – Guida OCR Multilingue + +Hai mai avuto bisogno di **estrarre testo da immagine** ma non eri sicuro quale libreria potesse gestire pagine multilingue? Non sei solo. In molte applicazioni reali—pensa all'elaborazione di fatture, al monitoraggio dei social‑media o all'archiviazione di documenti multilingue—ti imbatterai in immagini che contengono sia caratteri latini che cirillici. + +La buona notizia? Con Aspose OCR per Python puoi **estrarre testo**, **convertire immagine in testo** e **caricare immagine per OCR** in poche righe, lasciando che il motore rilevi automaticamente la lingua. In questo tutorial passeremo in rassegna un esempio completo e eseguibile, spiegheremo perché ogni passaggio è importante e tratteremo un paio di casi limite che potresti incontrare. + +> **Cosa otterrai** +> * Uno script pronto all'uso che estrae testo da un PNG multilingue. +> * Comprensione di come configurare l'OCR multilingue in Python. +> * Suggerimenti per gestire file di grandi dimensioni, formati immagine diversi e il debug dei problemi più comuni. + +## Prerequisiti + +- Python 3.8 o versioni successive (il codice utilizza f‑strings). +- Pacchetto `asposeocr` installato (`pip install asposeocr`). +- Un file immagine (ad es. `mixed_lang.png`) che contiene testo in più di uno script. +- Familiarità di base con le importazioni Python e le API orientate agli oggetti. + +Nessuna dipendenza pesante, nessun servizio esterno—solo un singolo pip install e sei pronto a partire. + +--- + +## Passo 1 – Installa e importa la libreria Aspose OCR + +Prima di poter **caricare immagine per OCR**, abbiamo bisogno della libreria stessa. Il pacchetto include il motore OCR core e un caricatore di immagini leggero. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Perché è importante*: Importare le classi specifiche mantiene pulito lo spazio dei nomi e rende il codice successivo più chiaro. Se importi solo `asposeocr`, dovrai qualificare ogni chiamata (`aocr.OcrEngine()`), il che può risultare ingombrante. + +--- + +## Passo 2 – Crea il motore OCR e abilita il rilevamento multilingue + +Aspose OCR può indovinare automaticamente le lingue presenti nell'immagine. Impostare `Language.AUTO` copre latino, cirillico, arabo e molte altre. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Consiglio professionale*: Se conosci in anticipo il set di lingue, puoi assegnare `Language.ENGLISH` o `Language.RUSSIAN` per un piccolo miglioramento delle prestazioni. Ma per documenti davvero misti, `AUTO` è la scelta più sicura. + +--- + +## Passo 3 – Carica l'immagine da elaborare + +Qui è dove **carichiamo l'immagine per OCR**. Aspose supporta PNG, JPEG, BMP, TIFF e persino pagine PDF trattate come immagini. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Suggerimento**: Se la tua immagine è più grande di 2 MB, considera di ridimensionarla in anticipo. Le immagini grandi aumentano l'uso della memoria e possono rallentare il passaggio di rilevamento. + +--- + +## Passo 4 – Esegui il processo OCR e cattura il risultato + +Chiamare `process()` fa il lavoro pesante: rilevamento del testo, analisi del layout e decodifica della lingua. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +L'oggetto `ocr_result` restituito contiene diverse proprietà utili: + +| Property | Description | +|----------|-------------| +| `text` | String semplice del testo riconosciuto (ciò che userai più spesso). | +| `confidence` | Punteggio di fiducia complessivo (0‑100). | +| `lines` | Lista di oggetti `OcrLine` con dati posizionali (ottimo per PDF). | + +--- + +## Passo 5 – Visualizza il testo estratto + +Infine, stampiamo l'output. In un'applicazione reale potresti scriverlo in un database o inviarlo a un'API di traduzione. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Output previsto** (esempio per un'immagine multilingue): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Se vedi caratteri illeggibili, verifica che l'immagine non sia corrotta e che tu stia usando l'ultima versione di `asposeocr` (v23.7 al momento della stesura). + +--- + +## Passo 6 – Script completo da copiare‑incollare + +Mettere tutto insieme elimina la confusione del “dove inizia il codice?”. Salva questo come `multilingual_ocr.py` ed eseguilo dalla riga di comando. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Eseguilo: + +```bash +python multilingual_ocr.py +``` + +Dovresti vedere le stringhe estratte stampate sulla console. È tutto—**converti immagine in testo** con poche righe. + +--- + +## Domande comuni e gestione dei casi limite + +### E se la mia immagine contiene scrittura a mano? +Aspose OCR è ottimizzato per testo stampato. Le scritture a mano spesso richiedono un modello dedicato (ad es. Azure Read o Google Vision). Puoi comunque provare `Language.AUTO`, ma aspettati una fiducia più bassa. + +### Come migliorare l'accuratezza su scansioni rumorose? +1. Pre‑processare l'immagine (binarizzazione, rimozione del rumore). +2. Aumentare DPI a almeno 300 ppi prima di passare l'immagine al motore. +3. Impostare esplicitamente `ocr_engine.config.deskew = True` se l'immagine è inclinata. + +```python +ocr_engine.config.deskew = True +``` + +### Posso estrarre testo da un PDF senza convertirlo prima in immagine? +Sì—Aspose OCR può aprire direttamente le pagine PDF: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Ricorda solo che ogni pagina è trattata internamente come un'immagine, quindi si applicano le stesse considerazioni di qualità. + +--- + +## Conclusione + +Ora hai una ricetta solida, end‑to‑end, per **estrarre testo da immagine** usando Aspose OCR in Python, completa di supporto multilingue. Lo script dimostra come **caricare immagine per OCR**, **convertire immagine in testo**, e gestire i problemi più comuni. + +Da qui potresti: + +- Integrare la funzione in un servizio web che accetta upload da parte degli utenti. +- Accoppiare il testo estratto con una libreria di rilevamento della lingua per indirizzarlo al giusto motore di traduzione. +- Sperimentare le opzioni `ocr_engine.config` (ad es., `max_recognition_time`, `text_orientation`) per ottimizzare le prestazioni. + +Buon coding, e che le tue pipeline OCR siano sempre accurate! + +--- + +![Screenshot del testo multilingue estratto – esempio di estrazione testo da immagine](image-placeholder.png "esempio di estrazione testo da immagine") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/italian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..eadbdf7dc --- /dev/null +++ b/ocr/italian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-04-26 +description: Come eseguire OCR in batch dei tuoi documenti ed estrarre il testo dalle + scansioni in Python. Impara il processamento batch passo‑passo con OcrEngine per + l'output JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: it +og_description: Come eseguire l'OCR batch dei tuoi file scansionati ed estrarre il + testo dalle scansioni in un unico script. Codice completo, consigli e gestione dei + casi limite. +og_title: Come fare OCR in batch – Guida Python veloce +tags: +- OCR +- Python +- Automation +title: Come eseguire OCR in batch – Estrarre testo dalle scansioni in modo efficiente +url: /it/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come eseguire OCR in batch – Estrarre testo da scansioni in modo efficiente + +Ti sei mai chiesto **come eseguire OCR in batch** su una montagna di PDF scansionati senza perdere la pazienza? Non sei l'unico: gli sviluppatori chiedono continuamente, *“Come posso estrarre testo dalle scansioni in un solo passaggio?”* La buona notizia è che poche righe di Python possono trasformare questo compito noioso in una pipeline fluida e automatizzata. + +In questo tutorial percorreremo una soluzione completa, pronta all'uso, che **estrae testo dalle scansioni**, salva i risultati in JSON e fornisce un rapido controllo di coerenza alla fine. Nessun servizio esterno, nessuna magia—solo Python puro, la classe `OcrEngine` e un po' di gestione delle cartelle. + +## Cosa otterrai + +- Uno script completamente funzionale che **esegue OCR in batch** su qualsiasi cartella di immagini. +- Spiegazioni chiare del *perché* di ogni riga, non solo del *cosa* fa. +- Suggerimenti per gestire cartelle vuote, file non‑immagine e batch di grandi dimensioni. +- Un metodo per verificare che l'output JSON contenga effettivamente il testo estratto. + +### Prerequisiti (il minimo indispensabile) + +| Requisito | Perché è importante | +|-------------|----------------| +| Python 3.8+ | Sintassi moderna e type hints | +| `OcrEngine` library (or a compatible wrapper) | Funzionalità OCR di base | +| A directory with scanned image files (PNG, JPG, TIFF) | Dati di input | +| Write permissions for the output folder | Salvataggio dei risultati JSON | + +Se hai già tutto questo, ottimo—tuffiamoci. + +![how to batch OCR workflow](image-placeholder.png){alt="flusso di lavoro per batch OCR"} + +## Passo 1 – Inizializzare il motore OCR (come eseguire OCR in batch) + +Prima di poter elaborare qualsiasi cosa, abbiamo bisogno di un'istanza del motore OCR. Pensala come il “cervello” che leggerà ogni immagine e produrrà testo. Inizializzarla una sola volta e riutilizzarla per tutto il batch è il modello più efficiente. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Perché riutilizzare la stessa istanza?** +> Creare un nuovo motore per ogni file caricherebbe ripetutamente modelli pesanti in memoria, rallentando drasticamente il batch. Un'istanza mantiene il modello in RAM e ti permette di elaborare migliaia di immagini senza un rallentamento evidente. + +## Passo 2 – Indicare la cartella delle scansioni (estrarre testo dalle scansioni) + +Le tue scansioni sono salvate da qualche parte sul disco. Diciamo allo script dove trovarle. L'uso di percorsi assoluti evita sorprese del tipo “file non trovato” quando lo script viene avviato da una directory di lavoro diversa. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Consiglio professionale:** +> Se sei su Windows, le barre oblique (`/`) funzionano perfettamente con `os.path.abspath`, quindi non è necessario eseguire l'escape dei backslash. + +## Passo 3 – Scegliere dove salvare i risultati JSON + +Probabilmente desideri una cartella ordinata per i risultati OCR. Tenere l'output separato dalla sorgente facilita la pulizia successiva o l'inserimento del JSON in un'altra pipeline. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Perché creare la cartella programmaticamente?** +> Garantisce che lo script non vada in crash se la directory è assente, e `exist_ok=True` rende l'operazione idempotente—puoi eseguire lo script più volte senza errori. + +## Passo 4 – Eseguire il processo batch (come eseguire OCR in batch) + +Ora il nocciolo della questione: far sì che `ocr_engine` attraversi ogni file in `input_dir`, esegua l'OCR e scriva il JSON in `output_dir`. Il flag `format="json"` indica al motore di serializzare il risultato in modo strutturato, apprezzato dagli strumenti a valle. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Cosa succede dietro le quinte? + +1. **Scoperta dei file** – Il motore scansiona `input_folder` in modo ricorsivo, ignorando i file nascosti. +2. **Validazione dei file** – Solo le estensioni immagine supportate (`.png`, `.jpg`, `.tif`, ecc.) vengono inviate al modello OCR. +3. **Esecuzione OCR** – Ogni immagine viene inviata al motore OCR; testo, punteggi di confidenza e dati di layout vengono catturati. +4. **Serializzazione JSON** – Il risultato viene scritto in un file con lo stesso nome base ma estensione `.json` in `output_folder`. + +> **Gestione dei casi limite:** +> - **Cartella vuota:** Il motore registra “No files found” e termina senza errori. +> - **Immagine corrotta:** Salta il file, registra una voce di errore in `batch_errors.log` e continua. +> - **Batch enorme (10k+ file):** L'uso della memoria rimane basso perché ogni immagine viene elaborata indipendentemente. + +## Passo 5 – Confermare il completamento della conversione + +Una semplice istruzione `print` fornisce un feedback immediato nella console. Per pipeline di produzione potresti sostituirla con una chiamata di logging o una notifica email. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Quando vedi quella riga, puoi ispezionare in sicurezza la cartella `json_output`. Ogni file JSON avrà un aspetto simile a questo: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Ora puoi inserire questi file JSON in un database, un indice di ricerca o qualsiasi strumento di analisi a valle. + +## Domande frequenti (e risposte rapide) + +**Q: E se devo elaborare PDF invece di immagini?** +A: Converti ogni pagina PDF in un'immagine prima (ad esempio, usando `pdf2image`) e posiziona i file PNG/JPG risultanti in `input_dir`. La logica di batch OCR rimane invariata. + +**Q: Posso cambiare il formato di output in testo semplice?** +A: Assolutamente. Sostituisci `format="json"` con `format="txt"` e il motore scriverà un file `.txt` contenente solo il testo estratto. + +**Q: Le mie scansioni sono in più sottocartelle—lo script ricorrerà?** +A: Sì. `batch_process` attraversa l'albero delle directory per impostazione predefinita. Se desideri un output piatto, imposta `flatten=True` (se la libreria lo supporta) o post‑processa i nomi dei file JSON. + +**Q: Come gestire script non latini?** +A: Inizializza `OcrEngine` con un parametro di lingua, ad esempio `OcrEngine(lang="spa+eng")`. Il ciclo batch di per sé non richiede modifiche. + +## Consigli professionali e insidie comuni + +- **La dimensione del batch è importante:** Se noti picchi di CPU, rallenta il processo con un semplice `time.sleep(0.1)` tra i file. +- **Logging:** Sostituisci la chiamata `print` con il modulo `logging` di Python per catturare timestamp e livelli di errore. +- **Collisioni di nomi file:** Se due scansioni condividono lo stesso nome base ma si trovano in sottocartelle diverse, i file JSON si sovrascriveranno. Aggiungi un hash del percorso relativo al nome di output per evitarlo. +- **Perdite di memoria:** Alcuni back‑end OCR mantengono risorse native. Chiama `ocr_engine.close()` alla fine dello script se la libreria fornisce un metodo di pulizia. + +## Script completo – Pronto da copiare e incollare + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Output console previsto** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Puoi verificare il JSON aprendo qualsiasi file in `json_output` con un editor di testo o caricandolo in Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Dovresti vedere il testo OCR‑estratto grezzo stampato nella console. + +## Conclusioni + +Abbiamo appena illustrato **come eseguire OCR in batch** su un'intera directory di immagini scansionate e **estrarre testo dalle scansioni** in file JSON puliti e leggibili da macchine. L'approccio è deliberatamente semplice: configura il motore una volta, puntalo a una cartella e lascia che la libreria gestisca il lavoro pesante. Da qui puoi: + +- Collega il JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/italian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..5fa1a7dee --- /dev/null +++ b/ocr/italian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-26 +description: Come creare OCR rapidamente e in modo affidabile. Impara a estrarre il + testo da un'immagine, caricare l'immagine per l'OCR e eseguire l'OCR su PNG con + un dizionario personalizzato. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: it +og_description: Come creare OCR in Python ed estrarre testo da un'immagine. Questa + guida mostra come caricare un'immagine per l'OCR, eseguire l'OCR su PNG e utilizzare + un dizionario personalizzato. +og_title: Come creare OCR in Python – Estrazione rapida del testo +tags: +- OCR +- Python +- Image Processing +title: Come creare OCR in Python – Estrarre testo da un'immagine +url: /it/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come creare OCR in Python – Guida passo‑passo + +Ti sei mai chiesto **come creare OCR** che possa leggere i tuoi PDF scansionati, screenshot o appunti scritti a mano? Non sei l'unico. In molti progetti reali dobbiamo *estrarre testo da file immagine*, ma i motori pronti all'uso spesso inciampano su parole specifiche del dominio. + +In questo tutorial vedrai un esempio completo e eseguibile che carica un'immagine per OCR, applica un dizionario personalizzato e infine **esegue OCR su file PNG**. Alla fine sarai in grado di estrarre testo da qualsiasi immagine e adattare il motore alla tua terminologia. + +## Cosa copre questo tutorial + +* Installare il piccolo ma potente pacchetto `aocr` (o qualsiasi libreria compatibile). +* Configurare un **dizionario personalizzato** in modo che termini come `aspocorp` o `licensekey` vengano riconosciuti. +* **Caricare un'immagine per OCR**, sia essa PNG, JPEG o una pagina PDF scansionata. +* Eseguire il processo OCR e stampare il risultato. + +Nessun link a documentazione esterna, solo una soluzione autonoma che puoi copiare‑incollare ed eseguire subito. + +### Prerequisiti + +* Python 3.8 o superiore (il codice utilizza le f‑string). +* Familiarità di base con la riga di comando – digiterai un paio di comandi `pip install`. +* Un file immagine (`technical_doc.png` nell'esempio) posizionato in un percorso a cui puoi fare riferimento. + +Se soddisfi questi tre punti, sei pronto per procedere. + +--- + +## Passo 1: Installa la libreria OCR + +Per prima cosa, ci serve un motore OCR che supporti un oggetto di configurazione programmabile. Il pacchetto `aocr` è un wrapper leggero attorno a un motore OCR nativo e funziona bene per le demo. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Suggerimento:** Se sei su Windows e incontri un errore di compilazione, prova `pip install aocr‑binary` che fornisce wheel pre‑compilati. + +### Perché installare questa libreria? + +`aocr` ci dà accesso diretto a un oggetto `config` dove possiamo iniettare un **dizionario personalizzato**. È il segreto per migliorare la precisione su vocabolari di nicchia. + +--- + +## Passo 2: Crea l'istanza del motore OCR e aggiungi un dizionario personalizzato + +Ora avviamo il motore e gli diciamo quali parole deve considerare note. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Perché un dizionario personalizzato è importante + +I modelli OCR standard sono addestrati su corpora generici. Quando il modello vede “aspocorp”, potrebbe dividerlo in “aspo corp” o eliminare lettere del tutto. Fornendo una lista personalizzata, orientiamo il riconoscitore verso l'ortografia esatta di cui abbiamo bisogno, riducendo drasticamente lo sforzo di post‑processing. + +--- + +## Passo 3: Carica l'immagine da elaborare + +Qui è dove **carichiamo l'immagine per OCR**. Il metodo `Image.load` accetta una stringa di percorso e determina automaticamente il tipo di file. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Caso limite:** Se la tua fonte è un PDF multi‑pagina, converti prima ogni pagina in PNG (ad esempio con `pdf2image`) e fornisci le immagini una alla volta al motore. + +### Consigli per una migliore qualità dell'immagine + +* Mantieni la risoluzione di almeno 300 dpi. +* Assicurati che l'immagine sia dritta; ruotala con `Pillow` se necessario. +* Converti le scansioni a colori in scala di grigi per ridurre il rumore. + +--- + +## Passo 4: Esegui il processo OCR sul file PNG + +Con il motore configurato e l'immagine caricata, finalmente **eseguiamo OCR su PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +La chiamata `process()` restituisce un oggetto che contiene il testo riconosciuto, i punteggi di confidenza e le bounding box per ogni parola. + +--- + +## Passo 5: Output del testo riconosciuto + +Il modo più semplice per vedere cosa ha trovato il motore è stampare l'attributo `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Output previsto + +Se `technical_doc.png` contiene la frase *“The Aspocorp licensekey expires on 2025‑12‑31.”*, la console dovrebbe mostrare: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Nota come il dizionario personalizzato ha mantenuto intatto il nome del brand—qualcosa che un OCR standard potrebbe aver distorto. + +--- + +## Esempio completo funzionante (pronto per copia‑incolla) + +Di seguito trovi l'intero script, pronto per essere salvato come `run_ocr.py`. Sostituisci semplicemente il percorso segnaposto con la posizione della tua immagine. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Eseguilo dal terminale: + +```bash +python run_ocr.py +``` + +Dovresti vedere il testo estratto stampato sulla console, esattamente come mostrato nell'esempio precedente. + +--- + +## Domande frequenti (FAQ) + +| Question | Answer | +|----------|--------| +| **Posso estrarre testo da un PDF scansionato?** | Sì. Converti prima ogni pagina in PNG (o TIFF), poi fornisci le immagini allo stesso script. | +| **E se la mia immagine è un JPEG invece di PNG?** | Il metodo `Image.load` supporta JPEG, BMP, TIFF e PNG nativamente. Basta cambiare l'estensione del file. | +| **Come posso migliorare la precisione su scansioni a basso contrasto?** | Pre‑processa con `Pillow` – aumenta il contrasto, applica la binarizzazione o usa `opencv` per correggere l'inclinazione. | +| **È possibile ottenere i punteggi di confidenza per ogni parola?** | `ocr_result` include `words` – ogni parola ha un attributo `confidence` che puoi iterare. | +| **Posso eseguire questo su un server headless?** | Assolutamente. `aocr` non ha dipendenze GUI, rendendolo perfetto per pipeline CI. | + +--- + +## Prossimi passi e argomenti correlati + +Ora che sai **come creare OCR** e **estrarre testo da file immagine**, considera di esplorare: + +* **Tecniche di pre‑processing** – `load image for OCR` è solo il primo passo; usa `opencv` per denoise o sharpen. +* **Elaborazione batch** – cicla su una directory di PNG per generare un archivio ricercabile. +* **Supporto multilingua** – aggiungi pacchetti linguistici al motore se devi leggere documenti in francese o tedesco. +* **Integrazione con Elasticsearch** – indicizza il testo estratto per la ricerca full‑text tra le risorse scansionate. + +Ognuna di queste estensioni si basa sul modello di base che abbiamo appena coperto, quindi troverai la transizione senza problemi. + +--- + +## Conclusioni + +In pochi minuti abbiamo risposto a **come creare OCR** che estragga in modo affidabile **testo da file immagine**, specialmente PNG, e ti abbiamo mostrato come **caricare immagine per OCR**, applicare un **dizionario personalizzato** e **eseguire OCR su PNG** senza alcun servizio esterno. + +Prova lo script, modifica il dizionario per adattarlo al tuo gergo, e avrai una solida base per qualsiasi progetto di digitalizzazione di documenti. + +Se hai incontrato problemi, lascia un commento qui sotto—siamo felici di aiutare. E non dimenticare di condividere le tue storie di successo; la community impara meglio dagli esempi reali. + +**Pronto a automatizzare la tua burocrazia?** Prendi il codice, adattalo e inizia a trasformare i pixel in testo ricercabile oggi stesso! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/italian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..03cb549c1 --- /dev/null +++ b/ocr/italian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-04-26 +description: come estrarre OCR da immagini usando Python – un esempio di OCR in Python + che mostra come caricare un'immagine per l'OCR ed estrarre il testo da una ricevuta. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: it +og_description: come estrarre OCR da immagini usando Python. Impara un esempio di + OCR in Python, carica l'immagine per l'OCR e estrai il testo da una ricevuta in + pochi minuti. +og_title: Come estrarre OCR in Python – Guida completa +tags: +- OCR +- Python +- Image Processing +title: come estrarre OCR in Python – tutorial passo‑a‑passo +url: /it/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# come estrarre OCR in Python – Guida completa + +Ti sei mai chiesto **come estrarre OCR** da una ricevuta sfocata o da una fattura scansionata? Non sei l'unico: gli sviluppatori si scontrano continuamente con il problema quando hanno bisogno di testo pulito, leggibile da macchine, dalle immagini. La buona notizia? Con poche righe di Python puoi trasformare una foto di una ricevuta in testo ad alta fiducia e ricercabile. + +In questo tutorial percorreremo un **esempio python OCR** che dimostra **come caricare immagine per OCR**, eseguire il motore e conservare solo i caratteri che superano una soglia di fiducia dell'85 %. Alla fine sarai in grado di **estrarre testo da ricevuta** immagini senza dover setacciare la documentazione o indovinare i parametri dell'API. + +## Cosa ti serve + +- Python 3.9 o più recente (la sintassi che usiamo funziona su 3.8+) +- Il pacchetto `aocr` (o qualsiasi libreria OCR che fornisce una classe `OcrEngine`). Installalo con: + +```bash +pip install aocr +``` + +- Un'immagine di esempio di una ricevuta (`receipt.png`) posizionata in una cartella a cui puoi fare riferimento. +- Un editor di testo o IDE—VS Code, PyCharm, o anche un semplice notebook. + +Questo è tutto. Nessun framework pesante, nessun servizio esterno, solo puro Python. + +![Risultato OCR ad alta fiducia – come estrarre OCR da una ricevuta](/images/ocr-high-confidence.png) + +*Testo alternativo dell'immagine: come estrarre OCR da una ricevuta usando Python OCR* + +## Passo 1 – Crea l'istanza del motore OCR (come estrarre OCR) + +La prima cosa che facciamo è avviare un motore OCR. Pensalo come il cervello che leggerà i pixel per noi. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Perché?** L'istanziazione di `OcrEngine` ti fornisce un nuovo oggetto di configurazione. Puoi successivamente modificare i modelli linguistici, le impostazioni DPI o i passaggi di pre‑elaborazione—tutto senza toccare il ciclo di elaborazione principale. + +## Passo 2 – Carica l'immagine per OCR + +Successivamente indirizziamo il motore verso l'immagine che vogliamo analizzare. È qui che entra in gioco la keyword **carica immagine per OCR**. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Consiglio professionale:** Se la tua immagine si trova in una directory diversa, usa `os.path.join` per costruire un percorso indipendente dalla piattaforma. + +**Perché caricare l'immagine in questo modo?** L'helper `Image.load` legge il file in un formato che il motore comprende, gestendo automaticamente i formati comuni (PNG, JPEG, TIFF). Saltare questo passaggio o fornire byte grezzi genererebbe un `ValueError`. + +## Passo 3 – Esegui il processo OCR + +Ora eseguiamo effettivamente l'OCR. Il metodo `process` restituisce un ricco oggetto risultato contenente i simboli riconosciuti, i punteggi di fiducia e le bounding box. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Cosa contiene `ocr_result`?** Nella maggior parte delle librerie include: + +- `text`: la stringa grezza concatenata. +- `symbol_confidences`: una lista di tuple `(char, confidence)`. +- `boxes`: coordinate per ogni carattere (utile per il debug visivo). + +Avere accesso alla fiducia per carattere è essenziale per il passo successivo. + +## Passo 4 – Conserva solo i simboli ad alta fiducia (≥ 85 %) + +Una ricevuta spesso presenta sbavature, stampa tenue o rumore di fondo. Filtrando i simboli a bassa fiducia miglioriamo notevolmente l'analisi successiva. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Perché 85 %?** Empiricamente, una soglia intorno a 0,85 bilancia richiamo e precisione per la maggior parte delle ricevute stampate. Se noti numeri mancanti, abbassa la soglia; se ottieni spazzatura, alzala. + +## Passo 5 – Output del testo estratto ad alta fiducia + +Infine, stampiamo (o salviamo) la stringa sanitizzata. Questo è il cuore del nostro flusso di lavoro **estrarre testo da ricevuta**. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +L'output tipico appare così: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Ora puoi inserire questa stringa in un writer CSV, un database o qualsiasi pipeline di analisi successiva. + +## Script completo, pronto da eseguire + +Di seguito trovi lo snippet di codice completo che puoi copiare‑incollare in `ocr_receipt.py` ed eseguire immediatamente. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Salva il file, assicurati che `receipt.png` esista, ed esegui: + +```bash +python ocr_receipt.py +``` + +Dovresti vedere il testo pulito della ricevuta stampato sulla console. + +## Casi limite e scenari “what‑if” + +| Situazione | Soluzione suggerita | +|-----------|----------------------| +| **Fiducia molto bassa su tutta l'immagine** | Pre‑elabora l'immagine: aumenta il contrasto, converti in scala di grigi o applica un filtro di denoising (`cv2.GaussianBlur`). | +| **Caratteri non latini** | Passa un modello linguistico a `OcrEngine` (ad es., `ocr_engine.language = "spa"` per lo spagnolo). | +| **Più ricevute in una sola immagine** | Esegui l'OCR sull'intera immagine, poi dividi il risultato usando espressioni regolari che rilevano `\n\n+` (doppi ritorni a capo). | +| **Necessità del testo OCR grezzo** | Mantieni `ocr_result.text` accanto alla versione filtrata per il debug. | + +Queste variazioni assicurano che la tua conoscenza **come usare OCR** si estenda oltre il caso più semplice. + +## Errori comuni (e come evitarli) + +- **Dimenticare di installare la libreria** – `pip install aocr` deve riuscire prima di importare. +- **Usare il separatore di percorso sbagliato** su Windows (`\` vs `/`). Usa `os.path.join`. +- **Hard‑codare la soglia di fiducia** senza test – esegui sempre un rapido controllo visivo su alcune ricevute prima. +- **Ignorare la normalizzazione Unicode** – alcune ricevute contengono caratteri di trattino speciali; esegui `unicodedata.normalize('NFKC', text)` se prevedi di memorizzare l'output. + +## Prossimi passi – Oltre le basi + +Ora che sai **come estrarre OCR** da una singola ricevuta, potresti voler: + +1. **Processare in batch una cartella di ricevute** – iterare su tutti i file PNG/JPG e scrivere ogni risultato in un CSV. +2. **Integrare con un database** – memorizzare `high_confidence_text` in SQLite per ricerche rapide. +3. **Applicare il parsing di linguaggio naturale** – usa regex o `dateutil` per estrarre date, totali e importi fiscali. +4. **Sperimentare con librerie alternative** – `pytesseract`, `easyocr`, o servizi cloud (Google Vision, Azure OCR) se hai bisogno di supporto multilingue o maggiore accuratezza. + +Ciascuno di questi argomenti incorpora naturalmente le nostre parole chiave secondarie: *python ocr example*, *extract text from receipt*, *load image for ocr*, e *how to use OCR*. + +## Conclusione + +Abbiamo appena percorso un **python ocr example** completo che mostra **come estrarre OCR** da un'immagine di ricevuta, filtrare i simboli a bassa fiducia e produrre risultati puliti. I passaggi sono semplici, il codice è autonomo e l'approccio è sufficientemente flessibile da adattarsi a progetti più grandi. + +Provalo con le tue ricevute, regola la soglia di fiducia e poi scala al batch processing. Se incontri stranezze—come un logo tenue o un font insolito—ricorda i consigli per i casi limite sopra. Buon coding, e che le tue pipeline OCR siano sempre accurate! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/italian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..a7b3644de --- /dev/null +++ b/ocr/italian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: 'come fare OCR in Python: Impara a estrarre testo da un''immagine e a + leggere file TIFF in Python usando un esempio base di OCR. Codice rapido e eseguibile + incluso.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: it +og_description: 'come fare OCR in Python: una guida passo‑passo che mostra come estrarre + testo da un’immagine, leggere file TIFF con Python e convertire il testo di un’immagine + scannerizzata con uno script semplice e eseguibile.' +og_title: come fare OCR in Python – Esempio base di OCR per estrarre testo +tags: +- OCR +- Python +- Image Processing +title: come fare OCR in Python – Esempio base di OCR per estrarre testo +url: /it/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# come fare OCR con Python – Esempio base di OCR per estrarre testo + +Ti sei mai chiesto **come fare OCR con Python** quando hai un file TIFF scansionato sulla scrivania? Non sei l'unico a fissare una serie di file immagine e chiedersi: “Come estrarre le parole da questo?” La buona notizia è che trasformare un'immagine in testo semplice è un gioco da ragazzi con la libreria giusta e pochi passaggi chiari. + +In questo tutorial vedremo un **esempio base di OCR** che legge un file TIFF, estrae il testo e lo stampa sulla console. Alla fine saprai esattamente come **estrarre testo da immagini**, come gestire le particolarità dei formati TIFF e cosa modificare se devi **convertire testo da immagini scansionate** in qualcosa di più utile. Nessuna magia nascosta—solo Python lineare che puoi copiare‑incollare ed eseguire subito. + +## Cosa ti servirà + +Prima di iniziare, assicurati di avere: + +- Python 3.9+ installato (la versione stabile più recente è consigliata). +- Una libreria OCR installabile con pip. Per questa guida useremo un pacchetto fittizio `aocr` che imita strumenti popolari come Tesseract; potrai sostituirlo con `pytesseract` o `easyocr` in seguito. +- Un’immagine TIFF da elaborare – chiamala `input.tiff` e posizionala in una cartella a cui farai riferimento nel codice. +- Familiarità di base con la riga di comando (solo per installare il pacchetto). + +Tutto qui. Nessuna dipendenza pesante, nessun container Docker, solo poche righe di codice. + +## Passo 1 – Installa e importa le dipendenze (come fare OCR con Python) + +Per prima cosa, ottieni il pacchetto OCR. Apri un terminale e esegui: + +```bash +pip install aocr +``` + +Se preferisci una libreria reale, sostituisci `aocr` con `pytesseract` e installa separatamente il motore Tesseract. + +Ora importa ciò che serve. La classe `Path` di `pathlib` ci offre un modo pulito per gestire i percorsi dei file su tutti i sistemi operativi. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Perché usare `Path`?* Perché astrae le barre (`/` vs `\`) e ti permette di unire directory senza preoccuparti del sistema operativo sottostante. Questo piccolo dettaglio spesso evita grattacapi quando sposti lo script su un server CI. + +## Passo 2 – Crea l'istanza del motore OCR (esempio base di OCR) + +Successivamente, avvia il motore OCR. Pensa a `OcrEngine` come al cervello che leggerà l’immagine e produrrà i caratteri. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +La maggior parte delle librerie OCR ti permette di regolare lingua, DPI o soglie di confidenza qui. Per questo **esempio base di OCR** rimarremo sui valori predefiniti, ma potrai esplorare `ocr_engine.config` più avanti se devi gestire documenti multilingue. + +## Passo 3 – Carica la tua immagine TIFF (leggi file tiff con Python) + +Ecco dove entra in gioco la parte **leggi file tiff con Python**. I TIFF possono contenere più pagine, ma `Image.load` carica la prima pagina per impostazione predefinita—perfetto per una scansione a pagina singola. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Sostituisci `"YOUR_DIRECTORY"` con la cartella reale che contiene `input.tiff`. Se non sei sicuro da dove venga eseguito lo script, `Path.cwd()` stampa la directory di lavoro corrente—utile per il debug dei percorsi. + +## Passo 4 – Esegui il processo OCR (estrai testo da immagine) + +Ora avviene la magia. Chiamare `process()` invia l’immagine attraverso la pipeline OCR e restituisce un oggetto risultato. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Dietro le quinte il motore potrebbe convertire l’immagine in scala di grigi, applicare una soglia e passarla a una rete neurale. Non devi gestire questi passaggi; la libreria li astrae. + +## Passo 5 – Stampa il testo riconosciuto (converti testo da immagine scansionata) + +Infine, stampa il testo. Nei progetti reali probabilmente lo scriveresti su un file o in un database, ma la stampa mantiene l’esempio ordinato. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Quando esegui lo script, dovresti vedere qualcosa del genere: + +``` +Hello, world! +This is a sample scanned document. +``` + +Se l’output appare confuso, ricontrolla che l’immagine di origine sia chiara e che la lingua OCR corrisponda al testo. + +## Script completo funzionante + +Mettendo tutto insieme, ecco il programma completo, pronto da eseguire: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Output atteso + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Se devi **convertire testo da immagini scansionate** in un PDF ricercabile, puoi passare `ocr_result.text` a un generatore PDF come `reportlab`—ma questo è un tutorial a sé stante. + +## Problemi comuni & consigli professionali + +- **Scansioni a bassa risoluzione**: l’OCR fatica sotto i 150 DPI. Se il tuo TIFF è sfocato, aumentane la risoluzione prima con Pillow (`Image.open(...).resize(...)`). +- **Pagine multiple**: per TIFF multi‑pagina, itera su `Image.load_multi_page()` (se la tua libreria lo supporta) e concatena i risultati. +- **Supporto linguistico**: molti motori usano l’inglese di default. Imposta `ocr_engine.language = "spa"` per lo spagnolo, ad esempio. +- **Gestione degli spazi**: l’OCR aggiunge spesso interruzioni di riga indesiderate. Usa `str.splitlines()` o espressioni regolari per pulire l’output. +- **Prestazioni**: per elaborazioni in blocco, riutilizza una singola istanza di `OcrEngine` invece di crearne una nuova per ogni file. + +## Estendere l'esempio + +Ora che hai padroneggiato **come fare OCR con Python** per un’immagine singola, considera i prossimi passi: + +1. **Elaborazione batch** – Scorri una directory di TIFF e scrivi ogni risultato in un file `.txt`. +2. **Integrazione con Pandas** – Salva il testo estratto insieme ai metadati per analisi rapide. +3. **Approccio ibrido** – Combina OCR con librerie NLP come `spaCy` per estrarre entità (nomi, date, importi) da fatture scansionate. +4. **Formati di file alternativi** – Sostituisci `Image.load` con `Image.from_bytes` per gestire immagini provenienti da API o database. + +Tutti questi si basano sull’idea centrale di **estrarre testo da immagini** e **convertire testo da immagini scansionate** in qualcosa che le macchine possano comprendere. + +## Conclusione + +Abbiamo percorso un **esempio base di OCR** che mostra **come fare OCR con Python**, come **leggere file tiff con Python** e come **estrarre testo da immagini** con poche righe di codice. Lo script è autonomo, include la gestione degli errori e stampa direttamente il risultato, fornendo una solida base per qualsiasi progetto che debba trasformare documenti scansionati in testo modificabile. + +Sentiti libero di sperimentare—sostituisci il backend OCR, modifica il pre‑processing o collega l’output a un flusso di lavoro successivo. Il cielo è il limite quando riesci a **convertire testo da immagini scansionate** in dati ricercabili e utilizzabili. + +Hai domande su casi limite, pacchetti linguistici o ottimizzazione delle prestazioni? Lascia un commento qui sotto, e buona programmazione! + +![esempio di come fare OCR con Python](/images/ocr-python-example.png "Screenshot dell'output dello script di OCR con Python") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/italian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..de33e358d --- /dev/null +++ b/ocr/italian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-04-26 +description: Come eseguire l'OCR su un modulo scansionato, imparare a pre‑processare + l'immagine per ridurre il rumore e estrarre rapidamente il testo dall'immagine. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: it +og_description: Come eseguire l'OCR su documenti scansionati, preelaborare le immagini, + ridurre il rumore ed estrarre il testo in modo efficiente. +og_title: Come eseguire OCR e pre‑elaborare le immagini – Guida rapida +tags: +- OCR +- image processing +- Python +title: Come eseguire OCR e pre‑elaborare le immagini – Estrarre il testo da moduli + scansionati +url: /it/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come eseguire OCR – Guida completa per estrarre testo dalle immagini + +Ti sei mai chiesto **come eseguire OCR** su un modulo scansionato disordinato e ottenere testo pulito e ricercabile? Non sei l'unico. In molti progetti reali l'immagine grezza è piena di macchie, illuminazione non uniforme e altre stranezze che fanno inciampare l'OCR pronto all'uso. + +La buona notizia? Con poche righe di Python e una pipeline di pre‑elaborazione intelligente, puoi aumentare drasticamente la precisione del riconoscimento, **ridurre il rumore** e estrarre le parole esatte di cui hai bisogno. In questo tutorial percorreremo ogni passaggio—dal caricamento dell'immagine alla stampa della stringa finale—così avrai a disposizione uno snippet pronto da adattare a fatture, ricevute o qualsiasi documento scansionato. + +## Cosa costruirai + +- Un'istanza `OcrEngine` che comunica con la libreria OCR sottostante. +- Una catena di pre‑elaborazione che **binarizza** l'immagine e applica un **median blur** per levigare le macchie. +- Una semplice chiamata a `process()` che restituisce un oggetto con l'attributo `text`, la stringa estratta. + +Alla fine avrai uno script autonomo che potrai eseguire su qualsiasi file immagine e vedere immediatamente il testo estratto nella console. + +## Prerequisiti + +- Python 3.9+ (la sintassi usata qui corrisponde all'ultima versione stabile). +- Il pacchetto fittizio `aocr` – pensalo come un leggero wrapper attorno a Tesseract o a qualsiasi motore OCR moderno. Installalo con `pip install aocr`. +- Un'immagine scansionata (`scanned_form.jpg`) collocata in una cartella a cui puoi fare riferimento. + +Se usi una libreria OCR reale come `pytesseract`, puoi sostituire `OcrEngine` con la classe appropriata—tutto il resto rimane invariato. + +![](how-to-run-ocr-example.png "esempio di come eseguire OCR che mostra un modulo scansionato e il testo estratto") + +*Alt text: come eseguire OCR su un documento scansionato e visualizzare il testo estratto.* + +--- + +## Passo 1: Come eseguire OCR – Inizializzare il motore + +Prima che il motore possa leggere qualcosa, dobbiamo creare un'istanza. Pensa a `OcrEngine` come al cervello che interpreterà in seguito i dati visivi. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Perché è importante:** L'istanziazione del motore configura i modelli interni, carica i pacchetti linguistici e prepara l'ambiente di esecuzione. Saltare questo passaggio di solito porta a un errore `NoneType` quando successivamente chiami `process()`. + +--- + +## Passo 2: Come pre‑elaborare l'immagine – Carica il tuo modulo scansionato + +Ora che il cervello è pronto, gli forniamo un'immagine. L'immagine può essere in qualsiasi formato supportato da `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Suggerimento:** Usa percorsi assoluti durante lo sviluppo per evitare sorprese “file non trovato” quando lo script viene eseguito da una directory di lavoro diversa. + +--- + +## Passo 3: Come ridurre il rumore – Applica binarizzazione e median blur + +Le scansioni grezze contengono spesso punti sparsi, sfondi non uniformi o ombre leggere. Due trucchi classici—**binarizzazione** e **median blur**—puliscono tutto senza sacrificare i bordi che definiscono i caratteri. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Approfondimento + +- **Binarizzazione**: Il valore `threshold=180` indica all'algoritmo: “Tutto ciò che è più luminoso di 180 diventa bianco; tutto il resto diventa nero.” Regola questo numero se la tua scansione è troppo scura o troppo chiara. +- **Median Blur**: Un raggio di `2` significa che il filtro osserva una finestra di 5×5 pixel e sostituisce il pixel centrale con il valore mediano. Questo elimina le macchie isolate mantenendo intatti i tratti delle lettere. + +> **Caso limite:** Se il tuo documento contiene evidenziazioni colorate, una semplice soglia binaria potrebbe cancellarle. In tal caso, considera l'uso di `aocr.ImageFilters.adaptive_threshold()`—adatta il cutoff localmente sull'intera immagine. + +--- + +## Passo 4: Come estrarre il testo – Esegui il processo OCR + +Con un'immagine pulita in mano, lasciamo finalmente che il motore faccia la sua magia. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Cosa succede dietro le quinte?** Il motore esegue una rete neurale (o un matcher di pattern legacy) sulla matrice di pixel, traduce ogni glifo riconosciuto in caratteri Unicode e li assembla in linee e paragrafi. + +--- + +## Passo 5: Come estrarre il testo – Stampa il risultato + +L'oggetto `ocr_result` espone un comodo attributo `text`. Vediamo cosa otteniamo. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Output previsto + +Se il modulo scansionato contiene: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Dovresti vedere qualcosa di simile a: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Nota come il passaggio di pre‑elaborazione ha eliminato i punti sparsi che prima trasformavano “Amount” in “Am0unt”. Questa è la potenza di **come ridurre il rumore** prima dell'OCR. + +--- + +## Problemi comuni e come risolverli + +| Sintomo | Causa probabile | Soluzione rapida | +|---------|-----------------|------------------| +| Caratteri confusi (es. “@#%”) | Immagine troppo scura o troppo chiara | Regola il `threshold` in `binarize()`; prova `adaptive_threshold`. | +| Parole mancanti | Rumore ancora presente | Aumenta il `radius` per `median_blur` o aggiungi un filtro `gaussian_blur`. | +| Lingua errata (es. lettere inglesi diventano cinesi) | Pacchetto linguistico sbagliato caricato | Passa `language="eng"` quando crei `OcrEngine()` se la libreria lo supporta. | +| Elaborazione lenta su file grandi | Alta risoluzione | Ridimensiona l'immagine prima: `aocr.ImageFilters.resize(width=1200)` prima della binarizzazione. | + +--- + +## Approfondimenti – Prossimi passi e argomenti correlati + +- **Elaborazione batch**: Avvolgi la logica sopra in un ciclo per gestire decine di file automaticamente. +- **Output strutturato**: Usa espressioni regolari su `ocr_result.text` per estrarre campi come date o importi. +- **Librerie alternative**: Sostituisci `aocr` con `pytesseract`—il codice cambia solo al passo di inizializzazione del motore. +- **Come pre‑elaborare immagini per PDF**: Converti ogni pagina PDF in immagine, poi applica la stessa pipeline. + +Queste estensioni ti permettono di scalare la soluzione da un singolo modulo a una pipeline di ingestione documenti di livello aziendale. + +--- + +## Conclusione + +Abbiamo coperto **come eseguire OCR** dall'inizio alla fine, mostrato **come pre‑elaborare l'immagine** per **ridurre il rumore**, e dimostrato **come estrarre testo dall'immagine** con uno script pulito e riproducibile. Il punto chiave? Alcuni filtri semplici—binarizzazione e median blur—possono trasformare una scansione rumorosa in una fonte affidabile di dati, risparmiandoti ore di pulizia manuale. + +Prova lo script con i tuoi documenti, regola le soglie e osserva la precisione migliorare. Quando sei pronto, esplora l'elaborazione batch o integra l'output in un database per archivi ricercabili. Buona programmazione, e che il tuo OCR sia sempre impeccabile! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/italian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..5ab66bd07 --- /dev/null +++ b/ocr/italian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-04-26 +description: Scopri come impostare la licenza in Aspose OCR e come convalidare la + licenza con uno script Python conciso. Segui le istruzioni passo passo per un’attivazione + senza problemi. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: it +og_description: Come impostare la licenza in Aspose OCR e come convalidare la licenza + usando Python. Ottieni un esempio completo e funzionante in pochi minuti. +og_title: Come impostare la licenza in Aspose OCR – Guida rapida Python +tags: +- Aspose OCR +- Python +- Licensing +title: Come impostare la licenza in Aspose OCR – Guida rapida per Python +url: /it/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come impostare la licenza in Aspose OCR – Guida rapida Python + +Ti sei mai chiesto **come impostare la licenza** per Aspose OCR senza impazzire? Non sei l'unico. La maggior parte degli sviluppatori incontra un intoppo la prima volta che tenta di sbloccare tutta la potenza della libreria, per poi essere perseguitata da una filigrana “Trial version”. La buona notizia è che la soluzione è piuttosto semplice, e puoi verificarla subito. + +In questo tutorial vedremo **come impostare la licenza** *e* **come convalidare la licenza** usando un piccolo script Python. Alla fine avrai un esempio funzionante che stampa “License OK”, più una serie di consigli per evitarti gli errori più comuni. + +## Prerequisiti + +- Python 3.8+ installato (il codice funziona su 3.9, 3.10 e versioni successive). +- Un file di licenza attivo di Aspose OCR per Java (o .NET) – tipicamente denominato `Aspose.OCR.Java.lic`. +- Il pacchetto `asposeocr` installato tramite `pip install asposeocr`. +- Familiarità di base con l'esecuzione di script Python dalla riga di comando. + +Hai tutto questo? Ottimo—iniziamo. + +## Come impostare la licenza in Aspose OCR (Passo 1) + +Impostare la licenza è essenzialmente un'operazione in tre righe, ma ogni riga ha uno scopo. La scomporremo così da capire *perché* facciamo quello che facciamo. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Perché importare `License`?** +La classe `License` è il gateway che indica al motore Aspose OCR che hai pagato per il prodotto. Senza creare un'istanza, la libreria continuerà a presumere che tu sia in modalità trial. + +**Perché istanziare `License`?** +L'istanza ti fornisce un oggetto (`license_obj`) che può contenere il percorso del tuo file `.lic` e successivamente applicarlo al runtime. + +## Come impostare la licenza in Aspose OCR – Fornire il file di licenza + +Ora puntiamo l'oggetto al file di licenza reale sul disco. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Suggerimenti e trucchi:** + +- **Percorso assoluto vs relativo** – Se esegui lo script da una cartella diversa, un percorso assoluto (`C:/licenses/...`) elimina gli errori “file not found”. +- **Variabili d'ambiente** – Memorizzare il percorso in una variabile d'ambiente (`OCR_LICENSE_PATH`) mantiene i segreti fuori dal controllo del codice sorgente: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Come convalidare la licenza – Verificare che abbia funzionato + +Impostare la licenza è solo metà della battaglia; devi confermare che la libreria l'abbia accettata. È qui che il passaggio di validazione brilla. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Se il file di licenza è mancante, corrotto o non corrisponde, `validate()` solleverà un'eccezione. Catturare quell'eccezione ti offre un modo pulito per segnalare i problemi. + +## Esempio completo funzionante (Tutti i passaggi combinati) + +Di seguito trovi lo script completo, pronto da eseguire. Eseguilo da un terminale (`python set_license.py`) e dovresti vedere stampato “License OK”. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Output previsto** + +``` +License OK +``` + +Se qualcosa va storto, vedrai qualcosa del genere: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Quel messaggio ti indica esattamente cosa correggere—senza bisogno di indovinare. + +## Come convalidare la licenza – Gestire i casi limite comuni + +Anche con lo script sopra, alcuni scenari possono farti inciampare: + +| Situazione | Cosa succede | Come risolvere | +|------------|--------------|----------------| +| **Errore di battitura nel percorso del file** | `FileNotFoundError` da `set_license` | Controlla nuovamente il percorso; usa `os.path.abspath()` per il debug. | +| **Tipo di file errato** | La validazione genera “Invalid license format” | Assicurati di usare il file `.lic` che corrisponde all'edizione del tuo prodotto. | +| **Licenza scaduta** | La validazione solleva “License expired” | Rinnova la licenza con il supporto Aspose e sostituisci il file. | +| **Esecuzione in un ambiente restrittivo** (ad es., AWS Lambda) | Errore di permesso | Concedi l'accesso in lettura alla directory o incorpora la licenza nel pacchetto di distribuzione. | + +Consiglio professionale: avvolgi la chiamata `set_license` in un proprio blocco `try/except` se vuoi differenziare tra errori “file not found” e “invalid format”. + +## Riepilogo visivo + +![come impostare la licenza in Aspose OCR esempio](/images/aspose-ocr-license.png "come impostare la licenza in Aspose OCR esempio") + +*Lo screenshot mostra lo script che stampa “License OK” dopo un'attivazione riuscita.* + +## Errori comuni e migliori pratiche + +- **Non commettere mai il tuo file di licenza in un repository pubblico.** Usa invece variabili d'ambiente o gestori di segreti (GitHub Secrets, Azure Key Vault). +- **Convalida subito.** Posizionare `license_obj.validate()` subito dopo `set_license` intercetta gli errori prima che inizi qualsiasi lavoro OCR. +- **Riutilizza l'oggetto License.** Devi impostare la licenza una sola volta per processo; le chiamate OCR successive utilizzeranno automaticamente la licenza attivata. +- **Registra il percorso della licenza (senza nome file) in produzione** per facilitare il debug senza esporre il file reale. + +## Prossimi passi – Estendere il tuo flusso di lavoro OCR + +Ora che conosci **come impostare la licenza** e **come convalidare la licenza**, puoi passare alle attività OCR principali: + +- **come leggere un'immagine** – `Image.load("sample.png")` +- **come estrarre testo** – `ocr_engine.recognize(image)` +- **come configurare le opzioni OCR** – regola le impostazioni di `OcrEngine` per lingua, precisione, ecc. + +Ognuno di questi argomenti si basa su un motore con licenza attiva, così non vedrai più la filigrana trial. + +## Conclusione + +Abbiamo coperto l'intero processo di **come impostare la licenza** per Aspose OCR, dimostrato **come convalidare la licenza**, e fornito uno script completo e eseguibile che stampa “License OK”. Gestendo gli errori in anticipo e usando variabili d'ambiente, mantieni la tua applicazione sicura e robusta. + +Hai altre domande su OCR, licenze o sull'integrazione di Aspose in un flusso più ampio? 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/italian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..dc42e0133 --- /dev/null +++ b/ocr/italian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-04-26 +description: come utilizzare l'OCR su PDF scansionati, estrarre il testo dal PDF, + eseguire l'OCR sul PDF e convertire i PDF scansionati in file ricercabili in pochi + passaggi +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: it +og_description: 'come usare OCR in Python: impara a estrarre testo da PDF, eseguire + OCR su PDF e convertire PDF scansionati in documenti ricercabili.' +og_title: come usare l'OCR – Guida rapida per estrarre testo da PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: Come usare l'OCR – Estrarre il testo da PDF con Python +url: /it/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# come usare OCR – Estrarre testo da PDF con Python + +Ti sei mai chiesto **come usare OCR** per estrarre testo da un contratto, una ricevuta o un ebook scansionato? Non sei l'unico. In molti progetti reali il PDF che ricevi è solo un'immagine e, senza OCR, non puoi cercare, indicizzare o analizzare il suo contenuto. + +In questo tutorial percorreremo un esempio completo e funzionante che mostra **come usare OCR**, come **estrarre testo da PDF** e perché potresti voler **convertire PDF scansionati** in documenti ricercabili. Tratteremo anche l'arte sottile di **caricare PDF come immagine** affinché il motore OCR possa vedere ogni pagina chiaramente. + +> **Anteprima rapida:** Alla fine avrai uno script che carica un PDF multipagina, esegue OCR su ogni pagina e stampa il testo riconosciuto – senza servizi esterni. + +## Cosa ti servirà + +- Python 3.9+ (qualsiasi versione recente va bene) +- pacchetto `aocr` (o qualsiasi libreria OCR compatibile che fornisca `OcrEngine` e `Image.load`) +- Un file PDF scansionato da elaborare (ad es., `contract.pdf`) +- Una quantità modesta di RAM (≈ 200 MB per PDF di 100 pagine è solitamente sufficiente) + +Se non hai ancora installato la libreria OCR, esegui: + +```bash +pip install aocr +``` + +> **Consiglio professionale:** Usa un ambiente virtuale per mantenere ordinate le dipendenze. + +## Passo 1: Caricare PDF come immagine – Il primo pezzo del puzzle + +Prima che possa avvenire qualsiasi OCR, il PDF deve essere rappresentato come immagine. È qui che entra in gioco la keyword secondaria **load pdf as image**. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Perché è importante:* `aocr.Image.load` rasterizza internamente ogni pagina del PDF in una bitmap che il motore OCR può comprendere. Se salti questo passaggio e fornisci il PDF grezzo, il motore solleverà un errore perché si aspetta dati pixel, non dati vettoriali. + +> **Nota:** Il percorso può essere assoluto o relativo. Assicurati che il file sia leggibile; altrimenti otterrai un `FileNotFoundError`. + +## Passo 2: Eseguire OCR su PDF – Trasformare i pixel in caratteri + +Ora che il PDF è un'immagine, possiamo finalmente **run OCR on PDF**. Il frammento seguente elabora tutte le pagine in un unico passaggio: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Cosa succede dietro le quinte?* `process_all_pages` scorre le pagine rasterizzate, applica il modello OCR e restituisce una lista di oggetti risultato—uno per pagina. Ogni risultato contiene il testo riconosciuto, i punteggi di confidenza e le bounding box (se ti servono in seguito). + +## Passo 3: Estrarre testo da PDF – Estrarre le stringhe + +Con i risultati OCR a disposizione, estrarre il testo semplice diventa banale. Itereremo sulle pagine e stamperemo l'output, dimostrando la keyword secondaria **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Output atteso** (troncato per brevità): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Se ti serve il testo in un'unica stringa, basta concatenare: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Ora hai **estratto testo da PDF** usando OCR. + +## Passo 4: Convertire PDF scansionato – Renderlo ricercabile + +Molti strumenti a valle (come Elasticsearch o SharePoint) si aspettano un PDF ricercabile anziché un dump di testo semplice. Puoi incorporare l'output OCR nel PDF originale, **convertendo PDF scansionati** in una versione ricercabile. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Perché farlo?* Un PDF ricercabile mantiene il layout e le immagini originali consentendo al contempo la selezione e l'indicizzazione del testo — una vittoria sia per gli esseri umani che per le macchine. + +## Problemi comuni & casi limite + +### PDF multipagina più grandi della memoria + +Se il tuo PDF ha centinaia di pagine, caricare tutto in una volta può esaurire la RAM. La libreria `aocr` supporta il caricamento pigro: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Poi elabora le pagine una alla volta: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Scansioni di bassa qualità + +La precisione OCR cala drasticamente su scansioni sfocate o a basso contrasto. Prima di passare l'immagine al motore, considera una pre‑elaborazione: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Supporto linguistico + +Di default il motore assume l'inglese. Per **run OCR on PDF** in un'altra lingua, imposta il codice lingua: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Assicurati che il modello linguistico corrispondente sia installato. + +## Esempio completo funzionante + +Riunendo tutto, ecco uno script autonomo che puoi salvare in un file chiamato `ocr_pdf.py` ed eseguire subito: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Eseguilo così: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Vedrai il testo stampato sulla console e, se hai fornito `-o`, apparirà un PDF ricercabile accanto al file originale. + +## Consigli professionali & migliori pratiche + +- **Elaborazione batch:** Quando gestisci decine di PDF, avvolgi la logica sopra in un ciclo e registra il successo/fallimento di ogni file. +- **Filtraggio per confidenza:** Ogni `page_result` include una metrica di confidenza. Scarta o segnala le pagine con bassa confidenza per una revisione manuale. +- **Parallelismo:** Se la tua CPU ha più core, considera l'uso di `concurrent.futures` per elaborare le pagine in parallelo — facendo attenzione all'uso della memoria. +- **Blocco di versione:** L'API `aocr` può evolvere. Blocca la versione in `requirements.txt` (es., `aocr==2.3.1`) per evitare cambiamenti incompatibili. + +## Conclusione + +Abbiamo percorso **come usare OCR** per **estrarre testo da PDF**, **run OCR on PDF**, **load PDF as image**, e persino **convertire PDF scansionati** in un formato ricercabile. Il codice è completo, le spiegazioni coprono sia il *cosa* sia il *perché*, e ora disponi di un pattern riutilizzabile per qualsiasi progetto che tratti PDF basati su immagine. + +Qual è il prossimo passo? Prova a inviare il testo estratto in una pipeline di linguaggio naturale, indicizza i PDF ricercabili con Elasticsearch, o sperimenta con diversi back‑end OCR come Tesseract o Azure Computer Vision. Il cielo è il limite, e gli strumenti sono a portata di mano. + +Buon coding, e che i tuoi PDF siano sempre ricercabili! + +![come usare OCR esempio](/images/ocr_workflow.png "come usare OCR") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/italian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/italian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..37525b49d --- /dev/null +++ b/ocr/italian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Come utilizzare i thread per caricare immagini per OCR in Python. Impara + l'elaborazione OCR asincrona con callback, thread in background e caricamento delle + immagini in pochi semplici passaggi. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: it +og_description: Come utilizzare i thread per caricare un'immagine per l'OCR in Python. + Questa guida mostra un esempio completo e eseguibile con callback e esecuzione in + background. +og_title: Come usare il threading per caricare l'immagine per OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Come utilizzare il threading per caricare l'immagine per OCR +url: /it/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Come usare il threading per caricare un'immagine per OCR + +Ti sei mai chiesto **come usare il threading** per caricare un'immagine per OCR senza bloccare la tua app? È uno scenario che si presenta sia che tu stia costruendo uno scanner desktop, un servizio web, o uno script semplice che elabora immagini massive. La buona notizia? Poche righe di Python e il giusto pattern di threading manterranno la tua UI reattiva mentre il motore OCR fa la sua magia. + +In questo tutorial percorreremo un esempio completo, end‑to‑end: caricare un PNG di grandi dimensioni, avviare l'OCR su un thread in background e gestire il risultato con un callback. Alla fine non solo saprai **come usare il threading**, ma anche come **caricare un'immagine per OCR** in modo pulito e riutilizzabile. + +## Cosa ti servirà + +- Python 3.9+ (la sintassi che usiamo funziona su qualsiasi versione recente) +- `pillow` per la gestione delle immagini (`pip install pillow`) +- `pytesseract` come un leggero wrapper attorno a Tesseract OCR (`pip install pytesseract`) +- Motore Tesseract OCR installato sulla tua macchina (scarica da [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Un file immagine di grandi dimensioni che vuoi processare (`large_image.png` in questa guida) + +Nessun framework extra, nessun async/await—solo il classico `threading` e un callback. + +## Passo 1: Importare il modulo threading (necessario per l'esecuzione in background) + +La prima cosa che facciamo è importare il modulo `threading`. Esso fornisce la classe `Thread`, che ci permette di eseguire qualsiasi funzione in un thread OS separato. + +```python +import threading +``` + +*Perché è importante*: Se esegui l'OCR sul thread principale, il tuo programma (soprattutto una GUI) si bloccherà finché l'OCR non termina. Delegando il lavoro a un thread in background, il thread principale rimane libero di aggiornare l'interfaccia, gestire l'input dell'utente o avviare altre attività. + +## Passo 2: Definire un callback che verrà invocato al termine dell'OCR + +Un callback è semplicemente una funzione che un altro pezzo di codice chiama quando ha terminato. Qui stamperemo il testo riconosciuto, ma potresti salvarlo, inviarlo sulla rete o aggiornare un widget UI. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Consiglio professionale*: Mantieni il callback leggero. Un'elaborazione pesante all'interno del callback vanifica lo scopo del threading perché bloccherà comunque il thread che lo ha chiamato (spesso il thread principale). + +## Passo 3: Caricare l'immagine da processare + +Caricare l'immagine è una preoccupazione separata dall'OCR, ma è comunque parte del flusso di lavoro complessivo. Usare Pillow rende questo banale. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Perché lo facciamo qui*: Se l'immagine è enorme, caricarla sul thread principale potrebbe già causare un intoppo. In molte app reali potresti anche delegare il caricamento a un thread, ma per chiarezza lo manteniamo sincrono. + +## Passo 4: Creare un piccolo wrapper per il motore OCR + +Il frammento originale usava `engine.process_async`. Lo imiteremo con una piccola classe che avvia internamente un thread e chiama il callback fornito al termine. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Spiegazione*: +- `_run_ocr` esegue il lavoro pesante. +- `process_async` crea un oggetto `Thread`, lo segna come daemon (così l'interprete può terminare anche se il thread è ancora in esecuzione), e lo avvia. +- Il callback riceve o il testo OCR o un messaggio di errore. + +## Passo 5: Mettere tutto insieme e fare altro lavoro mentre l'OCR è in esecuzione + +Ora orchestriamo l'intero flusso: carichiamo l'immagine, istanziamo il motore, avviamo l'OCR asincrono e manteniamo il thread principale occupato con qualcos'altro (qui stampiamo semplicemente un messaggio). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Output previsto (troncato per brevità):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Se l'OCR fallisce, il callback stamperà un messaggio di errore invece del testo. + +--- + +## Perché questo approccio funziona meglio di un semplice ciclo + +- **Reattività**: Il thread principale non si blocca mai sulla chiamata OCR, che può richiedere secondi per immagini grandi. +- **Scalabilità**: Puoi avviare più istanze di `SimpleOcrEngine`, ognuna sul proprio thread, per processare un batch di immagini in parallelo. +- **Separazione delle preoccupazioni**: Il caricamento, l'elaborazione e la gestione del risultato sono separati in modo pulito, rendendo il codice più facile da testare e mantenere. + +## Errori comuni e come evitarli + +| Problema | Cosa succede | Soluzione | +|----------|--------------|-----------| +| Dimenticare di impostare il thread come *daemon* | Lo script resta in attesa dopo che il lavoro principale è terminato perché il thread OCR è ancora attivo. | Imposta `worker.daemon = True` **o** `join()` il thread prima di uscire. | +| Usare una variabile globale per il risultato senza lock | Le condizioni di gara possono corrompere i dati quando più thread scrivono simultaneamente. | Passa il risultato tramite un callback (come facciamo noi) o usa contenitori thread‑safe come `queue.Queue`. | +| Caricare un'immagine enorme sul thread principale | L'interfaccia si blocca prima che l'OCR in background inizi. | Delega anche il caricamento dell'immagine a un thread, o usa tecniche di caricamento lazy. | +| Non gestire le eccezioni all'interno del thread di lavoro | Le eccezioni non catturate uccidono silenziosamente il thread, lasciandoti senza risultato. | Avvolgi la logica OCR in `try/except` e inoltra l'errore al callback. | + +## Estendere questo pattern + +- **Segnalazione di avanzamento**: Usa una `queue.Queue` condivisa per inviare percentuali di avanzamento intermedie dal thread OCR al thread principale. +- **Pool di thread**: Per l'elaborazione batch, sostituisci gli oggetti `Thread` individuali con un `concurrent.futures.ThreadPoolExecutor`. +- **Integrazione GUI**: In un'app Tkinter o PyQt, programma il callback con `after()` (Tkinter) o `QTimer.singleShot` (Qt) per garantire che gli aggiornamenti UI avvengano sul thread principale. + +## Esempio completo funzionante (pronto per copia‑incolla) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/japanese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..b626297bd --- /dev/null +++ b/ocr/japanese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,245 @@ +--- +category: general +date: 2026-04-26 +description: Python Aspose OCR を使用してヘッダー文字を抽出する。画像から特定領域のテキストを迅速かつ確実に抽出する方法を学びましょう。 +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: ja +og_description: ヘッダー文字をすばやくOCRで抽出します。このガイドでは、Python Aspose OCR を使用して特定領域のテキストを数行のコードで抽出する方法を示します。 +og_title: Python と Aspose OCR を使用したヘッダー文字抽出 – 完全チュートリアル +tags: +- OCR +- Python +- Aspose +title: Python と Aspose OCR を使ったヘッダー文字抽出 – ステップバイステップガイド +url: /ja/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# ヘッダー文字抽出 OCR – 完全な Python Aspose OCR チュートリアル + +スキャンした請求書から **ヘッダー文字抽出 OCR** が必要だったが、ページ全体を処理したくなかったことはありませんか? あなただけではありません。実際のパイプラインでは、ヘッダーに最も重要な情報(請求書番号、日付、ベンダー名など)が含まれていることが多く、素早く抽出することで下流の作業を大幅に削減できます。 + +このチュートリアルでは、**Python Aspose OCR** ライブラリを使用して **特定領域のテキスト抽出** を行う、すぐに実行できるソリューションをご紹介します。外部ドキュメントへの曖昧な参照はなく、完全なスクリプト、各行の明確な説明、そして明日すぐに使えるヒントだけを提供します。 + +## 学べること + +- Python 用 Aspose OCR パッケージのインストールとインポート方法 +- 画像を読み込み、ヘッダーを切り出す **関心領域 (ROI)** を定義する方法 +- ROI に対して OCR エンジンを実行し、クリーンなテキストを取得する方法 +- 一般的な落とし穴(例:DPI の不一致)と回避策 +- 期待される出力例を確認し、正しく動作しているか検証する方法 + +最後まで読めば、請求書、領収書、またはレイアウトが予測可能な任意の文書から **ヘッダー文字抽出 OCR** を行うコードを任意のプロジェクトに組み込めるようになります。 + +## 前提条件 + +- Python 3.8 以上がマシンにインストールされていること +- 有効な Aspose OCR for Python ライセンス(評価用の無料トライアルで動作します) +- ヘッダー領域がはっきりしている画像ファイル(`invoice.png`) +- Python の関数とファイルパスに関する基本的な知識 + +> **プロのコツ:** 低解像度のスキャンでテストする場合は、Aspose OCR に渡す前に DPI を上げると精度が劇的に向上します。 + +--- + +## 手順 1: Aspose OCR パッケージのインストール + +まず、ライブラリを環境に追加します。公式パッケージは `aspose-ocr` です。以下を一度実行してください: + +```bash +pip install aspose-ocr +``` + +仮想環境を使用している場合(強く推奨)、インストール前に仮想環境をアクティブにしてください。これにより、パッケージが他のプロジェクトと衝突しなくなります。 + +## 手順 2: 必要なクラスのインポートと画像の読み込み + +次に、スクリプトに必要なクラスをインポートし、請求書画像を読み込みます。**フルパス**の使用に注意してください。相対パスでも動作しますが、サーバ上で実行する際は絶対パスの方が曖昧さがなくなります。 + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **なぜ重要か:** `OcrEngine` を一度初期化して複数の画像で再利用する方が、毎回新しいエンジンを作成するよりも効率的です。 + +## 手順 3: ヘッダー領域 (ROI) の定義 + +ヘッダーは通常ページ上部にありますが、正確な座標は文書によって異なります。ここでは、ヘッダーを覆う矩形(`x`, `y`, `width`, `height`)を定義します。数値はご自身の文書レイアウトに合わせて調整してください。 + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **仕組み:** `set_roi` を呼び出すことで、OCR エンジンはこの矩形内だけを解析対象とし、処理速度が大幅に向上し、ページ全体からのノイズが減少します。 + +## 手順 4: ROI の適用と OCR の実行 + +エンジンにヘッダー領域に注目させ、OCR プロセスを実行します。結果オブジェクトには認識されたテキストと追加メタデータ(信頼度スコア、言語など)が含まれます。 + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +OCR が失敗した場合(例:サポート外の画像形式)、`ocr_result` は `None` になります。簡単なガード句を入れるとスクリプトの堅牢性が向上します: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## 手順 5: 抽出されたヘッダー文字の取得と表示 + +最後に、結果オブジェクトからテキストを取り出して表示します。ファイルに書き出したり、別の関数に渡してさらに解析することも可能です。 + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### 期待される出力 + +すべてが正しく設定されていれば、以下のような出力が得られるはずです: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +出力が文字化けしている場合は、ROI の座標を再確認し、元画像が高コントラストであることを確認してください。 + +--- + +## バリエーションとエッジケース + +### 1. 1つの文書に複数のヘッダーがある場合 + +PDF が複数ページを含み、各ページに独自のヘッダーがあることがあります。ページごとにループし、ページごとに ROI を調整します: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. 歪んだスキャンへの対処 + +請求書が少し回転している場合は、Aspose OCR に渡す前に OpenCV で画像を前処理してください: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. 言語設定の変更 + +Aspose OCR は言語を自動検出できますが、速度を優先する場合は英語を強制指定できます: + +```python +ocr_engine.language = "en" +``` + +--- + +## 完全な動作例 + +以下は `extract_header.py` というファイル名でコピー&ペーストできる完全なスクリプトです。画像パスはご自身の環境に合わせて置き換えてください。 + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +このスクリプトを実行すると、先ほど示したヘッダー行がそのまま出力されます。`roi` の値はご使用の請求書テンプレートに合わせて自由に調整してください。 + +--- + +## よくある質問と回答 + +**Q: Does this work with PDFs directly?** +A: Not out‑of‑the‑box. Convert each PDF page to an image (e.g., using `pdf2image`) then feed the PNG/JPG to the script. + +**Q: What if my header contains a logo and text together?** +A: Aspose OCR focuses on textual content. For logos, consider using a separate image‑recognition library like `opencv` or `tesseract` with a custom model. + +**Q: Is the free trial limited?** +A: The trial allows up to 10 pages per month. For production, purchase a license to remove the limit and unlock higher accuracy settings. + +--- + +## 結論 + +これで **Python Aspose OCR** を使用した **ヘッダー文字抽出 OCR** の **完全かつ引用可能な** ガイドが手に入りました。インストールからエッジケースの処理まで網羅し、再利用可能な関数も提供しましたので、より大規模なワークフローに組み込むことができます。 + +次は、フッターや明細行など他の領域向けに **特定領域のテキスト抽出** を試したり、PDF‑to‑image コンバータと組み合わせて全文書パイプラインを自動化したりしてみてください。可能性は無限です—ただし ROI の座標を正確に保ち、画像は高解像度にしておくことを忘れずに。 + +レイアウトが難しい場合はコメントで共有してください。ROI の調整を一緒に行いましょう。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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/japanese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..375506532 --- /dev/null +++ b/ocr/japanese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-04-26 +description: PythonでAspose OCRを使用して画像からテキストを抽出します。テキストの抽出方法、画像をテキストに変換する方法、OCR用に画像を読み込む方法を学び、多言語サポートが可能です。 +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: ja +og_description: 画像からテキストを即座に抽出します。このガイドでは、テキストの抽出、画像をテキストに変換、そしてPythonで Aspose OCR + を使用して画像を OCR に読み込む方法を示します。 +og_title: Pythonで画像からテキストを抽出 – 完全マルチリンガルOCRチュートリアル +tags: +- OCR +- Python +- Aspose +title: Pythonで画像からテキストを抽出 – 多言語OCRガイド +url: /ja/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Pythonで画像からテキストを抽出 – 多言語 OCR ガイド + +画像からテキストを**抽出**したいと思ったことはありますか、しかし混合言語のページを扱えるライブラリが分からなかったことはありませんか? あなたは一人ではありません。実際のアプリケーションでは、請求書処理、ソーシャルメディアモニタリング、または多言語文書のアーカイブなどを考えると、ラテン文字とキリル文字の両方を含む画像に出くわすことがあります。 + +良いニュースがあります。Aspose OCR for Python を使えば、**テキストを抽出**、**画像をテキストに変換**、そして**OCR 用に画像をロード**を数行で行え、エンジンに言語を自動検出させることができます。このチュートリアルでは、完全に実行可能な例を順に解説し、各ステップの重要性を説明し、途中で遭遇する可能性のあるいくつかのエッジケースも取り上げます。 + +> **得られるもの** +> * 混合言語 PNG からテキストを取得する、すぐに実行できるスクリプト。 +> * Python で多言語 OCR を構成する方法の理解。 +> * 大きなファイル、異なる画像フォーマットの取り扱い、一般的な落とし穴のデバッグに関するヒント。 + +## 前提条件 + +- Python 3.8 以上(コードは f‑strings を使用)。 +- `asposeocr` パッケージをインストール(`pip install asposeocr`)。 +- 複数のスクリプトでテキストが含まれる画像ファイル(例: `mixed_lang.png`)。 +- Python のインポートとオブジェクト指向 API に関する基本的な知識。 + +重い依存関係も外部サービスも不要です。pip で一度インストールすればすぐに使えます。 + +--- + +## ステップ 1 – Aspose OCR ライブラリのインストールとインポート + +OCR 用に画像をロード**する前に、ライブラリ自体が必要です。パッケージにはコア OCR エンジンと軽量画像ローダーが同梱されています。 + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*重要な理由*: 特定のクラスをインポートすることで名前空間が整理され、後続のコードが分かりやすくなります。`asposeocr` だけをインポートすると、すべての呼び出しを (`aocr.OcrEngine()`) のように修飾しなければならず、冗長になります。 + +--- + +## ステップ 2 – OCR エンジンの作成と多言語検出の有効化 + +Aspose OCR は画像に含まれる言語を自動的に推測できます。`Language.AUTO` を設定すると、ラテン文字、キリル文字、アラビア文字など多数をカバーします。 + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*プロのコツ*: 事前に言語が分かっている場合は、`Language.ENGLISH` や `Language.RUSSIAN` を指定するとわずかなパフォーマンス向上が得られます。ただし、実際に混合文書の場合は `AUTO` が最も安全です。 + +--- + +## ステップ 3 – 処理したい画像をロード + +ここで**OCR 用に画像をロード**します。Aspose は PNG、JPEG、BMP、TIFF、さらには画像として扱われる PDF ページもサポートします。 + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **ヒント**: 画像が 2 MB を超える場合は、事前にリサイズすることを検討してください。大きな画像はメモリ使用量が増加し、検出ステップが遅くなる可能性があります。 + +--- + +## ステップ 4 – OCR プロセスを実行し、結果を取得 + +`process()` を呼び出すと、テキスト検出、レイアウト解析、言語デコードという重い処理が行われます。 + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +返される `ocr_result` オブジェクトには、いくつかの便利なプロパティがあります: + +| Property | Description | +|----------|-------------| +| `text` | 認識されたテキストのプレーン文字列(最も頻繁に使用されます)。 | +| `confidence` | 全体の信頼度スコア(0‑100)。 | +| `lines` | 位置データを持つ `OcrLine` オブジェクトのリスト(PDF に便利)。 | + +--- + +## ステップ 5 – 抽出したテキストを表示 + +最後に、出力をプリントします。実際のアプリケーションでは、データベースに書き込んだり、翻訳 API に渡したりすることがあります。 + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**期待される出力**(混合言語画像の例): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +文字化けが見られる場合は、画像が破損していないか、最新バージョンの `asposeocr`(執筆時点では v23.7)を使用しているかを再確認してください。 + +--- + +## ステップ 6 – コピー&ペーストできる完全なスクリプト + +すべてをまとめることで「コードはどこから始まるのか?」という混乱が解消されます。このファイルを `multilingual_ocr.py` として保存し、コマンドラインから実行してください。 + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +実行: + +```bash +python multilingual_ocr.py +``` + +コンソールに抽出された文字列が表示されるはずです。これで完了です—**画像をテキストに変換**は数行で実現できます。 + +--- + +## よくある質問とエッジケースの対処 + +### 画像に手書き文字が含まれている場合は? + +Aspose OCR は印刷されたテキスト向けに調整されています。手書き文字は専用のモデル(例: Azure Read や Google Vision)が必要になることが多いです。`Language.AUTO` を試すことはできますが、信頼度は低くなることが予想されます。 + +### ノイズの多いスキャンで精度を上げるには? + +1. 画像を前処理する(二値化、デスぺックリング)。 +2. エンジンに渡す前に DPI を少なくとも 300 ppi に上げる。 +3. 画像が傾いている場合は `ocr_engine.config.deskew = True` を明示的に設定する。 + +```python +ocr_engine.config.deskew = True +``` + +### PDF を画像に変換せずにテキストを抽出できますか? + +はい、Aspose OCR は PDF ページを直接開くことができます: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +ただし、各ページは内部的に画像として扱われるため、同じ品質上の考慮が必要です。 + +--- + +## 結論 + +これで、Aspose OCR を使用した Python における **画像からテキストを抽出** するための、包括的で実用的なレシピが手に入りました。多言語サポートも完備しています。このスクリプトは **OCR 用に画像をロード**、**画像をテキストに変換**、そして最も一般的な落とし穴への対処方法を示しています。 + +ここからは次のようなことが考えられます: + +- ユーザーアップロードを受け付けるウェブサービスに機能を統合する。 +- 抽出したテキストを言語検出ライブラリと組み合わせて、適切な翻訳エンジンへルーティングする。 +- `ocr_engine.config` のオプション(例: `max_recognition_time`、`text_orientation`)を試して、パフォーマンスを微調整する。 + +コーディングを楽しんでください、そして OCR パイプラインが常に正確でありますように! + +--- + +![抽出された多言語テキストのスクリーンショット – 画像からテキストを抽出する例](image-placeholder.png "画像からテキストを抽出する例") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/japanese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..2d76baec5 --- /dev/null +++ b/ocr/japanese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: Pythonで文書をバッチOCRし、スキャンからテキストを抽出する方法。OcrEngine を使用した JSON 出力のバッチ処理をステップバイステップで学びましょう。 +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: ja +og_description: スキャンしたファイルを一括でOCRし、単一のスクリプトでテキストを抽出する方法。完全なコード、ヒント、エッジケースの対処法。 +og_title: バッチOCRのやり方 – 高速Pythonガイド +tags: +- OCR +- Python +- Automation +title: バッチOCRの方法 – スキャンからテキストを効率的に抽出する +url: /ja/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# バッチ OCR の方法 – スキャンから効率的にテキストを抽出する + +大量のスキャンした PDF を正気でいながら **バッチ OCR** したいと思ったことはありませんか? あなただけではありません—開発者は常に「スキャンから一括でテキストを抽出するにはどうすればいいのか?」と質問しています。 良いニュースは、数行の Python でその面倒な作業をスムーズな自動パイプラインに変えられることです。 + +このチュートリアルでは、**スキャンからテキストを抽出**し、結果を JSON として保存し、最後に簡単なサニティチェックを行う、完全で実行可能なソリューションを順を追って説明します。外部サービスや魔法は不要です—純粋な Python と `OcrEngine` クラス、そして少しのフォルダ操作だけです。 + +## この記事で得られるもの + +- 任意の画像フォルダに対して **バッチ OCR** を実行できる完全に機能するスクリプト。 +- *why* 各行が存在する理由を明確に説明し、*what* だけではなく。 +- 空フォルダ、画像以外のファイル、大規模バッチの処理に関するヒント。 +- JSON 出力に抽出されたテキストが実際に含まれているかを検証する方法。 + +### 前提条件(最低限) + +| 要件 | 重要な理由 | +|-------------|----------------| +| Python 3.8+ | モダンな構文と型ヒント | +| `OcrEngine` library (or a compatible wrapper) | OCR のコア機能 | +| A directory with scanned image files (PNG, JPG, TIFF) | 入力データ | +| Write permissions for the output folder | JSON 結果の保存 | + +これらがすでに揃っているなら、素晴らしい—さっそく始めましょう。 + +![how to batch OCR workflow](image-placeholder.png){alt="バッチ OCR ワークフロー"} + +## ステップ 1 – OCR エンジンの初期化(バッチ OCR) + +何かを処理する前に、OCR エンジンのインスタンスが必要です。各画像を読み取りテキストを出力する「脳」と考えてください。エンジンを一度初期化し、バッチ全体で再利用することが最も効率的なパターンです。 + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **なぜ同じインスタンスを再利用するのか?** +> 各ファイルごとに新しいエンジンを作成すると、重いモデルをメモリに何度もロードすることになり、バッチ処理が大幅に遅くなります。1つのインスタンスでモデルを RAM に保持し、何千もの画像を遅延なく処理できます。 + +## ステップ 2 – スキャンフォルダを指定(スキャンからテキストを抽出) + +スキャン画像はディスク上のどこかに保存されています。スクリプトにその場所を教えましょう。絶対パスを使用することで、スクリプトが別の作業ディレクトリから実行されたときに「ファイルが見つからない」エラーを防げます。 + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **プロのコツ:** +> Windows でも、スラッシュ (`/`) は `os.path.abspath` でそのまま使用できるので、バックスラッシュをエスケープする必要はありません。 + +## ステップ 3 – JSON 結果の出力先を選択 + +OCR 結果用に整理されたフォルダが欲しいでしょう。出力を元データと分離しておくことで、後でクリーンアップしたり、JSON を別のパイプラインに渡すのが簡単になります。 + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **なぜプログラムでフォルダを作成するのか?** +> ディレクトリが存在しなくてもスクリプトがクラッシュしないことを保証し、`exist_ok=True` により操作が冪等になります—エラーなくスクリプトを何度も実行できます。 + +## ステップ 4 – バッチ処理の実行(バッチ OCR) + +ここが本題です: `ocr_engine` に `input_dir` 内のすべてのファイルを走査し、OCR を実行し、結果を `output_dir` に JSON として出力するよう指示します。`format="json"` フラグは、エンジンに結果を下流ツールが好む構造化形式でシリアライズさせます。 + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### 背後で何が起きているか + +1. **File discovery** – エンジンは `input_folder` を再帰的にスキャンし、隠しファイルは無視します。 +2. **File validation** – サポートされている画像拡張子(`.png`, `.jpg`, `.tif` など)のみが OCR モデルに渡されます。 +3. **OCR execution** – 各画像が OCR エンジンに送られ、テキスト、信頼度スコア、レイアウトデータが取得されます。 +4. **JSON serialization** – 結果は同じベース名で `.json` 拡張子を付けたファイルとして `output_folder` に書き込まれます。 + +> **エッジケースの処理:** +> - **空フォルダ:** エンジンは「No files found」とログに記録し、穏やかに終了します。 +> - **破損画像:** ファイルをスキップし、`batch_errors.log` にエラーエントリを記録して続行します。 +> - **大規模バッチ(10k+ ファイル):** 各画像を個別に処理するため、メモリ使用量は低く抑えられます。 + +## ステップ 5 – 変換完了の確認 + +シンプルな `print` 文でコンソールに即時フィードバックが得られます。実運用のパイプラインでは、これをロギング呼び出しやメール通知に置き換えることもできます。 + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +その行が表示されたら、`json_output` フォルダを安全に確認できます。各 JSON ファイルは概ね以下のようになります: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +これらの JSON ファイルをデータベース、検索インデックス、または任意の下流分析ツールに投入できます。 + +## よくある質問(と簡単な回答) + +**Q: 画像ではなく PDF を処理したい場合は?** +A: 各 PDF ページをまず画像に変換(例: `pdf2image` を使用)し、生成された PNG/JPG ファイルを `input_dir` に配置します。バッチ OCR のロジックは変更不要です。 + +**Q: 出力形式をプレーンテキストに変更できますか?** +A: もちろんです。`format="json"` を `format="txt"` に置き換えると、エンジンは抽出されたテキストだけを含む `.txt` ファイルを書き出します。 + +**Q: スキャンが複数のサブフォルダに分かれている場合、スクリプトは再帰的に処理しますか?** +A: はい。`batch_process` はデフォルトでディレクトリツリーを走査します。フラットな出力が必要な場合は、`flatten=True`(ライブラリがサポートしていれば)を設定するか、JSON ファイル名を後処理してください。 + +**Q: ラテン文字以外のスクリプトを扱うには?** +A: `OcrEngine` を言語パラメータで初期化します(例: `OcrEngine(lang="spa+eng")`)。バッチループ自体に変更は不要です。 + +## プロのコツとよくある落とし穴 + +- **Batch size matters:** CPU のスパイクが見られる場合は、ファイル間にシンプルな `time.sleep(0.1)` を入れて処理をスロットルしてください。 +- **Logging:** `print` 呼び出しを Python の `logging` モジュールに置き換えて、タイムスタンプやエラーレベルを取得します。 +- **File naming collisions:** 同じベース名のスキャンが別々のサブフォルダにあると、JSON ファイルが上書きされます。相対パスのハッシュを出力名に付加して回避してください。 +- **Memory leaks:** 一部の OCR バックエンドはネイティブリソースを保持します。ライブラリがクリーンアップメソッドを提供している場合は、スクリプトの最後で `ocr_engine.close()` を呼び出してください。 + +## 完全スクリプト – コピー&ペースト用 + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**期待されるコンソール出力** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +`json_output` 内の任意のファイルをテキストエディタで開くか、Python でロードして JSON を検証できます: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +コンソールに OCR 抽出された生テキストが表示されるはずです。 + +## まとめ + +私たちは、スキャン画像のディレクトリ全体を **バッチ OCR** し、**スキャンからテキストを抽出** してクリーンな機械可読 JSON ファイルに変換する方法を紹介しました。アプローチは意図的にシンプルです—エンジンを一度設定し、フォルダを指すだけで、ライブラリが重い処理を担います。ここからは、 + +- JSON を接続する + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/japanese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..753cd8ee4 --- /dev/null +++ b/ocr/japanese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,239 @@ +--- +category: general +date: 2026-04-26 +description: OCR を迅速かつ確実に作成する方法。画像からテキストを抽出し、OCR 用に画像を読み込み、カスタム辞書を使用して PNG に対して OCR + を実行する方法を学びます。 +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: ja +og_description: PythonでOCRを作成し、画像からテキストを抽出する方法。このガイドでは、OCR用に画像を読み込む方法、PNGでOCRを実行する方法、カスタム辞書の使用方法を示します。 +og_title: PythonでOCRを作成する方法 – 高速テキスト抽出 +tags: +- OCR +- Python +- Image Processing +title: PythonでOCRを作成する方法 – 画像からテキストを抽出 +url: /ja/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PythonでOCRを作成する方法 – ステップバイステップガイド + +スキャンしたPDFやスクリーンショット、手書きのメモを読み取れる **OCRの作り方** を疑問に思ったことはありませんか? あなただけではありません。実際のプロジェクトでは *画像からテキストを抽出* する必要がありますが、既成のエンジンはドメイン固有の単語でつまずくことが多いです。 + +このチュートリアルでは、OCR用に画像を読み込み、カスタム辞書を適用し、最終的に **PNGファイルでOCRを実行** する完全な実行可能例をご紹介します。最後まで読むと、任意の画像からテキストを抽出し、エンジンを自分の用語に合わせてカスタマイズできるようになります。 + +## このチュートリアルでカバーする内容 + +* 小さくても強力な `aocr` パッケージ(または互換性のあるライブラリ)をインストールする。 +* `aspocorp` や `licensekey` のような用語が認識されるように **カスタム辞書** を設定する。 +* PNG、JPEG、またはスキャンしたPDFページなど、**OCR用に画像を読み込む**。 +* OCRプロセスを実行し、結果を出力する。 + +外部ドキュメントへのリンクはなく、今日すぐにコピー&ペーストして実行できる自己完結型のソリューションです。 + +### 前提条件 + +* Python 3.8 以上(コードは f‑string を使用)。 +* コマンドラインの基本的な知識 – `pip install` コマンドを数回入力します。 +* 参照できる場所に配置した画像ファイル(例では `technical_doc.png`)。 + +上記の3項目を満たしていれば、すぐに始められます。 + +--- + +## ステップ1: OCRライブラリのインストール + +まず、プログラム可能な設定オブジェクトをサポートするOCRエンジンが必要です。`aocr` パッケージはネイティブOCRエンジンの軽量ラッパーで、デモに適しています。 + +```bash +# Install the library (run once) +pip install aocr +``` + +> **プロのコツ:** Windowsでコンパイルエラーが出た場合は、事前ビルド済みのホイールが含まれる `pip install aocr‑binary` を試してください。 + +### なぜこのライブラリをインストールするのか? + +`aocr` は `config` オブジェクトへの直接アクセスを提供し、そこに **カスタム辞書** を注入できます。これがニッチな語彙の精度向上の秘訣です。 + +--- + +## ステップ2: OCRエンジンインスタンスの作成とカスタム辞書の追加 + +ここでエンジンを起動し、既知として扱う単語を指定します。 + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### カスタム辞書が重要な理由 + +標準的なOCRモデルは汎用コーパスで訓練されています。モデルが “aspocorp” を見ると “aspo corp” に分割したり、文字を抜き落としたりすることがあります。カスタムリストを提供することで、認識器を必要な正確なスペルにバイアスさせ、後処理の手間を大幅に削減します。 + +--- + +## ステップ3: 処理したい画像の読み込み + +ここで **OCR用に画像を読み込む** ことを行います。`Image.load` メソッドはパス文字列を受け取り、ファイルタイプを自動的に判別します。 + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **エッジケース:** ソースが複数ページのPDFの場合、まず各ページをPNGに変換(例: `pdf2image` 使用)し、エンジンに1ページずつ渡してください。 + +### 画像品質向上のヒント + +* 解像度は最低でも300 dpiに保つ。 +* 画像が正しい向きであることを確認し、必要なら `Pillow` で回転させる。 +* カラースキャンはグレースケールに変換してノイズを減らす。 + +--- + +## ステップ4: PNGファイルでOCRプロセスを実行 + +エンジンの設定と画像の読み込みが完了したら、最終的に **PNGでOCRを実行** します。 + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +`process()` 呼び出しは、認識されたテキスト、信頼度スコア、各単語のバウンディングボックスを含むオブジェクトを返します。 + +--- + +## ステップ5: 認識テキストの出力 + +エンジンが見つけた内容を確認する最も簡単な方法は、`text` 属性を出力することです。 + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### 期待される出力 + +`technical_doc.png` に文 *“The Aspocorp licensekey expires on 2025‑12‑31.”* が含まれている場合、コンソールには次のように表示されます: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +カスタム辞書がブランド名をそのまま保持していることに注目してください。標準のOCRでは文字化けしていた可能性があります。 + +--- + +## 完全動作例(コピー&ペースト準備完了) + +以下は全スクリプトで、`run_ocr.py` として保存できます。プレースホルダーのパスを画像の場所に置き換えるだけです。 + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +ターミナルから実行してください: + +```bash +python run_ocr.py +``` + +先ほどの例と同様に、抽出されたテキストがコンソールに表示されるはずです。 + +--- + +## よくある質問 (FAQ) + +| Question | Answer | +|----------|--------| +| **スキャンしたPDFからテキストを抽出できますか?** | はい。各ページをまずPNG(またはTIFF)に変換し、同じスクリプトに画像を渡してください。 | +| **画像がPNGではなくJPEGの場合はどうしますか?** | `Image.load` メソッドはJPEG、BMP、TIFF、PNGを標準でサポートしています。ファイル拡張子を変更するだけです。 | +| **コントラストが低いスキャンの精度を上げるには?** | `Pillow` で前処理 – コントラストを上げ、二値化を適用するか、`opencv` で傾きを補正してください。 | +| **各単語の信頼度スコアを取得する方法はありますか?** | `ocr_result` には `words` が含まれており、各単語は `confidence` 属性を持つので反復処理できます。 | +| **ヘッドレスサーバーで実行できますか?** | もちろんです。`aocr` はGUI依存がなく、CIパイプラインに最適です。 | + +--- + +## 次のステップと関連トピック + +**OCRの作り方** と **画像からテキストを抽出** できるようになったので、以下を検討してください: + +* **前処理技術** – `load image for OCR` は最初のステップに過ぎません。`opencv` を使ってノイズ除去やシャープ化を行いましょう。 +* **バッチ処理** – PNGディレクトリをループして検索可能なアーカイブを生成します。 +* **多言語サポート** – フランス語やドイツ語の文書を読む必要がある場合、エンジンに言語パックを追加します。 +* **Elasticsearchとの統合** – 抽出したテキストをインデックス化し、スキャン資産全体の全文検索を可能にします。 + +これらの拡張はすべて、先ほど説明したコアパターン上に構築されているため、移行はスムーズです。 + +--- + +## まとめ + +数分で、特にPNGファイルに対して信頼性の高い **OCRの作り方** と **画像からテキストを抽出** する方法を解説し、**OCR用に画像を読み込む**、**カスタム辞書を適用する**、そして **PNGで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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/japanese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..8edde5952 --- /dev/null +++ b/ocr/japanese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,206 @@ +--- +category: general +date: 2026-04-26 +description: Pythonで画像からOCRを抽出する方法 – OCR用に画像を読み込み、レシートからテキストを抽出するPython OCRの例 +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: ja +og_description: Python を使って画像から OCR を抽出する方法。Python の OCR の例を学び、画像を読み込んで OCR を実行し、数分でレシートのテキストを抽出します。 +og_title: PythonでOCRを抽出する方法 – 完全ガイド +tags: +- OCR +- Python +- Image Processing +title: PythonでOCRを抽出する方法 – ステップバイステップチュートリアル +url: /ja/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# PythonでOCRを抽出する方法 – 完全ガイド + +ぼやけたレシートやスキャンした請求書から **OCRを抽出する方法** を考えたことがありますか? あなただけではありません—開発者は画像からクリーンで機械可読なテキストが必要になると、しばしば壁にぶつかります。 良いニュースは? Python数行でレシートの画像を高信頼性の検索可能テキストに変換できます。 + +このチュートリアルでは、**python ocr example** を通じて **how to load image for ocr** を実演し、エンジンを実行し、85 % の信頼度閾値を満たす文字だけを保持する方法を説明します。最後までに、**extract text from receipt** 画像をドキュメントを探したり API パラメータを推測したりせずに抽出できるようになります。 + +## 必要なもの + +- Python 3.9 以上(使用している構文は 3.8+ でも動作します) +- `aocr` パッケージ(または `OcrEngine` クラスを提供する任意の OCR ライブラリ)。以下でインストールします: + +```bash +pip install aocr +``` + +- 参照できるフォルダーに配置したサンプルレシート画像(`receipt.png`) +- テキストエディタまたは IDE—VS Code、PyCharm、あるいはシンプルなノートブックでも構いません。 + +以上です。重いフレームワークも外部サービスも不要で、純粋な Python だけです。 + +![高信頼度 OCR 結果 – レシートから OCR を抽出する方法](/images/ocr-high-confidence.png) + +*画像の代替テキスト: Python OCR を使用してレシートから OCR を抽出する方法* + +## Step 1 – OCR エンジンインスタンスの作成 (how to extract ocr) + +最初に行うのは OCR エンジンを起動することです。ピクセルを読み取る脳と考えてください。 + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**なぜですか?** `OcrEngine` をインスタンス化すると、新しい設定オブジェクトが得られます。後から言語モデルや DPI 設定、前処理ステップを調整でき、コア処理ループに手を加える必要はありません。 + +## Step 2 – OCR 用画像のロード + +次に、エンジンに解析したい画像を指示します。ここで **load image for ocr** キーワードが登場します。 + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **プロのコツ:** 画像が別のディレクトリにある場合は、`os.path.join` を使用してプラットフォームに依存しないパスを作成してください。 + +**なぜこの方法で画像をロードするのか?** `Image.load` ヘルパーはファイルをエンジンが理解できる形式に読み込み、一般的なフォーマット(PNG、JPEG、TIFF)を自動的に処理します。このステップを省略したり生バイトを渡したりすると `ValueError` が発生します。 + +## Step 3 – OCR 処理の実行 + +いよいよ OCR を実行します。`process` メソッドは、認識されたシンボル、信頼度スコア、バウンディングボックスを含むリッチな結果オブジェクトを返します。 + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**`ocr_result` には何が含まれますか?** 多くのライブラリでは以下が含まれます: + +- `text`: 生の連結文字列。 +- `symbol_confidences`: `(char, confidence)` タプルのリスト。 +- `boxes`: 各文字の座標(ビジュアルデバッグに便利)。 + +文字ごとの信頼度にアクセスできることは、次のステップに不可欠です。 + +## Step 4 – 高信頼度シンボルのみを保持 (≥ 85 %) + +レシートには汚れや薄い印字、背景ノイズがあることが多いです。低信頼度シンボルを除去することで、下流のパース処理が大幅に改善されます。 + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**なぜ 85 % なのか?** 経験的に、0.85 前後の閾値はほとんどの印刷レシートで再現率と精度のバランスが取れます。数字が抜けている場合は閾値を下げ、文字化けが多い場合は上げてください。 + +## Step 5 – 高信頼度抽出テキストの出力 + +最後に、サニタイズされた文字列を出力(または保存)します。これが **extract text from receipt** ワークフローの核心です。 + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +典型的な出力例は次のようになります: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +この文字列を CSV ライターやデータベース、あるいは任意の下流分析パイプラインに渡すことができます。 + +## 完全な実行可能スクリプト + +以下は `ocr_receipt.py` にコピー&ペーストしてすぐに実行できる完全なコードスニペットです。 + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +ファイルを保存し、`receipt.png` が存在することを確認した上で実行してください: + +```bash +python ocr_receipt.py +``` + +コンソールにクリーンアップされたレシートテキストが表示されるはずです。 + +## エッジケースと想定シナリオ + +| 状況 | 推奨される対策 | +|-----------|----------------| +| **全体的に非常に低い信頼度** | 画像を前処理する:コントラストを上げ、グレースケールに変換、またはノイズ除去フィルタ(`cv2.GaussianBlur`)を適用する。 | +| **ラテン文字以外の文字** | `OcrEngine` に言語モデルを渡す(例:スペイン語の場合 `ocr_engine.language = "spa"`)。 | +| **1枚の画像に複数のレシートがある** | 画像全体で OCR を実行し、`\n\n+`(二重改行)を検出する正規表現で結果を分割する。 | +| **生の OCR テキストも必要** | フィルタリング版と並行して `ocr_result.text` を保持し、デバッグに利用する。 | + +## よくある落とし穴(回避方法) + +- **ライブラリのインストール忘れ** – `pip install aocr` がインポート前に成功している必要があります。 +- Windows で **パス区切り文字を間違える**(`\` と `/` の違い)。`os.path.join` を使用してください。 +- **テストせずに信頼度閾値をハードコーディング** – まず数枚のレシートで簡易的に目視確認を行いましょう。 +- **Unicode 正規化を無視** – 一部のレシートには特殊なダッシュ文字が含まれるため、出力を保存する場合は `unicodedata.normalize('NFKC', text)` を実行してください。 + +## 次のステップ – 基礎を超えて + +単一のレシートから **how to extract ocr** データを取得できるようになったので、次のことを検討したくなるでしょう: + +1. **レシートフォルダーをバッチ処理** – すべての PNG/JPG ファイルをループし、各結果を CSV に書き込む。 +2. **データベースと統合** – `high_confidence_text` を SQLite に保存し、迅速に検索できるようにする。 +3. **自然言語解析を適用** – 正規表現や `dateutil` を使って日付、合計金額、税額を抽出する。 +4. **代替ライブラリを試す** – 多言語サポートや高精度が必要な場合は `pytesseract`、`easyocr`、またはクラウドサービス(Google Vision、Azure OCR)を検討してください。 + +これらのトピックはすべて、*python ocr example*、*extract text from receipt*、*load image for ocr*、*how to use OCR* という二次キーワードを自然に含んでいます。 + +## 結論 + +ここでは、レシート画像から **how to extract ocr** テキストを抽出し、低信頼度シンボルを除去してクリーンな結果を出力する完全な **python ocr example** を一通り解説しました。手順はシンプルで、コードは自己完結しており、規模の大きなプロジェクトにも柔軟に適応できます。 + +ぜひ自分のレシートで試し、信頼度閾値を調整し、バッチ処理へと拡張してみてください。ロゴが薄い、フォントが特殊などの問題に直面したら、上記のエッジケース対策を思い出しましょう。コーディングを楽しんで、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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/japanese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..468987dae --- /dev/null +++ b/ocr/japanese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,189 @@ +--- +category: general +date: 2026-04-26 +description: 'PythonでOCRの方法: 基本的なOCR例を使って画像からテキストを抽出し、TIFFファイルをPythonで読み取る方法を学びます。すぐに実行できるコードが含まれています。' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: ja +og_description: PythonでOCRを行う方法:画像からテキストを抽出し、PythonでTIFFファイルを読み取り、スキャンした画像のテキストをシンプルで実行可能なスクリプトで変換するステップバイステップガイド。 +og_title: PythonでOCRを行う方法 – テキスト抽出の基本OCR例 +tags: +- OCR +- Python +- Image Processing +title: PythonでOCRする方法 – テキスト抽出の基本OCR例 +url: /ja/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to ocr python – テキスト抽出のための基本 OCR 例 + +スキャンした TIFF が机の上にあるとき、**how to ocr python** が気になったことはありませんか? 画像ファイルの山を見ながら「この中の文字をどうやって取り出すんだろう?」と考えているのはあなただけではありません。良いニュースは、適切なライブラリといくつかのシンプルな手順さえあれば、画像をプレーンテキストに変換するのはとても簡単だということです。 + +このチュートリアルでは、TIFF ファイルを読み込み、テキストを抽出し、コンソールに出力する **基本 OCR 例** を順を追って解説します。最後まで読めば、**画像からテキストを抽出**する方法、TIFF 形式特有の注意点、そして **スキャンした画像テキストを変換** する際に調整すべきポイントがすべて分かります。隠された魔法はありません—今日すぐにコピー&ペーストして実行できるシンプルな Python です。 + +## What You’ll Need + +始める前に、以下を用意してください。 + +- Python 3.9+ がインストール済み(最新の安定版がベストです)。 +- pip でインストールできる OCR ライブラリ。本ガイドでは、Tesseract などの人気ツールを模倣した架空の `aocr` パッケージを使用します。後で `pytesseract` や `easyocr` に置き換えることも可能です。 +- 処理したい TIFF 画像 – `input.tiff` という名前で、コードで参照するフォルダーに配置してください。 +- コマンドラインの基本的な操作に慣れていること(パッケージをインストールする程度)。 + +以上です。重い依存関係や Docker コンテナは不要、数行のコードだけです。 + +## Step 1 – Install and Import Dependencies (how to ocr python) + +まず OCR パッケージを取得します。ターミナルを開いて次のコマンドを実行してください。 + +```bash +pip install aocr +``` + +実際のライブラリを使いたい場合は、`aocr` を `pytesseract` に置き換え、Tesseract エンジンを別途インストールしてください。 + +次に必要なモジュールをインポートします。`pathlib` の `Path` クラスは、OS を問わずファイルパスを扱うのに便利です。 + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*なぜ `Path` を使うのか?* スラッシュ(`/` と `\`)の違いを抽象化し、ディレクトリ結合を OS に依存せずに行えるためです。この小さな工夫が、後で CI サーバーにスクリプトを移す際の頭痛の種を減らしてくれます。 + +## Step 2 – Create the OCR Engine Instance (basic ocr example) + +次に OCR エンジンのインスタンスを作成します。`OcrEngine` は画像を読み取り文字列を出力する「脳」のようなものです。 + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +多くの OCR ライブラリはここで言語、DPI、信頼度閾値などを調整できます。この **basic OCR example** ではデフォルト設定のまま進めますが、後で多言語文書を扱う場合は `ocr_engine.config` を確認してください。 + +## Step 3 – Load Your TIFF Image (read tiff file python) + +ここが **read tiff file python** の出番です。TIFF はマルチページになることがありますが、`Image.load` はデフォルトで最初のページだけを取得します—単一ページのスキャンには最適です。 + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +`"YOUR_DIRECTORY"` を `input.tiff` が置かれている実際のフォルダーに置き換えてください。スクリプトの実行ディレクトリが不明な場合は、`Path.cwd()` が現在の作業ディレクトリを表示してくれるので、パスのデバッグに便利です。 + +## Step 4 – Run the OCR Process (extract text from image) + +いよいよ本番です。`process()` を呼び出すと画像が OCR パイプラインに流れ、結果オブジェクトが返ります。 + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +内部ではエンジンが画像をグレースケールに変換したり、しきい値処理を行ったりしてからニューラルネットワークに渡しています。これらのステップはライブラリが自動で処理してくれるので、開発者が意識する必要はありません。 + +## Step 5 – Print the Recognized Text (convert scanned image text) + +最後にテキストを出力します。実際のプロジェクトではファイルやデータベースに保存することが多いですが、例示のためにコンソールへ出力しています。 + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +スクリプトを実行すると、次のような出力が得られるはずです。 + +``` +Hello, world! +This is a sample scanned document. +``` + +出力が文字化けしている場合は、元画像が鮮明かどうか、OCR の言語設定がテキストと合っているかを再確認してください。 + +## Full Working Script + +以上をすべて組み合わせた、実行可能な完全スクリプトは以下の通りです。 + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Expected Output + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +**スキャンした画像テキストを検索可能な PDF** に変換したい場合は、`ocr_result.text` を `reportlab` などの PDF ジェネレータに渡すと良いでしょう—ただしそれは別のチュートリアルになります。 + +## Common Pitfalls & Pro Tips + +- **低解像度スキャン**: OCR は 150 DPI 未満では精度が落ちます。画像がぼやけている場合は Pillow の `Image.open(...).resize(...)` でアップサンプリングしてください。 +- **複数ページ**: マルチページ TIFF の場合は `Image.load_multi_page()`(ライブラリが対応していれば)でページを順に処理し、結果を結合します。 +- **言語サポート**: 多くのエンジンはデフォルトで英語です。例としてスペイン語を扱う場合は `ocr_engine.language = "spa"` と設定します。 +- **空白文字の処理**: OCR は余計な改行を入れがちです。`str.splitlines()` や正規表現でクリーンアップしましょう。 +- **パフォーマンス**: 大量処理を行う際は、ファイルごとに新しい `OcrEngine` を作るのではなく、1つのインスタンスを再利用してください。 + +## Extending the Example + +単一画像で **how to ocr python** をマスターしたら、次のステップに挑戦してみてください。 + +1. **バッチ処理** – ディレクトリ内の TIFF をループで走査し、各結果を `.txt` ファイルに書き出す。 +2. **Pandas との統合** – 抽出したテキストとメタデータを組み合わせて、迅速な分析を可能にする。 +3. **ハイブリッドアプローチ** – OCR と `spaCy` などの NLP ライブラリを組み合わせ、スキャンした請求書から名前・日付・金額といったエンティティを抽出する。 +4. **代替ファイル形式** – `Image.load` を `Image.from_bytes` に置き換えて、API やデータベースから取得した画像を直接処理する。 + +これらすべては **extract text from image** と **convert scanned image text** の基本概念に基づいており、機械が理解できる形に変換する土台となります。 + +## Conclusion + +本稿では、**how to ocr python**、**read tiff file python**、そして **extract text from image** を数行のコードで実現する **basic OCR example** を丁寧に解説しました。スクリプトは自己完結型でエラーハンドリングも含み、結果を直接コンソールに出力します。これをベースに、OCR バックエンドの差し替えや前処理の調整、下流ワークフローへの接続など、さまざまな応用が可能です。 + +質問やエッジケース、言語パック、パフォーマンスチューニングに関する疑問があれば、ぜひコメントで教えてください。Happy coding! + +![how to ocr python example](/images/ocr-python-example.png "how to ocr python スクリプト出力のスクリーンショット") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/japanese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..016c07613 --- /dev/null +++ b/ocr/japanese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,176 @@ +--- +category: general +date: 2026-04-26 +description: スキャンしたフォームでOCRを実行し、ノイズを減らす画像前処理を学び、画像からテキストを迅速に抽出する方法。 +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: ja +og_description: スキャンした文書でOCRを実行し、画像を前処理し、ノイズを低減し、効率的にテキストを抽出する方法。 +og_title: OCRの実行方法と画像の前処理 – クイックガイド +tags: +- OCR +- image processing +- Python +title: OCRの実行と画像前処理の方法 – スキャンしたフォームからテキストを抽出する +url: /ja/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# OCRの実行方法 – 画像からテキストを抽出する完全ガイド + +汚れたスキャンフォームで **how to run OCR** を考えたことがありますか?きれいで検索可能なテキストを取得したいですよね。あなただけではありません。実際のプロジェクトでは、生の画像が斑点や不均一な照明、その他の問題でいっぱいで、標準のOCRがうまく機能しないことが多いです。 +良いニュースは?Pythonの数行とスマートな前処理パイプラインを使うだけで、認識精度を大幅に向上させ、**reduce noise**ことができ、必要な正確な単語を抽出できます。このチュートリアルでは、画像の読み込みから最終文字列の出力まで、すべてのステップを順に解説しますので、請求書や領収書、任意のスキャン文書に適用できる、すぐに使えるスニペットが手に入ります。 + +## 作成するもの + +- 基盤となるOCRライブラリとやり取りする `OcrEngine` インスタンス。 +- 画像を **binarizes** し、**median blur** を適用して斑点を平滑化する前処理チェーン。 +- `process()` を呼び出すだけで、抽出された文字列を保持する `text` 属性を持つオブジェクトが返ります。 + +最終的に、任意の画像ファイルで実行でき、コンソールに抽出されたテキストがすぐに表示される、自己完結型のスクリプトが手に入ります。 + +## 前提条件 + +- Python 3.9+(ここで使用している構文は最新の安定版に合わせています)。 +- 架空の `aocr` パッケージ – Tesseract や最新の OCR エンジンの薄いラッパーと考えてください。`pip install aocr` でインストールします。 +- 参照できるフォルダーに配置したスキャン画像(`scanned_form.jpg`)。 + +実際の OCR ライブラリ(例: `pytesseract`)を使用する場合は、`OcrEngine` を適切なクラスに置き換えるだけで、他はそのままです。 + +![](how-to-run-ocr-example.png "OCR実行例 – スキャンフォームと抽出テキストを示す") + +*Alt text: スキャンした文書で OCR を実行し、抽出されたテキストを表示する方法* + +--- + +## ステップ 1: OCRの実行方法 – エンジンの初期化 + +エンジンが何かを読む前に、インスタンスを作成する必要があります。`OcrEngine` を、後で視覚データを解釈する脳と考えてください。 + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Why this matters:** エンジンのインスタンス化は内部モデルの設定、言語パックのロード、ランタイム環境の準備を行います。このステップを省略すると、後で `process()` を呼び出したときに `NoneType` エラーが発生することが多いです。 + +--- + +## ステップ 2: 画像の前処理 – スキャンしたフォームの読み込み + +脳が準備できたので、画像を渡します。画像は `aocr.Image` がサポートする任意の形式で構いません。 + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Pro tip:** 開発中は絶対パスを使用して、スクリプトが別の作業ディレクトリから実行されたときに “file not found” エラーが出るのを防ぎましょう。 + +--- + +## ステップ 3: ノイズの低減 – 二値化とメディアンブラーの適用 + +生のスキャン画像には、散在する点や不均一な背景、薄い影が含まれることが多いです。2つの古典的な手法—**binarization** と **median blur**—は、文字のエッジを損なうことなく画像をきれいにします。 + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### 詳細解説 + +- **Binarization**: `threshold=180` の値はアルゴリズムに「180 より明るいものは白、その他は黒になる」ことを指示します。スキャンが暗すぎる、または明るすぎる場合はこの数値を調整してください。 +- **Median Blur**: 半径 `2` は、フィルタが 5×5 ピクセルのウィンドウを見て、中心ピクセルを中央値に置き換えることを意味します。これにより、文字の筆跡を保ちつつ孤立した斑点が平滑化されます。 + +> **Edge case:** 文書にカラーのハイライトがある場合、単純な二値閾値ではそれらが消えてしまうことがあります。そのような場合は、代わりに `aocr.ImageFilters.adaptive_threshold()` の使用を検討してください—画像全体でローカルに閾値を調整します。 + +--- + +## ステップ 4: テキスト抽出 – OCRプロセスの実行 + +クリーンな画像が手に入ったので、いよいよエンジンに処理させます。 + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **What happens under the hood?** エンジンはピクセルマトリックス上でニューラルネットワーク(または従来のパターンマッチャ)を実行し、認識された各グリフを Unicode 文字に変換し、行や段落に組み立てます。 + +--- + +## ステップ 5: テキスト抽出 – 結果の出力 + +`ocr_result` オブジェクトは便利な `text` 属性を提供します。取得した内容を見てみましょう。 + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### 期待される出力 + +スキャンしたフォームに以下が含まれている場合: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +次のような出力が得られるはずです: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +前処理ステップで、以前は “Amount” が “Am0unt” になる原因だった散在する点が除去されたことに注目してください。これが OCR 前の **how to reduce noise** の力です。 + +--- + +## よくある落とし穴と対処法 + +| 症状 | 考えられる原因 | 簡単な対処法 | +|------|----------------|--------------| +| 文字化け(例: “@#%”) | 画像が暗すぎるまたは明るすぎる | `binarize()` の `threshold` を調整;`adaptive_threshold` を試す。 | +| 欠落した単語 | ノイズが残っている | `median_blur` の `radius` を増やすか、`gaussian_blur` フィルタを追加する。 | +| 言語が間違っている(例: 英字が中国語になる) | 誤った言語パックがロードされている | ライブラリがサポートしていれば、`OcrEngine()` 作成時に `language="eng"` を指定する。 | +| 大きなファイルで処理が遅い | 解像度が高すぎる | 二値化前に画像を縮小する:`aocr.ImageFilters.resize(width=1200)` を使用。 | + +--- + +## さらに進める – 次のステップと関連トピック + +- **Batch processing**: 上記ロジックをループでラップし、数十ファイルを自動的に処理します。 +- **Structured output**: `ocr_result.text` に正規表現を使用して、日付や金額などのフィールドを抽出します。 +- **Alternative libraries**: `aocr` を `pytesseract` に置き換えるだけで、コードの変更はエンジン初期化ステップのみです。 +- **How to preprocess image for PDFs**: 各 PDF ページを画像に変換し、同じパイプラインを適用します。 + +--- + +## 結論 + +私たちは **how to run OCR** を最初から最後までカバーし、**how to preprocess image** で **reduce noise** する方法を示し、**how to extract text from image** をクリーンで再現可能なスクリプトで実演しました。重要なポイントは? 二値化とメディアンブラーというシンプルなフィルタを数個使うだけで、ノイズの多いスキャンを信頼できるデータ源に変え、手作業のクリーンアップにかかる時間を何時間も節約できることです。 + +自分の文書でスクリプトを試し、閾値を調整して精度が向上する様子を確認してください。準備ができたら、バッチ処理を検討したり、出力をデータベースに統合して検索可能なアーカイブを作成しましょう。コーディングを楽しんで、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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/japanese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..bee9a6355 --- /dev/null +++ b/ocr/japanese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: Aspose OCRでライセンスを設定し、簡潔なPythonスクリプトでライセンスを検証する方法を学びましょう。手順に沿ったステップバイステップの指示で、手間なくアクティベーションできます。 +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: ja +og_description: Aspose OCRでライセンスを設定する方法と、Pythonでライセンスを検証する方法。数分で完全な実行可能なサンプルを入手できます。 +og_title: Aspose OCR のライセンス設定方法 – 簡単 Python ガイド +tags: +- Aspose OCR +- Python +- Licensing +title: Aspose OCRでライセンスを設定する方法 – 簡単Pythonガイド +url: /ja/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR のライセンス設定方法 – クイック Python ガイド + +Aspose OCR の **ライセンスを設定する方法** で、髪の毛を抜くほど悩んだことはありませんか? あなただけではありません。多くの開発者が、ライブラリのフルパワーを解放しようとした最初の試みでつまずき、「Trial version」ウォーターマークに悩まされています。良いニュースは、解決策はかなりシンプルで、すぐに確認できるということです。 + +このチュートリアルでは、**ライセンスを設定する方法** と **ライセンスを検証する方法** を小さな Python スクリプトで実演します。最後まで読むと「License OK」と表示される動作例と、一般的な落とし穴を回避するためのヒントが手に入ります。 + +## 前提条件 + +始める前に、以下が揃っていることを確認してください。 + +- Python 3.8 以上がインストール済み(コードは 3.9、3.10、以降でも動作します)。 +- 有効な Aspose OCR for Java(または .NET)ライセンスファイル – 通常は `Aspose.OCR.Java.lic` という名前です。 +- `asposeocr` パッケージが `pip install asposeocr` でインストール済み。 +- コマンドラインから Python スクリプトを実行する基本的な知識。 + +すべて揃いましたか? では、始めましょう。 + +## Aspose OCR のライセンス設定方法(ステップ 1) + +ライセンス設定は実質的に 3 行の操作ですが、各行には目的があります。なぜその操作が必要なのかを理解できるように分解して説明します。 + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**`License` をインポートする理由は?** +`License` クラスは、Aspose OCR エンジンに対して「製品を購入済み」であることを伝えるゲートウェイです。インスタンスを作成しなければ、ライブラリは常にトライアルモードとみなします。 + +**`License` をインスタンス化する理由は?** +インスタンス化すると、`.lic` ファイルへのパスを保持できるオブジェクト(`license_obj`)が得られ、実行時にそれを適用できます。 + +## Aspose OCR のライセンス設定方法 – ライセンスファイルの指定 + +ここでオブジェクトに実際のライセンスファイルへのパスを設定します。 + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**ヒントとコツ:** + +- **絶対パス vs. 相対パス** – スクリプトを別フォルダーから実行する場合、絶対パス(`C:/licenses/...`)を使うと「ファイルが見つかりません」エラーを防げます。 +- **環境変数** – パスを環境変数(`OCR_LICENSE_PATH`)に保存すると、機密情報がソース管理に漏れません。 + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## ライセンスの検証 – 正しく設定されたか確認する + +ライセンス設定は戦いの半分に過ぎません。ライブラリがライセンスを受け入れたかどうかを確認する必要があります。ここが検証ステップの出番です。 + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +ライセンスファイルが欠損、破損、または不一致の場合、`validate()` は例外をスローします。その例外を捕捉することで、問題をきれいに報告できます。 + +## 完全動作例(すべてのステップを統合) + +以下は実行可能な完全スクリプトです。ターミナルで `python set_license.py` と実行すると “License OK” が表示されます。 + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**期待される出力** + +``` +License OK +``` + +何か問題が起きた場合は、次のようなメッセージが表示されます。 + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +このメッセージは、何を修正すべきかを正確に教えてくれるので、推測する必要はありません。 + +## ライセンスの検証 – よくあるエッジケースの対処 + +上記スクリプトでも、いくつかのシナリオでつまずくことがあります。 + +| 状況 | 起こること | 対処方法 | +|-----------|--------------|------------| +| **ファイルパスのタイプミス** | `set_license` で `FileNotFoundError` が発生 | パスを再確認し、`os.path.abspath()` でデバッグ | +| **ファイルタイプが違う** | 「Invalid license format」エラーがスロー | 製品エディションに合った `.lic` ファイルを使用 | +| **ライセンス期限切れ** | 「License expired」エラーがスロー | Aspose サポートでライセンスを更新し、ファイルを差し替え | +| **制限された環境で実行**(例:AWS Lambda) | 権限エラー | ディレクトリへの読み取り権限を付与するか、デプロイパッケージにライセンスを埋め込む | + +プロのコツ: `set_license` 呼び出しを独自の `try/except` ブロックでラップすると、「ファイルが見つからない」エラーと「形式が無効」エラーを区別しやすくなります。 + +## ビジュアルサマリー + +![Aspose OCR のライセンス設定例](/images/aspose-ocr-license.png "Aspose OCR のライセンス設定例") + +*スクリーンショットは、ライセンスが正常に有効化された後にスクリプトが “License OK” と出力している様子を示しています。* + +## よくある落とし穴とベストプラクティス + +- **ライセンスファイルを公開リポジトリにコミットしない**。環境変数やシークレットマネージャー(GitHub Secrets、Azure Key Vault)を使用してください。 +- **早期に検証する**。`license_obj.validate()` を `set_license` の直後に配置すると、OCR 処理を始める前にエラーを捕捉できます。 +- **License オブジェクトを再利用する**。プロセスあたり一度だけライセンスを設定すれば、以降の OCR 呼び出しは自動的に有効化されたライセンスを使用します。 +- **本番環境ではファイル名を除いたライセンスパスをログに残す**ことで、実際のファイルを露出せずにデバッグが可能です。 + +## 次のステップ – OCR ワークフローの拡張 + +**ライセンス設定** と **ライセンス検証** ができたら、コア OCR タスクに進めます。 + +- **画像の読み込み** – `Image.load("sample.png")` +- **テキスト抽出** – `ocr_engine.recognize(image)` +- **OCR オプションの設定** – 言語や精度など、`OcrEngine` の設定を調整 + +これらのトピックはすべて、正しくライセンスが適用されたエンジンを前提としているため、トライアルウォーターマークは二度と表示されません。 + +## 結論 + +Aspose OCR の **ライセンス設定方法** を網羅し、**ライセンス検証方法** を実演し、動作するスクリプトで「License OK」を出力する手順を示しました。エラーを事前に処理し、環境変数を活用することで、アプリケーションを安全かつ堅牢に保てます。 + +OCR、ライセンス、または Aspose を大規模パイプラインに統合することについて質問があれば、コメントを残してください。ハッピーコーディング! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/japanese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/japanese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..5c708e55d --- /dev/null +++ b/ocr/japanese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-04-26 +description: スキャンしたPDFにOCRを使用し、テキストを抽出し、PDFにOCRを実行し、数ステップで検索可能なファイルに変換する方法。 +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: ja +og_description: PythonでOCRを使用する方法:PDFからテキストを抽出し、PDFにOCRを実行し、スキャンしたPDFを検索可能な文書に変換する方法を学びましょう。 +og_title: OCRの使い方 – PDFからテキストを抽出するクイックガイド +tags: +- OCR +- Python +- PDF +- Text Extraction +title: OCRの使い方 – PythonでPDFからテキストを抽出する +url: /ja/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# OCR の使い方 – Python で PDF からテキストを抽出する + +スキャンされた契約書、領収書、または電子書籍からテキストを抽出するために **OCR の使い方** を疑問に思ったことはありませんか? あなただけではありません。実際のプロジェクトでは、受け取る PDF が単なる画像であることが多く、OCR がなければ内容を検索したり、インデックス付けしたり、分析したりすることができません。 + +このチュートリアルでは、**OCR の使い方**、**PDF からテキストを抽出する方法**、そしてスキャンした PDF を検索可能なドキュメントに **変換する** 必要性を示す、完全に実行可能なサンプルを順に解説します。また、OCR エンジンが各ページを正確に認識できるように **PDF を画像として読み込む** 微妙なテクニックも取り上げます。 + +> **クイックプレビュー:** 最後まで実行すれば、マルチページ PDF を読み込み、各ページに OCR を実行し、認識されたテキストを出力するスクリプトが手に入ります – 外部サービスは不要です。 + +## 必要なもの + +- Python 3.9+(最新バージョンであれば問題ありません) +- `aocr` パッケージ(または `OcrEngine` と `Image.load` を提供する互換 OCR ライブラリ) +- 処理したいスキャン済み PDF ファイル(例: `contract.pdf`) +- ほどほどの RAM(100 ページの PDF あたり約 200 MB が目安) + +OCR ライブラリがまだインストールされていない場合は、以下を実行してください。 + +```bash +pip install aocr +``` + +> **プロのコツ:** 仮想環境を使用して依存関係を整理しましょう。 + +## Step 1: Load PDF as Image – The First Piece of the Puzzle + +OCR を実行する前に、PDF を画像として表現する必要があります。ここで副キーワード **load pdf as image** が登場します。 + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Why this matters:* `aocr.Image.load` は内部で各 PDF ページをビットマップにラスタライズし、OCR エンジンが理解できる形式に変換します。このステップを省いて生の PDF を渡すと、エンジンはベクターデータではなくピクセルデータを期待しているためエラーを返します。 + +> **注意:** パスは絶対でも相対でも構いません。ファイルが読み取り可能であることを確認してください。そうでなければ `FileNotFoundError` が発生します。 + +## Step 2: Run OCR on PDF – Turning Pixels into Characters + +PDF が画像として扱えるようになったので、いよいよ **run OCR on PDF** が可能です。以下のスニペットはすべてのページを一括で処理します。 + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*What’s happening under the hood?* `process_all_pages` はラスタライズされたページを順に走査し、OCR モデルを適用して、ページごとの結果オブジェクトのリストを返します。各結果には認識テキスト、信頼度スコア、バウンディングボックス(必要に応じて)が含まれます。 + +## Step 3: Extract Text from PDF – Pulling the Strings Out + +OCR 結果が得られたら、プレーンテキストの抽出は非常に簡単です。ページをイテレートして出力を表示し、**extract text from pdf** という副キーワードを実演します。 + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Expected output** (truncated for brevity): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +テキストを単一の文字列にしたい場合は、単に結合すれば OK です。 + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +これで OCR を使って **PDF からテキストを抽出** できました。 + +## Step 4: Convert Scanned PDF – Making It Searchable + +Elasticsearch や SharePoint などの多くの下流ツールは、プレーンテキストのダンプではなく検索可能な PDF を期待します。OCR の出力を元の PDF に埋め込むことで、実質的に **convert scanned PDF** して検索可能なバージョンを作れます。 + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Why bother?* 検索可能な PDF は元のレイアウトや画像を保持しつつ、テキスト選択やインデックス作成が可能になるため、ヒトにもマシンにもメリットがあります。 + +## Common Pitfalls & Edge Cases + +### Multi‑Page PDFs Larger Than Memory + +PDF が数百ページに及ぶ場合、一度にすべてを読み込むと RAM が不足することがあります。`aocr` ライブラリは遅延読み込みをサポートしています。 + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +その後、ページを一つずつ処理します。 + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Low‑Quality Scans + +ぼやけた画像やコントラストが低いスキャンでは OCR の精度が大幅に低下します。エンジンに渡す前に前処理を検討してください。 + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Language Support + +デフォルトではエンジンは英語を想定しています。別言語で **run OCR on PDF** したい場合は、言語コードを設定します。 + +```python +ocr_engine.language = "spa" # Spanish +``` + +対応する言語モデルがインストールされていることを確認してください。 + +## Full Working Example + +すべてを統合した、`ocr_pdf.py` というファイルに保存してすぐに実行できる自己完結型スクリプトです。 + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +以下のように実行します。 + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +コンソールにテキストが表示され、`-o` オプションを指定した場合は元ファイルの横に検索可能な PDF が生成されます。 + +## Pro Tips & Best Practices + +- **Batch processing:** 数十個の PDF を扱う際は、上記ロジックをループで包み、各ファイルの成功/失敗をログに残しましょう。 +- **Confidence filtering:** 各 `page_result` には信頼度メトリックが含まれます。信頼度が低いページは除外または手動レビュー用にフラグを立ててください。 +- **Parallelism:** CPU にコアが複数ある場合は、`concurrent.futures` を使ってページを並列処理すると効率的です – ただしメモリ使用量に注意しましょう。 +- **Version lock:** `aocr` API は変化する可能性があります。`requirements.txt` でバージョンを固定(例: `aocr==2.3.1`)して、破壊的変更を回避してください。 + +## Conclusion + +**OCR の使い方** を通じて **PDF からテキストを抽出**、**PDF に OCR を実行**、**PDF を画像として読み込む**、さらには **スキャンした PDF を検索可能に変換** する方法を解説しました。コードは完全で、説明は *何を* と *なぜ* の両方をカバーしています。これで画像ベースの PDF を扱うあらゆるプロジェクトで再利用できるパターンが手に入りました。 + +次は何をしますか? 抽出したテキストを自然言語処理パイプラインに流し込んだり、Elasticsearch で検索可能な PDF をインデックスしたり、Tesseract や Azure Computer Vision など別の OCR バックエンドを試したりしてみましょう。可能性は無限大、ツールはすでに手元にあります。 + +Happy coding, and may your PDFs always be searchable! + +![OCR の使い方例](/images/ocr_workflow.png "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/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/japanese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..5f88631b7 --- /dev/null +++ b/ocr/japanese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-04-26 +description: PythonでOCR用に画像をロードするためのスレッド活用方法。コールバック、バックグラウンドスレッド、画像ロードを使った非同期OCR処理を数ステップで学ぼう。 +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: ja +og_description: PythonでOCR用に画像を読み込む際のスレッド活用方法。このガイドでは、コールバックとバックグラウンド実行を備えた完全な実行可能サンプルを示します。 +og_title: OCRのために画像を読み込む際のスレッド活用方法 +tags: +- Python +- Threading +- OCR +- Image Processing +title: OCR用に画像を読み込む際のスレッド活用方法 +url: /ja/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# スレッドを使って OCR 用画像を読み込む方法 + +アプリがフリーズせずに **スレッドを使って** OCR 用の画像を読み込む方法を知りたくありませんか? デスクトップスキャナを作るときでも、ウェブサービスでも、膨大な画像を処理するシンプルなスクリプトでも、同じシナリオが出てきます。 良いニュースは、数行の Python と適切なスレッドパターンさえあれば、OCR エンジンが魔法をかけている間も UI をサクサク動かせるということです。 + +このチュートリアルでは、完結したエンドツーエンドの例を順に解説します。大きな PNG を読み込み、バックグラウンドスレッドで OCR を開始し、コールバックで結果を処理します。最後まで読めば、 **スレッドの使い方** だけでなく、 **OCR 用画像の読み込み** をクリーンで再利用可能な方法で実装できるようになります。 + +## 必要なもの + +- Python 3.9+(使用している構文は最近のバージョンであればすべて動作します) +- 画像処理用 `pillow`(`pip install pillow`) +- Tesseract OCR の薄いラッパー `pytesseract`(`pip install pytesseract`) +- マシンにインストールされた Tesseract OCR エンジン([tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract) からダウンロード) +- 処理したい大きな画像ファイル(このガイドでは `large_image.png` を使用) + +余計なフレームワークは不要、async/await も不要です。古典的な `threading` とコールバックだけで完結します。 + +## 手順 1: バックグラウンド実行のために threading モジュールをインポートする(必須) + +最初に `threading` モジュールをインポートします。これにより `Thread` クラスが利用でき、任意の関数を別 OS スレッドで実行できます。 + +```python +import threading +``` + +*なぜ重要か*: メインスレッドで OCR を実行すると、プログラム(特に GUI)は OCR が終わるまでフリーズします。処理をバックグラウンドスレッドに委譲すれば、メインスレッドは UI の更新やユーザー入力の処理、他タスクの開始などが自由に行えます。 + +## 手順 2: OCR 完了時に呼び出されるコールバックを定義する + +コールバックとは、別のコードが処理完了時に呼び出す関数のことです。ここでは認識結果のテキストを表示しますが、保存したりネットワーク送信したり、UI ウィジェットを更新したりすることも可能です。 + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*プロのコツ*: コールバックは軽量に保ちましょう。コールバック内部で重い処理を行うと、スレッド化の意味がなくなり(多くの場合メインスレッドがブロックされます)ます。 + +## 手順 3: 処理したい画像を読み込む + +画像の読み込みは OCR とは別の関心事ですが、全体のワークフローの一部です。Pillow を使えば簡単に行えます。 + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*ここで行う理由*: 画像が巨大な場合、メインスレッドで読み込むだけでも一瞬のカクつきが起きます。実際のアプリでは画像読み込み自体もスレッドにオフロードすることが多いですが、ここでは分かりやすさのため同期的に行っています。 + +## 手順 4: 小さな OCR エンジンラッパーを作成する + +元のスニペットは `engine.process_async` を使用していました。ここでは内部でスレッドを起動し、完了時に渡されたコールバックを呼び出す小さなクラスで同等の動作を再現します。 + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*説明*: +- `_run_ocr` が実際の重い処理を担当します。 +- `process_async` は `Thread` オブジェクトを生成し、デーモンとしてマーク(スレッドが残っていてもインタプリタが終了できるように)してから開始します。 +- コールバックには OCR テキストまたはエラーメッセージが渡されます。 + +## 手順 5: すべてを結びつけ、OCR 実行中に他の作業を行う + +ここで全体の流れを組み立てます。画像を読み込み、エンジンをインスタンス化し、非同期 OCR を発火させ、メインスレッドは別の作業(ここではメッセージの出力)を続けます。 + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**期待される出力(抜粋)**: + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +OCR が失敗した場合、コールバックはテキストの代わりにエラーメッセージを出力します。 + +--- + +## なぜこのアプローチが単純なループより優れているのか + +- **応答性**: メインスレッドは OCR 呼び出しでブロックされないため、大きな画像でも数秒かかる処理を実行できます。 +- **スケーラビリティ**: 複数の `SimpleOcrEngine` インスタンスをそれぞれ別スレッドで起動すれば、画像バッチを同時に処理できます。 +- **関心の分離**: 読み込み、処理、結果ハンドリングが明確に分かれているため、テストや保守が容易です。 + +## よくある落とし穴と回避策 + +| 落とし穴 | 起こること | 対策 | +|---------|------------|------| +| スレッドを *daemon* に設定し忘れる | メイン処理が終了しても OCR スレッドが残り、スクリプトがハングする | `worker.daemon = True` を設定 **または** 終了前に `join()` する | +| 結果をグローバル変数で保持しロックを使わない | 複数スレッドが同時に書き込むと競合が起きデータが壊れる | コールバックで結果を渡す(今回のやり方)か、`queue.Queue` などスレッド安全なコンテナを使用 | +| メインスレッドで巨大画像を読み込む | OCR が始まる前に UI がフリーズする | 画像読み込みもスレッドにオフロードするか、遅延読み込みを利用 | +| ワーカースレッド内で例外を捕捉しない | 例外が無視されスレッドが黙って終了し、結果が得られなくなる | OCR ロジックを `try/except` で包み、エラーをコールバックへ転送 | + +## このパターンの拡張例 + +- **進捗報告**: OCR スレッドから `queue.Queue` を使って途中経過(パーセンテージ)をメインスレッドへ送信する。 +- **スレッドプール**: バッチ処理では個別 `Thread` の代わりに `concurrent.futures.ThreadPoolExecutor` を利用する。 +- **GUI 連携**: Tkinter や PyQt アプリでは、`after()`(Tkinter)や `QTimer.singleShot`(Qt)でコールバックをスケジュールし、UI 更新がメインスレッドで行われるようにする。 + +## 完全動作サンプル(コピペ用) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/korean/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..5ca298d1e --- /dev/null +++ b/ocr/korean/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-04-26 +description: Python Aspose OCR을 사용하여 헤더 텍스트를 추출합니다. 이미지에서 특정 영역의 텍스트를 빠르고 신뢰성 있게 추출하는 + 방법을 배워보세요. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: ko +og_description: 헤더 텍스트를 OCR로 빠르게 추출합니다. 이 가이드는 Python Aspose OCR을 사용해 몇 줄만으로 특정 영역의 + 텍스트를 추출하는 방법을 보여줍니다. +og_title: Python Aspose OCR으로 헤더 텍스트 추출 – 완전 튜토리얼 +tags: +- OCR +- Python +- Aspose +title: Python Aspose OCR로 헤더 텍스트 추출 – 단계별 가이드 +url: /ko/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 헤더 텍스트 OCR 추출 – 전체 Python Aspose OCR 튜토리얼 + +스캔한 청구서에서 **헤더 텍스트 OCR**을 추출하고 싶지만 전체 페이지를 처리하고 싶지 않으셨나요? 여러분만 그런 것이 아닙니다. 실제 파이프라인에서는 헤더에 가장 중요한 정보—청구서 번호, 날짜, 공급업체 이름—가 들어 있기 때문에 빠르게 추출하면 이후 작업을 크게 줄일 수 있습니다. + +이 튜토리얼에서는 **Python Aspose OCR** 라이브러리를 사용해 **특정 영역 텍스트를 추출**하는 바로 실행 가능한 솔루션을 보여드립니다. 외부 문서에 대한 모호한 언급 없이 완전한 스크립트와 각 라인에 대한 명확한 설명, 그리고 내일 바로 사용할 수 있는 팁을 제공합니다. + +## 배울 내용 + +- Python용 Aspose OCR 패키지를 설치하고 임포트하는 방법 +- 이미지를 로드하고 헤더를 격리하는 **관심 영역 (ROI)** 을 정의하는 방법 +- 해당 ROI에 OCR 엔진을 실행하고 깨끗한 텍스트를 가져오는 방법 +- 흔히 발생하는 문제점 (예: DPI 불일치)과 회피 방법 +- 기대되는 출력 예시를 확인해 전체 흐름이 정상 동작하는지 검증하는 방법 + +튜토리얼을 마치면 청구서, 영수증 또는 레이아웃이 예측 가능한 모든 문서에서 **헤더 텍스트 OCR**을 추출하는 코드를 바로 프로젝트에 삽입할 수 있게 됩니다. + +## 사전 요구 사항 + +- Python 3.8 이상 설치되어 있어야 합니다. +- 유효한 Aspose OCR for Python 라이선스 (무료 체험판으로 평가 가능). +- 명확한 헤더 영역이 포함된 이미지 파일 (`invoice.png`). +- Python 함수와 파일 경로에 대한 기본적인 이해. + +> **프로 팁:** 저해상도 스캔을 테스트할 경우, Aspose OCR에 전달하기 전에 DPI를 높이면 정확도가 크게 향상됩니다. + +--- + +## 1단계: Aspose OCR 패키지 설치 + +먼저 라이브러리를 환경에 추가합니다. 공식 패키지는 `aspose-ocr` 입니다. 한 번만 실행하면 됩니다: + +```bash +pip install aspose-ocr +``` + +가상 환경을 사용하고 있다면 (강력히 권장) 설치 전에 활성화하세요. 이렇게 하면 패키지가 다른 프로젝트와 충돌하지 않습니다. + +## 2단계: 필요한 클래스 임포트 및 이미지 로드 + +이제 스크립트에 필요한 클래스를 가져오고 청구서 이미지를 로드합니다. **절대 경로**를 사용했지만, 상대 경로도 동작합니다. 서버에서 실행할 때는 절대 경로가 모호성을 없애줍니다. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **왜 중요한가:** `OcrEngine`을 한 번 초기화하고 여러 이미지에 재사용하면 매번 새 엔진을 만드는 것보다 효율적입니다. + +## 3단계: 헤더 영역 정의 (ROI) + +헤더는 보통 페이지 상단에 위치하지만 정확한 좌표는 문서마다 다를 수 있습니다. 여기서는 헤더를 포함하는 사각형(`x`, `y`, `width`, `height`)을 정의합니다. 문서 레이아웃에 맞게 숫자를 조정하세요. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **작동 원리:** `set_roi`를 호출하면 OCR 엔진이 이 사각형 안에서만 분석을 수행하므로 처리 속도가 크게 빨라지고 페이지 나머지 부분의 노이즈가 감소합니다. + +## 4단계: ROI 적용 및 OCR 실행 + +이제 엔진에 헤더 영역에 집중하도록 지시하고 OCR 프로세스를 실행합니다. 결과 객체에는 인식된 텍스트와 추가 메타데이터(신뢰도 점수, 언어 등)가 포함됩니다. + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +OCR이 실패하면(예: 지원되지 않는 이미지 형식) `ocr_result`가 `None`이 됩니다. 간단한 가드 절을 추가하면 스크립트가 더 견고해집니다: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## 5단계: 추출된 헤더 텍스트 가져와 출력하기 + +마지막으로 결과 객체에서 텍스트를 꺼내 화면에 표시합니다. 파일에 저장하거나 다른 함수에 전달해 추가 파싱을 수행할 수도 있습니다. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### 기대 출력 + +모든 설정이 올바르면 다음과 같은 결과가 표시됩니다: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +출력이 깨져 보인다면 ROI 좌표를 다시 확인하고 원본 이미지가 고대비인지 점검하세요. + +--- + +## 변형 및 예외 상황 + +### 1. 한 문서에 여러 헤더가 있는 경우 + +PDF에 여러 페이지가 있고 각 페이지마다 헤더가 있다면 페이지를 순회하면서 페이지별 ROI를 조정합니다: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. 기울어진 스캔 처리 + +청구서가 약간 회전되어 있다면 Aspose OCR에 전달하기 전에 OpenCV로 전처리합니다: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. 언어 설정 변경 + +Aspose OCR은 언어를 자동 감지하지만, 더 빠른 결과를 원한다면 영어를 강제 지정할 수 있습니다: + +```python +ocr_engine.language = "en" +``` + +--- + +## 전체 작동 예제 + +아래는 `extract_header.py`라는 파일에 복사·붙여넣기 할 수 있는 완전한 스크립트입니다. 이미지 경로는 자신의 환경에 맞게 바꾸세요. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +스크립트를 실행하면 앞서 보여드린 헤더 라인이 정확히 출력됩니다. 자신의 청구서 템플릿에 맞게 `roi` 값을 자유롭게 조정해 보세요. + +--- + +## 자주 묻는 질문 + +**Q: PDF를 직접 처리할 수 있나요?** +A: 바로는 불가능합니다. `pdf2image` 등으로 각 PDF 페이지를 이미지(PNG/JPG)로 변환한 뒤 스크립트에 전달하세요. + +**Q: 헤더에 로고와 텍스트가 함께 있으면 어떻게 하나요?** +A: Aspose OCR은 텍스트에 초점을 맞춥니다. 로고는 `opencv`나 `tesseract`와 같은 별도 이미지 인식 라이브러리를 사용해 처리하는 것이 좋습니다. + +**Q: 무료 체험판에 제한이 있나요?** +A: 체험판은 월 최대 10페이지까지 허용합니다. 프로덕션에서는 라이선스를 구매해 제한을 없애고 고정밀 설정을 활용하세요. + +--- + +## 결론 + +이제 **Python Aspose OCR**을 사용해 **헤더 텍스트 OCR**을 추출하는 **완전하고 인용 가능한** 가이드를 갖추었습니다. 설치부터 예외 상황 처리까지 모든 과정을 다루었으며, 재사용 가능한 함수를 제공해 더 큰 워크플로에 바로 적용할 수 있습니다. + +다음 단계로는 **특정 영역 텍스트**를 풋터나 라인 아이템 등 다른 영역에 적용하거나, PDF‑to‑image 변환기를 결합해 전체 문서 파이프라인을 자동화해 보세요. 가능한 방법은 무궁무진합니다—ROI 좌표와 이미지 해상도만 정확히 맞추면 됩니다. + +복잡한 레이아웃이 있나요? 댓글에 공유해 주세요. 함께 ROI를 조정해 보겠습니다. 즐거운 코딩 되세요! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/korean/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..aaa430dec --- /dev/null +++ b/ocr/korean/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,215 @@ +--- +category: general +date: 2026-04-26 +description: Python에서 Aspose OCR을 사용해 이미지에서 텍스트를 추출합니다. 텍스트 추출 방법, 이미지를 텍스트로 변환하는 + 방법, 다국어 지원 OCR을 위한 이미지 로드 방법을 배워보세요. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: ko +og_description: 이미지에서 텍스트를 즉시 추출합니다. 이 가이드는 Aspose OCR을 사용하여 Python에서 텍스트를 추출하고, 이미지를 + 텍스트로 변환하며, OCR을 위해 이미지를 로드하는 방법을 보여줍니다. +og_title: Python으로 이미지에서 텍스트 추출 – 완전한 다국어 OCR 튜토리얼 +tags: +- OCR +- Python +- Aspose +title: Python으로 이미지에서 텍스트 추출 – 다국어 OCR 가이드 +url: /ko/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 이미지에서 텍스트 추출하기 – Python 다국어 OCR 가이드 + +이미지에서 **텍스트를 추출**해야 할 때, 혼합 언어 페이지를 처리할 수 있는 라이브러리를 몰라 고민한 적이 있나요? 당신만 그런 것이 아닙니다. 실제 애플리케이션—예를 들어 청구서 처리, 소셜 미디어 모니터링, 다국어 문서 보관 등—에서는 라틴 문자와 키릴 문자가 모두 포함된 이미지를 마주하게 됩니다. + +좋은 소식은? Aspose OCR for Python을 사용하면 **텍스트를 추출**, **이미지를 텍스트로 변환**, 그리고 **OCR용 이미지 로드**를 몇 줄의 코드만으로 수행할 수 있으며, 엔진이 자동으로 언어를 감지합니다. 이 튜토리얼에서는 완전한 실행 가능한 예제를 단계별로 살펴보고, 각 단계가 왜 중요한지 설명하며, 진행 중 마주칠 수 있는 몇 가지 엣지 케이스도 다룹니다. + +> **배우게 될 내용** +> * 혼합 언어 PNG에서 텍스트를 추출하는 바로 실행 가능한 스크립트. +> * Python에서 다국어 OCR을 구성하는 방법에 대한 이해. +> * 큰 파일, 다양한 이미지 포맷 처리 및 일반적인 함정 디버깅 팁. + +## 사전 요구 사항 + +- Python 3.8 이상 (코드에서 f‑strings 사용). +- `asposeocr` 패키지 설치 (`pip install asposeocr`). +- 여러 스크립트가 섞인 텍스트를 포함한 이미지 파일(예: `mixed_lang.png`). +- Python 임포트와 객체 지향 API에 대한 기본적인 이해. + +무거운 의존성도 없고 외부 서비스도 필요 없습니다—pip 하나만 설치하면 바로 시작할 수 있습니다. + +--- + +## 1단계 – Aspose OCR 라이브러리 설치 및 임포트 + +OCR용 이미지를 **로드**하기 전에 라이브러리 자체가 필요합니다. 이 패키지는 핵심 OCR 엔진과 가벼운 이미지 로더를 함께 제공합니다. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*왜 중요한가*: 특정 클래스를 임포트하면 네임스페이스가 깔끔해지고 이후 코드가 명확해집니다. `asposeocr`만 임포트하면 모든 호출을 `aocr.OcrEngine()`처럼 자격을 지정해야 해서 코드가 지저분해집니다. + +## 2단계 – OCR 엔진 생성 및 다국어 감지 활성화 + +Aspose OCR은 이미지에 존재하는 언어를 자동으로 추정할 수 있습니다. `Language.AUTO`를 설정하면 라틴, 키릴, 아라비아어 등 다양한 언어를 포괄합니다. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*팁*: 미리 언어를 알고 있다면 `Language.ENGLISH` 또는 `Language.RUSSIAN`을 지정해 약간의 성능 향상을 얻을 수 있습니다. 하지만 진정으로 혼합된 문서라면 `AUTO`가 가장 안전합니다. + +## 3단계 – 처리할 이미지 로드 + +여기서 **OCR용 이미지 로드**를 수행합니다. Aspose는 PNG, JPEG, BMP, TIFF는 물론 PDF 페이지도 이미지처럼 처리합니다. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **팁**: 이미지 크기가 2 MB를 초과한다면 미리 리사이즈하는 것을 고려하세요. 큰 이미지는 메모리 사용량을 늘리고 감지 단계가 느려질 수 있습니다. + +## 4단계 – OCR 프로세스 실행 및 결과 캡처 + +`process()`를 호출하면 텍스트 감지, 레이아웃 분석, 언어 디코딩 등 무거운 작업이 수행됩니다. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +반환된 `ocr_result` 객체는 여러 유용한 속성을 포함합니다: + +| 속성 | 설명 | +|------|------| +| `text` | 인식된 텍스트의 일반 문자열 (가장 자주 사용하게 되는 값). | +| `confidence` | 전체 신뢰도 점수 (0‑100). | +| `lines` | 위치 데이터가 포함된 `OcrLine` 객체 리스트 (PDF에 유용). | + +## 5단계 – 추출된 텍스트 표시 + +마지막으로 결과를 출력합니다. 실제 애플리케이션에서는 데이터베이스에 저장하거나 번역 API에 전달할 수도 있습니다. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**예상 출력** (혼합 언어 이미지 예시): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +문자가 깨져 보이면 이미지가 손상되지 않았는지, 그리고 최신 버전(`asposeocr` v23.7 현재 시점)의 패키지를 사용하고 있는지 다시 확인하세요. + +## 6단계 – 복사‑붙여넣기 가능한 전체 스크립트 + +전체 코드를 한 번에 보면 “코드가 어디서 시작되는가?”라는 혼란을 없앨 수 있습니다. 이 파일을 `multilingual_ocr.py`라는 이름으로 저장하고 커맨드 라인에서 실행하세요. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +실행: + +```bash +python multilingual_ocr.py +``` + +콘솔에 추출된 문자열이 출력될 것입니다. 이제 몇 줄만으로 **이미지를 텍스트로 변환**할 수 있습니다. + +## 일반적인 질문 및 엣지 케이스 처리 + +### 이미지에 손글씨가 포함된 경우는? + +Aspose OCR은 인쇄된 텍스트에 최적화되어 있습니다. 손글씨는 전용 모델(예: Azure Read 또는 Google Vision)이 필요합니다. `Language.AUTO`를 시도할 수는 있지만 신뢰도가 낮을 수 있습니다. + +### 노이즈가 많은 스캔 이미지의 정확도를 높이는 방법은? + +1. 이미지 전처리(이진화, 잡음 제거)를 수행합니다. +2. 엔진에 전달하기 전에 DPI를 최소 300 ppi로 올립니다. +3. 이미지가 기울어졌다면 `ocr_engine.config.deskew = True`를 명시적으로 설정합니다. + +```python +ocr_engine.config.deskew = True +``` + +### PDF를 이미지로 변환하지 않고 텍스트를 추출할 수 있나요? + +네—Aspose OCR은 PDF 페이지를 직접 열 수 있습니다: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +단, 각 페이지가 내부적으로 이미지로 처리되므로 동일한 품질 고려 사항이 적용됩니다. + +## 결론 + +이제 Aspose OCR을 사용해 Python에서 **이미지에서 텍스트를 추출**하는 완전한 엔드‑투‑엔드 레시피를 갖추었습니다. 스크립트는 **OCR용 이미지 로드**, **이미지를 텍스트로 변환**, 그리고 가장 흔한 함정을 처리하는 방법을 보여줍니다. + +다음 단계로는: + +- 사용자 업로드를 받는 웹 서비스에 함수를 통합합니다. +- 추출된 텍스트를 언어 감지 라이브러리와 결합해 적절한 번역 엔진으로 라우팅합니다. +- `ocr_engine.config` 옵션(예: `max_recognition_time`, `text_orientation`)을 실험해 성능을 미세 조정합니다. + +행복한 코딩 되시고, OCR 파이프라인이 언제나 정확하기를 바랍니다! + +--- + +![다국어 텍스트 추출 스크린샷 – 이미지에서 텍스트 추출 예시](image-placeholder.png "다국어 텍스트 추출 스크린샷 – 이미지에서 텍스트 추출 예시") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/korean/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..baaa1b0c2 --- /dev/null +++ b/ocr/korean/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: Python에서 문서를 일괄 OCR하고 스캔에서 텍스트를 추출하는 방법. OcrEngine을 사용한 단계별 일괄 처리와 JSON + 출력 방법을 배워보세요. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: ko +og_description: 스캔 파일을 일괄 OCR 처리하고 한 스크립트로 스캔에서 텍스트를 추출하는 방법. 전체 코드, 팁, 그리고 예외 상황 + 처리. +og_title: 배치 OCR 방법 – 빠른 파이썬 가이드 +tags: +- OCR +- Python +- Automation +title: 배치 OCR 방법 – 스캔에서 텍스트를 효율적으로 추출하기 +url: /ko/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# How to Batch OCR – 스캔에서 텍스트 효율적으로 추출하기 + +스캔한 PDF가 산처럼 쌓여도 **how to batch OCR** 할 수 있을지 궁금하셨나요? 당신만 그런 것이 아닙니다—개발자들은 계속해서 *“스캔에서 텍스트를 한 번에 추출하려면 어떻게 해야 하나요?”* 라고 묻습니다. 좋은 소식은 몇 줄의 Python 코드만으로 그 지루한 작업을 부드럽고 자동화된 파이프라인으로 바꿀 수 있다는 것입니다. + +이 튜토리얼에서는 **extracts text from scans**하고, 결과를 JSON으로 저장하며, 마지막에 간단한 정상 여부 확인을 제공하는 완전하고 바로 실행 가능한 솔루션을 단계별로 살펴보겠습니다. 외부 서비스도, 마법도 없습니다—그냥 순수 Python, `OcrEngine` 클래스, 그리고 약간의 폴더 관리만 있으면 됩니다. + +## 배울 수 있는 내용 + +- 이미지 폴더에 대해 **batches OCR**을 수행하는 완전한 기능의 스크립트. +- *why* 각 라인이 존재하는 이유에 대한 명확한 설명, *what* 하는지에 대한 설명만이 아니라. +- 빈 폴더, 이미지가 아닌 파일, 대용량 배치를 처리하기 위한 팁. +- JSON 출력에 실제로 추출된 텍스트가 포함되어 있는지 확인하는 방법. + +### 전제 조건 (최소 요구 사항) + +| 요구 사항 | 중요한 이유 | +|-------------|----------------| +| Python 3.8+ | 최신 구문 및 타입 힌트 | +| `OcrEngine` library (or a compatible wrapper) | 핵심 OCR 기능 | +| A directory with scanned image files (PNG, JPG, TIFF) | 스캔된 이미지 파일(PNG, JPG, TIFF)이 있는 디렉터리 | +| Write permissions for the output folder | 출력 폴더에 대한 쓰기 권한 | + +이미 준비되었다면, 좋습니다—시작해봅시다. + +![배치 OCR 워크플로우](image-placeholder.png){alt="배치 OCR 워크플로우"} + +## Step 1 – OCR 엔진 초기화 (how to batch OCR) + +무엇이든 처리하기 전에 OCR 엔진 인스턴스가 필요합니다. 이를 각 이미지를 읽고 텍스트를 출력하는 “두뇌”라고 생각하면 됩니다. 한 번 초기화하고 전체 배치에서 재사용하는 것이 가장 효율적인 패턴입니다. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **왜 같은 인스턴스를 재사용할까요?** +> 파일마다 새로운 엔진을 만들면 무거운 모델을 메모리에 반복해서 로드하게 되어 배치 속도가 크게 느려집니다. 하나의 인스턴스는 모델을 RAM에 유지하고 수천 장의 이미지를 눈에 띄는 지연 없이 처리할 수 있게 합니다. + +## Step 2 – 스캔 폴더 지정 (extract text from scans) + +스캔 파일은 디스크 어딘가에 있습니다. 스크립트에 그 위치를 알려줍시다. 절대 경로를 사용하면 스크립트를 다른 작업 디렉터리에서 실행할 때 발생할 수 있는 “파일을 찾을 수 없음” 오류를 방지할 수 있습니다. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **팁:** +> Windows 환경이라면, 슬래시(`/`)를 `os.path.abspath`와 함께 그대로 사용해도 문제없으므로 역슬래시를 이스케이프할 필요가 없습니다. + +## Step 3 – JSON 결과 저장 위치 선택 + +OCR 결과를 위한 깔끔한 폴더가 필요할 것입니다. 출력과 원본을 분리하면 나중에 정리하거나 JSON을 다른 파이프라인에 전달하기가 쉬워집니다. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **왜 프로그래밍적으로 폴더를 생성할까요?** +> 디렉터리가 없을 경우 스크립트가 충돌하는 것을 방지하고, `exist_ok=True` 덕분에 작업이 멱등성을 갖게 되어 스크립트를 여러 번 실행해도 오류가 발생하지 않습니다. + +## Step 4 – 배치 프로세스 실행 (how to batch OCR) + +이제 핵심 단계입니다: `ocr_engine`에 `input_dir`의 모든 파일을 순회하도록 지시하고, OCR을 실행한 뒤 결과를 `output_dir`에 JSON으로 저장합니다. `format="json"` 플래그는 엔진에게 결과를 구조화된 형태로 직렬화하도록 알려주며, 이는 후속 도구들이 선호합니다. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### 내부에서 무슨 일이 일어나고 있을까요? + +1. **File discovery** – 엔진은 `input_folder`를 재귀적으로 스캔하고 숨김 파일은 무시합니다. +2. **File validation** – 지원되는 이미지 확장자(`.png`, `.jpg`, `.tif` 등)만 OCR 모델에 전달됩니다. +3. **OCR execution** – 각 이미지를 OCR 엔진에 전달하고 텍스트, 신뢰도 점수, 레이아웃 데이터를 캡처합니다. +4. **JSON serialization** – 결과를 `output_folder`에 같은 기본 이름이지만 `.json` 확장자를 가진 파일로 저장합니다. + +> **예외 상황 처리:** +> - **Empty folder:** 엔진은 “No files found”를 로그에 남기고 정상적으로 반환합니다. +> - **Corrupt image:** 파일을 건너뛰고 `batch_errors.log`에 오류 항목을 기록한 뒤 계속 진행합니다. +> - **Huge batch (10k+ files):** 각 이미지를 독립적으로 처리하므로 메모리 사용량이 낮게 유지됩니다. + +## Step 5 – 변환 완료 확인 + +간단한 `print` 문은 콘솔에 즉시 피드백을 제공합니다. 실제 운영 파이프라인에서는 이를 로깅 호출이나 이메일 알림으로 교체할 수 있습니다. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +해당 문구가 출력되면, `json_output` 폴더를 안전하게 확인할 수 있습니다. 각 JSON 파일은 대략 다음과 같은 형태일 것입니다: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +이제 이러한 JSON 파일을 데이터베이스, 검색 인덱스, 혹은 다른 분석 도구에 전달할 수 있습니다. + +## 자주 묻는 질문 (및 빠른 답변) + +**Q: 이미지 대신 PDF를 처리해야 하면 어떻게 하나요?** +A: 각 PDF 페이지를 먼저 이미지로 변환(`pdf2image` 등 사용)하고, 생성된 PNG/JPG 파일을 `input_dir`에 넣습니다. 배치 OCR 로직은 그대로 유지됩니다. + +**Q: 출력 형식을 일반 텍스트로 바꿀 수 있나요?** +A: 물론입니다. `format="json"`을 `format="txt"`로 바꾸면 엔진이 추출된 텍스트만 포함한 `.txt` 파일을 작성합니다. + +**Q: 스캔 파일이 여러 하위 폴더에 있는데, 스크립트가 재귀적으로 탐색하나요?** +A: 네. `batch_process`는 기본적으로 디렉터리 트리를 순회합니다. 평탄한 출력을 원한다면 `flatten=True`(라이브러리가 지원한다면)로 설정하거나 JSON 파일명을 후처리하세요. + +**Q: 라틴 문자 이외의 스크립트를 처리하려면 어떻게 해야 하나요?** +A: `OcrEngine`을 언어 파라미터와 함께 초기화합니다. 예: `OcrEngine(lang="spa+eng")`. 배치 루프 자체는 변경할 필요가 없습니다. + +## 전문가 팁 및 흔히 겪는 함정 + +- **Batch size matters:** CPU 스파이크가 발생하면 파일 사이에 간단히 `time.sleep(0.1)`을 삽입해 처리 속도를 조절하세요. +- **Logging:** `print` 호출을 Python의 `logging` 모듈로 교체하면 타임스탬프와 오류 수준을 기록할 수 있습니다. +- **File naming collisions:** 두 스캔이 같은 기본 이름을 가지고 다른 하위 폴더에 있을 경우 JSON 파일이 서로 덮어씁니다. 충돌을 방지하려면 출력 이름에 상대 경로의 해시를 추가하세요. +- **Memory leaks:** 일부 OCR 백엔드는 네이티브 리소스를 유지합니다. 라이브러리가 정리 메서드를 제공한다면 스크립트 끝에서 `ocr_engine.close()`를 호출하세요. + +## 전체 스크립트 – 복사·붙여넣기 바로 사용 + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**예상 콘솔 출력** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +`json_output`의 파일을 텍스트 편집기로 열거나 Python에서 로드하여 JSON을 확인할 수 있습니다: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +콘솔에 원시 OCR 추출 텍스트가 출력되는 것을 확인할 수 있을 것입니다. + +## 마무리 + +우리는 **how to batch OCR** 전체 디렉터리의 스캔 이미지들을 처리하고 **extract text from scans**를 깔끔하고 기계가 읽을 수 있는 JSON 파일로 추출하는 방법을 다루었습니다. 접근 방식은 의도적으로 단순합니다: 엔진을 한 번 설정하고 폴더를 지정하면 라이브러리가 무거운 작업을 처리합니다. 이제 다음과 같이 활용할 수 있습니다: + +- JSON을 연결 + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/korean/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..6060ce0b7 --- /dev/null +++ b/ocr/korean/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-04-26 +description: OCR을 빠르고 신뢰성 있게 만드는 방법. 이미지에서 텍스트를 추출하고, OCR을 위해 이미지를 로드하며, 사용자 정의 사전을 + 사용해 PNG에 OCR을 실행하는 방법을 배웁니다. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: ko +og_description: Python에서 OCR을 만들고 이미지에서 텍스트를 추출하는 방법. 이 가이드는 OCR을 위해 이미지를 로드하고, PNG에 + 대해 OCR을 실행하며, 사용자 정의 사전을 사용하는 방법을 보여줍니다. +og_title: Python으로 OCR 만들기 – 빠른 텍스트 추출 +tags: +- OCR +- Python +- Image Processing +title: Python으로 OCR 만들기 – 이미지에서 텍스트 추출 +url: /ko/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python에서 OCR 만들기 – 단계별 가이드 + +스캔한 PDF, 스크린샷, 손글씨 노트를 읽을 수 있는 **OCR을 만드는 방법**이 궁금했나요? 당신만 그런 것이 아닙니다. 실제 프로젝트에서는 *이미지에서 텍스트를 추출*해야 할 때가 많지만, 기본 제공 엔진은 도메인 특화 단어에서 종종 어려움을 겪습니다. + +이 튜토리얼에서는 OCR용 이미지를 로드하고, 사용자 정의 사전을 적용하며, 최종적으로 **PNG 파일에서 OCR을 실행**하는 완전한 실행 가능한 예제를 확인할 수 있습니다. 끝까지 따라오면 모든 이미지에서 텍스트를 추출하고 엔진을 자신의 용어에 맞게 조정할 수 있게 됩니다. + +## 이 튜토리얼에서 다루는 내용 + +* 작고 강력한 `aocr` 패키지(또는 호환 가능한 라이브러리) 설치. +* `aspocorp`나 `licensekey`와 같은 용어를 인식하도록 **사용자 정의 사전**을 구성. +* PNG, JPEG 또는 스캔한 PDF 페이지 등 **OCR용 이미지 로드**. +* OCR 프로세스를 실행하고 결과를 출력. + +외부 문서 링크 없이, 오늘 바로 복사‑붙여넣기해서 실행할 수 있는 독립형 솔루션입니다. + +### 사전 요구 사항 + +* Python 3.8 이상 (코드에서 f‑string을 사용). +* 명령줄에 대한 기본적인 이해 – `pip install` 명령을 몇 번 입력하게 됩니다. +* 예시에서 사용된 이미지 파일(`technical_doc.png`)을 참조 가능한 위치에 두세요. + +위 세 가지 조건을 충족한다면 바로 시작할 수 있습니다. + +--- + +## 단계 1: OCR 라이브러리 설치 + +먼저, 프로그래밍 가능한 설정 객체를 지원하는 OCR 엔진이 필요합니다. `aocr` 패키지는 네이티브 OCR 엔진을 감싸는 가벼운 래퍼이며 데모에 적합합니다. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Pro tip:** Windows에서 컴파일 오류가 발생하면, 사전 빌드된 휠을 제공하는 `pip install aocr‑binary`를 시도해 보세요. + +### 이 라이브러리를 설치해야 하는 이유 + +`aocr`는 **사용자 정의 사전**을 주입할 수 있는 `config` 객체에 직접 접근할 수 있게 해줍니다. 이는 특수 분야 어휘의 정확도를 높이는 비결입니다. + +--- + +## 단계 2: OCR 엔진 인스턴스 생성 및 사용자 정의 사전 추가 + +이제 엔진을 시작하고 어떤 단어를 알려진 단어로 처리할지 지정합니다. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### 사용자 정의 사전이 중요한 이유 + +표준 OCR 모델은 일반 말뭉치로 학습됩니다. 모델이 “aspocorp”를 보면 “aspo corp”로 분리하거나 글자를 완전히 누락할 수 있습니다. 사용자 정의 목록을 제공하면 인식기가 필요한 정확한 철자에 편향되어 후처리 작업을 크게 줄일 수 있습니다. + +--- + +## 단계 3: 처리할 이미지 로드 + +여기서 **OCR용 이미지 로드**를 수행합니다. `Image.load` 메서드는 경로 문자열을 받아 파일 유형을 자동으로 판단합니다. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Edge case:** 소스가 다중 페이지 PDF인 경우, 각 페이지를 먼저 PNG로 변환(`pdf2image` 등 사용)하고 엔진에 하나씩 전달하세요. + +### 이미지 품질 향상을 위한 팁 + +* 해상도를 최소 300 dpi로 유지하세요. +* 이미지가 올바른 방향인지 확인하고, 필요하면 `Pillow`로 회전하세요. +* 컬러 스캔은 잡음을 줄이기 위해 그레이스케일로 변환하세요. + +--- + +## 단계 4: PNG 파일에서 OCR 프로세스 실행 + +엔진을 설정하고 이미지를 로드했으니, 이제 **PNG에서 OCR을 실행**합니다. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +`process()` 호출은 인식된 텍스트, 신뢰도 점수, 각 단어의 경계 상자를 포함하는 객체를 반환합니다. + +--- + +## 단계 5: 인식된 텍스트 출력 + +엔진이 찾은 내용을 확인하는 가장 간단한 방법은 `text` 속성을 출력하는 것입니다. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### 예상 출력 + +`technical_doc.png`에 *“The Aspocorp licensekey expires on 2025‑12‑31.”* 문장이 포함되어 있다면, 콘솔에 다음과 같이 표시됩니다: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +사용자 정의 사전 덕분에 브랜드명이 그대로 유지된 것을 확인하세요—일반 OCR이라면 손상될 수 있는 부분입니다. + +--- + +## 전체 작업 예제 (복사‑붙여넣기 준비됨) + +아래는 전체 스크립트이며, `run_ocr.py`로 저장할 수 있습니다. 이미지 경로를 실제 위치로 바꾸기만 하면 됩니다. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +터미널에서 실행하세요: + +```bash +python run_ocr.py +``` + +앞 예시와 동일하게 추출된 텍스트가 콘솔에 출력될 것입니다. + +--- + +## 자주 묻는 질문 (FAQ) + +| Question | Answer | +|----------|--------| +| **스캔한 PDF에서 텍스트를 추출할 수 있나요?** | 예. 각 페이지를 먼저 PNG(또는 TIFF)로 변환한 뒤, 동일한 스크립트에 이미지를 전달하면 됩니다. | +| **이미지가 PNG가 아니라 JPEG인 경우는 어떻게 하나요?** | `Image.load` 메서드는 JPEG, BMP, TIFF, PNG를 기본적으로 지원합니다. 파일 확장자만 바꾸면 됩니다. | +| **저대비 스캔에서 정확도를 어떻게 높일 수 있나요?** | `Pillow`로 전처리하세요 – 대비를 높이고, 이진화를 적용하거나 `opencv`로 기울기를 보정합니다. | +| **각 단어에 대한 신뢰도 점수를 얻을 수 있나요?** | `ocr_result`에 `words`가 포함되어 있으며, 각 단어는 반복 가능한 `confidence` 속성을 가지고 있습니다. | +| **헤드리스 서버에서도 실행할 수 있나요?** | 물론 가능합니다. `aocr`는 GUI 의존성이 없어 CI 파이프라인에 최적입니다. | + +--- + +## 다음 단계 및 관련 주제 + +이제 **OCR을 만드는 방법**과 **이미지 파일에서 텍스트를 추출하는 방법**을 알았으니, 다음을 탐색해 보세요: + +* **전처리 기법** – `load image for OCR`는 첫 단계일 뿐이며, `opencv`를 사용해 노이즈를 제거하거나 선명하게 할 수 있습니다. +* **배치 처리** – PNG 디렉터리를 순회하여 검색 가능한 아카이브를 생성합니다. +* **다국어 지원** – 프랑스어나 독일어 문서를 읽어야 한다면 엔진에 언어 팩을 추가하세요. +* **Elasticsearch와 통합** – 추출된 텍스트를 색인하여 스캔된 자산 전체에 대한 전체 텍스트 검색을 가능하게 합니다. + +이러한 확장 기능들은 방금 다룬 핵심 패턴을 기반으로 하므로 전환이 매우 쉬울 것입니다. + +--- + +## 마무리 + +몇 분 안에 **OCR을 만드는 방법**을 다루었으며, 특히 PNG와 같은 **이미지 파일에서 텍스트를 안정적으로 추출**하는 방법을 설명했습니다. 또한 **OCR용 이미지 로드**, **사용자 정의 사전 적용**, **PNG에서 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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/korean/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..45fcd9c5b --- /dev/null +++ b/ocr/korean/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: Python을 사용해 이미지에서 OCR을 추출하는 방법 – OCR을 위해 이미지를 로드하고 영수증에서 텍스트를 추출하는 Python + OCR 예제. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: ko +og_description: Python을 사용해 이미지에서 OCR을 추출하는 방법. 파이썬 OCR 예제를 배우고, OCR용 이미지를 로드하며, 영수증에서 + 텍스트를 몇 분 안에 추출하세요. +og_title: Python에서 OCR 추출하는 방법 – 완전 가이드 +tags: +- OCR +- Python +- Image Processing +title: Python에서 OCR 추출 방법 – 단계별 튜토리얼 +url: /ko/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python에서 OCR 추출 방법 – 완전 가이드 + +흐릿한 영수증이나 스캔한 청구서에서 **how to extract ocr**가 궁금하셨나요? 당신만 그런 것이 아닙니다—개발자들은 이미지에서 깨끗하고 기계가 읽을 수 있는 텍스트가 필요할 때마다 벽에 부딪히곤 합니다. 좋은 소식은? 몇 줄의 Python 코드만으로 영수증 사진을 고신뢰도, 검색 가능한 텍스트로 변환할 수 있다는 것입니다. + +이 튜토리얼에서는 **python ocr example**을 통해 **how to load image for ocr**를 시연하고, 엔진을 실행한 뒤 85 % 신뢰도 임계값을 만족하는 문자만 남기는 과정을 보여드립니다. 끝까지 따라오시면 **extract text from receipt** 이미지를 문서 검색이나 API 파라미터 추측 없이 바로 추출할 수 있게 됩니다. + +## What You’ll Need + +- Python 3.9 이상 (우리가 사용하는 구문은 3.8+에서도 동작합니다) +- `aocr` 패키지 (또는 `OcrEngine` 클래스를 제공하는 任意 OCR 라이브러리). 다음 명령으로 설치합니다: + +```bash +pip install aocr +``` + +- `receipt.png` 라는 샘플 영수증 이미지가 있는 폴더 +- 텍스트 편집기 또는 IDE—VS Code, PyCharm, 혹은 간단한 노트북도 충분합니다. + +그게 전부입니다. 무거운 프레임워크도, 외부 서비스도 필요 없고 순수 Python만 있으면 됩니다. + +![High‑confidence OCR result – how to extract ocr from a receipt](/images/ocr-high-confidence.png) + +*이미지 대체 텍스트: Python OCR을 사용한 how to extract ocr from a receipt* + +## Step 1 – Create the OCR Engine Instance (how to extract ocr) + +먼저 OCR 엔진을 시작합니다. 이는 픽셀을 읽어줄 두뇌와 같습니다. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Why?** `OcrEngine`을 인스턴스화하면 새로운 설정 객체를 얻게 됩니다. 이후 언어 모델, DPI 설정, 전처리 단계 등을 코어 처리 루프를 건드리지 않고 조정할 수 있습니다. + +## Step 2 – Load the Image for OCR + +다음으로 엔진이 분석할 이미지를 지정합니다. 여기서 **load image for ocr** 키워드가 등장합니다. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tip:** 이미지가 다른 디렉터리에 있다면 `os.path.join`을 사용해 플랫폼에 독립적인 경로를 만들세요. + +**Why load the image this way?** `Image.load` 헬퍼는 파일을 엔진이 이해할 수 있는 형식으로 읽어들여 PNG, JPEG, TIFF 등 일반 포맷을 자동으로 처리합니다. 이 단계를 건너뛰거나 원시 바이트를 직접 전달하면 `ValueError`가 발생합니다. + +## Step 3 – Run the OCR Process + +이제 실제로 OCR을 실행합니다. `process` 메서드는 인식된 심볼, 신뢰도 점수, 바운딩 박스를 포함한 풍부한 결과 객체를 반환합니다. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**What does `ocr_result` contain?** 대부분의 라이브러리에서 다음과 같은 정보를 제공합니다: + +- `text`: 원시 연결 문자열 +- `symbol_confidences`: `(char, confidence)` 튜플 리스트 +- `boxes`: 각 문자에 대한 좌표 (시각적 디버깅에 유용) + +문자별 신뢰도에 접근할 수 있어야 다음 단계가 가능해집니다. + +## Step 4 – Keep Only High‑Confidence Symbols (≥ 85 %) + +영수증에는 얼룩, 흐릿한 인쇄, 배경 잡음 등이 흔히 존재합니다. 낮은 신뢰도의 심볼을 걸러내면 후속 파싱 정확도가 크게 향상됩니다. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Why 85 %?** 경험적으로 0.85 정도의 임계값이 대부분의 인쇄 영수증에서 재현율과 정밀도의 균형을 맞춥니다. 숫자가 누락되면 임계값을 낮추고, 의미 없는 문자열이 나오면 높이세요. + +## Step 5 – Output the High‑Confidence Extracted Text + +마지막으로 정제된 문자열을 출력(또는 저장)합니다. 이것이 **extract text from receipt** 워크플로우의 핵심입니다. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Typical output looks like: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +이제 이 문자열을 CSV 라이터, 데이터베이스, 혹은 다른 분석 파이프라인에 바로 전달할 수 있습니다. + +## Full, Ready‑to‑Run Script + +아래는 `ocr_receipt.py`에 복사‑붙여넣기만 하면 바로 실행할 수 있는 전체 코드 스니펫입니다. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +파일을 저장하고 `receipt.png`가 존재하는지 확인한 뒤 실행하세요: + +```bash +python ocr_receipt.py +``` + +콘솔에 정리된 영수증 텍스트가 출력될 것입니다. + +## Edge Cases & What‑If Scenarios + +| Situation | Suggested Fix | +|-----------|----------------| +| **Very low confidence across the board** | 이미지 전처리: 대비 증가, 그레이스케일 변환, 혹은 `cv2.GaussianBlur` 같은 노이즈 제거 필터 적용 | +| **Non‑Latin characters** | `OcrEngine`에 언어 모델 전달 (`ocr_engine.language = "spa"` 등) | +| **Multiple receipts in one image** | 전체 이미지에 OCR을 실행한 뒤 `\n\n+` (두 개 이상의 연속 개행) 정규식을 이용해 결과를 분할 | +| **Need the raw OCR text as well** | 디버깅을 위해 필터링된 버전과 함께 `ocr_result.text`를 보관 | + +These variations ensure your **how to use OCR** knowledge scales beyond the simplest case. + +## Common Pitfalls (And How to Avoid Them) + +- **Forgetting to install the library** – `pip install aocr`가 성공해야 import가 가능합니다. +- **Using the wrong path separator** on Windows (`\` vs `/`). `os.path.join`을 사용하세요. +- **Hard‑coding the confidence threshold** without testing – 몇 개의 영수증으로 빠르게 시각적 검증을 먼저 수행하세요. +- **Ignoring Unicode normalisation** – 일부 영수증에 특수 대시 문자가 포함될 수 있습니다. 출력 저장 전 `unicodedata.normalize('NFKC', text)`를 실행하세요. + +## Next Steps – Going Beyond the Basics + +이제 **how to extract ocr** 데이터를 단일 영수증에서 추출하는 방법을 알았으니, 다음과 같은 작업을 고려해 보세요: + +1. **Batch process a folder of receipts** – 모든 PNG/JPG 파일을 순회하며 각 결과를 CSV에 기록 +2. **Integrate with a database** – `high_confidence_text`를 SQLite에 저장해 빠르게 조회 +3. **Apply natural‑language parsing** – 정규식이나 `dateutil`을 사용해 날짜, 총액, 세금 등을 추출 +4. **Experiment with alternative libraries** – `pytesseract`, `easyocr`, 혹은 클라우드 서비스(Google Vision, Azure OCR)를 활용해 다국어 지원이나 정확도 향상 + +각 주제는 *python ocr example*, *extract text from receipt*, *load image for ocr*, *how to use OCR* 라는 보조 키워드와 자연스럽게 연결됩니다. + +## Conclusion + +우리는 **python ocr example**을 통해 영수증 이미지에서 **how to extract 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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/korean/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..44976593d --- /dev/null +++ b/ocr/korean/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-04-26 +description: '파이썬 OCR 방법: 기본 OCR 예제를 사용하여 이미지에서 텍스트를 추출하고 TIFF 파일을 파이썬으로 읽는 방법을 배웁니다. + 빠른 실행 가능한 코드 포함.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: ko +og_description: '파이썬 OCR 방법: 이미지에서 텍스트를 추출하고, 파이썬으로 TIFF 파일을 읽으며, 스캔한 이미지 텍스트를 간단하고 + 실행 가능한 스크립트로 변환하는 단계별 가이드.' +og_title: Python으로 OCR하는 방법 – 텍스트 추출을 위한 기본 OCR 예제 +tags: +- OCR +- Python +- Image Processing +title: Python으로 OCR 하는 방법 – 텍스트 추출을 위한 기본 OCR 예제 +url: /ko/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to ocr python – 텍스트 추출을 위한 기본 OCR 예제 + +스캔한 TIFF 파일이 책상 위에 놓여 있을 때 **how to ocr python**이 궁금했던 적 있나요? 이미지 파일들을 바라보며 “이 안에서 텍스트를 어떻게 뽑아낼까?”라고 고민하는 당신만은 아닙니다. 올바른 라이브러리와 몇 가지 명확한 단계만 있으면 사진을 순수 텍스트로 바꾸는 일은 식은 죽 먹기입니다. + +이 튜토리얼에서는 TIFF 파일을 읽고, 텍스트를 추출한 뒤 콘솔에 출력하는 **기본 OCR 예제**를 단계별로 살펴봅니다. 끝까지 따라오면 **이미지 파일에서 텍스트 추출** 방법, TIFF 포맷의 특이점 처리 방법, 그리고 **스캔한 이미지 텍스트를 변환**할 때 조정해야 할 부분들을 정확히 알게 됩니다. 숨은 마법은 없습니다—오늘 바로 복사‑붙여넣기하고 실행할 수 있는 직관적인 파이썬 코드만 있죠. + +## What You’ll Need + +시작하기 전에 아래 항목들을 준비하세요: + +- Python 3.9+ 설치 (가능하면 최신 안정 버전) +- pip 로 설치 가능한 OCR 라이브러리. 여기서는 인기 도구인 Tesseract 등을 흉내낸 가상의 `aocr` 패키지를 사용합니다; 나중에 `pytesseract` 혹은 `easyocr` 로 교체할 수 있습니다. +- 처리하고 싶은 TIFF 이미지 – 파일명을 `input.tiff` 로 지정하고, 코드에서 참조할 폴더에 넣어두세요. +- 기본적인 커맨드 라인 사용법에 대한 이해 (패키지 설치 정도) + +이 정도면 충분합니다. 무거운 의존성도, Docker 컨테이너도 필요 없으며 몇 줄의 코드만 있으면 됩니다. + +## Step 1 – Install and Import Dependencies (how to ocr python) + +먼저 OCR 패키지를 설치합니다. 터미널을 열고 다음을 실행하세요: + +```bash +pip install aocr +``` + +실제 라이브러리를 사용하고 싶다면 `aocr` 대신 `pytesseract` 로 바꾸고, Tesseract 엔진을 별도로 설치하면 됩니다. + +이제 필요한 모듈을 가져옵니다. `pathlib` 의 `Path` 클래스는 운영체제에 관계없이 파일 경로를 깔끔하게 다룰 수 있게 해줍니다. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*왜 `Path`를 사용할까요?* 슬래시(` / ` vs ` \ `) 차이를 추상화해 주어, OS에 구애받지 않고 디렉터리를 결합할 수 있기 때문입니다. 이 작은 디테일이 나중에 CI 서버로 스크립트를 옮길 때 큰 머리통증을 예방해 줍니다. + +## Step 2 – Create the OCR Engine Instance (basic ocr example) + +다음으로 OCR 엔진을 초기화합니다. `OcrEngine` 은 이미지를 읽고 문자로 변환해 주는 두뇌 역할을 합니다. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +대부분의 OCR 라이브러리는 여기서 언어, DPI, 신뢰도 임계값 등을 조정할 수 있습니다. 이번 **기본 OCR 예제**에서는 기본값을 그대로 사용하지만, 다국어 문서를 다뤄야 한다면 `ocr_engine.config` 를 살펴보세요. + +## Step 3 – Load Your TIFF Image (read tiff file python) + +이제 **read tiff file python** 단계입니다. TIFF는 다중 페이지를 가질 수 있지만 `Image.load` 는 기본적으로 첫 페이지만 가져오므로 단일 페이지 스캔에 적합합니다. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +`"YOUR_DIRECTORY"` 를 실제 `input.tiff` 가 들어있는 폴더 경로로 바꾸세요. 스크립트가 어느 위치에서 실행되는지 모를 경우 `Path.cwd()` 로 현재 작업 디렉터리를 출력해 보면 경로 문제를 디버깅하는 데 도움이 됩니다. + +## Step 4 – Run the OCR Process (extract text from image) + +이제 마법이 시작됩니다. `process()` 를 호출하면 이미지가 OCR 파이프라인을 통과하고 결과 객체가 반환됩니다. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +엔진 내부에서는 이미지를 그레이스케일로 변환하고, 임계값을 적용한 뒤 신경망에 전달하는 작업을 수행합니다. 이러한 단계는 라이브러리가 자동으로 처리하므로 직접 관리할 필요가 없습니다. + +## Step 5 – Print the Recognized Text (convert scanned image text) + +마지막으로 텍스트를 출력합니다. 실제 프로젝트에서는 파일이나 데이터베이스에 저장하겠지만, 여기서는 예시를 간결하게 유지하기 위해 콘솔에 출력합니다. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +스크립트를 실행하면 다음과 비슷한 결과가 나타납니다: + +``` +Hello, world! +This is a sample scanned document. +``` + +출력이 깨져 보인다면 원본 이미지가 선명한지, OCR 언어 설정이 텍스트와 일치하는지 다시 확인하세요. + +## Full Working Script + +전체 코드를 한 번에 모아 보겠습니다. 바로 실행 가능한 프로그램입니다: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Expected Output + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +**스캔한 이미지 텍스트를** 검색 가능한 PDF 로 변환하고 싶다면 `ocr_result.text` 를 `reportlab` 같은 PDF 생성 라이브러리에 파이프하면 됩니다—하지만 그 내용은 또 다른 튜토리얼이 필요합니다. + +## Common Pitfalls & Pro Tips + +- **저해상도 스캔**: 150 DPI 이하에서는 OCR 정확도가 급격히 떨어집니다. TIFF가 흐릿하면 Pillow(`Image.open(...).resize(...)`) 로 먼저 업샘플링하세요. +- **다중 페이지**: 멀티 페이지 TIFF의 경우 `Image.load_multi_page()`(라이브러리 지원 시)를 순회하면서 결과를 이어 붙이세요. +- **언어 지원**: 대부분 엔진은 기본이 영어입니다. 예를 들어 스페인어는 `ocr_engine.language = "spa"` 로 설정합니다. +- **공백 처리**: OCR 결과에 불필요한 줄바꿈이 포함될 수 있습니다. `str.splitlines()` 나 정규식을 활용해 정리하세요. +- **성능**: 대량 처리 시 파일당 새 `OcrEngine` 을 만들기보다 하나의 인스턴스를 재사용하는 것이 효율적입니다. + +## Extending the Example + +이제 **how to ocr python** 을 단일 이미지에 적용하는 방법을 익혔으니, 다음 단계들을 고려해 보세요: + +1. **배치 처리** – 디렉터리 내 모든 TIFF를 순회하면서 각각을 `.txt` 파일로 저장합니다. +2. **Pandas와 연동** – 추출된 텍스트와 메타데이터를 함께 저장해 빠른 분석이 가능하도록 합니다. +3. **하이브리드 접근** – OCR 결과를 `spaCy` 같은 NLP 라이브러리와 결합해 청구서에서 이름, 날짜, 금액 등 엔터티를 추출합니다. +4. **다른 파일 포맷** – `Image.load` 대신 `Image.from_bytes` 를 사용해 API 혹은 데이터베이스에서 직접 받아오는 이미지를 처리합니다. + +이 모든 확장은 **이미지에서 텍스트 추출**과 **스캔한 이미지 텍스트를** 기계가 이해할 수 있는 형태로 변환한다는 핵심 아이디어 위에 세워집니다. + +## Conclusion + +우리는 **how to ocr python**, **read tiff file python**, **extract text from image** 파일을 몇 줄의 코드만으로 구현하는 **기본 OCR 예제**를 끝까지 살펴보았습니다. 스크립트는 독립형이며 오류 처리를 포함하고 결과를 바로 출력하므로, 스캔 문서를 편집 가능한 텍스트로 변환해야 하는 모든 프로젝트의 견고한 출발점이 됩니다. + +OCR 백엔드를 교체하거나 전처리를 조정하거나, 결과를 후속 워크플로에 연결하는 등 자유롭게 실험해 보세요. 신뢰할 수 있게 **스캔한 이미지 텍스트를** 검색 가능하고 활용 가능한 데이터로 변환할 수 있다면 가능성은 무한합니다. + +궁금한 점—예외 상황, 언어 팩, 성능 튜닝 등—이 있다면 아래 댓글에 남겨 주세요. 즐거운 코딩 되세요! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/korean/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..f5e14fb21 --- /dev/null +++ b/ocr/korean/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,180 @@ +--- +category: general +date: 2026-04-26 +description: 스캔한 양식에서 OCR을 실행하는 방법, 노이즈를 줄이기 위해 이미지를 전처리하는 방법을 배우고, 이미지를 빠르게 텍스트로 + 추출하는 방법. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: ko +og_description: 스캔한 문서에서 OCR을 실행하고, 이미지를 전처리하며, 노이즈를 줄이고, 텍스트를 효율적으로 추출하는 방법. +og_title: OCR 실행 및 이미지 전처리 방법 – 빠른 가이드 +tags: +- OCR +- image processing +- Python +title: OCR 실행 및 이미지 전처리 방법 – 스캔된 양식에서 텍스트 추출 +url: /ko/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# OCR 실행 방법 – 이미지에서 텍스트 추출을 위한 완전 가이드 + +지저분한 스캔 양식에서 **OCR을 실행하는 방법**을 궁금해 본 적 있나요? 당신만 그런 것이 아닙니다. 많은 실제 프로젝트에서 원본 이미지는 점이 많고, 조명이 고르지 않으며, 기타 특성 때문에 바로 사용할 수 있는 OCR이 제대로 작동하지 못합니다. + +좋은 소식은? 몇 줄의 Python 코드와 스마트한 전처리 파이프라인만 있으면 인식 정확도를 크게 높이고 **노이즈를 감소**시켜 필요한 정확한 단어를 추출할 수 있습니다. 이 튜토리얼에서는 사진을 로드하는 단계부터 최종 문자열을 출력하는 단계까지 모든 과정을 차근차근 살펴보며, 청구서, 영수증 또는 기타 스캔 문서에 적용할 수 있는 바로 사용할 수 있는 스니펫을 제공할 것입니다. + +## What You'll Build + +- 기본 OCR 라이브러리와 통신하는 `OcrEngine` 인스턴스. +- 이미지를 **이진화**하고 **중간값 블러**를 적용해 점들을 부드럽게 만드는 전처리 체인. +- `process()`를 간단히 호출해 `text` 속성으로 추출된 문자열을 반환하는 객체. + +끝까지 진행하면 어떤 이미지 파일이든 실행할 수 있는 독립형 스크립트를 얻으며, 콘솔에서 바로 추출된 텍스트를 확인할 수 있습니다. + +## Prerequisites + +- Python 3.9+ (여기서 사용된 문법은 최신 안정 버전과 일치합니다). +- 가상의 `aocr` 패키지 – Tesseract 또는 최신 OCR 엔진을 감싸는 얇은 래퍼라고 생각하면 됩니다. `pip install aocr`로 설치합니다. +- 참조할 수 있는 폴더에 배치된 스캔 이미지 (`scanned_form.jpg`). + +실제 OCR 라이브러리인 `pytesseract`를 사용한다면 `OcrEngine`을 해당 클래스와 교체하면 됩니다—다른 부분은 동일하게 유지됩니다. + +![](how-to-run-ocr-example.png "how to run OCR example showing a scanned form and extracted text") + +*Alt text: how to run OCR on a scanned document and view the extracted text.* + +--- + +## Step 1: How to Run OCR – Initialize the Engine + +엔진이 어떤 내용도 읽기 전에 인스턴스를 생성해야 합니다. `OcrEngine`을 나중에 시각 데이터를 해석할 뇌라고 생각하면 됩니다. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Why this matters:** 엔진을 인스턴스화하면 내부 모델이 설정되고, 언어 팩이 로드되며, 런타임 환경이 준비됩니다. 이 단계를 건너뛰면 나중에 `process()`를 호출했을 때 `NoneType` 오류가 발생하는 경우가 많습니다. + +--- + +## Step 2: How to Preprocess Image – Load Your Scanned Form + +뇌가 준비되었으니 이제 사진을 공급합니다. 이미지는 `aocr.Image`가 지원하는 모든 포맷이면 됩니다. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Pro tip:** 개발 단계에서는 절대 경로를 사용해 “파일을 찾을 수 없음” 오류를 방지하세요. 스크립트가 다른 작업 디렉터리에서 실행될 때 특히 유용합니다. + +--- + +## Step 3: How to Reduce Noise – Apply Binarization & Median Blur + +원본 스캔에는 종종 작은 점, 고르지 않은 배경, 흐릿한 그림자가 섞여 있습니다. 두 가지 고전적인 트릭인 **이진화**와 **중간값 블러**를 사용하면 문자 경계를 손상시키지 않으면서 깨끗하게 만들 수 있습니다. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Digging Deeper + +- **Binarization**: `threshold=180` 값은 알고리즘에 “밝기가 180보다 밝으면 흰색, 그 외는 검은색”이라고 알려줍니다. 스캔이 너무 어둡거나 밝으면 이 값을 조정하세요. +- **Median Blur**: 반경 `2`는 필터가 5×5 픽셀 창을 살펴 가운데 픽셀을 중간값으로 교체한다는 의미입니다. 이렇게 하면 글자 획은 유지하면서 고립된 점들을 부드럽게 제거합니다. + +> **Edge case:** 문서에 색상 하이라이트가 포함된 경우 단순 이진 임계값이 이를 지워버릴 수 있습니다. 이런 경우 `aocr.ImageFilters.adaptive_threshold()`를 사용해 이미지 전체에 걸쳐 로컬하게 임계값을 적용하도록 고려하세요. + +--- + +## Step 4: How to Extract Text – Run the OCR Process + +깨끗한 이미지가 준비되면 이제 엔진에게 마법을 부여합니다. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **What happens under the hood?** 엔진은 픽셀 매트릭스 위에서 신경망(또는 레거시 패턴 매처)을 실행해 각 인식된 글리프를 유니코드 문자로 변환하고, 이를 줄과 단락으로 조합합니다. + +--- + +## Step 5: How to Extract Text – Print the Result + +`ocr_result` 객체는 편리한 `text` 속성을 제공합니다. 이제 결과를 확인해 봅시다. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Expected Output + +스캔된 양식에 다음과 같은 내용이 포함되어 있다면: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +다음과 비슷한 결과가 출력됩니다: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +전처리 단계가 이전에 “Amount”를 “Am0unt”로 바꾸던 잡다한 점들을 제거한 것을 확인할 수 있습니다. 이것이 **노이즈를 감소**시키는 전처리의 힘입니다. + +--- + +## Common Pitfalls & How to Fix Them + +| Symptom | Likely Cause | Quick Fix | +|---------|--------------|-----------| +| 깨진 문자(예: “@#%”) | 이미지가 너무 어둡거나 밝음 | `binarize()`의 `threshold`를 조정하거나 `adaptive_threshold` 사용 | +| 누락된 단어 | 노이즈가 아직 남아 있음 | `median_blur`의 `radius`를 늘리거나 `gaussian_blur` 필터 추가 | +| 잘못된 언어(예: 영어 문자가 중국어로 변환) | 잘못된 언어 팩 로드 | 라이브러리가 지원한다면 `OcrEngine()` 생성 시 `language="eng"` 전달 | +| 큰 파일에서 처리 속도 저하 | 해상도가 높음 | 이진화 전에 `aocr.ImageFilters.resize(width=1200)`으로 이미지 축소 | + +--- + +## Going Further – Next Steps and Related Topics + +- **배치 처리**: 위 로직을 루프로 감싸 수십 개 파일을 자동으로 처리합니다. +- **구조화된 출력**: `ocr_result.text`에 정규식을 적용해 날짜나 금액 같은 필드를 추출합니다. +- **대체 라이브러리**: `aocr` 대신 `pytesseract`를 사용해 보세요—엔진 초기화 단계만 교체하면 됩니다. +- **PDF용 이미지 전처리**: 각 PDF 페이지를 이미지로 변환한 뒤 동일한 파이프라인을 적용합니다. + +이러한 확장은 단일 양식에서 엔터프라이즈 급 문서 수집 파이프라인까지 솔루션을 확장할 수 있게 해줍니다. + +--- + +## Conclusion + +시작부터 끝까지 **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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/korean/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..649faca45 --- /dev/null +++ b/ocr/korean/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: Aspose OCR에서 라이선스를 설정하고 간결한 Python 스크립트로 라이선스를 검증하는 방법을 배워보세요. 번거로움 없는 + 활성화를 위해 단계별 지침을 따라하세요. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: ko +og_description: Aspose OCR에서 라이선스를 설정하고 Python으로 라이선스를 검증하는 방법. 몇 분 안에 완전하고 실행 가능한 + 예제를 받아보세요. +og_title: Aspose OCR에서 라이선스 설정 방법 – 빠른 파이썬 가이드 +tags: +- Aspose OCR +- Python +- Licensing +title: Aspose OCR에서 라이선스 설정 방법 – 빠른 파이썬 가이드 +url: /ko/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR에서 라이선스 설정 방법 – 빠른 Python 가이드 + +Aspose OCR의 **라이선스 설정 방법**을 고민해 본 적 있나요? 머리카락을 뽑을 필요는 없습니다. 처음에 라이브러리의 전체 기능을 사용하려다 “Trial version” 워터마크에 시달리는 개발자들이 많습니다. 좋은 소식은 해결 방법이 꽤 간단하고 바로 확인할 수 있다는 점입니다. + +이 튜토리얼에서는 작은 Python 스크립트를 사용해 **라이선스 설정 방법** *및* **라이선스 검증 방법**을 단계별로 살펴보겠습니다. 끝까지 하면 “License OK”를 출력하는 작동 예제를 얻을 수 있고, 흔히 발생하는 실수를 피할 수 있는 몇 가지 팁도 제공됩니다. + +## 사전 요구 사항 + +- Python 3.8+이 설치되어 있어야 합니다 (코드는 3.9, 3.10 및 최신 버전에서도 작동합니다). +- 활성화된 Aspose OCR for Java (또는 .NET) 라이선스 파일 – 일반적으로 `Aspose.OCR.Java.lic` 이름을 가집니다. +- `asposeocr` 패키지를 `pip install asposeocr` 로 설치합니다. +- 명령줄에서 Python 스크립트를 실행하는 기본적인 지식이 필요합니다. + +모두 준비되셨나요? 좋습니다—시작해 봅시다. + +## Aspose OCR에서 라이선스 설정 방법 (Step 1) + +라이선스를 설정하는 것은 기본적으로 세 줄의 작업이며, 각 줄마다 목적이 있습니다. 왜 이렇게 하는지 *왜* 이해할 수 있도록 단계별로 설명하겠습니다. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**왜 `License`를 import 하나요?** +`License` 클래스는 Aspose OCR 엔진에 제품을 구매했음을 알리는 관문입니다. 인스턴스를 생성하지 않으면 라이브러리는 계속해서 트라이얼 버전이라고 가정합니다. + +**왜 `License`를 인스턴스화 하나요?** +인스턴스화하면 `.lic` 파일 경로를 보관하고 런타임에 적용할 수 있는 객체(`license_obj`)를 얻을 수 있습니다. + +## Aspose OCR에서 라이선스 설정 방법 – 라이선스 파일 제공 + +이제 객체가 디스크에 있는 실제 라이선스 파일을 가리키도록 합니다. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**팁 및 요령:** + +- **절대 경로 vs. 상대 경로** – 스크립트를 다른 폴더에서 실행할 경우 절대 경로(`C:/licenses/...`)를 사용하면 “파일을 찾을 수 없습니다” 오류를 방지할 수 있습니다. +- **환경 변수** – 경로를 환경 변수(`OCR_LICENSE_PATH`)에 저장하면 비밀 정보를 소스 제어에서 제외할 수 있습니다: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## 라이선스 검증 – 정상 작동 확인 + +라이선스를 설정하는 것만으로는 절반에 불과합니다; 라이브러리가 이를 받아들였는지 확인해야 합니다. 여기서 검증 단계가 빛을 발합니다. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +라이선스 파일이 없거나 손상되었거나 일치하지 않을 경우 `validate()`가 예외를 발생시킵니다. 해당 예외를 잡으면 문제를 깔끔하게 보고할 수 있습니다. + +## 전체 작동 예제 (모든 단계 결합) + +아래는 완전한 실행 가능한 스크립트입니다. 터미널에서 (`python set_license.py`) 실행하면 “License OK”가 출력됩니다. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**예상 출력** + +``` +License OK +``` + +무언가 잘못되면 다음과 같은 메시지가 표시됩니다: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +해당 메시지는 정확히 어떤 부분을 수정해야 하는지 알려주므로 추측할 필요가 없습니다. + +## 라이선스 검증 – 일반적인 엣지 케이스 처리 + +위 스크립트를 사용하더라도 몇 가지 상황에서 문제가 발생할 수 있습니다: + +| 상황 | 발생 현상 | 해결 방법 | +|-----------|--------------|------------| +| **파일 경로 오타** | `set_license`에서 `FileNotFoundError` | 경로를 다시 확인하고 `os.path.abspath()`로 디버그합니다. | +| **잘못된 파일 유형** | 검증 시 “Invalid license format” 오류 발생 | 제품 에디션에 맞는 `.lic` 파일을 사용하고 있는지 확인합니다. | +| **만료된 라이선스** | 검증 시 “License expired” 오류 발생 | Aspose 지원팀에 라이선스를 갱신하고 파일을 교체합니다. | +| **제한된 환경에서 실행** (예: AWS Lambda) | 권한 오류 | 디렉터리 읽기 권한을 부여하거나 배포 패키지에 라이선스를 포함합니다. | + +프로 팁: “파일을 찾을 수 없음”과 “잘못된 형식” 오류를 구분하고 싶다면 `set_license` 호출을 별도의 `try/except` 블록으로 감싸세요. + +## 시각적 요약 + +![Aspose OCR에서 라이선스 설정 예시](/images/aspose-ocr-license.png "Aspose OCR에서 라이선스 설정 예시") + +*스크린샷은 성공적인 활성화 후 스크립트가 “License OK”를 출력하는 모습을 보여줍니다.* + +## 일반적인 실수 및 모범 사례 + +- **라이선스 파일을 공개 저장소에 절대 커밋하지 마세요.** 대신 환경 변수나 비밀 관리 도구(GitHub Secrets, Azure Key Vault)를 사용하십시오. +- **가능한 빨리 검증하세요.** `set_license` 직후 `license_obj.validate()`를 호출하면 OCR 작업을 시작하기 전에 오류를 잡을 수 있습니다. +- **License 객체를 재사용하세요.** 프로세스당 한 번만 라이선스를 설정하면 이후 OCR 호출은 자동으로 활성화된 라이선스를 사용합니다. +- **프로덕션에서는 파일 이름을 제외한 라이선스 경로를 로그에 기록**하여 실제 파일을 노출하지 않으면서 디버깅에 도움이 되게 합니다. + +## 다음 단계 – OCR 워크플로우 확장 + +이제 **라이선스 설정 방법**과 **라이선스 검증 방법**을 알았으니 핵심 OCR 작업으로 넘어갈 수 있습니다: + +- **이미지 읽는 방법** – `Image.load("sample.png")` +- **텍스트 추출 방법** – `ocr_engine.recognize(image)` +- **OCR 옵션 설정 방법** – 언어, 정확도 등을 위해 `OcrEngine` 설정을 조정합니다. + +각 주제는 성공적으로 라이선스가 적용된 엔진을 기반으로 하므로, 다시는 트라이얼 워터마크가 표시되지 않을 것입니다. + +## 결론 + +우리는 Aspose OCR에 대한 **라이선스 설정 방법** 전체 과정을 다루었고, **라이선스 검증 방법**을 시연했으며, “License OK”를 출력하는 완전한 실행 스크립트를 제공했습니다. 오류를 사전에 처리하고 환경 변수를 사용함으로써 애플리케이션을 안전하고 견고하게 유지할 수 있습니다. + +OCR, 라이선스, 또는 Aspose를 더 큰 파이프라인에 통합하는 것에 대해 더 궁금한 점이 있나요? 댓글을 남겨 주세요. 즐거운 코딩 되세요! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/korean/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/korean/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..09eba6a96 --- /dev/null +++ b/ocr/korean/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: 스캔한 PDF에 OCR을 적용하고, PDF에서 텍스트를 추출하며, PDF에 OCR을 실행하고, 스캔한 PDF를 몇 단계만에 + 검색 가능한 파일로 변환하는 방법. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: ko +og_description: 'Python에서 OCR 사용 방법: PDF에서 텍스트를 추출하고, PDF에 OCR을 실행하며, 스캔한 PDF를 검색 + 가능한 문서로 변환하는 방법을 배워보세요.' +og_title: OCR 사용 방법 – PDF에서 텍스트 추출하기 빠른 가이드 +tags: +- OCR +- Python +- PDF +- Text Extraction +title: OCR 사용 방법 – Python으로 PDF에서 텍스트 추출 +url: /ko/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# OCR 사용 방법 – Python으로 PDF에서 텍스트 추출 + +스캔한 계약서, 영수증, 전자책에서 텍스트를 추출하기 위해 **OCR 사용 방법**을 궁금해 본 적이 있나요? 당신만 그런 것이 아닙니다. 실제 프로젝트에서 받는 PDF는 종종 이미지일 뿐이며, OCR 없이는 내용을 검색하거나 색인화하거나 분석할 수 없습니다. + +이 튜토리얼에서는 **OCR 사용 방법**, **PDF에서 텍스트 추출** 방법, 그리고 스캔된 PDF 파일을 검색 가능한 문서로 **변환**하고 싶을 때의 이유를 보여주는 완전하고 실행 가능한 예제를 단계별로 살펴봅니다. 또한 OCR 엔진이 각 페이지를 명확히 인식할 수 있도록 **PDF를 이미지로 로드**하는 미묘한 기술도 다룹니다. + +> **빠른 미리보기:** 최종적으로 다중 페이지 PDF를 로드하고 각 페이지에 OCR을 실행한 뒤 인식된 텍스트를 출력하는 스크립트를 얻게 됩니다 – 외부 서비스는 전혀 필요하지 않습니다. + +## 필요 사항 + +- Python 3.9+ (최근 버전이면 모두 사용 가능) +- `aocr` 패키지 (또는 `OcrEngine`과 `Image.load`를 제공하는 호환 OCR 라이브러리) +- 처리하려는 스캔된 PDF 파일 (예: `contract.pdf`) +- 적당한 양의 RAM (100 페이지당 약 200 MB 정도면 보통 충분합니다) + +OCR 라이브러리를 아직 설치하지 않았다면 다음을 실행하세요: + +```bash +pip install aocr +``` + +> **프로 팁:** 가상 환경을 사용해 의존성을 깔끔하게 관리하세요. + +## 1단계: PDF를 이미지로 로드 – 퍼즐의 첫 번째 조각 + +OCR이 수행되기 전에 PDF는 이미지 형태로 표현되어야 합니다. 여기서 보조 키워드 **load pdf as image**가 등장합니다. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*왜 중요한가:* `aocr.Image.load`는 내부적으로 각 PDF 페이지를 비트맵으로 래스터화하여 OCR 엔진이 이해할 수 있는 형태로 변환합니다. 이 단계를 건너뛰고 원본 PDF를 그대로 전달하면 엔진은 픽셀 데이터가 아니라 벡터 데이터를 받았다고 오류를 발생시킵니다. + +> **참고:** 경로는 절대 경로나 상대 경로 모두 가능합니다. 파일이 읽기 가능한지 확인하세요; 그렇지 않으면 `FileNotFoundError`가 발생합니다. + +## 2단계: PDF에서 OCR 실행 – 픽셀을 문자로 변환 + +PDF가 이미지 형태가 되었으니 이제 **run OCR on PDF**를 수행할 수 있습니다. 아래 스니펫은 모든 페이지를 한 번에 처리합니다: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*내부에서 무슨 일이 일어나나요?* `process_all_pages`는 래스터화된 페이지들을 순회하면서 OCR 모델을 적용하고, 페이지당 하나씩 결과 객체 리스트를 반환합니다. 각 결과에는 인식된 텍스트, 신뢰도 점수, 그리고 필요 시 사용할 수 있는 바운딩 박스가 포함됩니다. + +## 3단계: PDF에서 텍스트 추출 – 문자열 가져오기 + +OCR 결과를 얻었으니 이제 순수 텍스트를 추출하는 일은 매우 간단합니다. 페이지를 순회하면서 출력을 프린트하고, 보조 키워드 **extract text from pdf**를 시연합니다. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**예상 출력** (간략히 표시): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +텍스트를 하나의 문자열로 합치고 싶다면 간단히 연결하면 됩니다: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +이제 OCR을 사용해 **PDF에서 텍스트를 성공적으로 추출**했습니다. + +## 4단계: 스캔된 PDF 변환 – 검색 가능하게 만들기 + +많은 하위 시스템(예: Elasticsearch 또는 SharePoint)은 텍스트 덤프보다 검색 가능한 PDF를 기대합니다. OCR 결과를 원본 PDF에 다시 삽입하면 **convert scanned PDF**를 통해 검색 가능한 버전을 만들 수 있습니다. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*왜 이렇게 할까?* 검색 가능한 PDF는 원본 레이아웃과 이미지를 유지하면서 텍스트 선택 및 색인화를 가능하게 하므로 사람과 기계 모두에게 이득이 됩니다. + +## 흔히 발생하는 문제 및 예외 상황 + +### 메모리보다 큰 다중 페이지 PDF + +PDF 페이지가 수백 장에 달한다면 한 번에 모두 로드하면 RAM이 부족해질 수 있습니다. `aocr` 라이브러리는 지연 로딩을 지원합니다: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +그런 다음 페이지를 하나씩 처리합니다: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### 저품질 스캔 + +흐리거나 대비가 낮은 스캔에서는 OCR 정확도가 크게 떨어집니다. 이미지를 엔진에 전달하기 전에 전처리를 고려하세요: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### 언어 지원 + +기본적으로 엔진은 영어를 가정합니다. 다른 언어로 **run OCR on PDF**를 수행하려면 언어 코드를 설정하세요: + +```python +ocr_engine.language = "spa" # Spanish +``` + +해당 언어 모델이 설치되어 있는지 확인하십시오. + +## 전체 작업 예시 + +모든 내용을 합치면 `ocr_pdf.py`라는 파일에 바로 넣어 실행할 수 있는 독립형 스크립트가 됩니다: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +다음과 같이 실행합니다: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +콘솔에 텍스트가 출력되는 것을 확인할 수 있으며, `-o` 옵션을 제공한 경우 원본 파일 옆에 검색 가능한 PDF가 생성됩니다. + +## 전문가 팁 및 모범 사례 + +- **배치 처리:** 수십 개의 PDF를 다룰 때는 위 로직을 루프에 감싸고 각 파일의 성공/실패를 로그에 기록하세요. +- **신뢰도 필터링:** 각 `page_result`에는 신뢰도 메트릭이 포함됩니다. 신뢰도가 낮은 페이지는 수동 검토를 위해 버리거나 플래그를 지정하세요. +- **병렬 처리:** CPU에 코어가 여러 개 있다면 `concurrent.futures`를 사용해 페이지를 병렬로 처리해 보세요—단, 메모리 사용량에 유의하십시오. +- **버전 고정:** `aocr` API는 변할 수 있습니다. `requirements.txt`에 버전을 고정(`aocr==2.3.1` 등)하여 깨지는 변경을 방지하세요. + +## 결론 + +우리는 **OCR 사용 방법**을 통해 **PDF에서 텍스트 추출**, **PDF에서 OCR 실행**, **PDF를 이미지로 로드**, 그리고 **스캔된 PDF를 검색 가능한 형식으로 변환**하는 전체 과정을 살펴보았습니다. 코드는 완전하고 설명은 *무엇을* 그리고 *왜* 하는지를 모두 다루며, 이제 이미지 기반 PDF를 다루는 모든 프로젝트에 재사용 가능한 패턴을 갖추게 되었습니다. + +다음은? 추출한 텍스트를 자연어 파이프라인에 넣어 보거나, Elasticsearch로 검색 가능한 PDF를 색인화하거나, Tesseract나 Azure Computer Vision 같은 다른 OCR 백엔드를 실험해 보세요. 가능성은 무한하고, 도구는 이미 여러분 손에 있습니다. + +행복한 코딩 되세요, 그리고 여러분의 PDF가 언제나 검색 가능하기를 바랍니다! + +![OCR 사용 예시](/images/ocr_workflow.png "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/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/korean/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..30ffd6c8f --- /dev/null +++ b/ocr/korean/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: Python에서 OCR용 이미지를 로드하기 위해 스레딩을 사용하는 방법. 콜백, 백그라운드 스레드 및 이미지 로딩을 활용한 + 비동기 OCR 처리를 몇 단계만에 배워보세요. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: ko +og_description: Python에서 OCR을 위해 이미지를 로드할 때 스레딩을 사용하는 방법. 이 가이드는 콜백 및 백그라운드 실행이 포함된 + 완전하고 실행 가능한 예제를 보여줍니다. +og_title: OCR를 위해 이미지를 로드할 때 스레딩을 사용하는 방법 +tags: +- Python +- Threading +- OCR +- Image Processing +title: OCR을 위해 이미지를 로드할 때 스레딩을 사용하는 방법 +url: /ko/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# 스레딩을 사용하여 OCR용 이미지 로드하는 방법 + +앱이 멈추지 않게 **스레딩을 사용하여** OCR용 이미지를 로드하는 방법이 궁금하셨나요? 데스크톱 스캐너를 만들든, 웹 서비스를 구축하든, 대용량 사진을 처리하는 간단한 스크립트를 작성하든 언제든 나타나는 상황입니다. 좋은 소식은? 몇 줄의 Python 코드와 올바른 스레딩 패턴만 있으면 OCR 엔진이 작업을 수행하는 동안 UI를 부드럽게 유지할 수 있다는 것입니다. + +이 튜토리얼에서는 전체 엔드‑투‑엔드 예제를 단계별로 살펴봅니다: 큰 PNG 파일을 로드하고, 백그라운드 스레드에서 OCR을 시작하며, 콜백으로 결과를 처리합니다. 끝까지 따라오시면 **스레딩을 사용하는 방법**뿐만 아니라 **OCR용 이미지를 로드하는 방법**을 깔끔하고 재사용 가능한 방식으로 익히게 됩니다. + +## 필요 사항 + +- Python 3.9+ (우리가 사용하는 문법은 최신 버전이면 모두 동작합니다) +- `pillow` 이미지 처리용 (`pip install pillow`) +- `pytesseract` Tesseract OCR의 얇은 래퍼 (`pip install pytesseract`) +- 머신에 설치된 Tesseract OCR 엔진 (다운로드: [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- 처리하려는 큰 이미지 파일 (`large_image.png` 예시) + +추가 프레임워크 없이, async/await 없이—클래식 `threading`과 콜백만 사용합니다. + +## 단계 1: 백그라운드 실행을 위한 Threading 모듈 가져오기 + +먼저 `threading` 모듈을 가져옵니다. 이 모듈은 `Thread` 클래스를 제공해, 어떤 함수든 별도의 OS 스레드에서 실행할 수 있게 해줍니다. + +```python +import threading +``` + +*Why this matters*: 메인 스레드에서 OCR을 실행하면 프로그램(특히 GUI)이 OCR이 끝날 때까지 멈춥니다. 작업을 백그라운드 스레드에 위임하면 메인 스레드는 UI 업데이트, 사용자 입력 처리, 혹은 다른 작업을 계속 수행할 수 있습니다. + +## 단계 2: OCR이 완료될 때 호출되는 콜백 정의하기 + +콜백은 작업이 끝났을 때 다른 코드가 호출하는 함수입니다. 여기서는 인식된 텍스트를 출력하지만, 저장하거나 네트워크로 전송하거나 UI 위젯을 업데이트할 수도 있습니다. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Pro tip*: 콜백은 가볍게 유지하세요. 콜백 내부에서 무거운 처리를 하면 스레딩의 의미가 사라집니다. 여전히 콜백을 호출한 스레드(보통 메인 스레드)를 차단하게 되기 때문입니다. + +## 단계 3: 처리할 이미지 로드하기 + +이미지 로드는 OCR과 별개의 작업이지만 전체 워크플로의 일부입니다. Pillow를 사용하면 매우 간단합니다. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Why we do it here*: 이미지가 거대하면 메인 스레드에서 로드하는 것만으로도 지연이 발생할 수 있습니다. 실제 앱에서는 로딩도 스레드에 넘기지만, 여기서는 이해를 돕기 위해 동기식으로 유지합니다. + +## 단계 4: 작은 OCR 엔진 래퍼 만들기 + +원본 예제는 `engine.process_async`를 사용했습니다. 여기서는 내부에서 스레드를 시작하고 작업이 끝나면 전달된 콜백을 호출하는 작은 클래스로 이를 흉내냅니다. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Explanation*: +- `_run_ocr`가 실제 OCR 작업을 수행합니다. +- `process_async`는 `Thread` 객체를 만들고, 데몬으로 설정(스레드가 아직 실행 중이어도 인터프리터가 종료될 수 있도록)한 뒤 시작합니다. +- 콜백은 OCR 텍스트 또는 오류 메시지를 받게 됩니다. + +## 단계 5: 모든 것을 연결하고 OCR이 실행되는 동안 다른 작업 수행하기 + +이제 전체 흐름을 조정합니다: 이미지를 로드하고, 엔진을 인스턴스화하고, 비동기 OCR을 시작한 뒤, 메인 스레드에서는 다른 작업(여기서는 메시지 출력)을 수행합니다. + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**예상 출력 (간략히 표시):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +OCR이 실패하면 콜백이 텍스트 대신 오류 메시지를 출력합니다. + +--- + +## 왜 이 접근 방식이 단순 루프보다 더 나은가 + +- **Responsiveness**: 메인 스레드가 OCR 호출에 절대 블록되지 않으므로, 큰 이미지에 대해 몇 초가 걸리더라도 UI가 멈추지 않습니다. +- **Scalability**: 여러 `SimpleOcrEngine` 인스턴스를 각각 별도 스레드에서 실행해 이미지 배치를 동시에 처리할 수 있습니다. +- **Separation of Concerns**: 로딩, 처리, 결과 핸들링이 명확히 분리돼 코드 테스트와 유지보수가 쉬워집니다. + +## 흔히 발생하는 실수와 회피 방법 + +| Pitfall | What Happens | Fix | +|---------|--------------|-----| +| Forgetting to mark the thread as *daemon* | 메인 작업이 끝난 뒤에도 OCR 스레드가 살아 있어 스크립트가 종료되지 않습니다. | `worker.daemon = True` **또는** 종료 전에 `join()` 호출 | +| Using a global variable for the result without locks | 여러 스레드가 동시에 쓰면 데이터가 손상될 수 있는 레이스 컨디션이 발생합니다. | 콜백을 통해 결과 전달(예시와 같이)하거나 `queue.Queue` 같은 스레드‑안전 컨테이너 사용 | +| Loading a massive image on the main thread | 백그라운드 OCR이 시작되기 전 UI가 멈춥니다. | 이미지 로딩도 스레드에 넘기거나 지연 로딩 기법 사용 | +| Not handling exceptions inside the worker thread | 예외가 잡히지 않으면 스레드가 조용히 죽고 결과를 받지 못합니다. | OCR 로직을 `try/except`로 감싸고 오류를 콜백으로 전달 | + +## 이 패턴 확장하기 + +- **Progress Reporting**: 공유 `queue.Queue`를 사용해 OCR 스레드에서 중간 진행률(퍼센트)을 메인 스레드로 푸시합니다. +- **Thread Pool**: 배치 처리 시 개별 `Thread` 대신 `concurrent.futures.ThreadPoolExecutor`를 사용해 스레드 풀을 구성합니다. +- **GUI Integration**: Tkinter 또는 PyQt 앱에서는 `after()`(Tkinter) 혹은 `QTimer.singleShot`(Qt)으로 콜백을 스케줄해 UI 업데이트가 메인 스레드에서 이루어지도록 합니다. + +## 전체 작동 예제 (복사‑붙여넣기 가능) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/polish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..47136d831 --- /dev/null +++ b/ocr/polish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-04-26 +description: Wyodrębnij tekst nagłówka przy użyciu OCR w Pythonie Aspose OCR. Dowiedz + się, jak szybko i niezawodnie wyodrębniać tekst z określonego obszaru obrazu. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: pl +og_description: Szybko wyodrębnij tekst nagłówka przy użyciu OCR. Ten przewodnik pokazuje, + jak wyodrębnić tekst z określonego obszaru przy użyciu Python Aspose OCR w kilku + linijkach. +og_title: Ekstrahowanie tekstu nagłówka OCR w Pythonie z Aspose OCR – Kompletny poradnik +tags: +- OCR +- Python +- Aspose +title: Wyodrębnianie tekstu nagłówka OCR przy użyciu Python Aspose OCR – Przewodnik + krok po kroku +url: /pl/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Ekstrahowanie Tekstu Nagłówka OCR – Pełny Samouczek Python Aspose OCR + +Czy kiedykolwiek potrzebowałeś **ekstrahować tekst nagłówka OCR** z zeskanowanej faktury, ale nie chciałeś przetwarzać całej strony? Nie jesteś jedyny. W wielu rzeczywistych przepływach nagłówek zawiera najważniejsze informacje — numer faktury, data, nazwa dostawcy — więc szybkie wyodrębnienie go może zaoszczędzić dużo pracy w dalszych etapach. + +W tym samouczku pokażemy gotowe rozwiązanie, które **ekstrahuje tekst z określonego obszaru** przy użyciu biblioteki **Python Aspose OCR**. Bez niejasnych odwołań do zewnętrznych dokumentacji, tylko kompletny skrypt, jasne wyjaśnienie każdej linii i wskazówki, które naprawdę wykorzystasz jutro. + +## Co się nauczysz + +- Jak zainstalować i zaimportować pakiet Aspose OCR dla Pythona. +- Jak wczytać obraz i zdefiniować **region zainteresowania (ROI)**, który izoluje nagłówek. +- Jak uruchomić silnik OCR na tym ROI i uzyskać czysty tekst. +- Typowe pułapki (np. niezgodności DPI) i jak ich unikać. +- Jak wygląda oczekiwany wynik, abyś mógł zweryfikować poprawność działania. + +Po zakończeniu będziesz mógł wkleić ten kod do dowolnego projektu, który wymaga **ekstrahowania tekstu nagłówka OCR** z faktur, paragonów lub innych dokumentów o przewidywalnym układzie. + +## Wymagania wstępne + +- Python 3.8 lub nowszy zainstalowany na Twoim komputerze. +- Ważna licencja Aspose OCR for Python (bezpłatna wersja próbna działa w trybie ewaluacyjnym). +- Plik obrazu (`invoice.png`) zawierający wyraźny obszar nagłówka. +- Podstawowa znajomość funkcji Pythona i ścieżek plików. + +> **Pro tip:** Jeśli testujesz na skanie o niskiej rozdzielczości, zwiększ DPI przed przekazaniem go do Aspose OCR – to dramatycznie poprawia dokładność. + +--- + +## Krok 1: Instalacja pakietu Aspose OCR + +Najpierw dodaj bibliotekę do swojego środowiska. Oficjalny pakiet to `aspose-ocr`. Uruchom to raz: + +```bash +pip install aspose-ocr +``` + +Jeśli używasz wirtualnego środowiska (bardzo zalecane), aktywuj je przed instalacją. Dzięki temu pakiet nie będzie kolidował z innymi projektami. + +## Krok 2: Import wymaganych klas i wczytanie obrazu + +Teraz wprowadzamy niezbędne klasy do skryptu i wczytujemy obraz faktury. Zauważ użycie **pełnych ścieżek**; ścieżki względne również działają, ale ścieżki bezwzględne usuwają niejasności, gdy skrypt uruchamiany jest na serwerze. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Dlaczego to ważne:** Inicjalizacja `OcrEngine` raz i ponowne użycie go dla wielu obrazów jest bardziej wydajne niż tworzenie nowego silnika przy każdym wywołaniu. + +## Krok 3: Definicja regionu nagłówka (ROI) + +Nagłówek zazwyczaj znajduje się u góry strony, ale jego dokładne współrzędne mogą się różnić. Tutaj definiujemy prostokąt (`x`, `y`, `width`, `height`), który obejmuje nagłówek. Dostosuj liczby, aby pasowały do układu Twojego dokumentu. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Jak to działa:** Wywołując `set_roi`, silnik OCR ogranicza analizę do tego prostokąta, co znacznie przyspiesza przetwarzanie i redukuje szumy pochodzące z reszty strony. + +## Krok 4: Zastosowanie ROI i uruchomienie OCR + +Teraz instruujemy silnik, aby skupił się na regionie nagłówka, a następnie wykonujemy proces OCR. Obiekt wyniku zawiera rozpoznany tekst oraz dodatkowe metadane (wyniki pewności, język itp.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Jeśli OCR się nie powiedzie (np. nieobsługiwany format obrazu), `ocr_result` będzie `None`. Prosta instrukcja ochronna może uczynić Twój skrypt bardziej odpornym: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Krok 5: Pobranie i wyświetlenie wyekstrahowanego tekstu nagłówka + +Na koniec wyciągamy tekst z obiektu wyniku i wyświetlamy go. Możesz również zapisać go do pliku lub przekazać do innej funkcji w celu dalszej analizy. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Oczekiwany wynik + +Gdy wszystko jest poprawnie skonfigurowane, powinieneś zobaczyć coś w stylu: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Jeśli wynik wygląda na zniekształcony, sprawdź ponownie współrzędne ROI i upewnij się, że źródłowy obraz ma wysoki kontrast. + +--- + +## Warianty i przypadki brzegowe + +### 1. Wiele nagłówków w jednym dokumencie + +Czasami PDF zawiera kilka stron, z których każda ma własny nagłówek. Pętlą przechodź po stronach i dostosuj ROI dla każdej z nich: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Radzenie sobie z nachylonymi skanami + +Jeśli faktura jest lekko obrócona, wstępnie przetwórz obraz przy użyciu OpenCV przed przekazaniem go do Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Zmiana ustawień językowych + +Aspose OCR może automatycznie wykrywać język, ale możesz wymusić angielski dla szybszych wyników: + +```python +ocr_engine.language = "en" +``` + +--- + +## Pełny działający przykład + +Poniżej znajduje się kompletny skrypt, który możesz skopiować i wkleić do pliku o nazwie `extract_header.py`. Pamiętaj, aby zamienić ścieżkę obrazu na własną. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Uruchomienie tego skryptu powinno wypisać linie nagłówka dokładnie tak, jak pokazano wcześniej. Śmiało modyfikuj wartości `roi`, aby dopasować je do konkretnego szablonu faktury. + +--- + +## Najczęściej zadawane pytania + +**P: Czy to działa bezpośrednio z PDF‑ami?** +O: Nie od razu. Konwertuj każdą stronę PDF na obraz (np. przy użyciu `pdf2image`), a następnie podaj PNG/JPG do skryptu. + +**P: Co zrobić, gdy mój nagłówek zawiera jednocześnie logo i tekst?** +O: Aspose OCR koncentruje się na treści tekstowej. W przypadku logo rozważ użycie osobnej biblioteki rozpoznawania obrazu, takiej jak `opencv` lub `tesseract` z modelem niestandardowym. + +**P: Czy wersja próbna ma ograniczenia?** +O: Próba pozwala na przetworzenie do 10 stron miesięcznie. Do produkcji zakup licencję, aby usunąć limit i odblokować wyższe ustawienia dokładności. + +--- + +## Zakończenie + +Masz teraz **kompletny, godny cytowania** przewodnik do **ekstrahowania tekstu nagłówka OCR** przy użyciu **Python Aspose OCR**. Samouczek obejmuje wszystko od instalacji po obsługę przypadków brzegowych i dostarcza funkcję, którą możesz wkleić do większych przepływów pracy. + +Następnie możesz zbadać **ekstrahowanie tekstu z konkretnych obszarów** dla innych stref, takich jak stopki czy pozycje faktury, lub połączyć to podejście z konwerterem PDF‑do‑obrazu, aby zautomatyzować pełne pipeline’y dokumentów. Możliwości są nieograniczone — pamiętaj tylko, aby współrzędne ROI były precyzyjne, a obrazy wysokiej rozdzielczości. + +Masz trudny układ? Podziel się w komentarzach, a wspólnie dopasujemy ROI. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/polish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..71b814084 --- /dev/null +++ b/ocr/polish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-04-26 +description: Wyodrębniaj tekst z obrazu przy użyciu Aspose OCR w Pythonie. Dowiedz + się, jak wyodrębniać tekst, konwertować obraz na tekst oraz ładować obraz do OCR + z obsługą wielu języków. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: pl +og_description: wyodrębnij tekst z obrazu natychmiast. Ten przewodnik pokazuje, jak + wyodrębnić tekst, przekształcić obraz w tekst i załadować obraz do OCR przy użyciu + Aspose OCR w Pythonie. +og_title: wyodrębnij tekst z obrazu przy użyciu Pythona – kompletny wielojęzyczny + tutorial OCR +tags: +- OCR +- Python +- Aspose +title: Wyodrębnianie tekstu z obrazu w Pythonie – Przewodnik po wielojęzycznym OCR +url: /pl/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# wyodrębnianie tekstu z obrazu w Pythonie – Przewodnik po wielojęzycznym OCR + +Kiedykolwiek potrzebowałeś **wyodrębnić tekst z obrazu**, ale nie wiedziałeś, która biblioteka poradzi sobie ze stronami zawierającymi wiele języków? Nie jesteś sam. W wielu rzeczywistych aplikacjach — myśl o przetwarzaniu faktur, monitoringu mediów społecznościowych czy archiwizacji dokumentów wielojęzycznych — natrafisz na obrazy zawierające zarówno znaki łacińskie, jak i cyrylicę. + +Dobra wiadomość? Dzięki Aspose OCR for Python możesz **wyodrębnić tekst**, **przekształcić obraz w tekst** i **wczytać obraz do OCR** w kilku linijkach kodu, a silnik sam wykryje język. W tym tutorialu przeprowadzimy kompletny, gotowy do uruchomienia przykład, wyjaśnimy, dlaczego każdy krok ma znaczenie, oraz omówimy kilka przypadków brzegowych, które mogą się pojawić. + +> **Co zyskasz po zakończeniu** +> * Gotowy skrypt, który pobiera tekst z wielojęzycznego pliku PNG. +> * Zrozumienie, jak skonfigurować wielojęzyczny OCR w Pythonie. +> * Wskazówki dotyczące obsługi dużych plików, różnych formatów obrazów oraz debugowania typowych problemów. + +## Wymagania wstępne + +- Python 3.8 lub nowszy (kod używa f‑stringów). +- Pakiet `asposeocr` zainstalowany (`pip install asposeocr`). +- Plik obrazu (np. `mixed_lang.png`) zawierający tekst w więcej niż jednym systemie pisma. +- Podstawowa znajomość importów w Pythonie i API opartego na obiektach. + +Brak ciężkich zależności, brak zewnętrznych usług — wystarczy jednorazowa instalacja pip i możesz zaczynać. + +--- + +## Krok 1 – Instalacja i import biblioteki Aspose OCR + +Zanim będziemy mogli **wczytać obraz do OCR**, potrzebujemy samej biblioteki. Pakiet zawiera rdzeniowy silnik OCR oraz lekki loader obrazów. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Dlaczego to ważne*: Importowanie konkretnych klas utrzymuje porządek w przestrzeni nazw i sprawia, że późniejszy kod jest czytelniejszy. Jeśli zaimportujesz tylko `asposeocr`, będziesz musiał kwalifikować każde wywołanie (`aocr.OcrEngine()`), co jest uciążliwe. + +--- + +## Krok 2 – Utworzenie silnika OCR i włączenie wykrywania wielojęzycznego + +Aspose OCR potrafi automatycznie odgadnąć język(i) obecne na obrazie. Ustawienie `Language.AUTO` obejmuje łaciński, cyrylicę, arabski i wiele innych. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Wskazówka*: Jeśli znasz zestaw języków z góry, możesz przypisać `Language.ENGLISH` lub `Language.RUSSIAN` dla niewielkiego przyspieszenia. Jednak w przypadku naprawdę mieszanych dokumentów `AUTO` jest najbezpieczniejszym wyborem. + +--- + +## Krok 3 – Wczytanie obrazu, który chcesz przetworzyć + +Tutaj **wczytujemy obraz do OCR**. Aspose obsługuje PNG, JPEG, BMP, TIFF, a nawet strony PDF traktowane jako obrazy. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Wskazówka**: Jeśli Twój obraz jest większy niż 2 MB, rozważ jego zmniejszenie przed przetworzeniem. Duże obrazy zwiększają zużycie pamięci i mogą spowolnić etap wykrywania. + +--- + +## Krok 4 – Uruchomienie procesu OCR i pobranie wyniku + +Wywołanie `process()` wykonuje ciężką pracę: wykrywanie tekstu, analizę układu i dekodowanie języka. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +Zwrócony obiekt `ocr_result` zawiera kilka przydatnych właściwości: + +| Właściwość | Opis | +|------------|------| +| `text` | Zwykły ciąg znaków rozpoznanego tekstu (to, czego najczęściej używasz). | +| `confidence` | Ogólna ocena pewności (0‑100). | +| `lines` | Lista obiektów `OcrLine` z danymi pozycjonowania (przydatne przy PDF‑ach). | + +--- + +## Krok 5 – Wyświetlenie wyodrębnionego tekstu + +Na koniec wypisujemy wynik. W prawdziwej aplikacji możesz zapisać go w bazie danych lub przekazać do API tłumaczeniowego. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Oczekiwany wynik** (przykład dla obrazu wielojęzycznego): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Jeśli zobaczysz zniekształcone znaki, sprawdź, czy obraz nie jest uszkodzony oraz czy używasz najnowszej wersji `asposeocr` (v23.7 w momencie pisania). + +--- + +## Krok 6 – Pełny skrypt, który możesz skopiować i wkleić + +Połączenie wszystkiego w jedną całość eliminuje niepewność „gdzie zaczyna się kod?”. Zapisz to jako `multilingual_ocr.py` i uruchom z wiersza poleceń. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Uruchom: + +```bash +python multilingual_ocr.py +``` + +Powinieneś zobaczyć wyodrębnione ciągi wypisane w konsoli. To wszystko — **przekształć obraz w tekst** w kilku linijkach kodu. + +--- + +## Częste pytania i obsługa przypadków brzegowych + +### Co zrobić, jeśli mój obraz zawiera odręczny tekst? +Aspose OCR jest zoptymalizowany pod kątem druku. Skrypty odręczne często wymagają dedykowanego modelu (np. Azure Read lub Google Vision). Możesz nadal spróbować `Language.AUTO`, ale oczekuj niższej pewności. + +### Jak poprawić dokładność przy zaszumionych skanach? +1. Wstępnie przetwórz obraz (binaryzacja, odszumianie). +2. Zwiększ DPI do co najmniej 300 ppi przed przekazaniem go silnikowi. +3. Ustaw explicite `ocr_engine.config.deskew = True`, jeśli obraz jest przechylony. + +```python +ocr_engine.config.deskew = True +``` + +### Czy mogę wyodrębnić tekst z PDF‑a bez konwertowania go najpierw na obraz? +Tak — Aspose OCR może otworzyć strony PDF bezpośrednio: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Pamiętaj tylko, że każda strona jest wewnętrznie traktowana jako obraz, więc te same uwagi dotyczące jakości mają zastosowanie. + +--- + +## Podsumowanie + +Masz teraz solidny, kompletny przepis na **wyodrębnianie tekstu z obrazu** przy użyciu Aspose OCR w Pythonie, z pełnym wsparciem wielojęzycznym. Skrypt pokazuje, jak **wczytać obraz do OCR**, **przekształcić obraz w tekst** i radzić sobie z najczęstszymi pułapkami. + +Od tego momentu możesz: + +- Zintegrować funkcję z usługą webową przyjmującą pliki od użytkowników. +- Połączyć wyodrębniony tekst z biblioteką wykrywania języka, aby kierować go do odpowiedniego silnika tłumaczeń. +- Eksperymentować z opcjami `ocr_engine.config` (np. `max_recognition_time`, `text_orientation`), aby dopasować wydajność. + +Miłego kodowania i niech Twoje potoki OCR będą zawsze precyzyjne! + +--- + +![Screenshot of extracted multilingual text – extract text from image example](image-placeholder.png "przykład wyodrębniania 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/polish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/polish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..e014b6669 --- /dev/null +++ b/ocr/polish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-04-26 +description: Jak przetwarzać dokumenty wsadowo przy użyciu OCR i wyodrębniać tekst + ze skanów w Pythonie. Naucz się krok po kroku przetwarzania wsadowego z OcrEngine, + aby uzyskać wynik w formacie JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: pl +og_description: Jak przetwarzać wsadowo OCR swoich zeskanowanych plików i wyodrębniać + tekst ze skanów w jednym skrypcie. Pełny kod, wskazówki i obsługa przypadków brzegowych. +og_title: Jak wykonywać OCR wsadowo – szybki przewodnik Pythona +tags: +- OCR +- Python +- Automation +title: Jak wykonywać OCR wsadowo – Efektywne wyodrębnianie tekstu ze skanów +url: /pl/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak wykonać batch OCR – Efektywne wyodrębnianie tekstu ze skanów + +Zastanawiałeś się kiedyś **how to batch OCR** góry zeskanowanych PDF‑ów bez utraty zdrowia? Nie jesteś sam — programiści ciągle pytają: *„Jak mogę wyodrębnić tekst ze skanów w jednym kroku?”* Dobra wiadomość jest taka, że kilka linijek Pythona może zamienić tę żmudną czynność w płynną, zautomatyzowaną pipeline. + +W tym tutorialu przejdziemy krok po kroku przez kompletną, gotową do uruchomienia rozwiązanie, które **wyodrębnia tekst ze skanów**, zapisuje wyniki jako JSON i daje szybki kontrolny podgląd na końcu. Bez zewnętrznych usług, bez magii — tylko czysty Python, klasa `OcrEngine` i odrobina obsługi folderów. + +## Co zyskasz po przeczytaniu + +- W pełni funkcjonalny skrypt, który **batches OCR** nad dowolnym folderem obrazów. +- Jasne wyjaśnienia *dlaczego* każda linijka istnieje, nie tylko *co* robi. +- Wskazówki dotyczące obsługi pustych folderów, plików nie‑obrazowych i dużych partii. +- Sposób na weryfikację, że wyjściowy JSON faktycznie zawiera wyodrębniony tekst. + +### Wymagania wstępne (minimum) + +| Wymaganie | Dlaczego to ważne | +|-----------|-------------------| +| Python 3.8+ | Nowoczesna składnia i podpowiedzi typów | +| `OcrEngine` library (or a compatible wrapper) | Główna funkcjonalność OCR | +| Katalog z zeskanowanymi plikami obrazów (PNG, JPG, TIFF) | Dane wejściowe | +| Uprawnienia do zapisu w folderze wyjściowym | Zapis wyników JSON | + +Jeśli już masz to wszystko, świetnie — zanurzmy się. + +![how to batch OCR workflow](image-placeholder.png){alt="jak wykonać batch OCR"} + +## Krok 1 – Inicjalizacja silnika OCR (how to batch OCR) + +Zanim będziemy mogli coś przetworzyć, potrzebujemy instancji silnika OCR. To „mózg”, który odczyta każdy obraz i zwróci tekst. Inicjalizacja go raz i ponowne użycie w całej partii to najefektywniejszy wzorzec. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Dlaczego warto używać tej samej instancji?** +> Tworzenie nowego silnika dla każdego pliku powodowałoby wielokrotne ładowanie ciężkich modeli do pamięci, co dramatycznie spowalnia batch. Jedna instancja utrzymuje model w RAM i pozwala przetworzyć tysiące obrazów bez zauważalnego spowolnienia. + +## Krok 2 – Wskazanie folderu ze skanami (extract text from scans) + +Twoje skany znajdują się gdzieś na dysku. Powiedzmy skryptowi, gdzie ich szukać. Użycie ścieżek bezwzględnych eliminuje niespodzianki typu „plik nie znaleziony”, gdy skrypt uruchomiony jest z innego katalogu roboczego. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Pro tip:** +> Jeśli pracujesz w Windows, ukośniki (`/`) działają bez problemu z `os.path.abspath`, więc nie musisz uciekać backslashy. + +## Krok 3 – Wybór miejsca na wyniki JSON + +Prawdopodobnie chcesz mieć uporządkowany folder na wyniki OCR. Trzymanie wyjścia oddzielnie od źródła ułatwia późniejsze czyszczenie lub podanie JSON‑a do kolejnej pipeline. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Dlaczego tworzyć folder programowo?** +> Gwarantuje to, że skrypt nie wykrzyknie błędu, jeśli katalog nie istnieje, a `exist_ok=True` sprawia, że operacja jest idempotentna — możesz uruchamiać skrypt wiele razy bez błędów. + +## Krok 4 – Uruchomienie procesu batch (how to batch OCR) + +Teraz serce sprawy: nakazujemy `ocr_engine` przejść przez każdy plik w `input_dir`, wykonać OCR i zapisać JSON w `output_dir`. Flaga `format="json"` mówi silnikowi, aby zserializował wynik w ustrukturyzowany sposób, który uwielbiają downstreamowe narzędzia. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Co się dzieje pod maską? + +1. **Odkrywanie plików** – Silnik skanuje `input_folder` rekurencyjnie, pomijając ukryte pliki. +2. **Walidacja plików** – Do modelu OCR trafiają tylko obsługiwane rozszerzenia obrazów (`.png`, `.jpg`, `.tif` itp.). +3. **Wykonanie OCR** – Każdy obraz jest przekazywany do silnika OCR; tekst, współczynniki pewności i dane układu są zbierane. +4. **Serializacja JSON** – Wynik zapisywany jest do pliku o tej samej nazwie bazowej, ale z rozszerzeniem `.json` w `output_folder`. + +> **Obsługa przypadków brzegowych:** +> - **Pusty folder:** Silnik loguje „No files found” i kończy działanie łagodnie. +> - **Uszkodzony obraz:** Pomija plik, zapisuje wpis błędu w `batch_errors.log` i kontynuuje. +> - **Ogromny batch (10 k+ plików):** Zużycie pamięci pozostaje niskie, ponieważ każdy obraz jest przetwarzany niezależnie. + +## Krok 5 – Potwierdzenie zakończenia konwersji + +Prosta instrukcja `print` daje natychmiastowy feedback w konsoli. W produkcyjnych pipeline’ach możesz zamienić ją na wywołanie loggera lub powiadomienie e‑mailowe. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Gdy zobaczysz tę linię, możesz bezpiecznie przyjrzeć się folderowi `json_output`. Każdy plik JSON będzie wyglądał mniej‑więcej tak: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Teraz możesz podać te pliki JSON do bazy danych, indeksu wyszukiwania lub dowolnego narzędzia analitycznego. + +## Najczęściej zadawane pytania (i szybkie odpowiedzi) + +**Q: Co zrobić, jeśli muszę przetwarzać PDF‑y zamiast obrazów?** +A: Najpierw skonwertuj każdą stronę PDF‑a na obraz (np. przy użyciu `pdf2image`) i umieść powstałe pliki PNG/JPG w `input_dir`. Logika batch OCR pozostaje niezmieniona. + +**Q: Czy mogę zmienić format wyjścia na zwykły tekst?** +A: Oczywiście. Zamień `format="json"` na `format="txt"` i silnik zapisze plik `.txt` zawierający wyłącznie wyodrębniony tekst. + +**Q: Moje skany są w wielu podfolderach — czy skrypt będzie rekurencyjny?** +A: Tak. `batch_process` domyślnie przechodzi drzewo katalogów. Jeśli potrzebujesz płaskiego wyjścia, ustaw `flatten=True` (jeśli biblioteka to obsługuje) lub po‑procesuj nazwy plików JSON. + +**Q: Jak obsłużyć skrypty nie‑łacińskie?** +A: Zainicjalizuj `OcrEngine` z parametrem językowym, np. `OcrEngine(lang="spa+eng")`. Pętla batch nie wymaga żadnych zmian. + +## Pro Tips & Common Pitfalls + +- **Rozmiar batcha ma znaczenie:** Jeśli zauważysz skoki CPU, wstaw prostą `time.sleep(0.1)` pomiędzy plikami. +- **Logowanie:** Zamień wywołanie `print` na moduł `logging` w Pythonie, aby uchwycić znaczniki czasu i poziomy błędów. +- **Kolizje nazw plików:** Jeśli dwa skany mają tę samą nazwę bazową, ale znajdują się w różnych podfolderach, pliki JSON nadpiszą się. Dodaj hash względnej ścieżki do nazwy wyjściowej, aby tego uniknąć. +- **Wycieki pamięci:** Niektóre backendy OCR trzymają natywne zasoby. Wywołaj `ocr_engine.close()` na końcu skryptu, jeśli biblioteka udostępnia metodę czyszczenia. + +## Pełny skrypt – Gotowy do kopiowania i wklejenia + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Oczekiwany output w konsoli** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Możesz zweryfikować JSON, otwierając dowolny plik w `json_output` w edytorze tekstu lub wczytując go w Pythonie: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Powinieneś zobaczyć surowy tekst wyodrębniony przez OCR wypisany w konsoli. + +## Podsumowanie + +Właśnie omówiliśmy **how to batch OCR** całego katalogu zeskanowanych obrazów i **extract text from scans** do czystych, maszynowo czytelnych plików JSON. Podejście jest celowo proste: skonfiguruj silnik raz, wskaż folder i pozwól bibliotece wykonać ciężką pracę. Stąd możesz: + +- Podłączyć JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/polish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..7de0bf611 --- /dev/null +++ b/ocr/polish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-04-26 +description: Jak szybko i niezawodnie stworzyć OCR. Dowiedz się, jak wyodrębnić tekst + z obrazu, załadować obraz do OCR i uruchomić OCR na pliku PNG z własnym słownikiem. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: pl +og_description: Jak stworzyć OCR w Pythonie i wyodrębnić tekst z obrazu. Ten przewodnik + pokazuje, jak załadować obraz do OCR, uruchomić OCR na pliku PNG oraz używać własnego + słownika. +og_title: Jak stworzyć OCR w Pythonie – szybkie wyodrębnianie tekstu +tags: +- OCR +- Python +- Image Processing +title: Jak stworzyć OCR w Pythonie – wyodrębnić tekst z obrazu +url: /pl/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak stworzyć OCR w Pythonie – Przewodnik krok po kroku + +Zastanawiałeś się kiedyś **jak stworzyć OCR**, które potrafi odczytać Twoje zeskanowane PDF‑y, zrzuty ekranu lub odręczne notatki? Nie jesteś sam. W wielu rzeczywistych projektach musimy *wyodrębniać tekst z obrazów*, ale gotowe silniki często mają problemy ze słowami specyficznymi dla danej dziedziny. + +W tym samouczku zobaczysz kompletny, gotowy do uruchomienia przykład, który wczytuje obraz do OCR, stosuje własny słownik i w końcu **uruchamia OCR na plikach PNG**. Po zakończeniu będziesz mógł wyodrębniać tekst z dowolnego obrazu i dostosować silnik do własnej terminologii. + +## Co obejmuje ten samouczek + +* Instalacja małego, ale potężnego pakietu `aocr` (lub dowolnej kompatybilnej biblioteki). +* Konfiguracja **własnego słownika**, aby terminy takie jak `aspocorp` czy `licensekey` były rozpoznawane. +* **Wczytywanie obrazu do OCR**, niezależnie czy to PNG, JPEG, czy zeskanowana strona PDF. +* Uruchamianie procesu OCR i wyświetlanie wyniku. + +Brak zewnętrznych linków do dokumentacji, tylko samodzielne rozwiązanie, które możesz skopiować‑wkleić i uruchomić już dziś. + +### Wymagania wstępne + +* Python 3.8 lub nowszy (kod używa f‑stringów). +* Podstawowa znajomość wiersza poleceń – wpiszesz kilka poleceń `pip install`. +* Plik obrazu (`technical_doc.png` w przykładzie) umieszczony w miejscu, do którego możesz odwołać się. + +Jeśli spełniasz te trzy warunki, możesz zaczynać. + +--- + +## Krok 1: Zainstaluj bibliotekę OCR + +Najpierw potrzebujemy silnika OCR, który obsługuje programowalny obiekt konfiguracji. Pakiet `aocr` jest lekką nakładką na natywny silnik OCR i dobrze sprawdza się w demonstracjach. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Wskazówka:** Jeśli używasz Windows i napotkasz błąd kompilacji, spróbuj `pip install aocr‑binary`, który dostarcza gotowe pliki binarne. + +### Dlaczego zainstalować tę bibliotekę? + +`aocr` daje nam bezpośredni dostęp do obiektu `config`, w którym możemy wstrzyknąć **własny słownik**. To sekretna przyprawa poprawiająca dokładność w niszowych słownictwach. + +--- + +## Krok 2: Utwórz instancję silnika OCR i dodaj własny słownik + +Teraz uruchamiamy silnik i informujemy go, które słowa ma traktować jako znane. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Dlaczego własny słownik ma znaczenie + +Standardowe modele OCR są trenowane na ogólnych korpusach. Gdy model zobaczy „aspocorp”, może podzielić je na „aspo corp” lub całkowicie pominąć litery. Dostarczając własną listę, kierujemy rozpoznawanie w stronę dokładnej pisowni, którą potrzebujemy, co znacząco zmniejsza nakład pracy po przetworzeniu. + +--- + +## Krok 3: Wczytaj obraz, który chcesz przetworzyć + +Tutaj **wczytujemy obraz do OCR**. Metoda `Image.load` przyjmuje ciąg ścieżki i automatycznie określa typ pliku. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Przypadek brzegowy:** Jeśli źródłem jest wielostronicowy PDF, najpierw przekonwertuj każdą stronę na PNG (np. przy użyciu `pdf2image`) i podawaj je pojedynczo do silnika. + +### Wskazówki dla lepszej jakości obrazu + +* Utrzymuj rozdzielczość co najmniej 300 dpi. +* Upewnij się, że obraz jest prawidłowo ustawiony; w razie potrzeby obróć go przy użyciu `Pillow`. +* Przekształć kolorowe skany na odcienie szarości, aby zmniejszyć szumy. + +--- + +## Krok 4: Uruchom proces OCR na pliku PNG + +Po skonfigurowaniu silnika i wczytaniu obrazu, w końcu **uruchamiamy OCR na PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +Wywołanie `process()` zwraca obiekt zawierający rozpoznany tekst, oceny pewności oraz ramki ograniczające dla każdego słowa. + +--- + +## Krok 5: Wyświetl rozpoznany tekst + +Najprostszym sposobem, aby zobaczyć, co silnik znalazł, jest wydrukowanie atrybutu `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Oczekiwany wynik + +Jeśli `technical_doc.png` zawiera zdanie *„The Aspocorp licensekey expires on 2025‑12‑31.”*, konsola powinna wyświetlić: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Zauważ, jak własny słownik zachował nazwę marki w niezmienionej formie — coś, co standardowy OCR mógłby zniekształcić. + +--- + +## Pełny działający przykład (gotowy do kopiowania i wklejania) + +Poniżej znajduje się cały skrypt, gotowy do zapisania jako `run_ocr.py`. Wystarczy zamienić ścieżkę zastępczą na lokalizację swojego obrazu. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Uruchom go w terminalu: + +```bash +python run_ocr.py +``` + +Powinieneś zobaczyć wyodrębniony tekst wydrukowany w konsoli, dokładnie tak jak w poprzednim przykładzie. + +--- + +## Najczęściej zadawane pytania (FAQ) + +| Question | Answer | +|----------|--------| +| **Czy mogę wyodrębnić tekst ze zeskanowanego PDF?** | Tak. Najpierw przekonwertuj każdą stronę na PNG (lub TIFF), a następnie podaj obrazy do tego samego skryptu. | +| **Co jeśli mój obraz jest JPEG zamiast PNG?** | Metoda `Image.load` obsługuje JPEG, BMP, TIFF i PNG od razu. Wystarczy zmienić rozszerzenie pliku. | +| **Jak poprawić dokładność przy skanach o niskim kontraście?** | Wstępnie przetwórz przy użyciu `Pillow` – zwiększ kontrast, zastosuj binaryzację lub użyj `opencv` do prostowania. | +| **Czy istnieje sposób na uzyskanie ocen pewności dla każdego słowa?** | `ocr_result` zawiera `words` – każde słowo ma atrybut `confidence`, który możesz iterować. | +| **Czy mogę uruchomić to na serwerze bez interfejsu graficznego?** | Oczywiście. `aocr` nie ma zależności GUI, co czyni go idealnym dla potoków CI. | + +--- + +## Kolejne kroki i powiązane tematy + +Teraz, gdy wiesz **jak stworzyć OCR** i **wyodrębniać tekst z obrazów**, rozważ dalsze zagadnienia: + +* **Techniki wstępnego przetwarzania** – `load image for OCR` to tylko pierwszy krok; użyj `opencv` do odszumiania lub wyostrzania. +* **Przetwarzanie wsadowe** – iteruj po katalogu PNG‑ów, aby wygenerować przeszukiwane archiwum. +* **Wsparcie wielojęzyczne** – dodaj pakiety językowe do silnika, jeśli potrzebujesz czytać dokumenty po francusku lub niemiecku. +* **Integracja z Elasticsearch** – indeksuj wyodrębniony tekst, aby umożliwić pełnotekstowe wyszukiwanie w zeskanowanych zasobach. + +Każde z tych rozszerzeń opiera się na podstawowym wzorcu, który właśnie omówiliśmy, więc przejście będzie bezproblemowe. + +--- + +## Podsumowanie + +W ciągu kilku minut odpowiedzieliśmy na pytanie **jak stworzyć OCR**, które niezawodnie **wyodrębnia tekst z obrazów**, szczególnie PNG, i pokazaliśmy, jak **wczytać obraz do OCR**, zastosować **własny słownik** oraz **uruchomić OCR na PNG** bez żadnych zewnętrznych usług. + +Uruchom skrypt, dostosuj słownik do własnego żargonu i będziesz mieć solidną podstawę dla każdego projektu digitalizacji dokumentów. + +Jeśli napotkasz jakiekolwiek problemy, zostaw komentarz poniżej — chętnie pomogę. I nie zapomnij podzielić się swoimi sukcesami; społeczność najlepiej uczy się na rzeczywistych przykładach. + +**Gotowy, aby zautomatyzować swoje dokumenty?** Pobierz kod, dostosuj go i zacznij przekształcać piksele w przeszukiwalny tekst już dziś! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/polish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..118221ba6 --- /dev/null +++ b/ocr/polish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: jak wyodrębnić OCR z obrazów przy użyciu Pythona – przykład OCR w Pythonie, + który pokazuje, jak załadować obraz do OCR i wyodrębnić tekst z paragonu. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: pl +og_description: Jak wyodrębnić OCR z obrazów przy użyciu Pythona. Poznaj przykład + OCR w Pythonie, wczytaj obraz do OCR i wyodrębnij tekst z paragonu w kilka minut. +og_title: Jak wyodrębnić OCR w Pythonie – Kompletny przewodnik +tags: +- OCR +- Python +- Image Processing +title: Jak wyodrębnić OCR w Pythonie – Samouczek krok po kroku +url: /pl/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# jak wyodrębnić OCR w Pythonie – Kompletny przewodnik + +Zastanawiałeś się kiedyś **jak wyodrębnić OCR** z rozmazanego paragonu lub zeskanowanej faktury? Nie jesteś jedyny — programiści ciągle napotykają problemy, gdy potrzebują czystego, maszynowo‑czytelnego tekstu z obrazów. Dobra wiadomość? Kilka linijek Pythona wystarczy, aby zamienić zdjęcie paragonu w tekst o wysokiej pewności, gotowy do przeszukiwania. + +W tym tutorialu przejdziemy przez **przykład OCR w Pythonie**, który pokazuje **jak wczytać obraz do OCR**, uruchomić silnik i zachować tylko znaki spełniające próg pewności 85 %. Po zakończeniu będziesz w stanie **wyodrębnić tekst z paragonu** bez przeszukiwania dokumentacji i zgadywania parametrów API. + +## Co będzie potrzebne + +- Python 3.9 lub nowszy (używana składnia działa na 3.8+) +- Pakiet `aocr` (lub dowolna biblioteka OCR udostępniająca klasę `OcrEngine`). Zainstaluj go poleceniem: + +```bash +pip install aocr +``` + +- Przykładowy obraz paragonu (`receipt.png`) umieszczony w folderze, do którego możesz odwołać się w kodzie. +- Edytor tekstu lub IDE — VS Code, PyCharm, a nawet prosty notebook wystarczą. + +To wszystko. Bez ciężkich frameworków, bez zewnętrznych usług, tylko czysty Python. + +![Wynik OCR o wysokim poziomie pewności – jak wyodrębnić OCR z paragonu](/images/ocr-high-confidence.png) + +*Tekst alternatywny obrazu: jak wyodrębnić OCR z paragonu przy użyciu Python OCR* + +## Krok 1 – Utworzenie instancji silnika OCR (jak wyodrębnić OCR) + +Pierwszą rzeczą, którą robimy, jest uruchomienie silnika OCR. Pomyśl o nim jak o mózgu, który odczyta piksele za nas. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Dlaczego?** Inicjalizacja `OrcEngine` daje Ci świeży obiekt konfiguracji. Później możesz dostosować modele językowe, ustawienia DPI lub kroki wstępnego przetwarzania — wszystko bez modyfikacji głównej pętli przetwarzania. + +## Krok 2 – Wczytanie obrazu do OCR + +Następnie wskazujemy silnikowi obraz, który ma zostać przeanalizowany. To właśnie tutaj wkracza słowo kluczowe **load image for ocr**. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tip:** Jeśli Twój obraz znajduje się w innym katalogu, użyj `os.path.join`, aby zbudować ścieżkę niezależną od platformy. + +**Dlaczego wczytywać obraz w ten sposób?** Pomocnicza funkcja `Image.load` odczytuje plik do formatu rozumianego przez silnik, automatycznie obsługując popularne formaty (PNG, JPEG, TIFF). Pominięcie tego kroku lub podanie surowych bajtów spowoduje podniesienie `ValueError`. + +## Krok 3 – Uruchomienie procesu OCR + +Teraz faktycznie uruchamiamy OCR. Metoda `process` zwraca bogaty obiekt wyniku zawierający rozpoznane symbole, oceny pewności i ramki ograniczające. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Co zawiera `ocr_result`?** W większości bibliotek obejmuje on: + +- `text`: surowy, połączony ciąg znaków. +- `symbol_confidences`: listę krotek `(char, confidence)`. +- `boxes`: współrzędne dla każdego znaku (przydatne przy wizualnym debugowaniu). + +Dostęp do pewności na poziomie znaku jest niezbędny w następnym kroku. + +## Krok 4 – Zachowanie tylko symboli o wysokiej pewności (≥ 85 %) + +Paragon często ma rozmazy, słaby druk lub szumy tła. Filtrując symbole o niskiej pewności, znacznie poprawiamy dalsze przetwarzanie. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Dlaczego 85 %?** Empirycznie próg około 0,85 zapewnia równowagę między czułością a precyzją dla większości drukowanych paragonów. Jeśli zauważysz brakujące liczby, obniż próg; jeśli pojawi się bełkot, podnieś go. + +## Krok 5 – Wyświetlenie wyekstrahowanego tekstu o wysokiej pewności + +Na koniec drukujemy (lub zapisujemy) oczyszczony ciąg znaków. To sedno naszego **workflow wyodrębniania tekstu z paragonu**. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Typowy wynik wygląda tak: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Teraz możesz przekazać ten ciąg do zapisu CSV, bazy danych lub dowolnego kolejnego etapu analizy. + +## Pełny, gotowy do uruchomienia skrypt + +Poniżej znajduje się kompletny fragment kodu, który możesz skopiować do pliku `ocr_receipt.py` i od razu uruchomić. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Zapisz plik, upewnij się, że `receipt.png` istnieje, i wykonaj: + +```bash +python ocr_receipt.py +``` + +Powinieneś zobaczyć wyczyszczony tekst paragonu wypisany w konsoli. + +## Przypadki brzegowe i scenariusze „co‑jeśli” + +| Sytuacja | Sugerowane rozwiązanie | +|-----------|------------------------| +| **Bardzo niska pewność we wszystkich znakach** | Wstępnie przetwórz obraz: zwiększ kontrast, skonwertuj do odcieni szarości lub zastosuj filtr odszumiający (`cv2.GaussianBlur`). | +| **Znaki nie‑łacińskie** | Przekaż model językowy do `OcrEngine` (np. `ocr_engine.language = "spa"` dla hiszpańskiego). | +| **Wiele paragonów na jednym obrazie** | Uruchom OCR na całym obrazie, a potem podziel wynik przy pomocy wyrażeń regularnych wykrywających `\n\n+` (podwójne przełamania linii). | +| **Potrzeba surowego tekstu OCR** | Zachowaj `ocr_result.text` obok wersji filtrowanej w celach debugowania. | + +Te warianty zapewniają, że Twoja wiedza **jak używać OCR** skaluje się poza najprostszy przypadek. + +## Typowe pułapki (i jak ich unikać) + +- **Zapomnienie o instalacji biblioteki** – `pip install aocr` musi zakończyć się sukcesem przed importem. +- **Użycie niewłaściwego separatora ścieżki** w Windows (`\` vs `/`). Korzystaj z `os.path.join`. +- **Hard‑kodowanie progu pewności** bez testów – zawsze przeprowadź szybki podgląd kilku paragonów najpierw. +- **Ignorowanie normalizacji Unicode** – niektóre paragony zawierają specjalne znaki myślników; uruchom `unicodedata.normalize('NFKC', text)`, jeśli planujesz przechowywać wynik. + +## Kolejne kroki – wyjście poza podstawy + +Teraz, gdy wiesz **jak wyodrębnić OCR** z pojedynczego paragonu, możesz: + +1. **Przetwarzać wsadowo folder z paragonami** – iteruj po wszystkich plikach PNG/JPG i zapisz każdy wynik do CSV. +2. **Zintegrować z bazą danych** – przechowuj `high_confidence_text` w SQLite dla szybkich zapytań. +3. **Zastosować parsowanie języka naturalnego** – użyj regex lub `dateutil`, aby wyciągnąć daty, sumy i kwoty podatku. +4. **Eksperymentować z alternatywnymi bibliotekami** – `pytesseract`, `easyocr` lub usługi chmurowe (Google Vision, Azure OCR), jeśli potrzebujesz wsparcia wielojęzycznego lub wyższej dokładności. + +Każdy z tych tematów naturalnie włącza nasze drugorzędne słowa kluczowe: *python ocr example*, *extract text from receipt*, *load image for ocr* i *how to use OCR*. + +## Zakończenie + +Przeszliśmy kompletny **przykład OCR w Pythonie**, który pokazuje **jak wyodrębnić OCR** z obrazu paragonu, odfiltrować symbole o niskiej pewności i uzyskać czyste wyniki. Kroki są proste, kod jest samodzielny, a podejście na tyle elastyczne, że można je dostosować do większych projektów. + +Wypróbuj go na własnych paragonach, dostosuj próg pewności, a potem przejdź do przetwarzania wsadowego. Jeśli napotkasz problemy — np. słabe logo lub nietypową czcionkę — pamiętaj o wskazówkach dotyczących przypadków brzegowych. Powodzenia w kodowaniu i niech Twoje pipeline’y OCR będą zawsze precyzyjne! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/polish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..d19f1d659 --- /dev/null +++ b/ocr/polish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-04-26 +description: 'jak używać OCR w Pythonie: naucz się wyodrębniać tekst z obrazu i odczytywać + pliki TIFF w Pythonie przy użyciu podstawowego przykładu OCR. Szybki, gotowy do + uruchomienia kod w zestawie.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: pl +og_description: 'jak zrobić OCR w Pythonie: przewodnik krok po kroku, który pokazuje, + jak wyodrębnić tekst z obrazu, odczytać plik TIFF w Pythonie i konwertować tekst + zeskanowanego obrazu przy użyciu prostego, uruchamialnego skryptu.' +og_title: jak zrobić OCR w Pythonie – podstawowy przykład OCR do wyodrębniania tekstu +tags: +- OCR +- Python +- Image Processing +title: Jak zrobić OCR w Pythonie – podstawowy przykład wyodrębniania tekstu +url: /pl/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# jak zrobić OCR w Pythonie – Podstawowy przykład OCR do wyodrębniania tekstu + +Zastanawiałeś się kiedyś **jak zrobić OCR w Pythonie**, gdy na biurku leży zeskanowany plik TIFF? Nie jesteś jedynym, który patrzy na mnóstwo plików graficznych i pyta: „Jak wyciągnąć z tego słowa?” Dobra wiadomość jest taka, że przekształcenie obrazu w zwykły tekst to bułka z masłem przy użyciu odpowiedniej biblioteki i kilku prostych kroków. + +W tym samouczku przeprowadzimy Cię przez **podstawowy przykład OCR**, który odczytuje plik TIFF, wyodrębnia tekst i wyświetla go w konsoli. Po zakończeniu dokładnie będziesz wiedział, jak **wyodrębnić tekst z obrazu**, jak radzić sobie z specyfiką formatów TIFF oraz co dostosować, jeśli potrzebujesz **przekształcić zeskanowany tekst obrazu** w coś bardziej użytecznego. Bez ukrytej magii — po prostu prosty Python, który możesz skopiować‑wkleić i uruchomić już dziś. + +## Czego będziesz potrzebował + +- Python 3.9+ zainstalowany (najlepsza jest najnowsza stabilna wersja). +- Biblioteka OCR instalowana przez pip. W tym przewodniku użyjemy fikcyjnego pakietu `aocr`, który naśladuje popularne narzędzia takie jak Tesseract; później możesz zamienić go na `pytesseract` lub `easyocr`. +- Obraz TIFF, który chcesz przetworzyć – nazwij go `input.tiff` i umieść w folderze, do którego odwołasz się w kodzie. +- Podstawowa znajomość wiersza poleceń (tylko do instalacji pakietu). + +To wszystko. Bez ciężkich zależności, bez kontenerów Docker, tylko kilka linii kodu. + +## Krok 1 – Instalacja i import zależności (jak zrobić OCR w Pythonie) + +Najpierw pobierz pakiet OCR. Otwórz terminal i uruchom: + +```bash +pip install aocr +``` + +Jeśli wolisz rzeczywistą bibliotekę, zamień `aocr` na `pytesseract` i zainstaluj silnik Tesseract osobno. + +Teraz zaimportujmy to, czego potrzebujemy. Klasa `Path` z `pathlib` zapewnia wygodny sposób pracy ze ścieżkami plików na różnych systemach operacyjnych. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Dlaczego używać `Path`?* Ponieważ ukrywa różnice w separatorach (`/` vs `\`) i pozwala łączyć katalogi bez martwienia się o system operacyjny. Ten drobny szczegół często oszczędza problemy, gdy później przeniesiesz skrypt na serwer CI. + +## Krok 2 – Utworzenie instancji silnika OCR (podstawowy przykład OCR) + +Następnie uruchom silnik OCR. Pomyśl o `OcrEngine` jako o mózgu, który odczyta obraz i zwróci znaki. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +Większość bibliotek OCR pozwala tutaj dostosować język, DPI lub progi pewności. Dla tego **podstawowego przykładu OCR** pozostaniemy przy ustawieniach domyślnych, ale później możesz zbadać `ocr_engine.config`, jeśli potrzebujesz obsługiwać dokumenty wielojęzyczne. + +## Krok 3 – Załadowanie obrazu TIFF (odczyt pliku TIFF w Pythonie) + +Tutaj wkracza część **odczyt pliku TIFF w Pythonie**. Pliki TIFF mogą mieć wiele stron, ale `Image.load` domyślnie pobierze pierwszą stronę — idealne dla jednosktronicowego skanu. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Zastąp `"YOUR_DIRECTORY"` rzeczywistym folderem, w którym znajduje się `input.tiff`. Jeśli nie jesteś pewien, gdzie uruchamia się skrypt, `Path.cwd()` wypisuje bieżący katalog roboczy — przydatne przy debugowaniu problemów ze ścieżkami. + +## Krok 4 – Uruchomienie procesu OCR (wyodrębnianie tekstu z obrazu) + +Teraz dzieje się magia. Wywołanie `process()` przesyła obraz przez potok OCR i zwraca obiekt wyniku. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Za kulisami silnik może konwertować obraz na odcienie szarości, stosować progowanie i podawać go do sieci neuronowej. Nie musisz zarządzać tymi krokami; biblioteka ukrywa je przed Tobą. + +## Krok 5 – Wyświetlenie rozpoznanego tekstu (przekształcenie zeskanowanego tekstu obrazu) + +Na koniec wypisz tekst. W prawdziwych projektach prawdopodobnie zapiszesz go do pliku lub bazy danych, ale drukowanie utrzymuje przykład schludnym. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Gdy uruchomisz skrypt, powinieneś zobaczyć coś podobnego do: + +``` +Hello, world! +This is a sample scanned document. +``` + +Jeśli wynik jest nieczytelny, sprawdź ponownie, czy obraz źródłowy jest wyraźny i czy język OCR odpowiada tekstowi. + +## Pełny działający skrypt + +Łącząc wszystko razem, oto kompletny, gotowy do uruchomienia program: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Oczekiwany wynik + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Jeśli potrzebujesz **przekształcić zeskanowany tekst obrazu** w przeszukiwalny PDF, możesz przekazać `ocr_result.text` do generatora PDF, takiego jak `reportlab` — ale to już osobny samouczek. + +## Częste pułapki i wskazówki profesjonalistów + +- **Skanowanie o niskiej rozdzielczości**: OCR ma problemy poniżej 150 DPI. Jeśli Twój TIFF jest rozmyty, najpierw zwiększ rozdzielczość przy pomocy Pillow (`Image.open(...).resize(...)`). +- **Wiele stron**: Dla wielostronicowych TIFF‑ów iteruj po `Image.load_multi_page()` (jeśli Twoja biblioteka to obsługuje) i łącz wyniki. +- **Obsługa języków**: Wiele silników domyślnie używa angielskiego. Ustaw `ocr_engine.language = "spa"` dla hiszpańskiego, na przykład. +- **Obsługa białych znaków**: OCR często dodaje niechciane podziały linii. Użyj `str.splitlines()` lub wyrażeń regularnych, aby oczyścić wynik. +- **Wydajność**: Przy przetwarzaniu hurtowym, ponownie używaj jednej instancji `OcrEngine` zamiast tworzyć nową dla każdego pliku. + +## Rozszerzanie przykładu + +Teraz, gdy opanowałeś **jak zrobić OCR w Pythonie** dla pojedynczego obrazu, rozważ następujące kolejne kroki: + +1. **Przetwarzanie wsadowe** – Przejdź przez katalog z plikami TIFF i zapisz każdy wynik do pliku `.txt`. +2. **Integracja z Pandas** – Przechowuj wyodrębniony tekst wraz z metadanymi dla szybkiej analizy. +3. **Podejście hybrydowe** – Połącz OCR z bibliotekami NLP, takimi jak `spaCy`, aby wyodrębnić jednostki (nazwy, daty, kwoty) ze zeskanowanych faktur. +4. **Alternatywne formaty plików** – Zamień `Image.load` na `Image.from_bytes`, aby obsługiwać obrazy pochodzące z API lub bazy danych. + +Wszystkie te pomysły opierają się na podstawowej idei **wyodrębniania tekstu z obrazu** i **przekształcania zeskanowanego tekstu obrazu** w coś, co maszyny mogą zrozumieć. + +## Zakończenie + +Przeszliśmy przez przejrzysty, kompleksowy **podstawowy przykład OCR**, który pokazuje **jak zrobić OCR w Pythonie**, jak **odczytać plik TIFF w Pythonie** oraz jak **wyodrębnić tekst z obrazu** przy użyciu zaledwie kilku linii. Skrypt jest samodzielny, zawiera obsługę błędów i bezpośrednio wypisuje wynik, co czyni go solidną bazą dla każdego projektu, który potrzebuje przekształcić zeskanowane dokumenty w edytowalny tekst. + +Śmiało eksperymentuj — zamień backend OCR, dostosuj przetwarzanie wstępne lub podłącz wynik do dalszego przepływu pracy. Nie ma granic, gdy możesz niezawodnie **przekształcić zeskanowany tekst obrazu** w przeszukiwalne dane. + +Masz pytania dotyczące przypadków brzegowych, pakietów językowych lub optymalizacji wydajności? zostaw komentarz poniżej i szczęśliwego kodowania! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/polish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..a5580b0b9 --- /dev/null +++ b/ocr/polish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,181 @@ +--- +category: general +date: 2026-04-26 +description: Jak przeprowadzić OCR na zeskanowanym formularzu, nauczyć się wstępnie + przetwarzać obraz, aby zredukować szumy, i szybko wyodrębnić tekst z obrazu. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: pl +og_description: Jak uruchomić OCR na zeskanowanych dokumentach, wstępnie przetworzyć + obrazy, zredukować szumy i efektywnie wyodrębnić tekst. +og_title: Jak uruchomić OCR i przetwarzać obrazy – szybki przewodnik +tags: +- OCR +- image processing +- Python +title: Jak uruchomić OCR i przetwarzać obrazy – wyodrębnić tekst ze skanowanych formularzy +url: /pl/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak uruchomić OCR – Kompletny przewodnik po wyodrębnianiu tekstu z obrazów + +Zastanawiałeś się kiedyś **jak uruchomić OCR** na niechlujnym zeskanowanym formularzu i uzyskać czysty, przeszukiwalny tekst? Nie jesteś jedyny. W wielu rzeczywistych projektach surowy obraz jest pełen plamek, nierównego oświetlenia i innych niedoskonałości, które powodują, że domyślne OCR się potyka. + +Dobra wiadomość? Dzięki kilku linijkom Pythona i inteligentnemu potokowi wstępnego przetwarzania możesz znacząco zwiększyć dokładność rozpoznawania, **zredukować szumy**, i wyciągnąć dokładnie te słowa, których potrzebujesz. W tym samouczku przeprowadzimy Cię przez każdy krok — od wczytania obrazu po wypisanie końcowego ciągu znaków — tak abyś otrzymał gotowy fragment kodu, który możesz dostosować do faktur, paragonów lub dowolnego zeskanowanego dokumentu. + +## Co zbudujesz + +- Instancję `OcrEngine`, która komunikuje się z bazową biblioteką OCR. +- Łańcuch wstępnego przetwarzania, który **binaryzuje** obraz i stosuje **median blur**, aby wygładzić plamki. +- Proste wywołanie `process()`, które zwraca obiekt udostępniający `text`, wyodrębniony ciąg znaków. + +Na koniec będziesz mieć samodzielny skrypt, który możesz uruchomić na dowolnym pliku obrazu i od razu zobaczyć wyodrębniony tekst w konsoli. + +## Wymagania wstępne + +- Python 3.9+ (użyta składnia odpowiada najnowszemu stabilnemu wydaniu). +- Fikcyjny pakiet `aocr` – traktuj go jako cienką nakładkę na Tesseract lub dowolny nowoczesny silnik OCR. Zainstaluj go poleceniem `pip install aocr`. +- Zeskanowany obraz (`scanned_form.jpg`) umieszczony w folderze, do którego możesz odwołać się w kodzie. + +Jeśli używasz prawdziwej biblioteki OCR, takiej jak `pytesseract`, możesz zamienić `OcrEngine` na odpowiednią klasę — wszystko inne pozostaje bez zmian. + +![](how-to-run-ocr-example.png "przykład uruchamiania OCR pokazujący zeskanowany formularz i wyodrębniony tekst") + +*Alt text: jak uruchomić OCR na zeskanowanym dokumencie i wyświetlić wyodrębniony tekst.* + +--- + +## Krok 1: Jak uruchomić OCR – Inicjalizacja silnika + +Zanim silnik będzie mógł cokolwiek odczytać, musimy utworzyć jego instancję. Traktuj `OcrEngine` jako mózg, który później będzie interpretował dane wizualne. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Dlaczego to ważne:** Inicjalizacja silnika ustawia wewnętrzne modele, ładuje pakiety językowe i przygotowuje środowisko uruchomieniowe. Pominięcie tego kroku zazwyczaj skutkuje błędem `NoneType`, gdy później wywołasz `process()`. + +--- + +## Krok 2: Jak wstępnie przetworzyć obraz – Wczytaj swój zeskanowany formularz + +Teraz, gdy mózg jest gotowy, podajemy mu obraz. Obraz może być w dowolnym formacie obsługiwanym przez `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Porada:** Używaj ścieżek bezwzględnych podczas rozwoju, aby uniknąć niespodzianek „plik nie znaleziony”, gdy skrypt uruchamia się z innego katalogu roboczego. + +--- + +## Krok 3: Jak zredukować szumy – Zastosuj binaryzację i median blur + +Surowe skany często zawierają przypadkowe kropki, nierówne tło lub słabe cienie. Dwa klasyczne triki — **binaryzacja** i **median blur** — oczyszczają obraz bez utraty krawędzi definiujących znaki. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Zagłębienie się + +- **Binaryzacja**: Wartość `threshold=180` mówi algorytmowi: „Wszystko jaśniejsze niż 180 staje się białe; wszystko inne czarne.” Dostosuj tę liczbę, jeśli Twój skan jest zbyt ciemny lub zbyt jasny. +- **Median Blur**: Promień `2` oznacza, że filtr patrzy na okno 5×5 pikseli i zastępuje środkowy piksel medianą. To wygładza pojedyncze plamki, zachowując jednocześnie kreski liter. + +> **Przypadek brzegowy:** Jeśli Twój dokument ma kolorowe podświetlenia, prosty próg binarny może je usunąć. W takim scenariuszu rozważ użycie `aocr.ImageFilters.adaptive_threshold()` — dostosowuje on progowanie lokalnie w całym obrazie. + +--- + +## Krok 4: Jak wyodrębnić tekst – Uruchom proces OCR + +Mając czysty obraz, w końcu pozwalamy silnikowi wykonać swoją magię. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Co dzieje się pod maską?** Silnik uruchamia sieć neuronową (lub starszy matcher wzorców) na macierzy pikseli, tłumaczy każdy rozpoznany glif na znaki Unicode i układa je w linie oraz akapity. + +--- + +## Krok 5: Jak wyodrębnić tekst – Wypisz wynik + +Obiekt `ocr_result` udostępnia wygodny atrybut `text`. Zobaczmy, co otrzymaliśmy. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Oczekiwany wynik + +Jeśli zeskanowany formularz zawiera: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Powinieneś zobaczyć coś podobnego: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Zauważ, jak krok wstępnego przetwarzania usunął przypadkowe kropki, które wcześniej zamieniły „Amount” w „Am0unt”. To moc **redukcji szumów** przed OCR. + +--- + +## Częste problemy i jak je naprawić + +| Objaw | Prawdopodobna przyczyna | Szybka naprawa | +|-------|--------------------------|----------------| +| Zniekształcone znaki (np. “@#%”) | Obraz zbyt ciemny lub zbyt jasny | Dostosuj `threshold` w `binarize()`; wypróbuj `adaptive_threshold`. | +| Brakujące słowa | Nadal obecne szumy | Zwiększ `radius` w `median_blur` lub dodaj filtr `gaussian_blur`. | +| Nieprawidłowy język (np. angielskie litery zamieniają się na chińskie) | Załadowany niewłaściwy pakiet językowy | Przekaż `language="eng"` przy tworzeniu `OcrEngine()`, jeśli biblioteka to obsługuje. | +| Wolne przetwarzanie dużych plików | Wysoka rozdzielczość | Zmniejsz rozmiar obrazu najpierw: `aocr.ImageFilters.resize(width=1200)` przed binaryzacją. | + +--- + +## Dalsze kroki – Następne etapy i powiązane tematy + +- **Przetwarzanie wsadowe**: Zawijaj powyższą logikę w pętlę, aby automatycznie obsługiwać dziesiątki plików. +- **Strukturalny wynik**: Użyj wyrażeń regularnych na `ocr_result.text`, aby wyciągnąć pola takie jak daty czy kwoty. +- **Alternatywne biblioteki**: Zamień `aocr` na `pytesseract` — kod zmienia się tylko w kroku inicjalizacji silnika. +- **Jak wstępnie przetworzyć obraz dla PDF‑ów**: Konwertuj każdą stronę PDF na obraz, a następnie zastosuj ten sam potok. + +Te rozszerzenia pozwalają skalować rozwiązanie od pojedynczego formularza do przedsiębiorstwa‑poziomu potoku ingestującego dokumenty. + +--- + +## Zakończenie + +Omówiliśmy **jak uruchomić OCR** od początku do końca, pokazaliśmy **jak wstępnie przetworzyć obraz**, aby **zredukować szumy**, oraz zademonstrowaliśmy **jak wyodrębnić tekst z obrazu** przy użyciu czystego, powtarzalnego skryptu. Najważniejsze wnioski? Kilka prostych filtrów — binaryzacja i median blur — może przekształcić zaszumiony skan w wiarygodne źródło danych, oszczędzając godziny ręcznego czyszczenia. + +Wypróbuj skrypt na własnych dokumentach, dostosuj progi i obserwuj, jak rośnie dokładność. Gdy będziesz gotowy, zbadaj przetwarzanie wsadowe lub zintegrować wynik z bazą danych, aby uzyskać przeszukiwalne archiwa. Szczęśliwego kodowania i niech Twój OCR zawsze będzie precyzyjny! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/polish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..2fb59698b --- /dev/null +++ b/ocr/polish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-04-26 +description: Dowiedz się, jak ustawić licencję w Aspose OCR i jak zweryfikować licencję + za pomocą zwięzłego skryptu w Pythonie. Postępuj zgodnie z instrukcjami krok po + kroku, aby bezproblemowo aktywować. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: pl +og_description: Jak ustawić licencję w Aspose OCR i jak zweryfikować licencję przy + użyciu Pythona. Uzyskaj kompletny, gotowy do uruchomienia przykład w kilka minut. +og_title: Jak ustawić licencję w Aspose OCR – szybki przewodnik po Pythonie +tags: +- Aspose OCR +- Python +- Licensing +title: Jak ustawić licencję w Aspose OCR – szybki przewodnik Pythona +url: /pl/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak ustawić licencję w Aspose OCR – Szybki przewodnik w Pythonie + +Zastanawiałeś się kiedyś **jak ustawić licencję** dla Aspose OCR, nie tracąc przy tym włosów? Nie jesteś sam. Większość programistów napotyka problem przy pierwszej próbie odblokowania pełnej mocy biblioteki, a na ekranie widzą jedynie znak wodny „Trial version”. Dobra wiadomość jest taka, że rozwiązanie jest dość proste i możesz je od razu zweryfikować. + +W tym tutorialu przejdziemy przez **ustawianie licencji** *oraz* **walidację licencji** przy użyciu małego skryptu w Pythonie. Po zakończeniu będziesz mieć działający przykład, który wypisuje „License OK”, oraz kilka wskazówek, które pomogą uniknąć typowych pułapek. + +## Wymagania wstępne + +Zanim zaczniemy, upewnij się, że masz: + +- Zainstalowany Python 3.8+ (kod działa na 3.9, 3.10 i nowszych). +- Aktywny plik licencji Aspose OCR for Java (lub .NET) – zazwyczaj nazwany `Aspose.OCR.Java.lic`. +- Pakiet `asposeocr` zainstalowany poleceniem `pip install asposeocr`. +- Podstawową znajomość uruchamiania skryptów Pythona z linii poleceń. + +Masz wszystko? Świetnie – zaczynamy. + +## Jak ustawić licencję w Aspose OCR (Krok 1) + +Ustawienie licencji to w zasadzie operacja trzech linii, ale każda z nich ma swoje przeznaczenie. Rozłożymy to na części, abyś zrozumiał *dlaczego* robimy to, co robimy. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Dlaczego importujemy `License`?** +Klasa `License` jest bramą, która informuje silnik Aspose OCR, że zapłaciłeś za produkt. Bez utworzenia jej instancji biblioteka będzie zakładać, że używasz wersji próbnej. + +**Dlaczego tworzymy instancję `License`?** +Instancja daje Ci obiekt (`license_obj`), który może przechowywać ścieżkę do pliku `.lic` i następnie zastosować ją w czasie działania. + +## Jak ustawić licencję w Aspose OCR – podanie pliku licencji + +Teraz wskazujemy obiektowi rzeczywistą lokalizację pliku licencji na dysku. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Wskazówki i triki:** + +- **Ścieżka bezwzględna vs. względna** – Jeśli uruchamiasz skrypt z innego folderu, ścieżka bezwzględna (`C:/licenses/...`) eliminuje błędy „file not found”. +- **Zmienne środowiskowe** – Przechowywanie ścieżki w zmiennej środowiskowej (`OCR_LICENSE_PATH`) trzyma tajemnice poza kontrolą wersji: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Jak zweryfikować licencję – upewnienie się, że działa + +Ustawienie licencji to dopiero połowa sukcesu; musisz potwierdzić, że biblioteka ją zaakceptowała. Właśnie tutaj wkracza krok weryfikacji. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Jeśli plik licencji jest brakujący, uszkodzony lub niepasujący, `validate()` zgłosi wyjątek. Obsłużenie tego wyjątku daje czysty sposób na raportowanie problemów. + +## Pełny działający przykład (wszystkie kroki razem) + +Poniżej kompletny, gotowy do uruchomienia skrypt. Uruchom go w terminalu (`python set_license.py`) i powinieneś zobaczyć wypisane „License OK”. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Oczekiwany wynik** + +``` +License OK +``` + +Jeśli coś pójdzie nie tak, zobaczysz coś w stylu: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Ta wiadomość dokładnie wskazuje, co należy naprawić – bez zgadywania. + +## Jak zweryfikować licencję – obsługa typowych przypadków brzegowych + +Nawet przy powyższym skrypcie kilka scenariuszy może Cię zaskoczyć: + +| Sytuacja | Co się dzieje | Jak naprawić | +|----------|---------------|--------------| +| **Błąd w ścieżce pliku** | `FileNotFoundError` z `set_license` | Sprawdź dokładnie ścieżkę; użyj `os.path.abspath()` do debugowania. | +| **Zły typ pliku** | Walidacja rzuca „Invalid license format” | Upewnij się, że używasz pliku `.lic` odpowiadającego Twojej edycji produktu. | +| **Wygasła licencja** | Walidacja podnosi „License expired” | Odnów licencję u wsparcia Aspose i podmień plik. | +| **Uruchamianie w środowisku o ograniczonych uprawnieniach** (np. AWS Lambda) | Błąd uprawnień | Przyznaj dostęp do odczytu katalogu lub dołącz licencję do pakietu wdrożeniowego. | + +Pro tip: otocz wywołanie `set_license` własnym blokiem `try/except`, jeśli chcesz odróżnić błędy „plik nie znaleziony” od „nieprawidłowy format”. + +## Podsumowanie wizualne + +![jak ustawić licencję w Aspose OCR example](/images/aspose-ocr-license.png "jak ustawić licencję w Aspose OCR example") + +*Zrzut ekranu pokazuje, że skrypt wypisuje „License OK” po pomyślnej aktywacji.* + +## Typowe pułapki i najlepsze praktyki + +- **Nigdy nie commituj pliku licencji do publicznego repozytorium.** Używaj zmiennych środowiskowych lub menedżerów sekretów (GitHub Secrets, Azure Key Vault). +- **Waliduj od razu.** Umieszczenie `license_obj.validate()` zaraz po `set_license` wykrywa błędy przed rozpoczęciem jakiejkolwiek pracy OCR. +- **Ponownie używaj obiektu License.** Licencję wystarczy ustawić raz na proces; kolejne wywołania OCR automatycznie skorzystają z aktywowanej licencji. +- **Loguj ścieżkę do licencji (bez nazwy pliku) w środowisku produkcyjnym**, aby ułatwić debugowanie bez ujawniania samego pliku. + +## Kolejne kroki – rozszerzanie przepływu pracy OCR + +Teraz, gdy wiesz **jak ustawić licencję** i **jak zweryfikować licencję**, możesz przejść do głównych zadań OCR: + +- **jak odczytać obraz** – `Image.load("sample.png")` +- **jak wyodrębnić tekst** – `ocr_engine.recognize(image)` +- **jak skonfigurować opcje OCR** – dostosuj ustawienia `OcrEngine` pod kątem języka, dokładności itp. + +Każdy z tych tematów opiera się na poprawnie licencjonowanym silniku, więc znak wodny wersji próbnej nie pojawi się ponownie. + +## Zakończenie + +Omówiliśmy cały proces **ustawiania licencji** dla Aspose OCR, pokazaliśmy **jak zweryfikować licencję** oraz dostarczyliśmy kompletny, uruchamialny skrypt wypisujący „License OK”. Dzięki obsłudze błędów na wczesnym etapie i użyciu zmiennych środowiskowych Twoja aplikacja będzie zarówno bezpieczna, jak i odporna. + +Masz więcej pytań o OCR, licencjonowanie lub integrację Aspose w większym pipeline? 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/polish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..5160f6fd8 --- /dev/null +++ b/ocr/polish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: jak używać OCR na zeskanowanych PDF-ach, wyodrębniać tekst z PDF, uruchamiać + OCR w PDF i konwertować zeskanowany PDF na pliki przeszukiwalne w kilku krokach +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: pl +og_description: 'jak używać OCR w Pythonie: dowiedz się, jak wyodrębnić tekst z PDF, + uruchomić OCR na PDF i przekształcić zeskanowany PDF w dokumenty przeszukiwalne.' +og_title: jak używać OCR – szybki przewodnik po wyodrębnianiu tekstu z PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: Jak używać OCR – wyodrębnić tekst z PDF w Pythonie +url: /pl/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# jak używać OCR – wyodrębnić tekst z PDF za pomocą Pythona + +Zastanawiałeś się kiedyś **jak używać OCR**, aby wyciągnąć tekst ze zeskanowanego kontraktu, paragonu lub ebooka? Nie jesteś sam. W wielu rzeczywistych projektach otrzymany PDF jest po prostu obrazem, a bez OCR nie możesz przeszukiwać, indeksować ani analizować jego zawartości. + +W tym samouczku przeprowadzimy Cię przez kompletny, działający przykład, który pokazuje **jak używać OCR**, jak **wyodrębnić tekst z PDF**, oraz dlaczego możesz chcieć **konwertować zeskanowany PDF** na dokumenty możliwe do przeszukiwania. Omówimy także subtelną sztukę **ładowania PDF jako obrazu**, aby silnik OCR mógł wyraźnie zobaczyć każdą stronę. + +> **Szybki podgląd:** Po zakończeniu będziesz mieć skrypt, który ładuje wielostronicowy PDF, uruchamia OCR na każdej stronie i wypisuje rozpoznany tekst – bez konieczności korzystania z zewnętrznych usług. + +## Czego będziesz potrzebować + +- Python 3.9+ (dowolna nowsza wersja działa) +- pakiet `aocr` (lub dowolna kompatybilna biblioteka OCR, która udostępnia `OcrEngine` i `Image.load`) +- Zeskanowany plik PDF, który chcesz przetworzyć (np. `contract.pdf`) +- Umiarkowana ilość RAM (≈ 200 MB na 100‑stronicowy PDF zazwyczaj wystarcza) + +Jeśli jeszcze nie zainstalowałeś biblioteki OCR, uruchom: + +```bash +pip install aocr +``` + +> **Pro tip:** Użyj wirtualnego środowiska, aby utrzymać zależności w porządku. + +## Krok 1: Załaduj PDF jako obraz – pierwszy element układanki + +Zanim OCR może się rozpocząć, PDF musi być przedstawiony jako obraz. To tutaj wkracza drugorzędne słowo kluczowe **load pdf as image**. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Dlaczego to ważne:* `aocr.Image.load` wewnętrznie rasteryzuje każdą stronę PDF do bitmapy, którą silnik OCR może zrozumieć. Jeśli pominiesz ten krok i podasz surowy PDF, silnik zgłosi błąd, ponieważ oczekuje danych pikselowych, a nie wektorowych. + +> **Uwaga:** Ścieżka może być absolutna lub względna. Upewnij się, że plik jest czytelny; w przeciwnym razie napotkasz `FileNotFoundError`. + +## Krok 2: Uruchom OCR na PDF – zamiana pikseli w znaki + +Teraz, gdy PDF istnieje jako obraz, możemy w końcu **run OCR on PDF**. Poniższy fragment przetwarza wszystkie strony jednocześnie: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Co się dzieje pod maską?* `process_all_pages` przechodzi przez rasteryzowane strony, stosuje model OCR i zwraca listę obiektów wyników — po jednym na stronę. Każdy wynik zawiera rozpoznany tekst, oceny pewności oraz ramki ograniczające (jeśli będą potrzebne później). + +## Krok 3: Wyodrębnij tekst z PDF – wyciąganie ciągów + +Mając wyniki OCR w ręku, wyodrębnienie czystego tekstu staje się trywialne. Przejdziemy po stronach i wypiszemy wynik, demonstrując drugorzędne słowo kluczowe **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Oczekiwany wynik** (skrócony dla przejrzystości): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Jeśli potrzebujesz tekstu w jednej ciągłej postaci, po prostu połącz go: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Teraz pomyślnie **wyodrębniłeś tekst z PDF** przy użyciu OCR. + +## Krok 4: Konwertuj zeskanowany PDF – uczynienie go przeszukiwalnym + +Wiele narzędzi downstream (takich jak Elasticsearch czy SharePoint) oczekuje przeszukiwalnego PDF zamiast zwykłego zrzutu tekstu. Możesz osadzić wynik OCR z powrotem w oryginalnym PDF, skutecznie **convert scanned PDF** do wersji przeszukiwalnej. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Dlaczego warto?* Przeszukiwalny PDF zachowuje oryginalny układ i obrazy, jednocześnie umożliwiając zaznaczanie tekstu i indeksowanie — korzyść zarówno dla ludzi, jak i maszyn. + +## Częste pułapki i przypadki brzegowe + +### Wielostronicowe PDFy większe niż pamięć + +Jeśli Twój PDF ma setki stron, ładowanie wszystkiego naraz może wyczerpać RAM. Biblioteka `aocr` obsługuje leniwe ładowanie: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Następnie przetwarzaj strony po jednej: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Skanowanie niskiej jakości + +Dokładność OCR spada dramatycznie przy rozmytych lub niskokontrastowych skanach. Przed podaniem obrazu silnikowi rozważ wstępne przetwarzanie: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Obsługa języków + +Domyślnie silnik zakłada język angielski. Aby **run OCR on PDF** w innym języku, ustaw kod języka: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Upewnij się, że odpowiedni model językowy jest zainstalowany. + +## Pełny działający przykład + +Łącząc wszystko razem, oto samodzielny skrypt, który możesz umieścić w pliku o nazwie `ocr_pdf.py` i uruchomić od razu: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Uruchom go w ten sposób: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Zobaczysz tekst wypisany w konsoli, a jeśli podałeś `-o`, przeszukiwalny PDF pojawi się obok oryginalnego pliku. + +## Pro tipy i najlepsze praktyki + +- **Batch processing:** Gdy obsługujesz dziesiątki PDFów, otocz powyższą logikę pętlą i loguj sukcesy/porażki każdego pliku. +- **Confidence filtering:** Każdy `page_result` zawiera metrykę pewności. Odrzuć lub oznacz strony o niskiej pewności do ręcznej weryfikacji. +- **Parallelism:** Jeśli Twój procesor ma wiele rdzeni, rozważ użycie `concurrent.futures` do równoległego przetwarzania stron — pamiętaj jednak o zużyciu pamięci. +- **Version lock:** API `aocr` może się zmieniać. Zablokuj wersję w `requirements.txt` (np. `aocr==2.3.1`), aby uniknąć niekompatybilnych zmian. + +## Zakończenie + +Przeszliśmy przez **jak używać OCR** do **wyodrębnienia tekstu z PDF**, **uruchomienia OCR na PDF**, **ładowania PDF jako obrazu**, oraz **konwertowania zeskanowanego PDF** na format przeszukiwalny. Kod jest kompletny, wyjaśnienia obejmują zarówno *co*, jak i *dlaczego*, a Ty masz teraz wielokrotnego użytku wzorzec dla każdego projektu pracującego z PDF‑ami opartymi na obrazach. + +Co dalej? Spróbuj przekazać wyodrębniony tekst do pipeline’u przetwarzania języka naturalnego, zaindeksować przeszukiwalne PDFy w Elasticsearch lub poeksperymentować z różnymi backendami OCR, takimi jak Tesseract czy Azure Computer Vision. Niebo jest granicą, a narzędzia masz pod ręką. + +Miłego kodowania i niech Twoje PDFy zawsze będą przeszukiwalne! + +![przykład użycia OCR](/images/ocr_workflow.png "użycie OCR") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/polish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/polish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..ee0460ac6 --- /dev/null +++ b/ocr/polish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Jak używać wątków do ładowania obrazu dla OCR w Pythonie. Naucz się asynchronicznego + przetwarzania OCR z użyciem callbacków, wątków w tle i ładowania obrazu w kilku + prostych krokach. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: pl +og_description: Jak używać wątków do wczytywania obrazu do OCR w Pythonie. Ten przewodnik + pokazuje kompletny, gotowy do uruchomienia przykład z wywołaniami zwrotnymi i wykonywaniem + w tle. +og_title: Jak używać wątków do ładowania obrazu dla OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Jak używać wątków do ładowania obrazu dla OCR +url: /pl/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Jak używać wątków do ładowania obrazu dla OCR + +Zastanawiałeś się kiedyś **jak używać wątków**, aby ładować obraz dla OCR bez zamrażania aplikacji? To scenariusz, który pojawia się niezależnie od tego, czy tworzysz skaner desktopowy, usługę internetową, czy prosty skrypt przetwarzający masowe obrazy. Dobra wiadomość? Kilka linijek Pythona i odpowiedni wzorzec wątkowania sprawią, że interfejs będzie responsywny, podczas gdy silnik OCR wykona swoją magię. + +W tym tutorialu przeprowadzimy Cię przez kompletny, end‑to‑end przykład: ładowanie dużego pliku PNG, uruchomienie OCR w tle, oraz obsługę wyniku za pomocą callbacku. Po zakończeniu nie tylko będziesz wiedział **jak używać wątków**, ale także **jak ładować obraz dla OCR** w czysty, wielokrotnego użytku sposób. + +## Czego będziesz potrzebować + +- Python 3.9+ (składnia, której używamy, działa w każdej niedawnej wersji) +- `pillow` do obsługi obrazów (`pip install pillow`) +- `pytesseract` jako lekka nakładka na Tesseract OCR (`pip install pytesseract`) +- Silnik Tesseract OCR zainstalowany na Twoim komputerze (pobierz z [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Duży plik obrazu, który chcesz przetworzyć (`large_image.png` w tym przewodniku) + +Bez dodatkowych frameworków, bez async/await — tylko klasyczny `threading` i callback. + +## Krok 1: Importowanie modułu threading (wymagane do wykonywania w tle) + +Pierwszą rzeczą, którą robimy, jest importowanie modułu `threading`. Dostarcza on klasę `Thread`, która pozwala uruchomić dowolną funkcję w osobnym wątku systemowym. + +```python +import threading +``` + +*Dlaczego to ważne*: Jeśli uruchomisz OCR w głównym wątku, Twój program (szczególnie GUI) zamroz się, dopóki OCR nie zakończy się. Przekazując pracę do wątku w tle, główny wątek pozostaje wolny, aby aktualizować UI, obsługiwać wejście użytkownika lub uruchamiać inne zadania. + +## Krok 2: Definicja callbacku, który zostanie wywołany po zakończeniu OCR + +Callback to po prostu funkcja, którą inny fragment kodu wywołuje po zakończeniu swojej pracy. Tutaj wydrukujemy rozpoznany tekst, ale możesz go zapisać, wysłać przez sieć lub zaktualizować widget UI. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Porada*: Trzymaj callback lekki. Ciężkie przetwarzanie wewnątrz callbacku niweczy sens wątkowania, ponieważ nadal będzie blokować wątek, który go wywołał (często główny wątek). + +## Krok 3: Ładowanie obrazu, który chcesz przetworzyć + +Ładowanie obrazu to odrębna kwestia od OCR, ale wciąż jest częścią całego przepływu pracy. Użycie Pillow czyni to trywialnym. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Dlaczego robimy to tutaj*: Jeśli obraz jest ogromny, jego ładowanie w głównym wątku może już spowodować zacięcie. W wielu rzeczywistych aplikacjach również przeniosłoby się ładowanie do wątku, ale dla przejrzystości pozostawiamy je synchronicznie. + +## Krok 4: Utworzenie małej nakładki na silnik OCR + +W oryginalnym fragmencie użyto `engine.process_async`. Odwzorujemy to małą klasą, która wewnętrznie uruchamia wątek i wywołuje podany callback po zakończeniu. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Wyjaśnienie*: +- `_run_ocr` wykonuje ciężką pracę. +- `process_async` tworzy obiekt `Thread`, oznacza go jako daemon (dzięki czemu interpreter może zakończyć działanie, nawet jeśli wątek nadal działa) i uruchamia go. +- Callback otrzymuje albo tekst OCR, albo komunikat o błędzie. + +## Krok 5: Połączenie wszystkiego i wykonywanie innych zadań podczas działania OCR + +Teraz koordynujemy cały przepływ: ładujemy obraz, tworzymy instancję silnika, uruchamiamy asynchroniczny OCR i utrzymujemy główny wątek zajęty czymś innym (tutaj po prostu drukujemy komunikat). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Oczekiwany wynik (skrócony dla przejrzystości):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Jeśli OCR się nie powiedzie, callback wydrukuje komunikat o błędzie zamiast tekstu. + +--- + +## Dlaczego to podejście działa lepiej niż prosta pętla + +- **Responsywność**: Główny wątek nigdy nie blokuje wywołania OCR, które może trwać kilka sekund dla dużych obrazów. +- **Skalowalność**: Możesz uruchomić wiele instancji `SimpleOcrEngine`, każdą w osobnym wątku, aby przetwarzać partię obrazów równocześnie. +- **Rozdzielenie odpowiedzialności**: Ładowanie, przetwarzanie i obsługa wyniku są czysto oddzielone, co ułatwia testowanie i utrzymanie kodu. + +## Typowe pułapki i jak ich unikać + +| Problem | Co się dzieje | Rozwiązanie | +|---------|--------------|-------------| +| Zapomnienie oznaczenia wątku jako *daemon* | Skrypt zawiesza się po zakończeniu głównej pracy, ponieważ wątek OCR nadal jest aktywny. | Ustaw `worker.daemon = True` **lub** `join()` wątek przed zakończeniem. | +| Używanie zmiennej globalnej dla wyniku bez blokad | Warunki wyścigu mogą uszkodzić dane, gdy wiele wątków zapisuje jednocześnie. | Przekazuj wynik przez callback (tak jak robimy) lub używaj kontenerów bezpiecznych dla wątków, takich jak `queue.Queue`. | +| Ładowanie masywnego obrazu w głównym wątku | UI zamraża się przed rozpoczęciem OCR w tle. | Przenieś ładowanie obrazu do wątku, lub użyj technik leniwego ładowania. | +| Brak obsługi wyjątków w wątku pracownika | Nieprzechwycone wyjątki cicho zabijają wątek, pozostawiając brak wyniku. | Otocz logikę OCR w `try/except` i przekaż błąd do callbacku. | + +## Rozszerzanie tego wzorca + +- **Raportowanie postępu**: Użyj współdzielonej `queue.Queue` do przesyłania pośrednich procentów postępu z wątku OCR do głównego wątku. +- **Pula wątków**: Do przetwarzania partii, zamień pojedyncze obiekty `Thread` na `concurrent.futures.ThreadPoolExecutor`. +- **Integracja z GUI**: W aplikacji Tkinter lub PyQt, zaplanuj wywołanie callbacku przy pomocy `after()` (Tkinter) lub `QTimer.singleShot` (Qt), aby zapewnić, że aktualizacje UI odbywają się w głównym wątku. + +## Pełny działający przykład (gotowy do kopiowania i wklejenia) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/portuguese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..e40935c70 --- /dev/null +++ b/ocr/portuguese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-04-26 +description: Extraia texto de cabeçalho usando OCR com Python Aspose OCR. Aprenda + como extrair texto de áreas específicas de imagens de forma rápida e confiável. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: pt +og_description: Extraia rapidamente o texto do cabeçalho com OCR. Este guia mostra + como extrair texto de uma área específica usando Python Aspose OCR em apenas algumas + linhas. +og_title: Extrair Texto de Cabeçalho OCR com Python Aspose – Tutorial Completo +tags: +- OCR +- Python +- Aspose +title: Extrair Texto de Cabeçalho com OCR usando Python Aspose OCR – Guia Passo a + Passo +url: /pt/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrair Texto de Cabeçalho OCR – Tutorial Completo de Python Aspose OCR + +Já precisou **extrair texto de cabeçalho OCR** de uma fatura escaneada, mas não queria processar a página inteira? Você não está sozinho. Em muitos pipelines do mundo real, o cabeçalho contém as informações mais críticas—número da fatura, data, nome do fornecedor—então extraí‑lo rapidamente pode economizar muito trabalho nas etapas posteriores. + +Neste tutorial vamos mostrar uma solução pronta‑para‑usar que **extrai texto de área específica** usando a biblioteca **Python Aspose OCR**. Sem referências vagas a documentos externos, apenas um script completo, uma explicação clara de cada linha e dicas que você realmente usará amanhã. + +## O que você vai aprender + +- Como instalar e importar o pacote Aspose OCR para Python. +- Como carregar uma imagem e definir uma **região de interesse (ROI)** que isola o cabeçalho. +- Como executar o motor OCR nessa ROI e obter texto limpo. +- Armadilhas comuns (ex.: incompatibilidade de DPI) e como evitá‑las. +- Como o output esperado se parece para que você possa verificar se tudo funciona. + +Ao final, você poderá inserir este código em qualquer projeto que precise **extrair texto de cabeçalho OCR** de faturas, recibos ou qualquer documento com layout previsível. + +## Pré‑requisitos + +- Python 3.8 ou superior instalado na sua máquina. +- Uma licença válida do Aspose OCR for Python (a avaliação gratuita funciona para testes). +- Um arquivo de imagem (`invoice.png`) que contenha uma região de cabeçalho clara. +- Familiaridade básica com funções Python e caminhos de arquivos. + +> **Dica de especialista:** Se você estiver testando em um escaneamento de baixa resolução, aumente o DPI antes de enviá‑lo ao Aspose OCR – isso melhora drasticamente a precisão. + +--- + +## Etapa 1: Instalar o Pacote Aspose OCR + +Primeiro, adicione a biblioteca ao seu ambiente. O pacote oficial é `aspose-ocr`. Execute isso uma vez: + +```bash +pip install aspose-ocr +``` + +Se você estiver usando um ambiente virtual (altamente recomendado), ative‑o antes de instalar. Isso garante que o pacote não entre em conflito com outros projetos. + +## Etapa 2: Importar Classes Necessárias e Carregar a Imagem + +Agora trazemos as classes necessárias para o script e carregamos a imagem da fatura. Observe o uso de **caminhos absolutos**; caminhos relativos também funcionam, mas caminhos absolutos removem ambiguidades quando o script roda em um servidor. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Por que isso importa:** Inicializar `OcrEngine` uma única vez e reutilizá‑lo para múltiplas imagens é mais eficiente do que criar um novo motor a cada vez. + +## Etapa 3: Definir a Região do Cabeçalho (ROI) + +O cabeçalho geralmente fica na parte superior da página, mas suas coordenadas exatas podem variar. Aqui definimos um retângulo (`x`, `y`, `width`, `height`) que cobre o cabeçalho. Ajuste os números para combinar com o layout do seu documento. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Como funciona:** Ao chamar `set_roi`, o motor OCR limita sua análise a esse retângulo, o que acelera drasticamente o processamento e reduz o ruído do restante da página. + +## Etapa 4: Aplicar a ROI e Executar o OCR + +Agora instruímos o motor a focar na região do cabeçalho e então executamos o processo OCR. O objeto de resultado contém o texto reconhecido e metadados adicionais (pontuações de confiança, idioma, etc.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Se o OCR falhar (ex.: formato de imagem não suportado), `ocr_result` será `None`. Uma cláusula de proteção rápida pode tornar seu script mais robusto: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Etapa 5: Recuperar e Exibir o Texto de Cabeçalho Extraído + +Finalmente, extraímos o texto do objeto de resultado e o exibimos. Você também pode gravá‑lo em um arquivo ou passá‑lo para outra função para processamento adicional. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Output Esperado + +Quando tudo estiver configurado corretamente, você deverá ver algo como: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Se o output parecer corrompido, verifique novamente as coordenadas da ROI e assegure‑se de que a imagem fonte tem alto contraste. + +--- + +## Variações & Casos de Borda + +### 1. Múltiplos Cabeçalhos em um Documento + +Às vezes um PDF contém várias páginas, cada uma com seu próprio cabeçalho. Percorra as páginas e ajuste a ROI por página: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Lidar com Scans Inclinados + +Se a fatura estiver ligeiramente rotacionada, pré‑procese a imagem com OpenCV antes de enviá‑la ao Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Alterar Configurações de Idioma + +Aspose OCR pode detectar o idioma automaticamente, mas você pode forçar o inglês para resultados mais rápidos: + +```python +ocr_engine.language = "en" +``` + +--- + +## Exemplo Completo Funcionando + +Abaixo está o script completo que você pode copiar‑colar em um arquivo chamado `extract_header.py`. Lembre‑se de substituir o caminho da imagem pelo seu próprio. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Executar este script deve exibir as linhas do cabeçalho exatamente como mostradas anteriormente. Sinta‑se à vontade para ajustar os valores de `roi` para combinar com seu modelo de fatura específico. + +--- + +## Perguntas Frequentes Respondidas + +**Q: Isso funciona diretamente com PDFs?** +A: Não imediatamente. Converta cada página PDF em uma imagem (ex.: usando `pdf2image`) e então alimente o PNG/JPG ao script. + +**Q: E se meu cabeçalho contiver um logotipo e texto juntos?** +A: Aspose OCR foca no conteúdo textual. Para logotipos, considere usar uma biblioteca de reconhecimento de imagem separada como `opencv` ou `tesseract` com um modelo customizado. + +**Q: O trial gratuito tem limitações?** +A: O trial permite até 10 páginas por mês. Para produção, adquira uma licença para remover o limite e desbloquear configurações de maior precisão. + +--- + +## Conclusão + +Agora você tem um guia **completo e citável** para **extrair texto de cabeçalho OCR** usando **Python Aspose OCR**. O tutorial cobriu tudo, desde a instalação até o tratamento de casos de borda, e forneceu uma função reutilizável que pode ser inserida em fluxos de trabalho maiores. + +Em seguida, você pode explorar **extrair texto de áreas específicas** para outras zonas como rodapés ou linhas de itens, ou combinar esta abordagem com um conversor PDF‑para‑imagem para automatizar pipelines de documentos completos. As possibilidades são infinitas—apenas lembre‑se de manter as coordenadas da ROI precisas e suas imagens em alta resolução. + +Tem um layout complicado? Compartilhe nos comentários e ajustaremos a ROI juntos. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/portuguese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..35d8b7815 --- /dev/null +++ b/ocr/portuguese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,227 @@ +--- +category: general +date: 2026-04-26 +description: Extrair texto de imagem usando Aspose OCR em Python. Aprenda como extrair + texto, converter imagem em texto e carregar imagem para OCR com suporte multilíngue. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: pt +og_description: extraia texto de imagem instantaneamente. este guia mostra como extrair + texto, converter imagem em texto e carregar imagem para OCR usando Aspose OCR em + Python. +og_title: Extrair texto de imagem com Python – Tutorial completo de OCR multilíngue +tags: +- OCR +- Python +- Aspose +title: extrair texto de imagem com Python – Guia de OCR multilíngue +url: /pt/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# extrair texto de imagem com Python – Guia de OCR Multilíngue + +Já precisou **extrair texto de imagem** mas não tinha certeza de qual biblioteca poderia lidar com páginas de idiomas mistos? Você não está sozinho. Em muitos aplicativos do mundo real—pense em processamento de faturas, monitoramento de redes sociais ou arquivamento de documentos multilíngues—você encontrará imagens que contêm caracteres latinos e cirílicos. + +A boa notícia? Com o Aspose OCR para Python você pode **extrair texto**, **converter imagem em texto** e **carregar imagem para OCR** em apenas algumas linhas, tudo enquanto o motor detecta automaticamente o idioma. Neste tutorial vamos percorrer um exemplo completo e executável, explicar por que cada etapa é importante e abordar alguns casos de borda que você pode encontrar na estrada. + +> **O que você levará consigo** +> * Um script pronto‑para‑executar que extrai texto de um PNG de idioma misto. +> * Compreensão de como configurar OCR multilíngue em Python. +> * Dicas para lidar com arquivos grandes, diferentes formatos de imagem e depurar armadilhas comuns. + +## Pré‑requisitos + +- Python 3.8 ou superior (o código usa f‑strings). +- Pacote `asposeocr` instalado (`pip install asposeocr`). +- Um arquivo de imagem (por exemplo, `mixed_lang.png`) que contém texto em mais de um script. +- Familiaridade básica com importações Python e APIs orientadas a objetos. + +Sem dependências pesadas, sem serviços externos—apenas uma única instalação via pip e você está pronto para usar. + +--- + +## Etapa 1 – Instalar e importar a biblioteca Aspose OCR + +Antes de podermos **carregar imagem para OCR**, precisamos da própria biblioteca. O pacote inclui o motor OCR central e um carregador de imagens leve. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Por que isso importa*: Importar as classes específicas mantém o namespace organizado e torna o código posterior mais claro. Se você importar apenas `asposeocr`, terá que qualificar cada chamada (`aocr.OcrEngine()`), o que pode ser barulhento. + +--- + +## Etapa 2 – Criar o motor OCR e habilitar a detecção multilíngue + +O Aspose OCR pode adivinhar automaticamente o(s) idioma(s) presentes na imagem. Definir `Language.AUTO` cobre latim, cirílico, árabe e muitos outros. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Dica profissional*: Se você souber o conjunto de idiomas com antecedência, pode atribuir `Language.ENGLISH` ou `Language.RUSSIAN` para um pequeno ganho de desempenho. Mas para documentos realmente mistos, `AUTO` é a escolha mais segura. + +--- + +## Etapa 3 – Carregar a imagem que você deseja processar + +É aqui que **carregamos a imagem para OCR**. Aspose suporta PNG, JPEG, BMP, TIFF e até páginas PDF tratadas como imagens. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Dica**: Se sua imagem for maior que 2 MB, considere redimensioná‑la antes. Imagens grandes aumentam o uso de memória e podem desacelerar a etapa de detecção. + +--- + +## Etapa 4 – Executar o processo OCR e capturar o resultado + +Chamar `process()` realiza o trabalho pesado: detecção de texto, análise de layout e decodificação de idioma. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +O objeto `ocr_result` retornado contém várias propriedades úteis: + +| Propriedade | Descrição | +|-------------|-----------| +| `text` | String simples do texto reconhecido (o que você usará com mais frequência). | +| `confidence` | Pontuação geral de confiança (0‑100). | +| `lines` | Lista de objetos `OcrLine` com dados posicionais (ótimo para PDFs). | + +--- + +## Etapa 5 – Exibir o texto extraído + +Finalmente, imprimimos a saída. Em uma aplicação real você pode gravá‑la em um banco de dados ou enviá‑la para uma API de tradução. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Saída esperada** (exemplo para uma imagem de idioma misto): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Se você vir caracteres estranhos, verifique se a imagem não está corrompida e se está usando a versão mais recente do `asposeocr` (v23.7 no momento da escrita). + +--- + +## Etapa 6 – Script completo que você pode copiar‑colar + +Juntando tudo elimina a confusão de “onde o código começa?”. Salve isso como `multilingual_ocr.py` e execute‑o a partir da linha de comando. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Execute‑lo: + +```bash +python multilingual_ocr.py +``` + +Você deverá ver as strings extraídas impressas no console. É isso—**converter imagem em texto** com apenas algumas linhas. + +--- + +## Perguntas comuns & tratamento de casos de borda + +### E se minha imagem contiver escrita à mão? +O Aspose OCR é ajustado para texto impresso. Escritos à mão geralmente precisam de um modelo dedicado (por exemplo, Azure Read ou Google Vision). Você ainda pode tentar `Language.AUTO`, mas espere menor confiança. + +### Como melhorar a precisão em digitalizações ruidosas? +1. Pré‑processar a imagem (binarização, remoção de ruído). +2. Aumentar DPI para pelo menos 300 ppi antes de enviá‑la ao motor. +3. Definir explicitamente `ocr_engine.config.deskew = True` se a imagem estiver inclinada. + +```python +ocr_engine.config.deskew = True +``` + +### Posso extrair texto de um PDF sem convertê‑lo em imagem primeiro? +Sim—Aspose OCR pode abrir páginas PDF diretamente: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Apenas lembre‑se de que cada página é tratada como uma imagem internamente, portanto as mesmas considerações de qualidade se aplicam. + +--- + +## Conclusão + +Agora você tem uma receita sólida, de ponta a ponta, para **extrair texto de imagem** usando Aspose OCR em Python, completa com suporte multilíngue. O script demonstra como **carregar imagem para OCR**, **converter imagem em texto** e lidar com as armadilhas mais comuns. + +Daqui você pode: + +- Integrar a função em um serviço web que aceita uploads de usuários. +- Combinar o texto extraído com uma biblioteca de detecção de idioma para encaminhá‑lo ao motor de tradução correto. +- Experimentar opções `ocr_engine.config` (por exemplo, `max_recognition_time`, `text_orientation`) para ajustar finamente o desempenho. + +Feliz codificação, e que seus pipelines de OCR sejam sempre precisos! + +--- + +![Captura de tela do texto multilíngue extraído – exemplo de extração de texto de imagem](image-placeholder.png "exemplo de extração de texto de imagem") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/portuguese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..c5ed6cdbe --- /dev/null +++ b/ocr/portuguese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,235 @@ +--- +category: general +date: 2026-04-26 +description: Como fazer OCR em lote dos seus documentos e extrair texto de digitalizações + em Python. Aprenda o processamento em lote passo a passo com OcrEngine para saída + em JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: pt +og_description: Como fazer OCR em lote dos seus arquivos digitalizados e extrair texto + das digitalizações em um único script. Código completo, dicas e tratamento de casos + extremos. +og_title: Como fazer OCR em lote – Guia rápido de Python +tags: +- OCR +- Python +- Automation +title: Como fazer OCR em lote – Extraia texto de digitalizações de forma eficiente +url: /pt/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como fazer OCR em lote – Extrair texto de digitalizações de forma eficiente + +Já se perguntou **como fazer OCR em lote** em uma montanha de PDFs digitalizados sem perder a sanidade? Você não está sozinho—desenvolvedores perguntam constantemente: *“Como posso extrair texto de digitalizações de uma só vez?”* A boa notícia é que algumas linhas de Python podem transformar essa tarefa tediosa em um pipeline suave e automatizado. + +Neste tutorial vamos percorrer uma solução completa, pronta‑para‑executar, que **extrai texto de digitalizações**, salva os resultados como JSON e fornece uma rápida verificação de sanidade ao final. Sem serviços externos, sem mágica—apenas Python puro, a classe `OcrEngine` e um pouco de manipulação de pastas. + +## O que você vai levar + +- Um script totalmente funcional que **faz OCR em lote** em qualquer pasta de imagens. +- Explicações claras de *por que* cada linha existe, não apenas *o que* ela faz. +- Dicas para lidar com pastas vazias, arquivos que não são imagens e lotes grandes. +- Uma forma de verificar se a saída JSON realmente contém o texto extraído. + +### Pré‑requisitos (o mínimo indispensável) + +| Requisito | Por que importa | +|-----------|-----------------| +| Python 3.8+ | Sintaxe moderna e dicas de tipo | +| Biblioteca `OcrEngine` (ou um wrapper compatível) | Funcionalidade central de OCR | +| Um diretório com arquivos de imagens digitalizadas (PNG, JPG, TIFF) | Dados de entrada | +| Permissão de escrita para a pasta de saída | Salvar resultados JSON | + +Se você já tem isso, ótimo—vamos começar. + +![fluxo de batch OCR](image-placeholder.png){alt="fluxo de batch OCR"} + +## Etapa 1 – Inicializar o Motor de OCR (como fazer batch OCR) + +Antes de podermos processar qualquer coisa, precisamos de uma instância do motor de OCR. Pense nele como o “cérebro” que lerá cada imagem e gerará texto. Inicializá‑lo uma única vez e reutilizá‑lo ao longo de todo o lote é o padrão mais eficiente. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Por que reutilizar a mesma instância?** +> Criar um novo motor para cada arquivo carregaria repetidamente modelos pesados na memória, desacelerando drasticamente o lote. Uma única instância mantém o modelo na RAM e permite processar milhares de imagens sem uma queda perceptível de desempenho. + +## Etapa 2 – Apontar para a Pasta de Digitalizações (extrair texto de digitalizações) + +Suas digitalizações estão em algum lugar no disco. Vamos dizer ao script onde encontrá‑las. Usar caminhos absolutos evita surpresas de “arquivo não encontrado” quando o script é iniciado a partir de um diretório de trabalho diferente. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Dica profissional:** +> Se você estiver no Windows, barras (`/`) funcionam perfeitamente com `os.path.abspath`, então não é necessário escapar as barras invertidas. + +## Etapa 3 – Escolher Onde os Resultados JSON Devem Ir + +Provavelmente você quer uma pasta organizada para os resultados de OCR. Manter a saída separada da origem facilita a limpeza posterior ou a alimentação do JSON em outro pipeline. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Por que criar a pasta programaticamente?** +> Garante que o script não falhe se o diretório estiver ausente, e `exist_ok=True` torna a operação idempotente—execute o script várias vezes sem erros. + +## Etapa 4 – Executar o Processo em Lote (como fazer batch OCR) + +Agora o ponto central: dizer ao `ocr_engine` para percorrer cada arquivo em `input_dir`, executar OCR e gravar JSON em `output_dir`. O parâmetro `format="json"` indica ao motor que ele deve serializar o resultado de forma estruturada, que ferramentas downstream adoram. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### O que está acontecendo nos bastidores? + +1. **Descoberta de arquivos** – O motor escaneia `input_folder` recursivamente, ignorando arquivos ocultos. +2. **Validação de arquivos** – Apenas extensões de imagem suportadas (`.png`, `.jpg`, `.tif`, etc.) são enviadas ao modelo OCR. +3. **Execução do OCR** – Cada imagem é enviada ao motor OCR; texto, pontuações de confiança e dados de layout são capturados. +4. **Serialização JSON** – O resultado é escrito em um arquivo com o mesmo nome base, porém com extensão `.json`, em `output_folder`. + +> **Tratamento de casos extremos:** +> - **Pasta vazia:** O motor registra “No files found” e retorna graciosamente. +> - **Imagem corrompida:** Ele ignora o arquivo, registra uma entrada de erro em `batch_errors.log` e continua. +> - **Lote enorme (10k+ arquivos):** O uso de memória permanece baixo porque cada imagem é processada independentemente. + +## Etapa 5 – Confirmar que a Conversão Terminou + +Uma simples instrução `print` fornece feedback imediato no console. Para pipelines de produção você pode substituir isso por uma chamada de logging ou uma notificação por e‑mail. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Quando você vir essa linha, pode inspecionar com segurança a pasta `json_output`. Cada arquivo JSON terá aproximadamente este formato: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Agora você pode alimentar esses arquivos JSON em um banco de dados, um índice de busca ou qualquer ferramenta de análise downstream. + +## Perguntas Frequentes (e respostas rápidas) + +**Q: E se eu precisar processar PDFs em vez de imagens?** +A: Converta cada página PDF em uma imagem primeiro (por exemplo, usando `pdf2image`) e coloque os arquivos PNG/JPG resultantes em `input_dir`. A lógica de OCR em lote permanece inalterada. + +**Q: Posso mudar o formato de saída para texto simples?** +A: Claro. Substitua `format="json"` por `format="txt"` e o motor escreverá um arquivo `.txt` contendo apenas o texto extraído. + +**Q: Minhas digitalizações estão em várias subpastas—o script recursará?** +A: Sim. `batch_process` percorre a árvore de diretórios por padrão. Se você quiser uma saída plana, defina `flatten=True` (se a biblioteca suportar) ou pós‑procese os nomes dos JSON. + +**Q: Como lidar com scripts não latinos?** +A: Inicialize `OcrEngine` com um parâmetro de idioma, por exemplo, `OcrEngine(lang="spa+eng")`. O loop em lote em si não precisa de alterações. + +## Dicas Profissionais & Armadilhas Comuns + +- **Tamanho do lote importa:** Se notar picos de CPU, reduza a velocidade do processo com um simples `time.sleep(0.1)` entre arquivos. +- **Logging:** Troque a chamada `print` pelo módulo `logging` do Python para capturar timestamps e níveis de erro. +- **Colisões de nomes de arquivo:** Se duas digitalizações compartilharem o mesmo nome base mas estiverem em subpastas diferentes, os arquivos JSON sobrescreverão uns aos outros. Anexe um hash do caminho relativo ao nome de saída para evitar isso. +- **Vazamentos de memória:** Alguns back‑ends OCR mantêm recursos nativos alocados. Chame `ocr_engine.close()` ao final do seu script se a biblioteca oferecer um método de limpeza. + +## Script Completo – Pronto para Copiar & Colar + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Saída esperada no console** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Você pode verificar o JSON abrindo qualquer arquivo em `json_output` com um editor de texto ou carregando-o no Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Você deverá ver o texto OCR‑extraído bruto impresso no console. + +## Conclusão + +Acabamos de cobrir **como fazer OCR em lote** em um diretório inteiro de imagens digitalizadas e **extrair texto de digitalizações** em arquivos JSON limpos e legíveis por máquina. A abordagem é deliberadamente simples: configure o motor uma vez, aponte para uma pasta e deixe a biblioteca fazer o trabalho pesado. A partir daqui você pode: + +- Conectar o JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/portuguese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..5ca94ae72 --- /dev/null +++ b/ocr/portuguese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-04-26 +description: Como criar OCR de forma rápida e confiável. Aprenda a extrair texto de + imagens, carregar a imagem para OCR e executar OCR em PNG com um dicionário personalizado. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: pt +og_description: Como criar OCR em Python e extrair texto de uma imagem. Este guia + mostra como carregar a imagem para OCR, executar OCR em PNG e usar um dicionário + personalizado. +og_title: Como criar OCR em Python – Extração rápida de texto +tags: +- OCR +- Python +- Image Processing +title: Como criar OCR em Python – Extrair texto de imagem +url: /pt/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Criar OCR em Python – Guia Passo a Passo + +Já se perguntou **como criar OCR** que possa ler seus PDFs escaneados, capturas de tela ou notas manuscritas? Você não está sozinho. Em muitos projetos do mundo real precisamos *extrair texto de imagem* de arquivos, mas os motores prontos‑para‑uso frequentemente tropeçam em palavras específicas de domínio. + +Neste tutorial você verá um exemplo completo e executável que carrega uma imagem para OCR, aplica um dicionário personalizado e, finalmente, **executa OCR em arquivos PNG**. Ao final, você será capaz de extrair texto de qualquer imagem e adaptar o motor ao seu próprio vocabulário. + +## O Que Este Tutorial Abrange + +Vamos percorrer cada passo que você precisa: + +* Instalar o pequeno, porém poderoso, pacote `aocr` (ou qualquer biblioteca compatível). +* Configurar um **dicionário personalizado** para que termos como `aspocorp` ou `licensekey` sejam reconhecidos. +* **Carregar uma imagem para OCR**, seja PNG, JPEG ou uma página de PDF escaneada. +* Executar o processo de OCR e imprimir o resultado. + +Sem links externos de documentação, apenas uma solução autocontida que você pode copiar‑colar e executar hoje. + +### Pré‑requisitos + +* Python 3.8 ou superior (o código usa f‑strings). +* Familiaridade básica com a linha de comando – você digitará alguns comandos `pip install`. +* Um arquivo de imagem (`technical_doc.png` no exemplo) colocado em algum local que você possa referenciar. + +Se você atender a esses três itens, está pronto para começar. + +--- + +## Passo 1: Instalar a Biblioteca de OCR + +Primeiro, precisamos de um motor de OCR que suporte um objeto de configuração programável. O pacote `aocr` é um wrapper leve em torno de um motor OCR nativo e funciona bem para demonstrações. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Dica de especialista:** Se você estiver no Windows e encontrar um erro de compilação, experimente `pip install aocr‑binary`, que fornece wheels pré‑compilados. + +### Por Que Instalar Esta Biblioteca? + +`aocr` nos dá acesso direto a um objeto `config` onde podemos injetar um **dicionário personalizado**. Esse é o ingrediente secreto para melhorar a precisão em vocabulários de nicho. + +--- + +## Passo 2: Criar a Instância do Motor OCR & Adicionar um Dicionário Personalizado + +Agora iniciamos o motor e informamos quais palavras ele deve tratar como conhecidas. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Por Que um Dicionário Personalizado Importa + +Modelos OCR padrão são treinados em corpora genéricos. Quando o modelo vê “aspocorp”, ele pode dividir em “aspo corp” ou até omitir letras. Ao fornecer uma lista personalizada, direcionamos o reconhecedor para a grafia exata que precisamos, reduzindo drasticamente o esforço de pós‑processamento. + +--- + +## Passo 3: Carregar a Imagem Que Você Deseja Processar + +É aqui que **carregamos a imagem para OCR**. O método `Image.load` aceita uma string de caminho e determina automaticamente o tipo de arquivo. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Caso extremo:** Se sua fonte for um PDF de várias páginas, converta cada página para PNG primeiro (por exemplo, com `pdf2image`) e alimente‑as uma a uma ao motor. + +### Dicas para Melhor Qualidade de Imagem + +* Mantenha a resolução em pelo menos 300 dpi. +* Garanta que a imagem esteja na orientação correta; rotacione com `Pillow` se necessário. +* Converta digitalizações coloridas para escala de cinza para reduzir ruído. + +--- + +## Passo 4: Executar o Processo de OCR no Arquivo PNG + +Com o motor configurado e a imagem carregada, finalmente **executamos OCR em PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +A chamada `process()` retorna um objeto que contém o texto reconhecido, pontuações de confiança e caixas delimitadoras para cada palavra. + +--- + +## Passo 5: Exibir o Texto Reconhecido + +A maneira mais simples de ver o que o motor encontrou é imprimir o atributo `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Saída Esperada + +Se `technical_doc.png` contiver a frase *“The Aspocorp licensekey expires on 2025‑12‑31.”*, o console deverá exibir: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Observe como o dicionário personalizado manteve o nome da marca intacto—algo que um OCR padrão poderia ter corrompido. + +--- + +## Exemplo Completo Funcionando (Pronto para Copiar‑Colar) + +Abaixo está o script inteiro, pronto para ser salvo como `run_ocr.py`. Basta substituir o caminho placeholder pela localização da sua imagem. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Execute-o a partir do terminal: + +```bash +python run_ocr.py +``` + +Você deverá ver o texto extraído impresso no console, exatamente como mostrado no exemplo anterior. + +--- + +## Perguntas Frequentes (FAQ) + +| Pergunta | Resposta | +|----------|----------| +| **Posso extrair texto de um PDF escaneado?** | Sim. Converta cada página para PNG (ou TIFF) primeiro, depois alimente as imagens ao mesmo script. | +| **E se minha imagem for JPEG em vez de PNG?** | O método `Image.load` suporta JPEG, BMP, TIFF e PNG nativamente. Basta mudar a extensão do arquivo. | +| **Como melhorar a precisão em digitalizações de baixo contraste?** | Pré‑procese com `Pillow` – aumente o contraste, aplique binarização ou use `opencv` para corrigir inclinação. | +| **Existe uma forma de obter pontuações de confiança para cada palavra?** | `ocr_result` inclui `words` – cada palavra tem um atributo `confidence` que você pode iterar. | +| **Posso executar isso em um servidor sem interface gráfica?** | Absolutamente. `aocr` não tem dependências de GUI, sendo perfeito para pipelines de CI. | + +--- + +## Próximos Passos & Tópicos Relacionados + +Agora que você sabe **como criar OCR** e **extrair texto de imagem**, considere explorar: + +* **Técnicas de pré‑processamento** – `load image for OCR` é apenas o primeiro passo; use `opencv` para des‑ruído ou nitidez. +* **Processamento em lote** – percorra um diretório de PNGs para gerar um arquivo pesquisável. +* **Suporte multilíngue** – adicione pacotes de idioma ao motor se precisar ler documentos em francês ou alemão. +* **Integração com Elasticsearch** – indexe o texto extraído para busca full‑text em ativos escaneados. + +Cada uma dessas extensões se baseia no padrão central que acabamos de cobrir, então a transição será tranquila. + +--- + +## Conclusão + +Em poucos minutos respondemos **como criar OCR** que extrai texto de arquivos de imagem de forma confiável, especialmente PNGs, e mostramos como **carregar imagem para OCR**, aplicar um **dicionário personalizado** e **executar OCR em PNG** sem serviços externos. + +Teste o script, ajuste o dicionário para combinar com seu próprio jargão, e você terá uma base sólida para qualquer projeto de digitalização de documentos. + +Se encontrou algum obstáculo, deixe um comentário abaixo—estamos felizes em ajudar. E não se esqueça de compartilhar suas histórias de sucesso; a comunidade aprende melhor com exemplos do mundo real. + +**Pronto para automatizar sua papelada?** Pegue o código, adapte-o e comece a transformar pixels em texto pesquisável hoje mesmo! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/portuguese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..ac17b77fe --- /dev/null +++ b/ocr/portuguese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: como extrair OCR de imagens usando Python – um exemplo de OCR em Python + que mostra como carregar a imagem para OCR e extrair texto de um recibo. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: pt +og_description: como extrair OCR de imagens usando Python. Aprenda um exemplo de OCR + em Python, carregue a imagem para OCR e extraia texto de recibos em minutos. +og_title: como extrair OCR em Python – Guia Completo +tags: +- OCR +- Python +- Image Processing +title: como extrair OCR em Python – tutorial passo a passo +url: /pt/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# como extrair ocr em Python – Guia Completo + +Já se perguntou **como extrair OCR** de um recibo borrado ou de uma fatura escaneada? Você não está sozinho — desenvolvedores frequentemente esbarram em dificuldades quando precisam de texto limpo e legível por máquina a partir de imagens. A boa notícia? Com apenas algumas linhas de Python você pode transformar uma foto de um recibo em texto de alta confiança e pesquisável. + +Neste tutorial, vamos percorrer um **exemplo de OCR em Python** que demonstra **como carregar imagem para OCR**, executar o motor e manter apenas os caracteres que atendem a um limite de confiança de 85 %. Ao final, você será capaz de **extrair texto de recibos** sem precisar vasculhar a documentação ou adivinhar parâmetros da API. + +## O que você precisará + +- Python 3.9 ou mais recente (a sintaxe que usamos funciona em 3.8+) +- O pacote `aocr` (ou qualquer biblioteca OCR que forneça uma classe `OcrEngine`). Instale‑o com: + +```bash +pip install aocr +``` + +- Uma imagem de recibo de exemplo (`receipt.png`) colocada em uma pasta que você pode referenciar. +- Um editor de texto ou IDE — VS Code, PyCharm, ou até mesmo um notebook simples serve. + +É isso. Sem frameworks pesados, sem serviços externos, apenas Python puro. + +![Resultado de OCR de alta confiança – como extrair OCR de um recibo](/images/ocr-high-confidence.png) + +*Texto alternativo da imagem: como extrair OCR de um recibo usando Python OCR* + +## Etapa 1 – Criar a Instância do Motor OCR (como extrair OCR) + +A primeira coisa que fazemos é iniciar um motor OCR. Pense nele como o cérebro que lerá os pixels para nós. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Por quê?** Instanciar `OcrEngine` fornece um novo objeto de configuração. Você pode ajustar posteriormente modelos de idioma, configurações de DPI ou etapas de pré‑processamento — tudo sem tocar no loop principal de processamento. + +## Etapa 2 – Carregar a Imagem para OCR + +Em seguida, apontamos o motor para a imagem que queremos analisar. É aqui que a palavra‑chave **carregar imagem para OCR** entra em ação. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Dica profissional:** Se sua imagem estiver em um diretório diferente, use `os.path.join` para construir um caminho independente de plataforma. + +**Por que carregar a imagem desta forma?** O helper `Image.load` lê o arquivo em um formato que o motor entende, lidando automaticamente com formatos comuns (PNG, JPEG, TIFF). Pular esta etapa ou fornecer bytes brutos geraria um `ValueError`. + +## Etapa 3 – Executar o Processo OCR + +Agora realmente executamos o OCR. O método `process` retorna um objeto de resultado rico contendo símbolos reconhecidos, pontuações de confiança e caixas delimitadoras. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**O que `ocr_result` contém?** Na maioria das bibliotecas inclui: + +- `text`: a string bruta concatenada. +- `symbol_confidences`: uma lista de tuplas `(char, confidence)`. +- `boxes`: coordenadas para cada caractere (útil para depuração visual). + +Ter acesso à confiança por caractere é essencial para a próxima etapa. + +## Etapa 4 – Manter Apenas Símbolos de Alta Confiança (≥ 85 %) + +Um recibo frequentemente tem manchas, impressão fraca ou ruído de fundo. Ao filtrar símbolos de baixa confiança, melhoramos drasticamente a análise subsequente. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Por que 85 %?** Empiricamente, um limite em torno de 0.85 equilibra recall e precisão para a maioria dos recibos impressos. Se notar números ausentes, diminua o limite; se obter lixo, aumente‑o. + +## Etapa 5 – Exibir o Texto Extraído de Alta Confiança + +Finalmente, imprimimos (ou armazenamos) a string sanitizada. Este é o núcleo do nosso fluxo de trabalho de **extrair texto de recibos**. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +A saída típica se parece com: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Agora você pode alimentar essa string em um escritor CSV, um banco de dados ou qualquer pipeline de análise subsequente. + +## Script Completo, Pronto‑para‑Executar + +Abaixo está o trecho de código completo que você pode copiar‑colar em `ocr_receipt.py` e executar imediatamente. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Salve o arquivo, garanta que `receipt.png` exista, e execute: + +```bash +python ocr_receipt.py +``` + +Você deverá ver o texto limpo do recibo impresso no console. + +## Casos de Borda & Cenários de “E‑Se” + +| Situação | Correção Sugerida | +|-----------|----------------| +| **Confiança muito baixa em todo o conjunto** | Pré‑processar a imagem: aumentar o contraste, converter para escala de cinza ou aplicar um filtro de redução de ruído (`cv2.GaussianBlur`). | +| **Caracteres não latinos** | Passe um modelo de idioma para `OcrEngine` (por exemplo, `ocr_engine.language = "spa"` para espanhol). | +| **Múltiplos recibos em uma imagem** | Execute OCR na imagem inteira, então divida o resultado usando expressões regulares que detectam `\\n\\n+` (quebras de linha duplas). | +| **Precisa também do texto OCR bruto** | Mantenha `ocr_result.text` junto com a versão filtrada para depuração. | + +Essas variações garantem que seu conhecimento de **como usar OCR** escale além do caso mais simples. + +## Armadilhas Comuns (E Como Evitá‑las) + +- **Esquecer de instalar a biblioteca** – `pip install aocr` deve ser bem‑sucedido antes de importar. +- **Usar o separador de caminho errado** no Windows (`\` vs `/`). Use `os.path.join`. +- **Codificar rigidamente o limite de confiança** sem testar – sempre faça uma verificação visual rápida em alguns recibos primeiro. +- **Ignorar a normalização Unicode** – alguns recibos contêm caracteres de traço especiais; execute `unicodedata.normalize('NFKC', text)` se você pretende armazenar a saída. + +## Próximos Passos – Indo Além do Básico + +Agora que você sabe **como extrair OCR** de um único recibo, pode querer: + +1. **Processar em lote uma pasta de recibos** – percorrer todos os arquivos PNG/JPG e gravar cada resultado em um CSV. +2. **Integrar com um banco de dados** – armazenar `high_confidence_text` no SQLite para buscas rápidas. +3. **Aplicar análise de linguagem natural** – use regex ou `dateutil` para extrair datas, totais e valores de impostos. +4. **Experimentar bibliotecas alternativas** – `pytesseract`, `easyocr`, ou serviços em nuvem (Google Vision, Azure OCR) se precisar de suporte multilíngue ou maior precisão. + +Cada um desses tópicos incorpora naturalmente nossas palavras‑chave secundárias: *python ocr example*, *extract text from receipt*, *load image for ocr* e *how to use OCR*. + +## Conclusão + +Acabamos de percorrer um **exemplo de OCR em Python** completo que mostra **como extrair OCR** de texto a partir de uma imagem de recibo, filtrar símbolos de baixa confiança e gerar resultados limpos. As etapas são simples, o código é autocontido e a abordagem é flexível o suficiente para se adaptar a projetos maiores. + +Experimente com seus próprios recibos, ajuste o limite de confiança e então escale para processamento em lote. Se encontrar peculiaridades — como um logotipo fraco ou uma fonte incomum — lembre‑se das dicas de casos de borda acima. Boa codificação, e que seus pipelines de OCR sejam sempre precisos! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/portuguese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..1ac2b34e9 --- /dev/null +++ b/ocr/portuguese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-04-26 +description: 'como fazer OCR em Python: Aprenda a extrair texto de imagens e ler arquivos + TIFF em Python usando um exemplo básico de OCR. Código rápido e executável incluído.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: pt +og_description: 'como fazer OCR python: um guia passo a passo que mostra como extrair + texto de imagens, ler arquivos TIFF em Python e converter texto de imagens escaneadas + com um script simples e executável.' +og_title: como fazer OCR em Python – Exemplo básico de OCR para extrair texto +tags: +- OCR +- Python +- Image Processing +title: Como fazer OCR em Python – Exemplo básico de OCR para extrair texto +url: /pt/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# como fazer OCR python – Exemplo Básico de OCR para Extrair Texto + +Já se perguntou **como fazer OCR python** quando tem um TIFF escaneado na sua mesa? Você não é o único que olha para um monte de arquivos de imagem e pergunta: “Como eu tiro as palavras disso?” A boa notícia é que transformar uma foto em texto simples é muito fácil com a biblioteca certa e alguns passos claros. + +Neste tutorial vamos percorrer um **exemplo básico de OCR** que lê um arquivo TIFF, extrai o texto e o imprime no console. Ao final, você saberá exatamente como **extrair texto de arquivos de imagem**, como lidar com as particularidades dos formatos TIFF e o que ajustar se precisar **converter texto de imagem escaneada** em algo mais útil. Sem mágica escondida — apenas Python direto que você pode copiar‑colar e executar hoje. + +## O que Você Precisa + +Antes de mergulharmos, certifique‑se de que tem: + +- Python 3.9+ instalado (a versão estável mais recente é a melhor). +- Uma biblioteca OCR instalável via pip. Para este guia usaremos um pacote fictício `aocr` que imita ferramentas populares como Tesseract; você pode substituí‑lo por `pytesseract` ou `easyocr` depois. +- Uma imagem TIFF que você queira processar – nomeie‑a como `input.tiff` e coloque‑a em uma pasta que será referenciada no código. +- Familiaridade básica com a linha de comando (apenas para instalar o pacote). + +É isso. Sem dependências pesadas, sem contêineres Docker, apenas algumas linhas de código. + +## Passo 1 – Instalar e Importar Dependências (como fazer OCR python) + +Primeiro, obtenha o pacote OCR. Abra um terminal e execute: + +```bash +pip install aocr +``` + +Se preferir uma biblioteca real, troque `aocr` por `pytesseract` e instale o motor Tesseract separadamente. + +Agora importe o que precisamos. A classe `Path` de `pathlib` nos dá uma forma limpa de trabalhar com caminhos de arquivos em diferentes sistemas operacionais. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Por que usar `Path`?* Porque ela abstrai as barras (`/` vs `\`) e permite juntar diretórios sem se preocupar com o SO subjacente. Esse pequeno detalhe costuma salvar dores de cabeça quando você move o script para um servidor de CI. + +## Passo 2 – Criar a Instância do Motor OCR (exemplo básico de OCR) + +Em seguida, inicialize o motor OCR. Pense no `OcrEngine` como o cérebro que vai ler a imagem e gerar caracteres. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +A maioria das bibliotecas OCR permite ajustar idioma, DPI ou limites de confiança aqui. Para este **exemplo básico de OCR** vamos ficar com as configurações padrão, mas você pode explorar `ocr_engine.config` depois se precisar lidar com documentos multilíngues. + +## Passo 3 – Carregar Sua Imagem TIFF (ler arquivo tiff python) + +É aqui que entra a parte **ler arquivo tiff python**. TIFFs podem ter várias páginas, mas `Image.load` captura a primeira página por padrão — perfeito para um escaneamento de página única. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Substitua `"YOUR_DIRECTORY"` pela pasta real que contém `input.tiff`. Se não souber onde o script está sendo executado, `Path.cwd()` imprime o diretório de trabalho atual — útil para depurar problemas de caminho. + +## Passo 4 – Executar o Processo OCR (extrair texto de imagem) + +Agora a mágica acontece. Chamar `process()` envia a imagem pelo pipeline OCR e devolve um objeto de resultado. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Nos bastidores, o motor pode estar convertendo a imagem para escala de cinza, aplicando limiarização e alimentando uma rede neural. Você não precisa gerenciar esses passos; a biblioteca os abstrai. + +## Passo 5 – Imprimir o Texto Reconhecido (converter texto de imagem escaneada) + +Por fim, exiba o texto. Em projetos reais você provavelmente gravaria isso em um arquivo ou banco de dados, mas imprimir mantém o exemplo simples. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Ao executar o script, você deverá ver algo como: + +``` +Hello, world! +This is a sample scanned document. +``` + +Se a saída parecer confusa, verifique se a imagem fonte está nítida e se o idioma do OCR corresponde ao texto. + +## Script Completo Funcionando + +Juntando tudo, aqui está o programa completo, pronto para ser executado: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Saída Esperada + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Se precisar **converter texto de imagem escaneada** em um PDF pesquisável, você pode encaminhar `ocr_result.text` para um gerador de PDF como `reportlab` — mas isso é um tutorial inteiro por si só. + +## Armadilhas Comuns & Dicas Profissionais + +- **Escaneamentos de baixa resolução**: OCR tem dificuldade abaixo de 150 DPI. Se seu TIFF estiver borrado, aumente a resolução primeiro com Pillow (`Image.open(...).resize(...)`). +- **Múltiplas páginas**: Para TIFFs de várias páginas, itere sobre `Image.load_multi_page()` (se sua biblioteca suportar) e concatene os resultados. +- **Suporte a idiomas**: Muitos motores padrão são em inglês. Defina `ocr_engine.language = "spa"` para espanhol, por exemplo. +- **Tratamento de espaços em branco**: OCR costuma inserir quebras de linha indesejadas. Use `str.splitlines()` ou expressões regulares para limpar a saída. +- **Desempenho**: Para processamento em massa, reutilize uma única instância de `OcrEngine` ao invés de criar uma nova para cada arquivo. + +## Expandindo o Exemplo + +Agora que você domina **como fazer OCR python** para uma única imagem, considere os próximos passos: + +1. **Processamento em lote** – Percorra um diretório de TIFFs e grave cada resultado em um arquivo `.txt`. +2. **Integração com Pandas** – Armazene o texto extraído junto com metadados para análise rápida. +3. **Abordagem híbrida** – Combine OCR com bibliotecas de NLP como `spaCy` para extrair entidades (nomes, datas, valores) de faturas escaneadas. +4. **Formatos de arquivo alternativos** – Troque `Image.load` por `Image.from_bytes` para lidar com imagens vindas de uma API ou banco de dados. + +Todos esses passos se baseiam na ideia central de **extrair texto de imagem** e **converter texto de imagem escaneada** em algo que máquinas podem entender. + +## Conclusão + +Percorremos um **exemplo básico de OCR** que demonstra **como fazer OCR python**, como **ler arquivo tiff python** e como **extrair texto de imagem** usando apenas algumas linhas de código. O script é autocontido, inclui tratamento de erros e imprime o resultado diretamente, servindo como base sólida para qualquer projeto que precise transformar documentos escaneados em texto editável. + +Sinta‑se à vontade para experimentar — troque o backend OCR, ajuste o pré‑processamento ou conecte a saída a um fluxo de trabalho posterior. O céu é o limite quando você pode **converter texto de imagem escaneada** em dados pesquisáveis e utilizáveis. + +Tem dúvidas sobre casos extremos, pacotes de idioma ou otimização de desempenho? Deixe um comentário abaixo, e feliz codificação! + +![exemplo de como fazer OCR python](/images/ocr-python-example.png "Captura de tela da saída do script como fazer OCR python") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/portuguese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..cccb9cb7f --- /dev/null +++ b/ocr/portuguese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,181 @@ +--- +category: general +date: 2026-04-26 +description: Como executar OCR em um formulário escaneado, aprender a pré‑processar + a imagem para reduzir ruído e extrair texto da imagem rapidamente. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: pt +og_description: Como executar OCR em documentos escaneados, pré-processar imagens, + reduzir ruído e extrair texto de forma eficiente. +og_title: Como Executar OCR e Pré‑processar Imagens – Guia Rápido +tags: +- OCR +- image processing +- Python +title: Como Executar OCR e Pré‑processar Imagens – Extrair Texto de Formulários Digitalizados +url: /pt/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Executar OCR – Um Guia Completo para Extrair Texto de Imagens + +Já se perguntou **como executar OCR** em um formulário escaneado bagunçado e obter texto limpo e pesquisável? Você não está sozinho. Em muitos projetos do mundo real a imagem bruta está cheia de manchas, iluminação desigual e outras imperfeições que fazem o OCR padrão falhar. + +A boa notícia? Com apenas algumas linhas de Python e um pipeline inteligente de pré‑processamento, você pode aumentar drasticamente a precisão do reconhecimento, **reduzir o ruído** e extrair exatamente as palavras que precisa. Neste tutorial vamos percorrer cada passo — desde carregar a imagem até imprimir a string final — para que você saia com um trecho pronto para uso que pode ser adaptado a faturas, recibos ou qualquer documento escaneado. + +## O Que Você Vai Construir + +- Uma instância `OcrEngine` que se comunica com a biblioteca OCR subjacente. +- Uma cadeia de pré‑processamento que **binariza** a imagem e aplica um **desfoque mediano** para suavizar as manchas. +- Uma chamada simples a `process()` que devolve um objeto expondo `text`, a string extraída. + +Ao final, você terá um script autônomo que pode ser executado em qualquer arquivo de imagem e verá imediatamente o texto extraído no console. + +## Pré‑requisitos + +- Python 3.9+ (a sintaxe usada aqui corresponde à última versão estável). +- O pacote fictício `aocr` – pense nele como um wrapper leve em torno do Tesseract ou de qualquer motor OCR moderno. Instale com `pip install aocr`. +- Uma imagem escaneada (`scanned_form.jpg`) colocada em uma pasta que você possa referenciar. + +Se você estiver usando uma biblioteca OCR real como `pytesseract`, pode substituir `OcrEngine` pela classe apropriada — tudo o mais permanece igual. + +![](how-to-run-ocr-example.png "exemplo de como executar OCR mostrando um formulário escaneado e o texto extraído") + +*Texto alternativo: como executar OCR em um documento escaneado e visualizar o texto extraído.* + +--- + +## Etapa 1: Como Executar OCR – Inicializar o Motor + +Antes que o motor possa ler qualquer coisa, precisamos criar uma instância. Pense no `OcrEngine` como o cérebro que mais tarde interpretará os dados visuais. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Por que isso importa:** Instanciar o motor configura modelos internos, carrega pacotes de idioma e prepara o ambiente de execução. Pular esta etapa geralmente resulta em um erro `NoneType` quando você chama `process()` mais tarde. + +--- + +## Etapa 2: Como Pré‑processar a Imagem – Carregar Seu Formulário Escaneado + +Agora que o cérebro está pronto, alimentamos ele com uma foto. A imagem pode estar em qualquer formato suportado por `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Dica profissional:** Use caminhos absolutos durante o desenvolvimento para evitar surpresas de “arquivo não encontrado” quando o script for executado a partir de um diretório de trabalho diferente. + +--- + +## Etapa 3: Como Reduzir Ruído – Aplicar Binarização & Desfoque Mediano + +Escaneamentos brutos costumam conter pontos soltos, fundo desigual ou sombras tênues. Dois truques clássicos — **binarização** e **desfoque mediano** — limpam a imagem sem sacrificar as bordas que definem os caracteres. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Aprofun­dando + +- **Binarização**: O valor `threshold=180` indica ao algoritmo: “Tudo que for mais claro que 180 vira branco; o resto vira preto.” Ajuste esse número se seu escaneamento estiver muito escuro ou muito claro. +- **Desfoque Mediano**: Um raio de `2` significa que o filtro observa uma janela de 5×5 pixels e substitui o pixel central pelo valor mediano. Isso suaviza manchas isoladas enquanto mantém os traços das letras intactos. + +> **Caso limite:** Se seu documento tem realces coloridos, um limiar binário simples pode apagá‑los. Nesse cenário, considere usar `aocr.ImageFilters.adaptive_threshold()` — ele adapta o corte localmente em toda a imagem. + +--- + +## Etapa 4: Como Extrair Texto – Executar o Processo OCR + +Com uma imagem limpa em mãos, finalmente deixamos o motor fazer sua mágica. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **O que acontece nos bastidores?** O motor executa uma rede neural (ou um matcher de padrões legado) sobre a matriz de pixels, traduz cada glifo reconhecido em caracteres Unicode e os reúne em linhas e parágrafos. + +--- + +## Etapa 5: Como Extrair Texto – Imprimir o Resultado + +O objeto `ocr_result` expõe um atributo conveniente `text`. Vamos ver o que obtivemos. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Saída Esperada + +Se o formulário escaneado contiver: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Você deverá ver algo como: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Observe como a etapa de pré‑processamento eliminou pontos soltos que antes transformavam “Amount” em “Am0unt”. Esse é o poder de **como reduzir ruído** antes do OCR. + +--- + +## Armadilhas Comuns & Como Corrigi‑las + +| Sintoma | Causa Provável | Correção Rápida | +|---------|----------------|-----------------| +| Caracteres embaralhados (ex.: “@#%”) | Imagem muito escura ou muito clara | Ajuste o `threshold` em `binarize()`; experimente `adaptive_threshold`. | +| Palavras ausentes | Ruído ainda presente | Aumente o `radius` em `median_blur` ou adicione um filtro `gaussian_blur`. | +| Idioma errado (ex.: letras em inglês viram chinês) | Pacote de idioma incorreto carregado | Passe `language="eng"` ao criar `OcrEngine()` se a biblioteca suportar. | +| Processamento lento em arquivos grandes | Alta resolução | Reduza a imagem primeiro: `aocr.ImageFilters.resize(width=1200)` antes da binarização. | + +--- + +## Avançando – Próximos Passos e Tópicos Relacionados + +- **Processamento em lote**: Envolva a lógica acima em um loop para lidar com dezenas de arquivos automaticamente. +- **Saída estruturada**: Use expressões regulares em `ocr_result.text` para extrair campos como datas ou valores. +- **Bibliotecas alternativas**: Troque `aocr` por `pytesseract` — o código muda apenas na etapa de inicialização do motor. +- **Como pré‑processar imagens para PDFs**: Converta cada página do PDF em imagem e aplique o mesmo pipeline. + +Essas extensões permitem escalar a solução de um único formulário para um pipeline de ingestão de documentos de nível empresarial. + +--- + +## Conclusão + +Cobremos **como executar OCR** do início ao fim, mostramos **como pré‑processar a imagem** para **reduzir ruído**, e demonstramos **como extrair texto de imagem** com um script limpo e reproduzível. O ponto principal? Alguns filtros simples — binarização e desfoque mediano — podem transformar um escaneamento ruidoso em uma fonte confiável de dados, economizando horas de limpeza manual. + +Teste o script com seus próprios documentos, ajuste os limiares e veja a precisão subir. Quando estiver pronto, explore o processamento em lote ou integre a saída a um banco de dados para arquivos pesquisáveis. Boa codificação, e que seu OCR esteja sempre preciso! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/portuguese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..b8dd9e1c7 --- /dev/null +++ b/ocr/portuguese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-04-26 +description: Aprenda como definir a licença no Aspose OCR e como validar a licença + com um script Python conciso. Siga instruções passo a passo para uma ativação sem + complicações. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: pt +og_description: Como definir a licença no Aspose OCR e como validar a licença usando + Python. Obtenha um exemplo completo e executável em minutos. +og_title: Como Definir a Licença no Aspose OCR – Guia Rápido de Python +tags: +- Aspose OCR +- Python +- Licensing +title: Como definir a licença no Aspose OCR – Guia rápido em Python +url: /pt/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como Definir Licença no Aspose OCR – Guia Rápido em Python + +Já se perguntou **como definir a licença** para o Aspose OCR sem perder a cabeça? Você não está sozinho. A maioria dos desenvolvedores se depara com um obstáculo na primeira vez que tenta desbloquear todo o potencial da biblioteca, apenas para ser assombrada por uma marca‑d’água “Versão de avaliação”. A boa notícia é que a solução é bastante simples, e você pode verificá‑la imediatamente. + +Neste tutorial vamos percorrer **como definir a licença** *e* **como validar a licença** usando um pequeno script em Python. Ao final, você terá um exemplo funcional que imprime “License OK”, além de algumas dicas para evitar armadilhas comuns. + +## Pré‑requisitos + +Antes de mergulharmos, certifique‑se de que você tem: + +- Python 3.8+ instalado (o código funciona em 3.9, 3.10 e versões mais recentes). +- Um arquivo de licença ativo do Aspose OCR for Java (ou .NET) – normalmente chamado `Aspose.OCR.Java.lic`. +- O pacote `asposeocr` instalado via `pip install asposeocr`. +- Familiaridade básica com a execução de scripts Python a partir da linha de comando. + +Tudo pronto? Ótimo—vamos começar. + +## Como Definir Licença no Aspose OCR (Etapa 1) + +Definir a licença é essencialmente uma operação de três linhas, mas cada linha tem um propósito. Vamos detalhar para que você entenda *por que* fazemos o que fazemos. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Por que importar `License`?** +A classe `License` é o portal que informa ao motor do Aspose OCR que você pagou pelo produto. Sem criar uma instância, a biblioteca continuará assumindo que você está usando a versão de avaliação. + +**Por que instanciar `License`?** +Instanciar cria um objeto (`license_obj`) que pode armazenar o caminho para o seu arquivo `.lic` e, subsequentemente, aplicá‑lo em tempo de execução. + +## Como Definir Licença no Aspose OCR – Fornecendo o Arquivo de Licença + +Agora apontamos o objeto para o arquivo de licença real no disco. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Dicas & truques:** + +- **Caminho absoluto vs. relativo** – Se você executar o script a partir de uma pasta diferente, um caminho absoluto (`C:/licenses/...`) elimina erros de “arquivo não encontrado”. +- **Variáveis de ambiente** – Armazenar o caminho em uma variável de ambiente (`OCR_LICENSE_PATH`) mantém segredos fora do controle de versão: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Como Validar Licença – Garantindo que Funcionou + +Definir a licença é apenas metade da batalha; você precisa confirmar que a biblioteca a aceitou. É aqui que a etapa de validação brilha. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Se o arquivo de licença estiver ausente, corrompido ou incompatível, `validate()` lançará uma exceção. Capturar essa exceção fornece uma maneira limpa de relatar problemas. + +## Exemplo Completo Funcional (Todas as Etapas Combinadas) + +Abaixo está o script completo, pronto‑para‑executar. Execute‑o a partir de um terminal (`python set_license.py`) e você deverá ver “License OK” impresso. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Saída esperada** + +``` +License OK +``` + +Se algo der errado, você verá algo como: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Essa mensagem indica exatamente o que corrigir—sem adivinhações. + +## Como Validar Licença – Lidando com Casos de Borda Comuns + +Mesmo com o script acima, alguns cenários podem atrapalhar: + +| Situação | O que Acontece | Como Corrigir | +|-----------|----------------|---------------| +| **Erro de digitação no caminho do arquivo** | `FileNotFoundError` de `set_license` | Verifique o caminho; use `os.path.abspath()` para depurar. | +| **Tipo de arquivo incorreto** | A validação lança “Invalid license format” | Certifique‑se de que está usando o arquivo `.lic` que corresponde à sua edição do produto. | +| **Licença expirada** | A validação gera “License expired” | Renove a licença com o suporte da Aspose e substitua o arquivo. | +| **Execução em ambiente restrito** (ex.: AWS Lambda) | Erro de permissão | Conceda acesso de leitura ao diretório ou incorpore a licença no pacote de implantação. | + +Dica de especialista: envolva a chamada `set_license` em seu próprio bloco `try/except` se quiser diferenciar erros de “arquivo não encontrado” de erros de “formato inválido”. + +## Resumo Visual + +![como definir licença no Aspose OCR exemplo](/images/aspose-ocr-license.png "como definir licença no Aspose OCR exemplo") + +*A captura de tela mostra o script exibindo “License OK” após uma ativação bem‑sucedida.* + +## Armadilhas Comuns & Melhores Práticas + +- **Nunca faça commit do seu arquivo de licença em um repositório público.** Use variáveis de ambiente ou gerenciadores de segredos (GitHub Secrets, Azure Key Vault) em vez disso. +- **Valide cedo.** Colocar `license_obj.validate()` logo após `set_license` captura erros antes que qualquer trabalho de OCR comece. +- **Reutilize o objeto License.** Você só precisa definir a licença uma vez por processo; chamadas subsequentes ao OCR usarão automaticamente a licença ativada. +- **Registre o caminho da licença (sem o nome do arquivo) em produção** para facilitar a depuração sem expor o arquivo real. + +## Próximos Passos – Expandindo Seu Fluxo de Trabalho OCR + +Agora que você sabe **como definir a licença** e **como validar a licença**, pode avançar para as tarefas principais de OCR: + +- **como ler imagem** – `Image.load("sample.png")` +- **como extrair texto** – `ocr_engine.recognize(image)` +- **como configurar opções de OCR** – ajuste as configurações de `OcrEngine` para idioma, precisão, etc. + +Cada um desses tópicos se baseia em um motor licenciado com sucesso, então você nunca mais verá a marca‑d’água de avaliação. + +## Conclusão + +Cobremos todo o processo de **como definir a licença** para o Aspose OCR, demonstramos **como validar a licença**, e fornecemos um script completo e executável que imprime “License OK”. Ao tratar erros antecipadamente e usar variáveis de ambiente, você mantém sua aplicação segura e robusta. + +Tem mais perguntas sobre OCR, licenciamento ou integração do Aspose em um pipeline maior? 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/portuguese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..ac9829fe6 --- /dev/null +++ b/ocr/portuguese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: como usar OCR em PDFs escaneados, extrair texto de PDF, executar OCR + em PDF e converter PDF escaneado em arquivos pesquisáveis em poucos passos. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: pt +og_description: 'como usar OCR em Python: aprenda a extrair texto de PDF, executar + OCR em PDF e converter PDF escaneado em documentos pesquisáveis.' +og_title: como usar OCR – Guia rápido para extrair texto de PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: como usar OCR – Extrair texto de PDF com Python +url: /pt/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# como usar OCR – Extrair Texto de PDF com Python + +Já se perguntou **como usar OCR** para extrair texto de um contrato, recibo ou ebook digitalizado? Você não está sozinho. Em muitos projetos do mundo real, o PDF que você recebe é apenas uma imagem, e sem OCR você não pode pesquisar, indexar ou analisar seu conteúdo. + +Neste tutorial vamos percorrer um exemplo completo e executável que mostra **como usar OCR**, como **extrair texto de PDF**, e por que você pode querer **converter PDF digitalizado** em documentos pesquisáveis. Também abordaremos a arte sutil de **carregar PDF como imagem** para que o motor de OCR veja cada página claramente. + +> **Pré‑visualização rápida:** Ao final, você terá um script que carrega um PDF de várias páginas, executa OCR em cada página e imprime o texto reconhecido – sem necessidade de serviços externos. + +## O que você precisará + +- Python 3.9+ (qualquer versão recente funciona) +- Pacote `aocr` (ou qualquer biblioteca OCR compatível que forneça `OcrEngine` e `Image.load`) +- Um arquivo PDF digitalizado que você deseja processar (por exemplo, `contract.pdf`) +- Uma quantidade modesta de RAM (≈ 200 MB por PDF de 100 páginas costuma ser suficiente) + +Se ainda não instalou a biblioteca OCR, execute: + +```bash +pip install aocr +``` + +> **Dica profissional:** Use um ambiente virtual para manter suas dependências organizadas. + +## Etapa 1: Carregar PDF como Imagem – A Primeira Peça do Quebra‑cabeça + +Antes que qualquer OCR possa acontecer, o PDF deve ser representado como uma imagem. É aqui que a palavra‑chave secundária **load pdf as image** entra em ação. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Por que isso importa:* `aocr.Image.load` rasteriza internamente cada página do PDF em um bitmap que o motor de OCR pode entender. Se você pular esta etapa e alimentar o PDF bruto, o motor lançará um erro porque espera dados de pixel, não dados vetoriais. + +> **Nota:** O caminho pode ser absoluto ou relativo. Certifique‑se de que o arquivo seja legível; caso contrário, você encontrará um `FileNotFoundError`. + +## Etapa 2: Executar OCR no PDF – Transformando Pixels em Caracteres + +Agora que o PDF está como imagem, podemos finalmente **run OCR on PDF**. O trecho a seguir processa todas as páginas de uma vez: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*O que está acontecendo nos bastidores?* `process_all_pages` percorre as páginas rasterizadas, aplica o modelo OCR e devolve uma lista de objetos de resultado — um por página. Cada resultado contém o texto reconhecido, pontuações de confiança e caixas delimitadoras (se você precisar delas depois). + +## Etapa 3: Extrair Texto de PDF – Tirando as Strings + +Com os resultados de OCR em mãos, extrair o texto puro torna‑se trivial. Vamos iterar sobre as páginas e imprimir a saída, demonstrando a palavra‑chave secundária **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Saída esperada** (truncada para brevidade): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Se precisar do texto em uma única string, basta concatenar: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Agora você extraiu com sucesso **texto de PDF** usando OCR. + +## Etapa 4: Converter PDF Digitalizado – Tornando‑o Pesquisável + +Muitas ferramentas downstream (como Elasticsearch ou SharePoint) esperam um PDF pesquisável em vez de um despejo de texto puro. Você pode incorporar a saída do OCR de volta ao PDF original, efetivamente **convert scanned PDF** em uma versão pesquisável. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Por que se preocupar?* Um PDF pesquisável mantém o layout e as imagens originais enquanto permite seleção de texto e indexação — um ganho para humanos e máquinas. + +## Armadilhas Comuns & Casos Limítrofes + +### PDFs de Múltiplas Páginas Maiores que a Memória + +Se seu PDF tem centenas de páginas, carregar tudo de uma vez pode esgotar a RAM. A biblioteca `aocr` suporta carregamento preguiçoso: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Então processe as páginas uma a uma: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Digitalizações de Baixa Qualidade + +A precisão do OCR cai drasticamente em digitalizações borradas ou de baixo contraste. Antes de alimentar a imagem ao motor, considere pré‑processamento: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Suporte a Idiomas + +Por padrão, o motor assume inglês. Para **run OCR on PDF** em outro idioma, defina o código de idioma: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Certifique‑se de que o modelo de idioma correspondente esteja instalado. + +## Exemplo Completo Funcional + +Juntando tudo, aqui está um script autocontido que você pode colocar em um arquivo chamado `ocr_pdf.py` e executar imediatamente: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Execute assim: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Você verá o texto impresso no console e, se forneceu `-o`, um PDF pesquisável aparecerá ao lado do arquivo original. + +## Dicas Profissionais & Melhores Práticas + +- **Processamento em lote:** Ao lidar com dezenas de PDFs, envolva a lógica acima em um loop e registre o sucesso/falha de cada arquivo. +- **Filtragem por confiança:** Cada `page_result` inclui uma métrica de confiança. Descarte ou sinalize páginas com baixa confiança para revisão manual. +- **Paralelismo:** Se sua CPU tem múltiplos núcleos, considere usar `concurrent.futures` para processar páginas em paralelo — apenas fique atento ao uso de memória. +- **Bloqueio de versão:** A API `aocr` pode evoluir. Fixe a versão em `requirements.txt` (ex.: `aocr==2.3.1`) para evitar quebras. + +## Conclusão + +Percorremos **como usar OCR** para **extrair texto de PDF**, **run OCR on PDF**, **load PDF as image**, e até **convert scanned PDF** em um formato pesquisável. O código está completo, as explicações cobrem tanto o *quê* quanto o *porquê*, e agora você tem um padrão reutilizável para qualquer projeto que lide com PDFs baseados em imagem. + +O que vem a seguir? Experimente alimentar o texto extraído em um pipeline de linguagem natural, indexe os PDFs pesquisáveis com Elasticsearch, ou teste diferentes back‑ends de OCR como Tesseract ou Azure Computer Vision. O céu é o limite, e as ferramentas estão ao seu alcance. + +Feliz codificação, e que seus PDFs estejam sempre pesquisáveis! + +![exemplo de como usar OCR](/images/ocr_workflow.png "como usar OCR") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/portuguese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/portuguese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..914b30ffc --- /dev/null +++ b/ocr/portuguese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Como usar threading para carregar imagem para OCR em Python. Aprenda + o processamento assíncrono de OCR com callbacks, threads em segundo plano e carregamento + de imagens em apenas alguns passos. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: pt +og_description: Como usar threading para carregar imagem para OCR em Python. Este + guia mostra um exemplo completo e executável com callbacks e execução em segundo + plano. +og_title: Como usar threading para carregar imagem para OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Como usar Threading para carregar imagem para OCR +url: /pt/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Como usar Threading para Carregar Imagem para OCR + +Já se perguntou **como usar threading** para carregar imagem para OCR sem congelar seu aplicativo? É um cenário que aparece tanto se você está construindo um scanner de desktop, um serviço web ou um script simples que processa imagens massivas. A boa notícia? Algumas linhas de Python e o padrão correto de threading manterão sua UI ágil enquanto o motor OCR faz sua mágica. + +Neste tutorial vamos percorrer um exemplo completo, de ponta a ponta: carregar um PNG grande, iniciar o OCR em uma thread em segundo plano e tratar o resultado com um callback. Ao final você não apenas saberá **como usar threading**, mas também como **carregar imagem para OCR** de forma limpa e reutilizável. + +## O que você precisará + +- Python 3.9+ (a sintaxe que usamos funciona em qualquer versão recente) +- `pillow` para manipulação de imagens (`pip install pillow`) +- `pytesseract` como um wrapper leve ao Tesseract OCR (`pip install pytesseract`) +- Motor Tesseract OCR instalado na sua máquina (download em [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Um arquivo de imagem grande que você deseja processar (`large_image.png` neste guia) + +Sem frameworks extras, sem async/await — apenas `threading` clássico e um callback. + +## Etapa 1: Importar o módulo Threading (necessário para execução em segundo plano) + +A primeira coisa que fazemos é trazer o módulo `threading`. Ele nos fornece a classe `Thread`, que permite executar qualquer função em uma thread do SO separada. + +```python +import threading +``` + +*Por que isso importa*: Se você executar OCR na thread principal, seu programa (especialmente uma GUI) congelará até que o OCR termine. Ao delegar o trabalho para uma thread em segundo plano, a thread principal fica livre para atualizar a UI, lidar com entrada do usuário ou iniciar outras tarefas. + +## Etapa 2: Definir um Callback que será Invocado Quando o OCR Terminar + +Um callback é simplesmente uma função que outro trecho de código chama quando termina. Aqui vamos imprimir o texto reconhecido, mas você poderia armazená‑lo, enviá‑lo pela rede ou atualizar um widget da UI. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Dica de especialista*: Mantenha o callback leve. Processamento pesado dentro do callback anula o propósito do threading porque ainda bloqueará a thread que o chamou (geralmente a thread principal). + +## Etapa 3: Carregar a Imagem que Você Quer Processar + +Carregar a imagem é uma preocupação separada do OCR, mas ainda faz parte do fluxo geral. Usar Pillow torna isso trivial. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Por que fazemos isso aqui*: Se a imagem for enorme, carregá‑la na thread principal já pode causar um travamento. Em muitos aplicativos reais você também descarregaria o carregamento para uma thread, mas para clareza mantemos síncrono. + +## Etapa 4: Criar um Pequeno Wrapper de Motor OCR + +O trecho original usava `engine.process_async`. Vamos imitar isso com uma classe pequena que inicia uma thread internamente e chama o callback fornecido quando termina. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Explicação*: +- `_run_ocr` faz o trabalho pesado. +- `process_async` cria um objeto `Thread`, marca‑o como daemon (para que o interpretador possa sair mesmo que a thread ainda esteja em execução) e o inicia. +- O callback recebe ou o texto do OCR ou uma mensagem de erro. + +## Etapa 5: Unir Tudo e Fazer Outro Trabalho Enquanto o OCR Executa + +Agora orquestramos todo o fluxo: carregamos a imagem, instanciamos o motor, dispararmos o OCR assíncrono e mantemos a thread principal ocupada com outra coisa (aqui apenas imprimimos uma mensagem). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Saída esperada (truncada para brevidade):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Se o OCR falhar, o callback imprimirá uma mensagem de erro em vez do texto. + +--- + +## Por que Essa Abordagem Funciona Melhor do que um Loop Simples + +- **Responsividade**: A thread principal nunca bloqueia na chamada ao OCR, que pode levar segundos para imagens grandes. +- **Escalabilidade**: Você pode iniciar múltiplas instâncias de `SimpleOcrEngine`, cada uma em sua própria thread, para processar um lote de imagens simultaneamente. +- **Separação de Responsabilidades**: Carregamento, processamento e tratamento de resultados são claramente separados, facilitando testes e manutenção. + +## Armadilhas Comuns e Como Evitá‑las + +| Armadilha | O que Acontece | Solução | +|-----------|----------------|---------| +| Esquecer de marcar a thread como *daemon* | O script fica pendurado após o trabalho principal terminar porque a thread OCR ainda está viva. | Defina `worker.daemon = True` **ou** chame `join()` na thread antes de sair. | +| Usar uma variável global para o resultado sem locks | Condições de corrida podem corromper os dados quando múltiplas threads escrevem simultaneamente. | Passe o resultado via callback (como fazemos) ou use contêineres thread‑safe como `queue.Queue`. | +| Carregar uma imagem massiva na thread principal | A UI congela antes que o OCR em segundo plano sequer inicie. | Descarregue o carregamento da imagem para uma thread também, ou use técnicas de carregamento preguiçoso. | +| Não tratar exceções dentro da thread de trabalho | Exceções não capturadas matam silenciosamente a thread, deixando‑a sem resultado. | Envolva a lógica do OCR em `try/except` e encaminhe o erro para o callback. | + +## Expandindo Esse Padrão + +- **Relatório de Progresso**: Use um `queue.Queue` compartilhado para enviar percentuais de progresso intermediários da thread OCR para a thread principal. +- **Thread Pool**: Para processamento em lote, substitua objetos `Thread` individuais por um `concurrent.futures.ThreadPoolExecutor`. +- **Integração com GUI**: Em um app Tkinter ou PyQt, agende o callback com `after()` (Tkinter) ou `QTimer.singleShot` (Qt) para garantir que as atualizações da UI ocorram na thread principal. + +## Exemplo Completo Funcionando (Pronto para Copiar‑Colar) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/russian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..54a21bea8 --- /dev/null +++ b/ocr/russian/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-04-26 +description: Извлечение текста заголовка с помощью OCR в Python Aspose OCR. Узнайте, + как быстро и надёжно извлекать текст из определённой области изображений. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: ru +og_description: Быстро извлекайте текст заголовка с помощью OCR. Это руководство показывает, + как извлечь текст из конкретной области, используя Python Aspose OCR, всего в несколько + строк. +og_title: Извлечение текста заголовка с помощью OCR в Python Aspose – Полный учебник +tags: +- OCR +- Python +- Aspose +title: Извлечение текста заголовка с помощью OCR в Python Aspose OCR – пошаговое руководство +url: /ru/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Извлечение текста заголовка OCR – Полный учебник по Python Aspose OCR + +Когда‑нибудь вам нужно было **извлечь текст заголовка OCR** из отсканированного счета, но вы не хотели обрабатывать всю страницу? Вы не одиноки. Во многих реальных конвейерах заголовок содержит самую важную информацию — номер счета, дату, название поставщика — поэтому быстрое извлечение экономит массу последующей работы. + +В этом учебнике мы покажем готовое решение, которое **извлекает текст из конкретной области** с помощью библиотеки **Python Aspose OCR**. Никаких расплывчатых ссылок на внешнюю документацию, только полный скрипт, понятное объяснение каждой строки и советы, которые вы действительно сможете применить уже завтра. + +## Что вы узнаете + +- Как установить и импортировать пакет Aspose OCR для Python. +- Как загрузить изображение и определить **область интереса (ROI)**, изолирующую заголовок. +- Как запустить OCR‑движок на этой ROI и получить чистый текст. +- Распространённые подводные камни (например, несоответствие DPI) и как их избежать. +- Как выглядит ожидаемый вывод, чтобы вы могли проверить, что всё работает. + +К концу вы сможете вставить этот код в любой проект, которому нужно **извлечь текст заголовка OCR** из счетов, чеков или любого документа с предсказуемой разметкой. + +## Предварительные требования + +- Python 3.8 или новее, установленный на вашем компьютере. +- Действующая лицензия Aspose OCR for Python (бесплатная пробная версия подходит для оценки). +- Файл изображения (`invoice.png`), содержащий чёткую область заголовка. +- Базовое знакомство с функциями Python и файловыми путями. + +> **Pro tip:** Если вы тестируете скан с низким разрешением, увеличьте DPI перед передачей в Aspose OCR — это значительно повышает точность. + +--- + +## Шаг 1: Установите пакет Aspose OCR + +Сначала добавьте библиотеку в ваше окружение. Официальный пакет называется `aspose-ocr`. Выполните эту команду один раз: + +```bash +pip install aspose-ocr +``` + +Если вы используете виртуальное окружение (настоятельно рекомендуется), активируйте его перед установкой. Это гарантирует, что пакет не будет конфликтовать с другими проектами. + +## Шаг 2: Импортируйте необходимые классы и загрузите изображение + +Теперь подключим нужные классы к нашему скрипту и загрузим изображение счета. Обратите внимание на использование **полных путей**; относительные пути тоже работают, но абсолютные устраняют неоднозначность при запуске скрипта на сервере. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Почему это важно:** Инициализация `OcrEngine` один раз и её повторное использование для нескольких изображений эффективнее, чем создание нового движка каждый раз. + +## Шаг 3: Определите область заголовка (ROI) + +Заголовок обычно находится в верхней части страницы, но точные координаты могут различаться. Здесь мы задаём прямоугольник (`x`, `y`, `width`, `height`), покрывающий заголовок. Подгоните числа под макет вашего документа. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Как это работает:** Вызов `set_roi` ограничивает анализ OCR‑движка этой областью, что существенно ускоряет обработку и уменьшает шум от остальных частей страницы. + +## Шаг 4: Примените ROI и запустите OCR + +Теперь мы указываем движку сосредоточиться на области заголовка и запускаем процесс OCR. Объект результата содержит распознанный текст и дополнительную метаинформацию (оценки уверенности, язык и т.д.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Если OCR завершится неудачей (например, неподдерживаемый формат изображения), `ocr_result` будет `None`. Быстрая проверка может сделать ваш скрипт более надёжным: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Шаг 5: Получите и выведите извлечённый текст заголовка + +Наконец, извлекаем текст из объекта результата и выводим его. Вы также можете записать его в файл или передать другой функции для дальнейшего разбора. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Ожидаемый вывод + +При правильной настройке вы должны увидеть что‑то вроде: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Если вывод выглядит искажённым, ещё раз проверьте координаты ROI и убедитесь, что исходное изображение имеет высокий контраст. + +--- + +## Вариации и граничные случаи + +### 1. Несколько заголовков в одном документе + +Иногда PDF содержит несколько страниц, каждая со своим заголовком. Пройдитесь по страницам в цикле и скорректируйте ROI для каждой страницы: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Работа с наклонёнными сканами + +Если счёт слегка повернут, предварительно обработайте изображение с помощью OpenCV перед передачей в Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Изменение настроек языка + +Aspose OCR может автоматически определять язык, но вы можете принудительно задать английский для более быстрой работы: + +```python +ocr_engine.language = "en" +``` + +--- + +## Полный рабочий пример + +Ниже представлен полностью готовый скрипт, который можно скопировать в файл с именем `extract_header.py`. Не забудьте заменить путь к изображению на свой собственный. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Запуск этого скрипта должен вывести строки заголовка точно так же, как показано выше. При необходимости подгоните значения `roi`, чтобы они соответствовали вашему шаблону счета. + +--- + +## Часто задаваемые вопросы + +**Q: Работает ли это напрямую с PDF?** +A: Не «из коробки». Сначала преобразуйте каждую страницу PDF в изображение (например, с помощью `pdf2image`), а затем передайте PNG/JPG в скрипт. + +**Q: Что если мой заголовок содержит одновременно логотип и текст?** +A: Aspose OCR ориентирован на текстовое содержимое. Для логотипов рассмотрите отдельную библиотеку распознавания изображений, например `opencv` или `tesseract` с кастомной моделью. + +**Q: Есть ли ограничения у бесплатной пробной версии?** +A: Пробный период позволяет обработать до 10 страниц в месяц. Для продакшн‑использования приобретите лицензию, чтобы снять ограничение и открыть более точные настройки. + +--- + +## Заключение + +Теперь у вас есть **полный, пригодный для цитирования** гид по **извлечению текста заголовка OCR** с помощью **Python Aspose OCR**. Учебник охватывает всё—from установки до обработки граничных случаев, и предоставляет переиспользуемую функцию, которую можно внедрять в более крупные рабочие процессы. + +Дальше вы можете исследовать **извлечение текста из конкретных областей** для других зон, таких как нижний колонтитул или позиции строк, либо комбинировать этот подход с конвертером PDF‑в‑изображение для автоматизации полного конвейера. Возможности безграничны — просто следите за точностью координат ROI и высоким разрешением изображений. + +Есть сложный макет? Делитесь в комментариях, и мы подправим ROI вместе. Приятного кодинга! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/russian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..bca5da9cc --- /dev/null +++ b/ocr/russian/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,230 @@ +--- +category: general +date: 2026-04-26 +description: Извлечение текста из изображения с помощью Aspose OCR в Python. Узнайте, + как извлекать текст, преобразовывать изображение в текст и загружать изображение + для OCR с поддержкой нескольких языков. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: ru +og_description: извлекать текст из изображения мгновенно. Это руководство показывает, + как извлекать текст, преобразовать изображение в текст и загрузить изображение для + OCR с использованием Aspose OCR в Python. +og_title: Извлечение текста из изображения с помощью Python – Полный многоязычный + учебник по OCR +tags: +- OCR +- Python +- Aspose +title: Извлечение текста из изображения с помощью Python — Руководство по многоязычному + OCR +url: /ru/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# извлечение текста из изображения с помощью Python – Руководство по многоязычному OCR + +Когда‑нибудь вам нужно было **извлечь текст из изображения**, но вы не знали, какая библиотека может обрабатывать страницы с несколькими языками? Вы не одиноки. Во многих реальных приложениях — подумайте о обработке счетов, мониторинге социальных сетей или многоязычном архивировании документов — вы столкнетесь с изображениями, содержащими как латинские, так и кириллические символы. + +Хорошие новости? С Aspose OCR для Python вы можете **извлечь текст**, **преобразовать изображение в текст** и **загрузить изображение для OCR** всего в несколько строк, позволяя движку автоматически определять язык. В этом руководстве мы пройдем полный, готовый к запуску пример, объясним, почему каждый шаг важен, и рассмотрим несколько граничных случаев, с которыми вы можете столкнуться. + +> **Что вы получите** +> * Готовый к запуску скрипт, который извлекает текст из PNG с несколькими языками. +> * Понимание того, как настроить многоязычный OCR в Python. +> * Советы по работе с большими файлами, различными форматами изображений и отладке распространенных проблем. + +## Требования + +- Python 3.8 или новее (в коде используются f‑строки). +- Пакет `asposeocr`, установленный (`pip install asposeocr`). +- Файл изображения (например, `mixed_lang.png`), содержащий текст более чем в одной письменности. +- Базовое знакомство с импортами Python и объектно‑ориентированными API. + +Никаких тяжёлых зависимостей, никаких внешних сервисов — только один pip‑install и вы готовы к работе. + +--- + +## Шаг 1 – Установить и импортировать библиотеку Aspose OCR + +Прежде чем мы сможем **загрузить изображение для OCR**, нам нужна сама библиотека. Пакет поставляется с ядром OCR‑движка и лёгким загрузчиком изображений. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Почему это важно*: Импорт конкретных классов держит пространство имён чистым и делает последующий код понятнее. Если импортировать только `asposeocr`, придётся квалифицировать каждый вызов (`aocr.OcrEngine()`), что может быть шумно. + +--- + +## Шаг 2 – Создать OCR‑движок и включить многоязычное определение + +Aspose OCR может автоматически угадывать язык(и), присутствующие на изображении. Установка `Language.AUTO` покрывает латинский, кириллический, арабский и многие другие. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Pro tip*: Если вы знаете набор языков заранее, можете задать `Language.ENGLISH` или `Language.RUSSIAN` для небольшого прироста производительности. Но для действительно смешанных документов `AUTO` — самый надёжный вариант. + +--- + +## Шаг 3 – Загрузить изображение, которое нужно обработать + +Здесь мы **загружаем изображение для OCR**. Aspose поддерживает PNG, JPEG, BMP, TIFF и даже страницы PDF, рассматриваемые как изображения. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Подсказка**: Если ваше изображение больше 2 МБ, рассмотрите возможность предварительного изменения его размеров. Большие изображения увеличивают потребление памяти и могут замедлять этап определения. + +--- + +## Шаг 4 – Запустить процесс OCR и захватить результат + +Вызов `process()` выполняет тяжёлую работу: обнаружение текста, анализ макета и декодирование языка. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +Возвращаемый объект `ocr_result` содержит несколько полезных свойств: + +| Property | Description | +|----------|-------------| +| `text` | Обычная строка распознанного текста (то, что вы будете использовать чаще всего). | +| `confidence` | Общий коэффициент уверенности (0‑100). | +| `lines` | Список объектов `OcrLine` с позиционными данными (удобно для PDF). | + +--- + +## Шаг 5 – Показать извлеченный текст + +Наконец, выводим результат. В реальном приложении вы можете записать его в базу данных или передать в API перевода. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Ожидаемый вывод** (пример для изображения с несколькими языками): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Если вы видите искажённые символы, дважды проверьте, что изображение не повреждено и что вы используете последнюю версию `asposeocr` (v23.7 на момент написания). + +--- + +## Шаг 6 – Полный скрипт, который можно скопировать и вставить + +Собрав всё вместе, устраняем путаницу «где начинается код?». Сохраните это как `multilingual_ocr.py` и запустите из командной строки. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Запустите его: + +```bash +python multilingual_ocr.py +``` + +Вы должны увидеть извлечённые строки, напечатанные в консоли. И всё — **преобразовать изображение в текст** всего несколькими строками кода. + +--- + +## Часто задаваемые вопросы и обработка крайних случаев + +### Что если мое изображение содержит рукописный текст? +Aspose OCR оптимизирован для печатного текста. Рукописные шрифты часто требуют отдельной модели (например, Azure Read или Google Vision). Вы всё равно можете попробовать `Language.AUTO`, но ожидайте более низкую уверенность. + +### Как улучшить точность на шумных сканах? +1. Предобработайте изображение (бинаризация, удаление шумов). +2. Увеличьте DPI минимум до 300 ppi перед передачей в движок. +3. Явно задайте `ocr_engine.config.deskew = True`, если изображение наклонено. + +```python +ocr_engine.config.deskew = True +``` + +### Можно ли извлечь текст из PDF без предварительного преобразования в изображение? +Да — Aspose OCR может открывать страницы PDF напрямую: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Просто помните, что каждая страница обрабатывается как изображение внутри, поэтому те же требования к качеству применимы. + +--- + +## Заключение + +Теперь у вас есть надёжный сквозной рецепт для **извлечения текста из изображения** с помощью Aspose OCR в Python, полностью поддерживающий многоязычность. Скрипт демонстрирует, как **загрузить изображение для OCR**, **преобразовать изображение в текст** и справиться с наиболее распространёнными подводными камнями. + +Дальше вы можете: + +- Интегрировать функцию в веб‑сервис, принимающий загрузки от пользователей. +- Скомбинировать извлечённый текст с библиотекой определения языка, чтобы направлять его в нужный движок перевода. +- Поэкспериментировать с параметрами `ocr_engine.config` (например, `max_recognition_time`, `text_orientation`), чтобы точно настроить производительность. + +Счастливого кодинга, и пусть ваши OCR‑конвейеры всегда работают точно! + +--- + +![Снимок экрана извлечённого многоязычного текста – пример извлечения текста из изображения](image-placeholder.png "пример извлечения текста из изображения") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/russian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..d413c35ed --- /dev/null +++ b/ocr/russian/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-04-26 +description: Как пакетно выполнять OCR ваших документов и извлекать текст из сканов + в Python. Узнайте пошаговую пакетную обработку с OcrEngine для вывода в формате + JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: ru +og_description: Как пакетно выполнять OCR ваших отсканированных файлов и извлекать + текст из сканов в одном скрипте. Полный код, советы и обработка крайних случаев. +og_title: Как выполнять пакетное OCR – Быстрое руководство по Python +tags: +- OCR +- Python +- Automation +title: Как пакетно выполнять OCR – эффективно извлекать текст из сканов +url: /ru/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как выполнить batch OCR – Извлечение текста из сканов эффективно + +Когда‑нибудь задавались вопросом **how to batch OCR** гору отсканированных PDF‑файлов, не теряя рассудка? Вы не одиноки — разработчики постоянно спрашивают: *«Как можно extract text from scans за один раз?»* Хорошая новость в том, что несколько строк кода на Python могут превратить эту утомительную задачу в плавный, автоматизированный конвейер. + +В этом руководстве мы пройдемся по полностью готовому к запуску решению, которое **extracts text from scans**, сохраняет результаты в формате JSON и предоставляет быструю проверку в конце. Никаких внешних сервисов, никакой магии — только чистый Python, класс `OcrEngine` и немного работы с папками. + +## Что вы получите + +- Полностью рабочий скрипт, который **batches OCR** любой папки с изображениями. +- Четкие объяснения *почему* каждая строка существует, а не только *что* она делает. +- Советы по работе с пустыми папками, не‑изображениями и большими пакетами. +- Способ проверить, что JSON‑вывод действительно содержит извлеченный текст. + +### Предварительные требования (минимум) + +| Требование | Почему это важно | +|-------------|----------------| +| Python 3.8+ | Современный синтаксис и подсказки типов | +| `OcrEngine` library (or a compatible wrapper) | Основная OCR‑функциональность | +| Каталог со сканированными изображениями (PNG, JPG, TIFF) | Входные данные | +| Права записи для папки вывода | Сохранение JSON‑результатов | + +Если у вас уже всё есть, отлично — приступим. + +![как выполнить batch OCR workflow](image-placeholder.png){alt="как выполнить batch OCR workflow"} + +## Шаг 1 — Инициализация OCR‑движка (how to batch OCR) + +Прежде чем мы сможем что‑либо обработать, нам нужен экземпляр OCR‑движка. Считайте его «мозгом», который будет читать каждое изображение и выдавать текст. Инициализировать его один раз и переиспользовать на протяжении всего пакета — самый эффективный подход. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Почему переиспользовать один и тот же экземпляр?** +> Создание нового движка для каждого файла каждый раз загружало бы тяжёлые модели в память, резко замедляя пакетную обработку. Один экземпляр держит модель в ОЗУ и позволяет обрабатывать тысячи изображений без заметного замедления. + +## Шаг 2 — Указать папку со сканами (extract text from scans) + +Ваши сканы находятся где‑то на диске. Давайте укажем скрипту, где их искать. Использование абсолютных путей избавляет от неожиданностей «файл не найден», когда скрипт запускается из другой рабочей директории. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Совет:** +> Если вы работаете в Windows, прямые слэши (`/`) работают без проблем с `os.path.abspath`, поэтому не нужно экранировать обратные слэши. + +## Шаг 3 — Выбрать место для JSON‑результатов + +Вероятно, вам понадобится аккуратная папка для OCR‑результатов. Хранение вывода отдельно от исходных данных упрощает последующую очистку или передачу JSON в другой конвейер. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Зачем создавать папку программно?** +> Это гарантирует, что скрипт не упадёт, если директория отсутствует, а `exist_ok=True` делает операцию идемпотентной — скрипт можно запускать многократно без ошибок. + +## Шаг 4 — Запуск пакетного процесса (how to batch OCR) + +Теперь суть: указать `ocr_engine` пройтись по каждому файлу в `input_dir`, выполнить OCR и сохранить JSON в `output_dir`. Параметр `format="json"` сообщает движку сериализовать результат в структурированном виде, который любят последующие инструменты. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Что происходит под капотом? + +1. **Поиск файлов** — Движок рекурсивно сканирует `input_folder`, игнорируя скрытые файлы. +2. **Проверка файлов** — На OCR‑модель подаются только поддерживаемые расширения изображений (`.png`, `.jpg`, `.tif` и т.д.). +3. **Выполнение OCR** — Каждое изображение отправляется в OCR‑движок; захватываются текст, оценки уверенности и данные о разметке. +4. **Сериализация в JSON** — Результат записывается в файл с тем же базовым именем, но с расширением `.json` в `output_folder`. + +> **Обработка крайних случаев:** +> - **Пустая папка:** Движок выводит в лог «No files found» и завершает работу без ошибок. +> - **Повреждённое изображение:** Файл пропускается, ошибка записывается в `batch_errors.log`, и процесс продолжается. +> - **Большой пакет (10k+ файлов):** Потребление памяти остаётся низким, поскольку каждое изображение обрабатывается независимо. + +## Шаг 5 — Подтверждение завершения конвертации + +Простое выражение `print` даёт мгновенную обратную связь в консоли. В продакшн‑конвейерах его можно заменить вызовом логгера или отправкой email‑уведомления. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Когда вы увидите эту строку, можно безопасно проверить папку `json_output`. Каждый JSON‑файл будет выглядеть примерно так: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Теперь вы можете передать эти JSON‑файлы в базу данных, поисковый индекс или любой последующий аналитический инструмент. + +## Часто задаваемые вопросы (и быстрые ответы) + +**В: Что делать, если нужно обрабатывать PDF вместо изображений?** +**О:** Сначала преобразуйте каждую страницу PDF в изображение (например, с помощью `pdf2image`) и поместите полученные PNG/JPG файлы в `input_dir`. Логика batch OCR остаётся без изменений. + +**В: Можно ли изменить формат вывода на обычный текст?** +**О:** Конечно. Замените `format="json"` на `format="txt"`, и движок запишет файл `.txt`, содержащий только извлечённый текст. + +**В: Мои сканы находятся в нескольких подпапках — будет ли скрипт рекурсировать?** +**О:** Да. `batch_process` по умолчанию проходит по дереву каталогов. Если нужен плоский вывод, установите `flatten=True` (если библиотека поддерживает) или пост‑обработайте имена JSON‑файлов. + +**В: Как работать с нелатинскими скриптами?** +**О:** Инициализируйте `OcrEngine` с параметром языка, например `OcrEngine(lang="spa+eng")`. Сам цикл batch не требует изменений. + +## Профессиональные советы и распространённые подводные камни + +- **Размер пакета имеет значение:** Если вы замечаете всплески нагрузки на CPU, ограничьте процесс простым `time.sleep(0.1)` между файлами. +- **Логирование:** Замените вызов `print` на модуль `logging` в Python, чтобы фиксировать метки времени и уровни ошибок. +- **Коллизии имён файлов:** Если два скана имеют одинаковое базовое имя, но находятся в разных подпапках, JSON‑файлы перезапишут друг друга. Добавьте хеш относительного пути к имени вывода, чтобы избежать этого. +- **Утечки памяти:** Некоторые OCR‑бэкенды удерживают нативные ресурсы. В конце скрипта вызовите `ocr_engine.close()`, если библиотека предоставляет метод очистки. + +## Полный скрипт — готов к копированию и вставке + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Ожидаемый вывод в консоль** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Вы можете проверить JSON, открыв любой файл в `json_output` в текстовом редакторе или загрузив его в Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Вы должны увидеть необработанный OCR‑извлечённый текст, напечатанный в консоли. + +## Подведение итогов + +Мы только что рассмотрели **how to batch OCR** целый каталог отсканированных изображений и **extract text from scans** в чистые, машинно‑читаемые JSON‑файлы. Подход преднамеренно прост: настроить движок один раз, указать папку и позволить библиотеке выполнить тяжёлую работу. Далее вы можете: + +- Подключить JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/russian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..35eeee0a0 --- /dev/null +++ b/ocr/russian/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-04-26 +description: Как быстро и надёжно создать OCR. Научитесь извлекать текст из изображения, + загружать изображение для OCR и выполнять OCR на PNG с пользовательским словарём. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: ru +og_description: Как создать OCR в Python и извлечь текст из изображения. Это руководство + показывает, как загрузить изображение для OCR, выполнить OCR на PNG и использовать + пользовательский словарь. +og_title: Как создать OCR в Python — быстрое извлечение текста +tags: +- OCR +- Python +- Image Processing +title: Как создать OCR в Python — извлечение текста из изображения +url: /ru/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как создать OCR в Python – пошаговое руководство + +Вы когда‑нибудь задумывались **как создать OCR**, который может читать ваши отсканированные PDF, скриншоты или рукописные заметки? Вы не одиноки. Во многих реальных проектах нам нужно *извлекать текст из изображений*, но готовые движки часто спотыкаются о специфические для домена слова. + +В этом руководстве вы увидите полный, готовый к запуску пример, который загружает изображение для OCR, применяет пользовательский словарь и, наконец, **выполняет OCR на PNG** файлах. К концу вы сможете извлекать текст из любого изображения и адаптировать движок под свою терминологию. + +## Что покрывает это руководство + +Мы пройдём каждый необходимый шаг: + +* Установка небольшого, но мощного пакета `aocr` (или любой совместимой библиотеки). +* Настройка **пользовательского словаря**, чтобы такие термины, как `aspocorp` или `licensekey`, распознавались. +* **Загрузка изображения для OCR**, будь то PNG, JPEG или отсканированная страница PDF. +* Запуск процесса OCR и вывод результата. + +Без внешних ссылок на документацию, только автономное решение, которое вы можете скопировать‑вставить и запустить сегодня. + +### Требования + +* Python 3.8 или новее (код использует f‑строки). +* Базовое знакомство с командной строкой — вам понадобится ввести несколько команд `pip install`. +* Файл изображения (`technical_doc.png` в примере), размещённый в доступном месте. + +Если вы соответствуете этим трём пунктам, вы готовы к работе. + +--- + +## Шаг 1: Установить библиотеку OCR + +Сначала нам нужен OCR‑движок, поддерживающий программируемый объект конфигурации. Пакет `aocr` — это лёгкая обёртка над нативным OCR‑движком и хорошо подходит для демонстраций. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Совет:** Если вы работаете в Windows и получаете ошибку компиляции, попробуйте `pip install aocr‑binary`, который поставляется с готовыми wheel‑пакетами. + +### Почему устанавливать эту библиотеку? + +`aocr` предоставляет прямой доступ к объекту `config`, в который мы можем внедрить **пользовательский словарь**. Это секретный ингредиент для повышения точности на специализированных словарях. + +--- + +## Шаг 2: Создать экземпляр OCR‑движка и добавить пользовательский словарь + +Теперь мы запускаем движок и указываем ему, какие слова следует считать известными. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Почему пользовательский словарь важен + +Стандартные OCR‑модели обучаются на общих корпусах. Когда модель видит «aspocorp», она может разбить его на «aspo corp» или полностью удалить буквы. Передавая собственный список, мы смещаем распознаватель к точному написанию, что значительно сокращает последующую обработку. + +--- + +## Шаг 3: Загрузить изображение, которое нужно обработать + +Здесь мы **загружаем изображение для OCR**. Метод `Image.load` принимает строку пути и автоматически определяет тип файла. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Особый случай:** Если ваш источник — многостраничный PDF, сначала преобразуйте каждую страницу в PNG (например, с помощью `pdf2image`) и передавайте их по одной в движок. + +### Советы для улучшения качества изображения + +* Сохраняйте разрешение не менее 300 dpi. +* Убедитесь, что изображение ориентировано правильно; при необходимости поверните его с помощью `Pillow`. +* Преобразуйте цветные сканы в градации серого, чтобы уменьшить шум. + +--- + +## Шаг 4: Запустить процесс OCR на PNG‑файле + +С движком, настроенным и изображением, загруженным, мы наконец **выполняем OCR на PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +Вызов `process()` возвращает объект, содержащий распознанный текст, оценки уверенности и ограничивающие рамки для каждого слова. + +--- + +## Шаг 5: Вывести распознанный текст + +Самый простой способ увидеть, что нашёл движок, — вывести атрибут `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Ожидаемый вывод + +Если `technical_doc.png` содержит предложение *«The Aspocorp licensekey expires on 2025‑12‑31.»*, консоль должна отобразить: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Обратите внимание, как пользовательский словарь сохранил название бренда без изменений — то, что обычный OCR мог бы исказить. + +--- + +## Полный рабочий пример (готов к копированию‑вставке) + +Ниже весь скрипт, готовый к сохранению как `run_ocr.py`. Просто замените путь‑заполнитель на расположение вашего изображения. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Запустите его из терминала: + +```bash +python run_ocr.py +``` + +Вы должны увидеть извлечённый текст, выведенный в консоль, точно как в предыдущем примере. + +--- + +## Часто задаваемые вопросы (FAQ) + +| Question | Answer | +|----------|--------| +| **Могу ли я извлечь текст из отсканированного PDF?** | Да. Сначала преобразуйте каждую страницу в PNG (или TIFF), затем передайте изображения в тот же скрипт. | +| **Что если мое изображение JPEG, а не PNG?** | Метод `Image.load` поддерживает JPEG, BMP, TIFF и PNG из коробки. Просто измените расширение файла. | +| **Как улучшить точность на сканах с низким контрастом?** | Предобработайте с помощью `Pillow` — увеличьте контраст, примените бинаризацию или используйте `opencv` для исправления наклона. | +| **Можно ли получить оценки уверенности для каждого слова?** | `ocr_result` включает `words` — у каждого слова есть атрибут `confidence`, по которому можно итерировать. | +| **Можно ли запустить это на сервере без графического интерфейса?** | Абсолютно. `aocr` не имеет зависимостей от GUI, что делает его идеальным для CI‑конвейеров. | + +--- + +## Следующие шаги и связанные темы + +Теперь, когда вы знаете **как создать OCR** и **извлекать текст из изображений**, рассмотрите возможность изучения: + +* **Техники предобработки** — `load image for OCR` лишь первый шаг; используйте `opencv` для подавления шума или повышения резкости. +* **Пакетная обработка** — переберите каталог PNG‑файлов для создания поискового архива. +* **Поддержка нескольких языков** — добавьте языковые пакеты в движок, если нужно читать документы на французском или немецком. +* **Интеграция с Elasticsearch** — индексируйте извлечённый текст для полнотекстового поиска по отсканированным ресурсам. + +Каждое из этих расширений опирается на основной шаблон, который мы только что рассмотрели, поэтому переход будет безболезненным. + +--- + +## Итоги + +За несколько минут мы ответили на вопрос **как создать OCR**, который надёжно **извлекает текст из изображений**, особенно PNG, и показали, как **загружать изображение для OCR**, применять **пользовательский словарь** и **выполнять OCR на PNG** без внешних сервисов. + +Запустите скрипт, подправьте словарь под свою терминологию, и у вас будет надёжная основа для любого проекта по оцифровке документов. + +Если вы столкнулись с проблемами, оставьте комментарий ниже — будем рады помочь. И не забудьте поделиться своими историями успеха; сообщество лучше всего учится на реальных примерах. + +**Готовы автоматизировать свою бумажную работу?** Возьмите код, адаптируйте его и начните превращать пиксели в поисковый текст уже сегодня! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/russian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..b8b0659e9 --- /dev/null +++ b/ocr/russian/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-04-26 +description: как извлечь OCR из изображений с помощью Python – пример OCR на Python, + показывающий, как загрузить изображение для OCR и извлечь текст из чека. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: ru +og_description: Как извлечь OCR из изображений с помощью Python. Узнайте пример OCR + на Python, загрузите изображение для OCR и извлеките текст из чека за несколько + минут. +og_title: Как извлечь OCR в Python — Полное руководство +tags: +- OCR +- Python +- Image Processing +title: Как извлечь OCR в Python – пошаговое руководство +url: /ru/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# как извлечь OCR в Python – Полное руководство + +Когда‑нибудь задавались вопросом **как извлечь OCR** из размытого чека или отсканированного счета? Вы не одиноки — разработчики постоянно сталкиваются с проблемой получения чистого, машинно‑читаемого текста из изображений. Хорошая новость? Всего несколькими строками Python можно превратить фотографию чека в высокодостоверный, индексируемый текст. + +В этом руководстве мы пройдём через **python OCR example**, который демонстрирует **how to load image for OCR**, запуск движка и отбор только тех символов, которые соответствуют порогу достоверности 85 %. К концу вы сможете **extract text from receipt** без бесконечного изучения документации и угадывания параметров API. + +## Что понадобится + +- Python 3.9 или новее (используемый синтаксис работает на 3.8+) +- Пакет `aocr` (или любая OCR‑библиотека, предоставляющая класс `OcrEngine`). Установите его командой: + +```bash +pip install aocr +``` + +- Пример изображения чека (`receipt.png`), размещённый в доступной папке. +- Текстовый редактор или IDE — VS Code, PyCharm или даже простой ноутбук подойдёт. + +И всё. Никаких тяжёлых фреймворков, внешних сервисов, только чистый Python. + +![High‑confidence OCR result – how to extract ocr from a receipt](/images/ocr-high-confidence.png) + +*Image alt text: как извлечь OCR из чека с помощью Python OCR* + +## Шаг 1 — Создание экземпляра OCR‑движка (how to extract OCR) + +Первое, что мы делаем, — запускаем OCR‑движок. Представьте его как мозг, который будет читать пиксели за нас. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Почему?** Создание экземпляра `OcrEngine` даёт вам свежий объект конфигурации. Позже вы сможете менять языковые модели, настройки DPI или предобработку — всё без изменения основного цикла обработки. + +## Шаг 2 — Загрузка изображения для OCR + +Далее мы указываем движку, какое изображение анализировать. Здесь в игру вступает ключевое слово **load image for OCR**. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tip:** Если ваше изображение находится в другой директории, используйте `os.path.join` для построения кроссплатформенного пути. + +**Почему именно так загружать изображение?** Вспомогательная функция `Image.load` читает файл в формат, понятный движку, автоматически обрабатывая распространённые форматы (PNG, JPEG, TIFF). Пропуск этого шага или передача сырых байтов вызовет `ValueError`. + +## Шаг 3 — Запуск процесса OCR + +Теперь мы действительно запускаем OCR. Метод `process` возвращает богатый объект результата, содержащий распознанные символы, оценки достоверности и ограничивающие рамки. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Что содержит `ocr_result`?** В большинстве библиотек он включает: + +- `text`: исходная конкатенированная строка. +- `symbol_confidences`: список кортежей `(char, confidence)`. +- `boxes`: координаты каждого символа (полезно для визуальной отладки). + +Доступ к достоверности по каждому символу необходим для следующего шага. + +## Шаг 4 — Оставляем только символы с высокой достоверностью (≥ 85 %) + +Чек часто имеет пятна, блеклую печать или фоновые шумы. Фильтрация символов с низкой достоверностью значительно улучшает последующий разбор. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Почему 85 %?** Эмпирически порог около 0.85 обеспечивает баланс между полнотой и точностью для большинства печатных чеков. Если заметите пропущенные цифры, уменьшите порог; если получаете «мусор», увеличьте его. + +## Шаг 5 — Вывод текста с высокой достоверностью + +Наконец, выводим (или сохраняем) очищенную строку. Это ядро нашего рабочего процесса **extract text from receipt**. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Типичный вывод выглядит так: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Теперь вы можете передать эту строку в CSV‑writer, базу данных или любой последующий аналитический конвейер. + +## Полный готовый к запуску скрипт + +Ниже полный фрагмент кода, который можно скопировать в `ocr_receipt.py` и сразу выполнить. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Сохраните файл, убедитесь, что `receipt.png` существует, и запустите: + +```bash +python ocr_receipt.py +``` + +Вы должны увидеть очищенный текст чека, выведенный в консоль. + +## Пограничные случаи и сценарии «что если» + +| Ситуация | Предлагаемое решение | +|-----------|----------------------| +| **Очень низкая достоверность по всему изображению** | Предобработайте изображение: увеличьте контраст, переведите в градации серого или примените фильтр шумоподавления (`cv2.GaussianBlur`). | +| **Не‑латинские символы** | Передайте языковую модель в `OcrEngine` (например, `ocr_engine.language = "spa"` для испанского). | +| **Несколько чеков на одном изображении** | Выполните OCR для всего изображения, затем разбейте результат с помощью регулярных выражений, ищущих `\n\n+` (двойные переносы строк). | +| **Нужен также сырой OCR‑текст** | Сохраняйте `ocr_result.text` рядом с отфильтрованной версией для отладки. | + +Эти варианты позволяют вашему знанию **how to use OCR** масштабироваться за пределы самого простого случая. + +## Распространённые подводные камни (и как их избежать) + +- **Забыли установить библиотеку** — `pip install aocr` должен завершиться успешно до импорта. +- **Неправильный разделитель пути** в Windows (`\` vs `/`). Используйте `os.path.join`. +- **Жёстко закодированный порог достоверности** без тестов — всегда проверяйте несколько чеков визуально. +- **Игнорирование нормализации Unicode** — в некоторых чеках встречаются специальные тире; выполните `unicodedata.normalize('NFKC', text)`, если планируете сохранять результат. + +## Следующие шаги — Выход за рамки базового + +Теперь, когда вы знаете **how to extract OCR** из одного чека, вы можете: + +1. **Пакетно обрабатывать папку с чеками** — перебрать все PNG/JPG файлы и записать каждый результат в CSV. +2. **Интегрировать с базой данных** — сохранять `high_confidence_text` в SQLite для быстрых запросов. +3. **Применять естественноязыковую обработку** — использовать regex или `dateutil` для извлечения дат, сумм и налогов. +4. **Экспериментировать с альтернативными библиотеками** — `pytesseract`, `easyocr` или облачные сервисы (Google Vision, Azure OCR), если нужна поддержка нескольких языков или более высокая точность. + +Каждая из этих тем естественно включает наши вторичные ключевые слова: *python OCR example*, *extract text from receipt*, *load image for OCR*, и *how to use OCR*. + +## Заключение + +Мы только что прошли полный **python OCR example**, показывающий **how to extract 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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/russian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..f124516e8 --- /dev/null +++ b/ocr/russian/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: 'как использовать OCR в Python: научитесь извлекать текст из изображения + и читать TIFF‑файлы в Python с помощью простого примера OCR. Быстрый, готовый к + запуску код включён.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: ru +og_description: 'как выполнить OCR в Python: пошаговое руководство, показывающее, + как извлекать текст из изображения, читать TIFF‑файлы в Python и конвертировать + текст сканированного изображения с помощью простого исполняемого скрипта.' +og_title: Как использовать OCR в Python – базовый пример OCR для извлечения текста +tags: +- OCR +- Python +- Image Processing +title: Как использовать OCR в Python – базовый пример OCR для извлечения текста +url: /ru/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# how to ocr python – Базовый пример OCR для извлечения текста + +Когда‑то задавались вопросом **how to ocr python**, имея перед собой отсканированный TIFF? Вы не одиноки, глядя на кучу файлов изображений и задаваясь вопросом: «Как извлечь из этого слова?» Хорошая новость в том, что превратить картинку в обычный текст — проще простого, если использовать правильную библиотеку и следовать нескольким ясным шагам. + +В этом руководстве мы пройдем через **basic OCR example**, который читает TIFF‑файл, извлекает текст и выводит его в консоль. К концу вы точно будете знать, как **extract text from image** файлов, как справляться с особенностями формата TIFF и что можно подправить, если нужно **convert scanned image text** в более полезный вид. Никакой скрытой магии — только прямой Python‑код, который можно скопировать‑вставить и запустить уже сегодня. + +## What You’ll Need + +Прежде чем углубиться, убедитесь, что у вас есть: + +- Установленный Python 3.9+ (желательно последняя стабильная версия). +- Устанавливаемая через pip OCR‑библиотека. В этом руководстве мы будем использовать вымышленный пакет `aocr`, имитирующий популярные инструменты вроде Tesseract; позже его можно заменить на `pytesseract` или `easyocr`. +- TIFF‑изображение, которое нужно обработать — назовите его `input.tiff` и поместите в папку, путь к которой будет указан в коде. +- Базовые навыки работы с командной строкой (только для установки пакета). + +И всё. Никаких тяжёлых зависимостей, без Docker‑контейнеров, всего несколько строк кода. + +## Step 1 – Install and Import Dependencies (how to ocr python) + +Сначала установим OCR‑пакет. Откройте терминал и выполните: + +```bash +pip install aocr +``` + +Если хотите использовать реальную библиотеку, замените `aocr` на `pytesseract` и установите движок Tesseract отдельно. + +Теперь импортируем необходимое. Класс `Path` из `pathlib` предоставляет удобный способ работы с путями к файлам независимо от ОС. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Почему `Path`?* Потому что он абстрагирует слеши (`/` vs `\`) и позволяет соединять каталоги без забот о конкретной системе. Эта небольшая деталь часто спасает от головной боли, когда скрипт переносится на CI‑сервер. + +## Step 2 – Create the OCR Engine Instance (basic ocr example) + +Далее создаём экземпляр OCR‑движка. Представьте `OcrEngine` как мозг, который будет «читать» картинку и выдавать символы. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +Большинство OCR‑библиотек позволяют настроить язык, DPI или пороги уверенности здесь. Для этого **basic OCR example** мы оставим значения по умолчанию, но позже можно поиграть с `ocr_engine.config`, если понадобится поддержка нескольких языков. + +## Step 3 – Load Your TIFF Image (read tiff file python) + +Здесь вступает в действие часть **read tiff file python**. TIFF может быть многостраничным, но `Image.load` по умолчанию берёт первую страницу — идеально для одностраничного скана. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Замените `"YOUR_DIRECTORY"` на реальный каталог, где находится `input.tiff`. Если не уверены, где запускается скрипт, `Path.cwd()` выведет текущий рабочий каталог — удобно для отладки путей. + +## Step 4 – Run the OCR Process (extract text from image) + +Теперь происходит магия. Вызов `process()` пропускает изображение через OCR‑конвейер и возвращает объект результата. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +За кулисами движок может конвертировать изображение в градации серого, применять пороговую обработку и подавать его в нейронную сеть. Вам не нужно управлять этими шагами; библиотека делает это за вас. + +## Step 5 – Print the Recognized Text (convert scanned image text) + +Наконец, выводим распознанный текст. В реальных проектах, скорее всего, вы запишете его в файл или базу данных, но печать сохраняет пример компактным. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +При запуске скрипта вы должны увидеть что‑то вроде: + +``` +Hello, world! +This is a sample scanned document. +``` + +Если вывод выглядит «мусором», проверьте, что исходное изображение чёткое и что язык OCR совпадает с текстом. + +## Full Working Script + +Собираем всё вместе, вот полностью готовая к запуску программа: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Expected Output + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Если нужно **convert scanned image text** в поисковый PDF, можно передать `ocr_result.text` в генератор PDF, например `reportlab` — но это уже отдельный урок. + +## Common Pitfalls & Pro Tips + +- **Низкое разрешение сканов**: OCR плохо работает ниже 150 DPI. Если ваш TIFF размытый, сначала увеличьте его с помощью Pillow (`Image.open(...).resize(...)`). +- **Несколько страниц**: Для многостраничных TIFF‑файлов перебирайте `Image.load_multi_page()` (если библиотека поддерживает) и конкатенируйте результаты. +- **Поддержка языков**: Многие движки по умолчанию используют английский. Установите `ocr_engine.language = "spa"` для испанского, например. +- **Обработка пробелов**: OCR часто добавляет лишние разрывы строк. Используйте `str.splitlines()` или регулярные выражения для очистки вывода. +- **Производительность**: При пакетной обработке переиспользуйте один экземпляр `OcrEngine` вместо создания нового для каждого файла. + +## Extending the Example + +Теперь, когда вы освоили **how to ocr python** для одного изображения, рассмотрите следующие шаги: + +1. **Пакетная обработка** — пройдитесь по каталогу TIFF‑файлов и запишите каждый результат в файл `.txt`. +2. **Интеграция с Pandas** — храните извлечённый текст вместе с метаданными для быстрой аналитики. +3. **Гибридный подход** — комбинируйте OCR с NLP‑библиотеками, такими как `spaCy`, чтобы извлекать сущности (имена, даты, суммы) из отсканированных счетов. +4. **Альтернативные форматы файлов** — замените `Image.load` на `Image.from_bytes`, чтобы работать с изображениями, полученными из API или базы данных. + +Все эти идеи опираются на базовую концепцию **extract text from image** и **convert scanned image text** в данные, понятные машинам. + +## Conclusion + +Мы прошли через чёткий, сквозной **basic OCR example**, который демонстрирует **how to ocr python**, **read tiff file python** и **extract text from image** файлы всего несколькими строками кода. Скрипт автономный, включает обработку ошибок и выводит результат напрямую, что делает его надёжной основой для любого проекта, требующего преобразования отсканированных документов в редактируемый текст. + +Экспериментируйте — меняйте OCR‑бэкенд, подстраивайте предобработку или подключайте вывод к последующим этапам рабочего процесса. Возможности безграничны, когда вы надёжно **convert scanned image text** в поисковые, индексируемые данные. + +Есть вопросы о граничных случаях, языковых пакетах или настройке производительности? Оставляйте комментарий ниже, и happy coding! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/russian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..341178983 --- /dev/null +++ b/ocr/russian/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,182 @@ +--- +category: general +date: 2026-04-26 +description: Как выполнить OCR на отсканированной форме, узнать, как предварительно + обработать изображение для снижения шума, и быстро извлечь текст из изображения. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: ru +og_description: Как выполнять OCR на отсканированных документах, предобрабатывать + изображения, уменьшать шум и эффективно извлекать текст. +og_title: Как выполнить OCR и предобработать изображения — Краткое руководство +tags: +- OCR +- image processing +- Python +title: Как запустить OCR и предобработать изображения — извлечь текст из отсканированных + форм +url: /ru/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как запустить OCR – Полное руководство по извлечению текста из изображений + +Когда‑то задавались вопросом, **как запустить OCR** на грязной отсканированной форме и получить чистый, индексируемый текст? Вы не одиноки. Во многих реальных проектах исходное изображение полно пятен, неравномерного освещения и других особенностей, из‑за которых стандартный OCR «спотыкается». + +Хорошая новость? С помощью нескольких строк Python и умного конвейера предобработки вы можете значительно повысить точность распознавания, **снизить шум** и извлечь именно те слова, которые нужны. В этом руководстве мы пройдём каждый шаг — от загрузки изображения до вывода финальной строки — чтобы вы получили готовый фрагмент кода, который можно адаптировать под счета, чеки или любой отсканированный документ. + +## Что вы создадите + +- Экземпляр `OcrEngine`, который взаимодействует с подлежащей OCR‑библиотекой. +- Цепочку предобработки, которая **бинаризует** изображение и применяет **медианный блюр** для сглаживания пятен. +- Простой вызов `process()`, возвращающий объект с полем `text`, содержащим извлечённую строку. + +К концу вы получите автономный скрипт, который можно запустить на любом файле изображения и сразу увидеть извлечённый текст в консоли. + +## Предпосылки + +- Python 3.9+ (используемый синтаксис соответствует последнему стабильному релизу). +- Вымышленный пакет `aocr` — это тонкая обёртка вокруг Tesseract или любой современной OCR‑системы. Установите его командой `pip install aocr`. +- Отсканированное изображение (`scanned_form.jpg`), помещённое в папку, к которой вы можете обратиться. + +Если вы используете реальную OCR‑библиотеку, например `pytesseract`, замените `OcrEngine` на соответствующий класс — всё остальное остаётся без изменений. + +![](how-to-run-ocr-example.png "how to run OCR example showing a scanned form and extracted text") + +*Alt text: как запустить OCR на отсканированном документе и просмотреть извлечённый текст.* + +--- + +## Шаг 1: Как запустить OCR – Инициализация движка + +Прежде чем движок сможет что‑то прочитать, нам нужно создать его экземпляр. Считайте `OcrEngine` мозгом, который позже будет интерпретировать визуальные данные. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Почему это важно:** Создание экземпляра движка загружает внутренние модели, языковые пакеты и подготавливает среду выполнения. Пропуск этого шага обычно приводит к ошибке `NoneType`, когда позже вызывается `process()`. + +--- + +## Шаг 2: Как предобработать изображение – Загрузить вашу отсканированную форму + +Теперь, когда «мозг» готов, подаём ему картинку. Изображение может быть в любом формате, поддерживаемом `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Совет:** Используйте абсолютные пути во время разработки, чтобы избежать сюрпризов «файл не найден», когда скрипт запускается из другой рабочей директории. + +--- + +## Шаг 3: Как уменьшить шум – Применить бинаризацию и медианный блюр + +Сырые сканы часто содержат случайные точки, неравномерный фон или слабые тени. Два классических приёма — **бинаризация** и **медианный блюр** — очищают изображение, не жертвуя краями, определяющими символы. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Углубляемся + +- **Бинаризация**: Значение `threshold=180` говорит алгоритму: «Всё, что ярче 180, становится белым; всё остальное — чёрным». Отрегулируйте это число, если ваш скан слишком тёмный или светлый. +- **Медианный блюр**: Радиус `2` означает, что фильтр рассматривает окно 5×5 пикселей и заменяет центральный пиксель медианным значением. Это сглаживает отдельные пятна, сохраняя при этом штрихи букв. + +> **Особый случай:** Если в документе есть цветные выделения, простая бинаризация может их стереть. В таком случае рассмотрите использование `aocr.ImageFilters.adaptive_threshold()`, который адаптирует порог локально по всему изображению. + +--- + +## Шаг 4: Как извлечь текст – Запустить процесс OCR + +Имея уже чистое изображение, мы наконец позволяем движку проявить магию. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Что происходит «под капотом»?** Движок прогоняет нейронную сеть (или устаревший шаблонный сопоставитель) по матрице пикселей, переводит каждый распознанный глиф в символ Unicode и собирает их в строки и абзацы. + +--- + +## Шаг 5: Как извлечь текст – Вывести результат + +Объект `ocr_result` предоставляет удобный атрибут `text`. Посмотрим, что мы получили. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Ожидаемый вывод + +Если отсканированная форма содержит: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Вы должны увидеть что‑то вроде: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Обратите внимание, как шаг предобработки устранил случайные точки, из‑за которых ранее слово «Amount» превращалось в «Am0unt». Это сила **уменьшения шума** перед OCR. + +--- + +## Распространённые ошибки и способы их исправления + +| Симптом | Возможная причина | Быстрое решение | +|---------|-------------------|-----------------| +| Искажённые символы (например, “@#%”) | Слишком тёмное или слишком светлое изображение | Подкорректировать `threshold` в `binarize()`; попробовать `adaptive_threshold`. | +| Пропущенные слова | Шум всё ещё присутствует | Увеличить `radius` в `median_blur` или добавить фильтр `gaussian_blur`. | +| Неправильный язык (например, английские буквы стали китайскими) | Загружен неверный языковой пакет | Передать `language="eng"` при создании `OcrEngine()`, если библиотека это поддерживает. | +| Медленная обработка больших файлов | Высокое разрешение | Сначала уменьшить размер изображения: `aocr.ImageFilters.resize(width=1200)` перед бинаризацией. | + +--- + +## Дальнейшее развитие – Следующие шаги и связанные темы + +- **Пакетная обработка**: Оберните вышеописанную логику в цикл, чтобы автоматически обрабатывать десятки файлов. +- **Структурированный вывод**: Используйте регулярные выражения на `ocr_result.text`, чтобы вытаскивать такие поля, как даты или суммы. +- **Альтернативные библиотеки**: Замените `aocr` на `pytesseract` — изменения потребуются только в шаге инициализации движка. +- **Как предобрабатывать изображения из PDF**: Преобразуйте каждую страницу PDF в изображение, затем примените тот же конвейер. + +Эти расширения позволяют масштабировать решение от одной формы до корпоративного конвейера ingest‑а документов. + +--- + +## Заключение + +Мы рассмотрели **как запустить 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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/russian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..0a9787c9d --- /dev/null +++ b/ocr/russian/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-04-26 +description: Узнайте, как установить лицензию в Aspose OCR и как проверить её с помощью + лаконичного скрипта на Python. Следуйте пошаговым инструкциям для беспроблемной + активации. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: ru +og_description: Как установить лицензию в Aspose OCR и как проверить её с помощью + Python. Получите полноценный, готовый к запуску пример за несколько минут. +og_title: Как установить лицензию в Aspose OCR – Краткое руководство по Python +tags: +- Aspose OCR +- Python +- Licensing +title: Как установить лицензию в Aspose OCR – Краткое руководство по Python +url: /ru/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как установить лицензию в Aspose OCR – Быстрое руководство на Python + +Когда‑то задавались вопросом **как установить лицензию** для Aspose OCR, не теряя волосы? Вы не одиноки. Большинство разработчиков сталкиваются с проблемой при первой попытке разблокировать полную мощность библиотеки и видят водяной знак «Trial version». Хорошая новость — исправление довольно простое, и вы можете проверить его сразу. + +В этом руководстве мы пройдемся по **установке лицензии** *и* **проверке лицензии** с помощью небольшого скрипта на Python. К концу вы получите работающий пример, который выводит «License OK», а также несколько советов, чтобы избежать распространённых ошибок. + +## Предварительные требования + +Прежде чем погрузиться в детали, убедитесь, что у вас есть: + +- Установленный Python 3.8+ (код работает на 3.9, 3.10 и новее). +- Действующий файл лицензии Aspose OCR для Java (или .NET) — обычно называется `Aspose.OCR.Java.lic`. +- Пакет `asposeocr`, установленный через `pip install asposeocr`. +- Базовое знакомство с запуском скриптов Python из командной строки. + +Все готово? Отлично — начнём. + +## Как установить лицензию в Aspose OCR (Шаг 1) + +Установка лицензии — это по сути трёхстрочная операция, но каждая строка имеет своё назначение. Разберём её, чтобы вы понимали *почему* делаем то, что делаем. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Зачем импортировать `License`?** +Класс `License` — это шлюз, который сообщает движку Aspose OCR, что вы оплатили продукт. Без создания экземпляра библиотека будет считать, что вы используете пробную версию. + +**Зачем создавать экземпляр `License`?** +Создание экземпляра даёт вам объект (`license_obj`), который может хранить путь к вашему файлу `.lic` и затем применить его к среде выполнения. + +## Как установить лицензию в Aspose OCR — указание файла лицензии + +Теперь указываем объекту реальный файл лицензии на диске. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Советы и приёмы:** + +- **Абсолютный vs относительный путь** — Если вы запускаете скрипт из другой папки, абсолютный путь (`C:/licenses/...`) избавит от ошибок «file not found». +- **Переменные окружения** — Хранение пути в переменной окружения (`OCR_LICENSE_PATH`) держит секреты вне контроля версий: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Как проверить лицензию — убедиться, что всё работает + +Установка лицензии — лишь половина дела; нужно подтвердить, что библиотека её приняла. Здесь на помощь приходит шаг проверки. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Если файл лицензии отсутствует, повреждён или не соответствует, `validate()` выбросит исключение. Перехват этого исключения даёт чистый способ сообщить о проблеме. + +## Полный рабочий пример (все шаги вместе) + +Ниже представлен полностью готовый к запуску скрипт. Запустите его из терминала (`python set_license.py`), и вы должны увидеть вывод «License OK». + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Ожидаемый вывод** + +``` +License OK +``` + +Если что‑то пошло не так, вы увидите что‑то вроде: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Это сообщение точно указывает, что исправлять — без догадок. + +## Как проверить лицензию — обработка типичных граничных случаев + +Даже с приведённым скриптом возможны некоторые сценарии, которые могут вызвать проблемы: + +| Ситуация | Что происходит | Как исправить | +|-----------|----------------|---------------| +| **Опечатка в пути к файлу** | `FileNotFoundError` из `set_license` | Проверьте путь; используйте `os.path.abspath()` для отладки. | +| **Неправильный тип файла** | При проверке возникает «Invalid license format» | Убедитесь, что используете файл `.lic`, соответствующий вашей версии продукта. | +| **Истёкшая лицензия** | При проверке появляется «License expired» | Обновите лицензию через поддержку Aspose и замените файл. | +| **Запуск в ограниченной среде** (например, AWS Lambda) | Ошибка доступа | Предоставьте права чтения каталогу или включите лицензию в пакет развертывания. | + +Совет: оберните вызов `set_license` в отдельный блок `try/except`, если хотите различать ошибки «файл не найден» и «неверный формат». + +## Визуальное резюме + +![how to set license in Aspose OCR example](/images/aspose-ocr-license.png "how to set license in Aspose OCR example") + +*Скриншот показывает, как скрипт выводит «License OK» после успешной активации.* + +## Распространённые ошибки и лучшие практики + +- **Никогда не коммитьте файл лицензии в публичный репозиторий.** Используйте переменные окружения или менеджеры секретов (GitHub Secrets, Azure Key Vault). +- **Проверяйте сразу.** Вызов `license_obj.validate()` сразу после `set_license` ловит ошибки до начала любой работы OCR. +- **Повторно используйте объект License.** Лицензию нужно устанавливать один раз за процесс; последующие вызовы OCR автоматически используют активированную лицензию. +- **Логируйте путь к лицензии (без имени файла) в продакшене** для упрощения отладки без раскрытия самого файла. + +## Следующие шаги — расширение вашего OCR‑процесса + +Теперь, когда вы знаете **как установить лицензию** и **как проверить лицензию**, можно переходить к основным задачам OCR: + +- **how to read image** — `Image.load("sample.png")` +- **how to extract text** — `ocr_engine.recognize(image)` +- **how to configure OCR options** — настройте параметры `OcrEngine` для языка, точности и т.д. + +Все эти темы строятся на успешно лицензированном движке, так что водяной знак пробной версии больше не появится. + +## Заключение + +Мы рассмотрели весь процесс **установки лицензии** для Aspose OCR, продемонстрировали **проверку лицензии** и предоставили полностью рабочий скрипт, выводящий «License OK». Обрабатывая ошибки заранее и используя переменные окружения, вы делаете приложение безопасным и надёжным. + +Есть дополнительные вопросы по OCR, лицензированию или интеграции 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/russian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/russian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..4ab1eafd6 --- /dev/null +++ b/ocr/russian/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: как использовать OCR для отсканированных PDF, извлекать текст из PDF, + запускать OCR на PDF и преобразовывать отсканированный PDF в поисковые файлы за + несколько шагов. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: ru +og_description: 'как использовать OCR в Python: узнайте, как извлекать текст из PDF, + выполнять OCR на PDF и преобразовывать отсканированные PDF в документы, доступные + для поиска.' +og_title: Как использовать OCR – Краткое руководство по извлечению текста из PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: как использовать OCR – извлекать текст из PDF с помощью Python +url: /ru/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# как использовать OCR – извлечение текста из PDF с помощью Python + +Задумывались ли вы когда‑нибудь **как использовать OCR**, чтобы извлечь текст из отсканированного контракта, чека или электронной книги? Вы не одиноки. Во многих реальных проектах получаемый PDF представляет собой просто изображение, и без OCR вы не сможете искать, индексировать или анализировать его содержимое. + +В этом руководстве мы пройдем полный, готовый к запуску пример, который показывает **как использовать OCR**, как **извлекать текст из PDF**, и почему вам может понадобиться **конвертировать отсканированный PDF** в поисковые документы. Мы также рассмотрим тонкое искусство **загрузки PDF как изображения**, чтобы движок OCR мог чётко видеть каждую страницу. + +> **Быстрый обзор:** К концу вы получите скрипт, который загружает многостраничный PDF, запускает OCR на каждой странице и выводит распознанный текст – без внешних сервисов. + +## Что понадобится + +- Python 3.9+ (подойдёт любая современная версия) +- пакет `aocr` (или любая совместимая OCR‑библиотека, предоставляющая `OcrEngine` и `Image.load`) +- отсканированный PDF‑файл, который нужно обработать (например, `contract.pdf`) +- умеренное количество ОЗУ (≈ 200 МБ на 100‑страничный PDF обычно достаточно) + +Если вы ещё не установили библиотеку OCR, выполните: + +```bash +pip install aocr +``` + +> **Pro tip:** Используйте виртуальное окружение, чтобы держать зависимости в порядке. + +## Шаг 1: Загрузка PDF как изображения – первый кусок головоломки + +Прежде чем OCR сможет работать, PDF должен быть представлен в виде изображения. Здесь в игру вступает вторичное ключевое слово **load pdf as image**. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Почему это важно:* `aocr.Image.load` внутренне растеризует каждую страницу PDF в bitmap, который понимает движок OCR. Если пропустить этот шаг и передать сырой PDF, движок выдаст ошибку, потому что ожидает пиксельные данные, а не векторные. + +> **Note:** Путь может быть абсолютным или относительным. Убедитесь, что файл доступен для чтения; иначе вы получите `FileNotFoundError`. + +## Шаг 2: Запуск OCR на PDF – превращение пикселей в символы + +Теперь, когда PDF существует как изображение, мы наконец можем **run OCR on PDF**. Ниже приведён фрагмент, который обрабатывает все страницы за один проход: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Что происходит «под капотом»?* `process_all_pages` перебирает растеризованные страницы, применяет модель OCR и возвращает список объектов‑результатов – по одному на страницу. Каждый результат содержит распознанный текст, оценки уверенности и ограничивающие рамки (если они понадобятся позже). + +## Шаг 3: Извлечение текста из PDF – вытягивание строк + +Имея результаты OCR, извлекать чистый текст становится тривиально. Мы пройдемся по страницам и выведем результат, демонстрируя вторичное ключевое слово **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Ожидаемый вывод** (усечённый для краткости): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Если нужен текст в одной строке, просто объедините его: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Теперь вы успешно **extracted text from PDF** с помощью OCR. + +## Шаг 4: Конвертация отсканированного PDF – делаем его поисковым + +Многие downstream‑инструменты (например, Elasticsearch или SharePoint) ожидают поисковый PDF, а не просто дамп текста. Вы можете внедрить вывод OCR обратно в оригинальный PDF, эффективно **convert scanned PDF** в поисковую версию. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Зачем это нужно?* Поисковый PDF сохраняет оригинальное расположение и изображения, одновременно позволяя выделять текст и индексировать его – выгода и для людей, и для машин. + +## Общие подводные камни и граничные случаи + +### Многостраничные PDF, превышающие память + +Если ваш PDF содержит сотни страниц, загрузка всего сразу может исчерпать ОЗУ. Библиотека `aocr` поддерживает ленивую загрузку: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Затем обрабатывайте страницы по одной: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Сканирование низкого качества + +Точность OCR резко падает на размытых или низкоконтрастных сканах. Прежде чем передать изображение движку, рассмотрите предобработку: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Поддержка языков + +По умолчанию движок предполагает английский. Чтобы **run OCR on PDF** на другом языке, укажите код языка: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Убедитесь, что соответствующая языковая модель установлена. + +## Полный рабочий пример + +Собрав всё вместе, получаем автономный скрипт, который можно сохранить в файл `ocr_pdf.py` и сразу запустить: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Запустите его так: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Вы увидите текст, выведенный в консоль, а если указали `-o`, рядом с оригиналом появится поисковый PDF. + +## Pro Tips & Best Practices + +- **Batch processing:** При обработке десятков PDF оберните вышеописанную логику в цикл и логируйте успех/неудачу каждого файла. +- **Confidence filtering:** Каждый `page_result` содержит метрику уверенности. Отбрасывайте или помечайте страницы с низкой уверенностью для ручной проверки. +- **Parallelism:** Если ваш CPU имеет несколько ядер, рассмотрите использование `concurrent.futures` для параллельной обработки страниц – только следите за использованием памяти. +- **Version lock:** API `aocr` может изменяться. Зафиксируйте версию в `requirements.txt` (например, `aocr==2.3.1`), чтобы избежать ломающих изменений. + +## Заключение + +Мы прошли путь от **how to use OCR** до **extract text from PDF**, **run OCR on PDF**, **load PDF as image** и даже **convert scanned PDF** в поисковый формат. Код полностью готов, объяснения охватывают как *что*, так и *почему*, и теперь у вас есть переиспользуемый шаблон для любого проекта, работающего с PDF‑файлами, основанными на изображениях. + +Что дальше? Попробуйте передать извлечённый текст в конвейер обработки естественного языка, индексировать поисковые PDF в Elasticsearch или поэкспериментировать с другими OCR‑бэкендами, такими как Tesseract или Azure Computer Vision. Возможности безграничны, а инструменты уже у вас под рукой. + +Счастливого кодинга, и пусть ваши PDF всегда будут поисковыми! + +![пример использования OCR](/images/ocr_workflow.png "как использовать 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/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/russian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..51bb4078e --- /dev/null +++ b/ocr/russian/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Как использовать многопоточность для загрузки изображения для OCR в Python. + Узнайте асинхронную обработку OCR с обратными вызовами, фоновыми потоками и загрузкой + изображений всего за несколько шагов. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: ru +og_description: Как использовать многопоточность для загрузки изображения для OCR + в Python. Это руководство показывает полный, исполняемый пример с обратными вызовами + и фоновым выполнением. +og_title: Как использовать многопоточность для загрузки изображения для OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Как использовать многопоточность для загрузки изображения для OCR +url: /ru/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Как использовать многопоточность для загрузки изображения для OCR + +Когда‑нибудь задавались вопросом **как использовать многопоточность** для загрузки изображения для OCR без заморозки вашего приложения? Такая ситуация возникает, будь то настольный сканер, веб‑служба или простой скрипт, обрабатывающий огромные картинки. Хорошая новость? Пара строк кода на Python и правильный шаблон многопоточности позволят UI оставаться отзывчивым, пока движок OCR делает своё волшебство. + +В этом руководстве мы пройдём полный, сквозной пример: загрузим большой PNG, запустим OCR в фоновом потоке и обработаем результат с помощью callback‑функции. К концу вы не только узнаете **как использовать многопоточность**, но и **как загрузить изображение для OCR** чистым, переиспользуемым способом. + +## Что понадобится + +- Python 3.9+ (используемый синтаксис работает на любой современной версии) +- `pillow` для работы с изображениями (`pip install pillow`) +- `pytesseract` как лёгкая обёртка над Tesseract OCR (`pip install pytesseract`) +- Движок Tesseract OCR, установленный на вашем компьютере (скачайте с [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Большой файл изображения, который вы хотите обработать (`large_image.png` в этом руководстве) + +Никаких дополнительных фреймворков, без async/await — только классический `threading` и callback. + +## Шаг 1: Импортировать модуль threading (необходимо для фонового выполнения) + +Первое, что мы делаем, — импортируем модуль `threading`. Он предоставляет класс `Thread`, позволяющий запускать любую функцию в отдельном системном потоке. + +```python +import threading +``` + +*Почему это важно*: Если запускать OCR в главном потоке, ваша программа (особенно GUI) зависнет, пока OCR не завершится. Перенеся работу в фоновый поток, главный поток остаётся свободным для обновления UI, обработки ввода пользователя или запуска других задач. + +## Шаг 2: Определить callback, который будет вызван после завершения OCR + +Callback — это просто функция, которую другой кусок кода вызывает, когда работа завершена. Здесь мы выведем распознанный текст, но вы можете сохранить его, отправить по сети или обновить виджет UI. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Совет*: Держите callback лёгким. Тяжёлая обработка внутри callback нейтрализует смысл многопоточности, потому что он всё равно будет блокировать поток, который его вызвал (обычно главный поток). + +## Шаг 3: Загрузить изображение, которое нужно обработать + +Загрузка изображения — отдельная задача от OCR, но всё равно часть общего рабочего процесса. С Pillow это тривиально. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Почему делаем это здесь*: Если изображение огромное, его загрузка в главном потоке уже может вызвать задержку. В реальных приложениях часто также выносится загрузка в отдельный поток, но для ясности оставляем её синхронной. + +## Шаг 4: Создать небольшую обёртку для OCR‑движка + +В оригинальном фрагменте использовался `engine.process_async`. Мы смоделируем это маленьким классом, который внутри запускает поток и вызывает переданный callback по завершении. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Объяснение*: +- `_run_ocr` выполняет тяжёлую работу. +- `process_async` создаёт объект `Thread`, помечает его как daemon (чтобы интерпретатор мог завершиться, даже если поток ещё работает), и стартует его. +- Callback получает либо текст OCR, либо сообщение об ошибке. + +## Шаг 5: Объединить всё вместе и выполнять другие задачи, пока работает OCR + +Теперь мы оркеструем весь процесс: загружаем изображение, создаём экземпляр движка, запускаем асинхронный OCR и держим главный поток занятым чем‑то другим (здесь просто выводим сообщение). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Ожидаемый вывод (усечённый для краткости):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Если OCR завершится с ошибкой, callback выведет сообщение об ошибке вместо текста. + +--- + +## Почему такой подход работает + +- **Отзывчивость**: Главный поток никогда не блокируется вызовом OCR, который может занимать секунды для больших изображений. +- **Масштабируемость**: Вы можете запустить несколько экземпляров `SimpleOcrEngine`, каждый в своём потоке, чтобы одновременно обрабатывать пакет изображений. +- **Разделение ответственности**: Загрузка, обработка и работа с результатом чётко разделены, что упрощает тестирование и поддержку кода. + +## Распространённые подводные камни и как их избежать + +| Подводный камень | Что происходит | Решение | +|------------------|----------------|---------| +| Забыть пометить поток как *daemon* | Скрипт зависает после завершения основной работы, потому что поток OCR всё ещё жив. | Установите `worker.daemon = True` **или** вызовите `join()` у потока перед выходом. | +| Использование глобальной переменной для результата без блокировок | Состояния гонки могут испортить данные, когда несколько потоков записывают одновременно. | Передавайте результат через callback (как мы делаем) или используйте потокобезопасные контейнеры, такие как `queue.Queue`. | +| Загрузка огромного изображения в главном потоке | UI зависает до того, как начнётся фоновый OCR. | Перенесите загрузку изображения в отдельный поток или используйте техники ленивой загрузки. | +| Не обрабатывать исключения внутри рабочего потока | Необработанные исключения тихо завершают поток, оставляя вас без результата. | Обёрните логику OCR в `try/except` и передайте ошибку в callback. | + +## Расширение этого шаблона + +- **Отчёт о прогрессе**: используйте общий `queue.Queue` для передачи промежуточных процентов прогресса из OCR‑потока в главный поток. +- **Пул потоков**: для пакетной обработки замените отдельные объекты `Thread` на `concurrent.futures.ThreadPoolExecutor`. +- **Интеграция с GUI**: в приложении Tkinter или PyQt планируйте вызов callback с помощью `after()` (Tkinter) или `QTimer.singleShot` (Qt), чтобы обновления UI происходили в главном потоке. + +## Полный рабочий пример (готовый к копированию) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/spanish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..9c671c061 --- /dev/null +++ b/ocr/spanish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,249 @@ +--- +category: general +date: 2026-04-26 +description: Extrae texto de encabezado con OCR usando Python Aspose OCR. Aprende + cómo extraer texto de áreas específicas de imágenes de forma rápida y fiable. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: es +og_description: Extrae texto de encabezado con OCR rápidamente. Esta guía muestra + cómo extraer texto de un área específica usando Python Aspose OCR en solo unas pocas + líneas. +og_title: Extraer texto de encabezado OCR con Python Aspose OCR – Tutorial completo +tags: +- OCR +- Python +- Aspose +title: Extraer texto de encabezado con OCR usando Python Aspose OCR – Guía paso a + paso +url: /es/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extraer Texto de Encabezado OCR – Tutorial Completo de Python Aspose OCR + +¿Alguna vez necesitaste **extraer texto de encabezado OCR** de una factura escaneada pero no querías procesar toda la página? No eres el único. En muchos flujos de trabajo reales, el encabezado contiene la información más crítica —número de factura, fecha, nombre del proveedor—, por lo que extraerlo rápidamente puede ahorrar mucho trabajo posterior. + +En este tutorial te mostraremos una solución lista‑para‑ejecutar que **extrae texto de un área específica** usando la biblioteca **Python Aspose OCR**. Sin referencias vagas a documentación externa, solo un script completo, una explicación clara de cada línea y consejos que realmente usarás mañana. + +## Lo que aprenderás + +- Cómo instalar e importar el paquete Aspose OCR para Python. +- Cómo cargar una imagen y definir una **región de interés (ROI)** que aísla el encabezado. +- Cómo ejecutar el motor OCR en esa ROI y obtener texto limpio. +- Problemas comunes (p. ej., desajustes de DPI) y cómo evitarlos. +- Cómo se ve la salida esperada para que puedas verificar que todo funciona. + +Al final podrás insertar este código en cualquier proyecto que necesite **extraer texto de encabezado OCR** de facturas, recibos o cualquier documento con un diseño predecible. + +## Requisitos previos + +- Python 3.8 o superior instalado en tu máquina. +- Una licencia válida de Aspose OCR for Python (la prueba gratuita sirve para evaluación). +- Un archivo de imagen (`invoice.png`) que contenga una región de encabezado clara. +- Familiaridad básica con funciones de Python y rutas de archivo. + +> **Consejo profesional:** Si estás probando con un escaneo de baja resolución, aumenta el DPI antes de pasarlo a Aspose OCR – mejora dramáticamente la precisión. + +--- + +## Paso 1: Instalar el paquete Aspose OCR + +Primero, agrega la biblioteca a tu entorno. El paquete oficial es `aspose-ocr`. Ejecuta esto una vez: + +```bash +pip install aspose-ocr +``` + +Si estás usando un entorno virtual (altamente recomendado), actívalo antes de instalar. Esto asegura que el paquete no entre en conflicto con otros proyectos. + +## Paso 2: Importar las clases requeridas y cargar la imagen + +Ahora importamos las clases necesarias en nuestro script y cargamos la imagen de la factura. Observa el uso de **rutas completas**; las rutas relativas también funcionan, pero las rutas absolutas eliminan ambigüedades cuando el script se ejecuta en un servidor. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Por qué es importante:** Inicializar `OcrEngine` una vez y reutilizarlo para múltiples imágenes es más eficiente que crear un nuevo motor cada vez. + +## Paso 3: Definir la Región de Encabezado (ROI) + +El encabezado suele estar en la parte superior de la página, pero sus coordenadas exactas pueden variar. Aquí definimos un rectángulo (`x`, `y`, `width`, `height`) que cubre el encabezado. Ajusta los números para que coincidan con el diseño de tu documento. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Cómo funciona:** Al llamar a `set_roi`, el motor OCR limita su análisis a este rectángulo, lo que acelera dramáticamente el procesamiento y reduce el ruido del resto de la página. + +## Paso 4: Aplicar la ROI y ejecutar OCR + +Ahora indicamos al motor que se centre en la región del encabezado y luego ejecutamos el proceso OCR. El objeto de resultado contiene el texto reconocido y metadatos adicionales (puntuaciones de confianza, idioma, etc.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Si el OCR falla (p. ej., formato de imagen no compatible), `ocr_result` será `None`. Una cláusula de protección rápida puede hacer tu script más robusto: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Paso 5: Recuperar e imprimir el texto de encabezado extraído + +Finalmente, extraemos el texto del objeto de resultado y lo mostramos. También puedes escribirlo en un archivo o pasarlo a otra función para un análisis adicional. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Salida esperada + +Cuando todo está configurado correctamente, deberías ver algo como: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Si la salida se ve distorsionada, verifica nuevamente las coordenadas de la ROI y asegura que la imagen fuente tenga alto contraste. + +--- + +## Variaciones y casos límite + +### 1. Múltiples encabezados en un documento + +A veces un PDF contiene varias páginas, cada una con su propio encabezado. Recorre las páginas y ajusta la ROI por página: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Manejo de escaneos sesgados + +Si la factura está ligeramente rotada, pre‑procesa la imagen con OpenCV antes de pasarla a Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Cambiar la configuración de idioma + +Aspose OCR puede detectar automáticamente el idioma, pero puedes forzar el inglés para obtener resultados más rápidos: + +```python +ocr_engine.language = "en" +``` + +--- + +## Ejemplo completo funcional + +A continuación tienes el script completo que puedes copiar y pegar en un archivo llamado `extract_header.py`. Recuerda reemplazar la ruta de la imagen por la tuya. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Ejecutar este script debería imprimir las líneas del encabezado exactamente como se mostró antes. Siéntete libre de ajustar los valores de `roi` para que coincidan con tu plantilla de factura específica. + +--- + +## Preguntas frecuentes respondidas + +**P: ¿Esto funciona directamente con PDFs?** +R: No funciona directamente. Convierte cada página del PDF a una imagen (p. ej., usando `pdf2image`) y luego pasa el PNG/JPG al script. + +**P: ¿Qué pasa si mi encabezado contiene un logo y texto juntos?** +R: Aspose OCR se centra en el contenido textual. Para logos, considera usar una biblioteca de reconocimiento de imágenes separada como `opencv` o `tesseract` con un modelo personalizado. + +**P: ¿La prueba gratuita tiene limitaciones?** +R: La prueba permite hasta 10 páginas por mes. Para producción, compra una licencia para eliminar el límite y desbloquear configuraciones de mayor precisión. + +--- + +## Conclusión + +Ahora tienes una guía **completa y digna de citar** para **extraer texto de encabezado OCR** usando **Python Aspose OCR**. El tutorial cubrió todo, desde la instalación hasta el manejo de casos límite, y te proporcionó una función reutilizable que puedes insertar en flujos de trabajo más grandes. + +A continuación, podrías explorar **extraer texto de áreas específicas** para otras zonas como pies de página o líneas de detalle, o combinar este enfoque con un convertidor de PDF a imagen para automatizar pipelines de documentos completos. Las posibilidades son infinitas—solo recuerda mantener tus coordenadas de ROI precisas y tus imágenes en alta resolución. + +¿Tienes un diseño complicado? Compártelo en los comentarios y ajustaremos la ROI juntos. ¡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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/spanish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..e894179c4 --- /dev/null +++ b/ocr/spanish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,228 @@ +--- +category: general +date: 2026-04-26 +description: Extrae texto de una imagen usando Aspose OCR en Python. Aprende cómo + extraer texto, convertir la imagen a texto y cargar la imagen para OCR con soporte + multilingüe. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: es +og_description: extrae texto de una imagen al instante. Esta guía muestra cómo extraer + texto, convertir una imagen a texto y cargar la imagen para OCR usando Aspose OCR + en Python. +og_title: extraer texto de una imagen con Python – Tutorial completo de OCR multilingüe +tags: +- OCR +- Python +- Aspose +title: extraer texto de una imagen con Python – Guía de OCR multilingüe +url: /es/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# extraer texto de una imagen con Python – Guía de OCR multilingüe + +¿Alguna vez necesitaste **extraer texto de una imagen** pero no estabas seguro de qué biblioteca podía manejar páginas multilingües? No estás solo. En muchas aplicaciones del mundo real—piensa en procesamiento de facturas, monitoreo de redes sociales o archivado de documentos multilingües—te encontrarás con imágenes que contienen tanto caracteres latinos como cirílicos. + +¿La buena noticia? Con Aspose OCR para Python puedes **extraer texto**, **convertir imagen a texto**, y **cargar imagen para OCR** en solo unas pocas líneas, dejando que el motor detecte automáticamente el idioma. En este tutorial recorreremos un ejemplo completo y ejecutable, explicaremos por qué cada paso es importante y cubriremos un par de casos límite que podrías encontrar. + +> **Lo que obtendrás** +> * Un script listo‑para‑ejecutar que extrae texto de un PNG multilingüe. +> * Comprensión de cómo configurar OCR multilingüe en Python. +> * Consejos para manejar archivos grandes, diferentes formatos de imagen y depurar errores comunes. + +## Requisitos previos + +- Python 3.8 o superior (el código usa f‑strings). +- Paquete `asposeocr` instalado (`pip install asposeocr`). +- Un archivo de imagen (p. ej., `mixed_lang.png`) que contiene texto en más de un alfabeto. +- Familiaridad básica con importaciones de Python y APIs orientadas a objetos. + +Sin dependencias pesadas, sin servicios externos—solo una única instalación con pip y estarás listo para comenzar. + +--- + +## Paso 1 – Instalar e importar la biblioteca Aspose OCR + +Antes de que podamos **cargar imagen para OCR**, necesitamos la propia biblioteca. El paquete incluye el motor OCR central y un cargador de imágenes ligero. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Por qué es importante*: Importar las clases específicas mantiene limpio el espacio de nombres y hace que el código posterior sea más claro. Si solo importas `asposeocr`, tendrás que calificar cada llamada (`aocr.OcrEngine()`), lo que puede resultar ruidoso. + +--- + +## Paso 2 – Crear el motor OCR y habilitar la detección multilingüe + +Aspose OCR puede adivinar automáticamente los idiomas presentes en la imagen. Configurar `Language.AUTO` cubre latín, cirílico, árabe y muchos más. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Consejo profesional*: Si conoces el conjunto de idiomas de antemano, puedes asignar `Language.ENGLISH` o `Language.RUSSIAN` para obtener una pequeña mejora de rendimiento. Pero para documentos realmente mixtos, `AUTO` es la opción más segura. + +--- + +## Paso 3 – Cargar la imagen que deseas procesar + +Aquí es donde **cargamos la imagen para OCR**. Aspose admite PNG, JPEG, BMP, TIFF e incluso páginas PDF tratadas como imágenes. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Consejo**: Si tu imagen supera los 2 MB, considera redimensionarla antes. Las imágenes grandes aumentan el uso de memoria y pueden ralentizar el paso de detección. + +--- + +## Paso 4 – Ejecutar el proceso OCR y capturar el resultado + +Llamar a `process()` realiza el trabajo pesado: detección de texto, análisis de diseño y decodificación de idioma. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +El objeto `ocr_result` devuelto contiene varias propiedades útiles: + +| Property | Description | +|----------|-------------| +| `text` | Cadena simple del texto reconocido (lo que usarás con mayor frecuencia). | +| `confidence` | Puntuación de confianza general (0‑100). | +| `lines` | Lista de objetos `OcrLine` con datos de posición (útil para PDFs). | + +--- + +## Paso 5 – Mostrar el texto extraído + +Finalmente, imprimimos la salida. En una aplicación real podrías guardarla en una base de datos o enviarla a una API de traducción. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Salida esperada** (ejemplo para una imagen multilingüe): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Si ves caracteres distorsionados, verifica que la imagen no esté corrupta y que estés usando la última versión de `asposeocr` (v23.7 al momento de escribir este documento). + +--- + +## Paso 6 – Script completo que puedes copiar‑pegar + +Juntar todo elimina la confusión de “¿dónde empieza el código?”. Guarda esto como `multilingual_ocr.py` y ejecútalo desde la línea de comandos. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Ejecuta: + +```bash +python multilingual_ocr.py +``` + +Deberías ver las cadenas extraídas impresas en la consola. Eso es todo—**convertir imagen a texto** con solo unas cuantas líneas. + +--- + +## Preguntas comunes y manejo de casos límite + +### ¿Qué pasa si mi imagen contiene escritura a mano? +Aspose OCR está optimizado para texto impreso. Los scripts manuscritos a menudo requieren un modelo dedicado (p. ej., Azure Read o Google Vision). aún puedes probar `Language.AUTO`, pero espera una confianza más baja. + +### ¿Cómo mejorar la precisión en escaneos ruidosos? +1. Pre‑procesar la imagen (binarización, eliminación de manchas). +2. Incrementar DPI a al menos 300 ppi antes de pasarla al motor. +3. Establecer explícitamente `ocr_engine.config.deskew = True` si la imagen está sesgada. + +```python +ocr_engine.config.deskew = True +``` + +### ¿Puedo extraer texto de un PDF sin convertirlo primero a imagen? +Sí—Aspose OCR puede abrir páginas PDF directamente: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Solo recuerda que cada página se trata internamente como una imagen, por lo que se aplican las mismas consideraciones de calidad. + +--- + +## Conclusión + +Ahora tienes una receta sólida, de extremo a extremo, para **extraer texto de una imagen** usando Aspose OCR en Python, con soporte multilingüe. El script muestra cómo **cargar imagen para OCR**, **convertir imagen a texto**, y manejar los problemas más comunes. + +Desde aquí podrías: + +- Integrar la función en un servicio web que acepte cargas de usuarios. +- Combinar el texto extraído con una biblioteca de detección de idioma para enviarlo al motor de traducción adecuado. +- Experimentar con opciones de `ocr_engine.config` (p. ej., `max_recognition_time`, `text_orientation`) para afinar el rendimiento. + +¡Feliz codificación, y que tus pipelines de OCR sean siempre precisos! + +--- + +![Captura de pantalla del texto multilingüe extraído – ejemplo de extraer texto de una imagen](image-placeholder.png "ejemplo de extraer texto de una imagen") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/spanish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..5ef8342e2 --- /dev/null +++ b/ocr/spanish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-04-26 +description: Cómo procesar OCR por lotes tus documentos y extraer texto de escaneos + en Python. Aprende el procesamiento por lotes paso a paso con OcrEngine para obtener + salida JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: es +og_description: Cómo hacer OCR por lotes de tus archivos escaneados y extraer texto + de los escaneos en un solo script. Código completo, consejos y manejo de casos límite. +og_title: Cómo hacer OCR por lotes – Guía rápida de Python +tags: +- OCR +- Python +- Automation +title: Cómo hacer OCR por lotes – Extraer texto de escaneos de manera eficiente +url: /es/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo hacer OCR por lotes – Extraer texto de escaneos de forma eficiente + +¿Alguna vez te has preguntado **cómo hacer OCR por lotes** a una montaña de PDFs escaneados sin perder la cordura? No eres el único—los desarrolladores preguntan constantemente, *“¿Cómo puedo extraer texto de escaneos de una sola vez?”* La buena noticia es que unas pocas líneas de Python pueden convertir esa tarea tediosa en una canalización automatizada y fluida. + +En este tutorial recorreremos una solución completa, lista‑para‑ejecutar que **extrae texto de escaneos**, guarda los resultados como JSON y te brinda una rápida verificación al final. Sin servicios externos, sin magia—solo Python puro, la clase `OcrEngine` y un poco de manejo de carpetas. + +## Qué obtendrás al final + +- Un script completamente funcional que **realiza OCR por lotes** sobre cualquier carpeta de imágenes. +- Explicaciones claras de *por qué* existe cada línea, no solo de *qué* hace. +- Consejos para manejar carpetas vacías, archivos que no son imágenes y lotes grandes. +- Una forma de verificar que la salida JSON realmente contiene el texto extraído. + +### Prerrequisitos (lo mínimo indispensable) + +| Requisito | Por qué es importante | +|-----------|-----------------------| +| Python 3.8+ | Sintaxis moderna y anotaciones de tipo | +| `OcrEngine` library (or a compatible wrapper) | Biblioteca `OcrEngine` (o un wrapper compatible) | +| A directory with scanned image files (PNG, JPG, TIFF) | Un directorio con archivos de imágenes escaneadas (PNG, JPG, TIFF) | +| Write permissions for the output folder | Permisos de escritura para la carpeta de salida | + +Si ya tienes esto, genial—¡vamos al grano! + +![how to batch OCR workflow](image-placeholder.png){alt="how to batch OCR workflow"} + +## Paso 1 – Inicializar el motor OCR (cómo hacer OCR por lotes) + +Antes de poder procesar cualquier cosa, necesitamos una instancia del motor OCR. Piensa en ella como el “cerebro” que leerá cada imagen y producirá texto. Inicializarla una sola vez y reutilizarla a lo largo de todo el lote es el patrón más eficiente. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **¿Por qué reutilizar la misma instancia?** +> Crear un nuevo motor para cada archivo cargaría repetidamente modelos pesados en memoria, ralentizando drásticamente el lote. Una única instancia mantiene el modelo en RAM y te permite procesar miles de imágenes sin una desaceleración notable. + +## Paso 2 – Apuntar a la carpeta de escaneos (extraer texto de escaneos) + +Tus escaneos están en algún lugar del disco. Indiquemos al script dónde encontrarlos. Usar rutas absolutas evita sorpresas de “archivo no encontrado” cuando el script se ejecuta desde un directorio de trabajo diferente. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Consejo profesional:** +> Si estás en Windows, las barras diagonales (`/`) funcionan perfectamente con `os.path.abspath`, así que no tienes que escapar las barras invertidas. + +## Paso 3 – Elegir dónde deben ir los resultados JSON + +Probablemente quieras una carpeta ordenada para los resultados OCR. Mantener la salida separada de la fuente facilita la limpieza posterior o alimentar el JSON a otra canalización. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **¿Por qué crear la carpeta programáticamente?** +> Garantiza que el script no se bloquee si el directorio falta, y `exist_ok=True` hace que la operación sea idempotente—ejecuta el script varias veces sin errores. + +## Paso 4 – Ejecutar el proceso por lotes (cómo hacer OCR por lotes) + +Ahora lo esencial: indicarle a `ocr_engine` que recorra cada archivo en `input_dir`, ejecute OCR y volque JSON en `output_dir`. La bandera `format="json"` le dice al motor que serialice el resultado de forma estructurada, lo que encantará a las herramientas posteriores. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### ¿Qué está sucediendo bajo el capó? + +1. **Descubrimiento de archivos** – El motor escanea `input_folder` de forma recursiva, ignorando archivos ocultos. +2. **Validación de archivos** – Solo se envían al modelo OCR las extensiones de imagen soportadas (`.png`, `.jpg`, `.tif`, etc.). +3. **Ejecución de OCR** – Cada imagen se envía al motor OCR; se capturan texto, puntuaciones de confianza y datos de diseño. +4. **Serialización a JSON** – El resultado se escribe en un archivo con el mismo nombre base pero con extensión `.json` en `output_folder`. + +> **Manejo de casos límite:** +> - **Carpeta vacía:** El motor registra “No files found” y retorna sin problemas. +> - **Imagen corrupta:** Omite el archivo, registra una entrada de error en `batch_errors.log` y continúa. +> - **Lote enorme (más de 10k archivos):** El uso de memoria se mantiene bajo porque cada imagen se procesa de forma independiente. + +## Paso 5 – Confirmar que la conversión finalizó + +Una simple instrucción `print` brinda retroalimentación inmediata en la consola. Para canalizaciones de producción podrías reemplazarla por una llamada a un logger o una notificación por correo. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Cuando veas esa línea, puedes inspeccionar con seguridad la carpeta `json_output`. Cada archivo JSON tendrá una estructura similar a esta: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Ahora puedes alimentar estos archivos JSON a una base de datos, un índice de búsqueda o cualquier herramienta de análisis posterior. + +## Preguntas frecuentes (y respuestas rápidas) + +**P: ¿Qué pasa si necesito procesar PDFs en lugar de imágenes?** +**R:** Convierte cada página del PDF a una imagen primero (p. ej., usando `pdf2image`) y coloca los archivos PNG/JPG resultantes en `input_dir`. La lógica de OCR por lotes permanece sin cambios. + +**P: ¿Puedo cambiar el formato de salida a texto plano?** +**R:** Por supuesto. Reemplaza `format="json"` por `format="txt"` y el motor escribirá un archivo `.txt` que contiene solo el texto extraído. + +**P: Mis escaneos están en múltiples subcarpetas—¿el script recursará?** +**R:** Sí. `batch_process` recorre el árbol de directorios por defecto. Si deseas una salida plana, establece `flatten=True` (si la biblioteca lo soporta) o procesa los nombres de archivo JSON después. + +**P: ¿Cómo manejo scripts no latinos?** +**R:** Inicializa `OcrEngine` con un parámetro de idioma, por ejemplo, `OcrEngine(lang="spa+eng")`. El bucle por lotes en sí no necesita cambios. + +## Consejos profesionales y errores comunes + +- **El tamaño del lote importa:** Si notas picos de CPU, regula el proceso con un simple `time.sleep(0.1)` entre archivos. +- **Registro:** Cambia la llamada `print` por el módulo `logging` de Python para capturar marcas de tiempo y niveles de error. +- **Colisiones de nombres de archivo:** Si dos escaneos comparten el mismo nombre base pero están en diferentes subcarpetas, los archivos JSON se sobrescribirán. Añade un hash de la ruta relativa al nombre de salida para evitarlo. +- **Fugas de memoria:** Algunos back‑ends de OCR retienen recursos nativos. Llama a `ocr_engine.close()` al final de tu script si la biblioteca ofrece un método de limpieza. + +## Script completo – Listo para copiar y pegar + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Salida esperada en consola** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Puedes verificar el JSON abriendo cualquier archivo en `json_output` con un editor de texto o cargándolo en Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Deberías ver el texto extraído por OCR impreso en la consola. + +## Conclusión + +Acabamos de cubrir **cómo hacer OCR por lotes** en todo un directorio de imágenes escaneadas y **extraer texto de escaneos** en archivos JSON limpios y legibles por máquinas. El enfoque es deliberadamente simple: configurar el motor una vez, apuntarlo a una carpeta y dejar que la biblioteca haga el trabajo pesado. Desde aquí puedes: + +- Conectar el JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/spanish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..182ce52d2 --- /dev/null +++ b/ocr/spanish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-04-26 +description: Cómo crear OCR de forma rápida y fiable. Aprende a extraer texto de una + imagen, cargar la imagen para OCR y ejecutar OCR en PNG con un diccionario personalizado. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: es +og_description: Cómo crear OCR en Python y extraer texto de una imagen. Esta guía + muestra cómo cargar una imagen para OCR, ejecutar OCR en PNG y usar un diccionario + personalizado. +og_title: Cómo crear OCR en Python – Extracción rápida de texto +tags: +- OCR +- Python +- Image Processing +title: Cómo crear OCR en Python – Extraer texto de una imagen +url: /es/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo crear OCR en Python – Guía paso a paso + +¿Alguna vez te has preguntado **cómo crear OCR** que pueda leer tus PDFs escaneados, capturas de pantalla o notas manuscritas? No estás solo. En muchos proyectos del mundo real necesitamos *extraer texto de imágenes*, pero los motores listos para usar a menudo tropiezan con palabras específicas de dominio. + +En este tutorial verás un ejemplo completo y ejecutable que carga una imagen para OCR, aplica un diccionario personalizado y, finalmente, **ejecuta OCR en archivos PNG**. Al terminar podrás extraer texto de cualquier imagen y adaptar el motor a tu propia terminología. + +## Qué cubre este tutorial + +Recorreremos cada paso que necesitas: + +* Instalar el pequeño pero potente paquete `aocr` (o cualquier biblioteca compatible). +* Configurar un **diccionario personalizado** para que términos como `aspocorp` o `licensekey` sean reconocidos. +* **Cargar una imagen para OCR**, ya sea PNG, JPEG o una página de PDF escaneada. +* Ejecutar el proceso OCR e imprimir el resultado. + +Sin enlaces a documentación externa, solo una solución autocontenida que puedes copiar‑pegar y ejecutar hoy. + +### Requisitos previos + +* Python 3.8 o superior (el código usa f‑strings). +* Familiaridad básica con la línea de comandos – escribirás un par de comandos `pip install`. +* Un archivo de imagen (`technical_doc.png` en el ejemplo) colocado en una ubicación a la que puedas referenciar. + +Si cumples con esos tres puntos, estás listo para comenzar. + +--- + +## Paso 1: Instalar la biblioteca OCR + +Primero, necesitamos un motor OCR que soporte un objeto de configuración programable. El paquete `aocr` es un contenedor ligero alrededor de un motor OCR nativo y funciona bien para demostraciones. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Consejo profesional:** Si estás en Windows y encuentras un error de compilación, prueba `pip install aocr‑binary` que incluye ruedas precompiladas. + +### ¿Por qué instalar esta biblioteca? + +`aocr` nos da acceso directo a un objeto `config` donde podemos inyectar un **diccionario personalizado**. Esa es la clave para mejorar la precisión en vocabularios especializados. + +--- + +## Paso 2: Crear la instancia del motor OCR y añadir un diccionario personalizado + +Ahora iniciamos el motor y le indicamos qué palabras debe tratar como conocidas. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Por qué importa un diccionario personalizado + +Los modelos OCR estándar se entrenan con corpus genéricos. Cuando el modelo ve “aspocorp”, podría dividirlo en “aspo corp” o eliminar letras por completo. Al proporcionar una lista personalizada, sesgamos el reconocedor hacia la ortografía exacta que necesitamos, reduciendo drásticamente el esfuerzo de post‑procesamiento. + +--- + +## Paso 3: Cargar la imagen que deseas procesar + +Aquí es donde **cargamos la imagen para OCR**. El método `Image.load` acepta una cadena de ruta y determina automáticamente el tipo de archivo. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Caso límite:** Si tu fuente es un PDF de varias páginas, conviértelo primero a PNG (por ejemplo, con `pdf2image`) y aliméntalo página por página al motor. + +### Consejos para una mejor calidad de imagen + +* Mantén la resolución al menos en 300 dpi. +* Asegúrate de que la imagen esté orientada correctamente; rota con `Pillow` si es necesario. +* Convierte escaneos en color a escala de grises para reducir ruido. + +--- + +## Paso 4: Ejecutar el proceso OCR en el archivo PNG + +Con el motor configurado y la imagen cargada, finalmente **ejecutamos OCR en PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +La llamada `process()` devuelve un objeto que contiene el texto reconocido, puntuaciones de confianza y cajas delimitadoras para cada palabra. + +--- + +## Paso 5: Mostrar el texto reconocido + +La forma más sencilla de ver lo que el motor encontró es imprimir el atributo `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Salida esperada + +Si `technical_doc.png` contiene la frase *“The Aspocorp licensekey expires on 2025‑12‑31.”*, la consola debería mostrar: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Observa cómo el diccionario personalizado mantuvo el nombre de la marca intacto—algo que un OCR convencional podría haber distorsionado. + +--- + +## Ejemplo completo funcional (listo para copiar y pegar) + +A continuación tienes el script completo, listo para guardarse como `run_ocr.py`. Solo reemplaza la ruta de ejemplo por la ubicación de tu imagen. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Ejecuta desde la terminal: + +```bash +python run_ocr.py +``` + +Deberías ver el texto extraído impreso en la consola, exactamente como se mostró en el ejemplo anterior. + +--- + +## Preguntas frecuentes (FAQ) + +| Pregunta | Respuesta | +|----------|-----------| +| **¿Puedo extraer texto de un PDF escaneado?** | Sí. Convierte cada página a PNG (o TIFF) primero, luego alimenta las imágenes al mismo script. | +| **¿Qué pasa si mi imagen es JPEG en lugar de PNG?** | El método `Image.load` soporta JPEG, BMP, TIFF y PNG de forma nativa. Simplemente cambia la extensión del archivo. | +| **¿Cómo mejoro la precisión en escaneos de bajo contraste?** | Pre‑procesa con `Pillow`: aumenta el contraste, aplica binarización o usa `opencv` para corregir la inclinación. | +| **¿Hay forma de obtener puntuaciones de confianza para cada palabra?** | `ocr_result` incluye `words`; cada palabra tiene un atributo `confidence` que puedes iterar. | +| **¿Puedo ejecutar esto en un servidor sin interfaz gráfica?** | Absolutamente. `aocr` no tiene dependencias GUI, lo que lo hace perfecto para pipelines CI. | + +--- + +## Próximos pasos y temas relacionados + +Ahora que sabes **cómo crear OCR** y **extraer texto de imágenes**, considera explorar: + +* **Técnicas de pre‑procesamiento** – `load image for OCR` es solo el primer paso; usa `opencv` para desruido o enfoque. +* **Procesamiento por lotes** – recorre un directorio de PNGs para generar un archivo archivado buscable. +* **Soporte multilingüe** – añade paquetes de idioma al motor si necesitas leer documentos en francés o alemán. +* **Integración con Elasticsearch** – indexa el texto extraído para búsquedas de texto completo en activos escaneados. + +Cada una de estas extensiones se basa en el patrón central que acabamos de cubrir, por lo que la transición será fluida. + +--- + +## Conclusión + +En unos minutos hemos respondido **cómo crear OCR** que extrae de forma fiable **texto de imágenes**, especialmente PNGs, y te hemos mostrado cómo **cargar imagen para OCR**, aplicar un **diccionario personalizado** y **ejecutar OCR en PNG** sin servicios externos. + +Prueba el script, ajusta el diccionario a tu propio vocabulario y tendrás una base sólida para cualquier proyecto de digitalización de documentos. + +Si encontraste algún problema, deja un comentario abajo—estamos felices de ayudar. Y no olvides compartir tus historias de éxito; la comunidad aprende mejor con ejemplos del mundo real. + +**¿Listo para automatizar tu papeleo?** Obtén el código, adáptalo y comienza a convertir píxeles en texto buscable hoy mismo! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/spanish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..dd87b65c9 --- /dev/null +++ b/ocr/spanish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: cómo extraer OCR de imágenes usando Python – un ejemplo de OCR en Python + que muestra cómo cargar una imagen para OCR y extraer texto de un recibo. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: es +og_description: cómo extraer OCR de imágenes usando Python. Aprende un ejemplo de + OCR en Python, carga una imagen para OCR y extrae texto de un recibo en minutos. +og_title: Cómo extraer OCR en Python – Guía completa +tags: +- OCR +- Python +- Image Processing +title: Cómo extraer OCR en Python – Tutorial paso a paso +url: /es/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cómo extraer OCR en Python – Guía completa + +¿Alguna vez te has preguntado **cómo extraer OCR** de un recibo borroso o una factura escaneada? No eres el único—los desarrolladores constantemente se topan con el problema cuando necesitan texto limpio y legible por máquina a partir de imágenes. ¿La buena noticia? Con solo unas pocas líneas de Python puedes convertir una foto de un recibo en texto de alta confianza y buscable. + +En este tutorial recorreremos un **python ocr example** que demuestra **how to load image for ocr**, ejecutar el motor y conservar solo los caracteres que cumplen con un umbral de confianza del 85 %. Al final podrás **extract text from receipt** imágenes sin buscar en la documentación o adivinar parámetros de la API. + +## Lo que necesitarás + +- Python 3.9 o superior (la sintaxis que usamos funciona en 3.8+) +- El paquete `aocr` (o cualquier biblioteca OCR que proporcione una clase `OcrEngine`). Instálalo con: + +```bash +pip install aocr +``` + +- Una imagen de muestra de recibo (`receipt.png`) colocada en una carpeta a la que puedas referenciar. +- Un editor de texto o IDE—VS Code, PyCharm, o incluso un cuaderno simple servirá. + +Eso es todo. Sin frameworks pesados, sin servicios externos, solo Python puro. + +![Resultado OCR de alta confianza – cómo extraer OCR de un recibo](/images/ocr-high-confidence.png) + +*Texto alternativo de la imagen: cómo extraer OCR de un recibo usando Python OCR* + +## Paso 1 – Crear la instancia del motor OCR (cómo extraer OCR) + +Lo primero que hacemos es iniciar un motor OCR. Piénsalo como el cerebro que leerá los píxeles por nosotros. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**¿Por qué?** Instanciar `OcrEngine` te brinda un objeto de configuración nuevo. Luego puedes ajustar modelos de idioma, configuraciones de DPI o pasos de preprocesamiento—todo sin tocar el bucle principal de procesamiento. + +## Paso 2 – Cargar la imagen para OCR + +A continuación apuntamos el motor a la imagen que queremos analizar. Aquí es donde entra en juego la palabra clave **load image for ocr**. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Consejo profesional:** Si tu imagen está en un directorio diferente, usa `os.path.join` para construir una ruta independiente de la plataforma. + +**¿Por qué cargar la imagen de esta manera?** El ayudante `Image.load` lee el archivo en un formato que el motor entiende, manejando automáticamente formatos comunes (PNG, JPEG, TIFF). Omitir este paso o proporcionar bytes crudos provocaría un `ValueError`. + +## Paso 3 – Ejecutar el proceso OCR + +Ahora realmente ejecutamos el OCR. El método `process` devuelve un objeto de resultado rico que contiene símbolos reconocidos, puntuaciones de confianza y cajas delimitadoras. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**¿Qué contiene `ocr_result`?** En la mayoría de bibliotecas incluye: + +- `text`: la cadena cruda concatenada. +- `symbol_confidences`: una lista de tuplas `(char, confidence)`. +- `boxes`: coordenadas para cada carácter (útil para depuración visual). + +Tener acceso a la confianza por carácter es esencial para el siguiente paso. + +## Paso 4 – Conservar solo los símbolos de alta confianza (≥ 85 %) + +Un recibo a menudo tiene manchas, impresión tenue o ruido de fondo. Al filtrar los símbolos de baja confianza mejoramos drásticamente el análisis posterior. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**¿Por qué 85 %?** Empíricamente, un umbral alrededor de 0.85 equilibra recall y precisión para la mayoría de los recibos impresos. Si notas números faltantes, baja el umbral; si obtienes basura, elévalo. + +## Paso 5 – Mostrar el texto extraído de alta confianza + +Finalmente, imprimimos (o guardamos) la cadena sanitizada. Este es el núcleo de nuestro flujo de trabajo **extract text from receipt**. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Una salida típica se ve así: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Ahora puedes alimentar esta cadena a un escritor CSV, una base de datos o cualquier canal de análisis posterior. + +## Script completo, listo para ejecutar + +A continuación se muestra el fragmento de código completo que puedes copiar‑pegar en `ocr_receipt.py` y ejecutar de inmediato. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Guarda el archivo, asegúrate de que `receipt.png` exista, y ejecuta: + +```bash +python ocr_receipt.py +``` + +Deberías ver el texto del recibo limpiado impreso en la consola. + +## Casos límite y escenarios hipotéticos + +| Situación | Solución sugerida | +|-----------|-------------------| +| **Muy baja confianza en todo** | Pre‑procesar la imagen: aumentar el contraste, convertir a escala de grises o aplicar un filtro de reducción de ruido (`cv2.GaussianBlur`). | +| **Caracteres no latinos** | Pasar un modelo de idioma a `OcrEngine` (p.ej., `ocr_engine.language = "spa"` para español). | +| **Múltiples recibos en una imagen** | Ejecutar OCR en la imagen completa, luego dividir el resultado usando expresiones regulares que detecten `\n\n+` (saltos de línea dobles). | +| **Necesitas también el texto OCR crudo** | Mantener `ocr_result.text` junto a la versión filtrada para depuración. | + +Estas variaciones aseguran que tu conocimiento **how to use OCR** escale más allá del caso más simple. + +## Errores comunes (y cómo evitarlos) + +- **Olvidar instalar la biblioteca** – `pip install aocr` debe completarse antes de importar. +- **Usar el separador de rutas incorrecto** en Windows (`\` vs `/`). Usa `os.path.join`. +- **Codificar rígidamente el umbral de confianza** sin probar – siempre realiza una rápida verificación visual en algunos recibos primero. +- **Ignorar la normalización Unicode** – algunos recibos contienen caracteres de guion especiales; ejecuta `unicodedata.normalize('NFKC', text)` si planeas almacenar la salida. + +## Próximos pasos – Más allá de lo básico + +Ahora que sabes **how to extract ocr** datos de un solo recibo, podrías querer: + +1. **Procesar por lotes una carpeta de recibos** – iterar sobre todos los archivos PNG/JPG y escribir cada resultado en un CSV. +2. **Integrar con una base de datos** – almacenar `high_confidence_text` en SQLite para búsquedas rápidas. +3. **Aplicar análisis de lenguaje natural** – usar regex o `dateutil` para extraer fechas, totales y montos de impuestos. +4. **Experimentar con bibliotecas alternativas** – `pytesseract`, `easyocr`, o servicios en la nube (Google Vision, Azure OCR) si necesitas soporte multilingüe o mayor precisión. + +Cada uno de estos temas incorpora naturalmente nuestras palabras clave secundarias: *python ocr example*, *extract text from receipt*, *load image for ocr*, y *how to use OCR*. + +## Conclusión + +Acabamos de recorrer un **python ocr example** completo que muestra **how to extract ocr** texto de una imagen de recibo, filtra los símbolos de baja confianza y genera resultados limpios. Los pasos son simples, el código es autónomo y el enfoque es lo suficientemente flexible para adaptarse a proyectos más grandes. + +Pruébalo con tus propios recibos, ajusta el umbral de confianza y luego escala al procesamiento por lotes. Si te encuentras con peculiaridades—como un logotipo tenue o una fuente inusual—recuerda los consejos de casos límite anteriores. ¡Feliz codificación, y que tus pipelines OCR sean siempre precisos! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/spanish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..3c5c20172 --- /dev/null +++ b/ocr/spanish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: 'cómo hacer OCR en Python: aprende a extraer texto de una imagen y a + leer archivos TIFF con Python usando un ejemplo básico de OCR. Código rápido y ejecutable + incluido.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: es +og_description: 'cómo hacer OCR en Python: una guía paso a paso que muestra cómo extraer + texto de una imagen, leer archivos TIFF con Python y convertir texto de imágenes + escaneadas con un script simple y ejecutable.' +og_title: cómo hacer OCR en Python – Ejemplo básico de OCR para extraer texto +tags: +- OCR +- Python +- Image Processing +title: Cómo hacer OCR en Python – Ejemplo básico de OCR para extraer texto +url: /es/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cómo hacer OCR con Python – Ejemplo básico de OCR para extraer texto + +¿Alguna vez te has preguntado **how to ocr python** cuando tienes un archivo TIFF escaneado sobre tu escritorio? No eres el único que mira una serie de archivos de imagen y se pregunta: “¿Cómo saco las palabras de esto?” La buena noticia es que convertir una foto en texto plano es pan comido con la biblioteca adecuada y unos pocos pasos claros. + +En este tutorial recorreremos un **basic OCR example** que lee un archivo TIFF, extrae el texto y lo imprime en la consola. Al final sabrás exactamente cómo **extract text from image** archivos, cómo manejar las particularidades de los formatos TIFF y qué ajustar si necesitas **convert scanned image text** a algo más útil. Sin magia oculta—solo Python directo que puedes copiar‑pegar y ejecutar hoy. + +## What You’ll Need + +Antes de sumergirnos, asegúrate de tener: + +- Python 3.9+ instalado (la última versión estable es la mejor). +- Una biblioteca OCR instalable con pip. Para esta guía usaremos un paquete ficticio `aocr` que imita herramientas populares como Tesseract; puedes reemplazarlo con `pytesseract` o `easyocr` más adelante. +- Una imagen TIFF que quieras procesar – nómbrala `input.tiff` y colócala en una carpeta que referenciarás en el código. +- Familiaridad básica con la línea de comandos (solo para instalar el paquete). + +Eso es todo. Sin dependencias pesadas, sin contenedores Docker, solo unas pocas líneas de código. + +## Step 1 – Install and Import Dependencies (how to ocr python) + +Primero, obtén el paquete OCR. Abre una terminal y ejecuta: + +```bash +pip install aocr +``` + +Si prefieres una biblioteca del mundo real, cambia `aocr` por `pytesseract` e instala el motor Tesseract por separado. + +Ahora importa lo que necesitamos. La clase `Path` de `pathlib` nos brinda una forma limpia de trabajar con rutas de archivo en diferentes sistemas operativos. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*¿Por qué usar `Path`?* Porque abstrae las barras (`/` vs `\`) y te permite unir directorios sin preocuparte por el SO subyacente. Ese pequeño detalle suele ahorrar dolores de cabeza cuando luego mueves el script a un servidor CI. + +## Step 2 – Create the OCR Engine Instance (basic ocr example) + +A continuación, inicia el motor OCR. Piensa en `OcrEngine` como el cerebro que leerá la imagen y devolverá caracteres. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +La mayoría de las bibliotecas OCR te permiten ajustar idioma, DPI o umbrales de confianza aquí. Para este **basic OCR example** nos quedaremos con los valores predeterminados, pero puedes explorar `ocr_engine.config` más adelante si necesitas manejar documentos multilingües. + +## Step 3 – Load Your TIFF Image (read tiff file python) + +Aquí es donde entra la parte de **read tiff file python**. Los TIFF pueden ser de varias páginas, pero `Image.load` tomará la primera página por defecto—perfecto para un escaneo de una sola página. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Reemplaza `"YOUR_DIRECTORY"` con la carpeta real que contiene `input.tiff`. Si no estás seguro de dónde se ejecuta el script, `Path.cwd()` imprime el directorio de trabajo actual—útil para depurar problemas de rutas. + +## Step 4 – Run the OCR Process (extract text from image) + +Ahora ocurre la magia. Llamar a `process()` envía la imagen a través del pipeline OCR y devuelve un objeto de resultado. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Detrás de escena el motor podría estar convirtiendo la imagen a escala de grises, aplicando umbralizado y alimentándola a una red neuronal. No necesitas gestionar esos pasos; la biblioteca los abstrae. + +## Step 5 – Print the Recognized Text (convert scanned image text) + +Finalmente, muestra el texto. En proyectos reales probablemente lo escribirías en un archivo o base de datos, pero imprimir mantiene el ejemplo ordenado. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Al ejecutar el script, deberías ver algo como: + +``` +Hello, world! +This is a sample scanned document. +``` + +Si la salida se ve distorsionada, verifica que la imagen fuente sea clara y que el idioma OCR coincida con el texto. + +## Full Working Script + +Juntándolo todo, aquí tienes el programa completo, listo para ejecutar: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Expected Output + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Si necesitas **convert scanned image text** a un PDF buscable, puedes canalizar `ocr_result.text` a un generador de PDF como `reportlab`—pero eso es un tutorial aparte. + +## Common Pitfalls & Pro Tips + +- **Escaneos de baja resolución**: OCR tiene problemas por debajo de 150 DPI. Si tu TIFF está borroso, aumenta la resolución primero con Pillow (`Image.open(...).resize(...)`). +- **Múltiples páginas**: Para TIFF de varias páginas, itera sobre `Image.load_multi_page()` (si tu biblioteca lo soporta) y concatena los resultados. +- **Soporte de idioma**: Muchos motores usan inglés por defecto. Configura `ocr_engine.language = "spa"` para español, por ejemplo. +- **Manejo de espacios en blanco**: OCR suele añadir saltos de línea extraños. Usa `str.splitlines()` o expresiones regulares para limpiar la salida. +- **Rendimiento**: Para procesamiento masivo, reutiliza una única instancia de `OcrEngine` en lugar de crear una nueva por archivo. + +## Extending the Example + +Ahora que dominas **how to ocr python** para una sola imagen, considera los siguientes pasos: + +1. **Procesamiento por lotes** – Recorre un directorio de TIFFs y escribe cada resultado en un archivo `.txt`. +2. **Integración con Pandas** – Almacena el texto extraído junto con metadatos para análisis rápido. +3. **Enfoque híbrido** – Combina OCR con bibliotecas NLP como `spaCy` para extraer entidades (nombres, fechas, montos) de facturas escaneadas. +4. **Formatos de archivo alternativos** – Cambia `Image.load` por `Image.from_bytes` para manejar imágenes provenientes de una API o base de datos. + +Todos estos se basan en la idea central de **extract text from image** y **convert scanned image text** en algo que las máquinas puedan entender. + +## Conclusion + +Hemos recorrido un **basic OCR example** claro, de extremo a extremo, que muestra **how to ocr python**, cómo **read tiff file python**, y cómo **extract text from image** archivos con solo unas cuantas líneas. El script es autónomo, incluye manejo de errores y muestra el resultado directamente, constituyendo una base sólida para cualquier proyecto que necesite convertir documentos escaneados en texto editable. + +Siéntete libre de experimentar—cambia el backend OCR, ajusta el preprocesamiento o conecta la salida a un flujo de trabajo posterior. El cielo es el límite cuando puedes **convert scanned image text** en datos buscables y utilizables. + +¿Tienes preguntas sobre casos límite, paquetes de idioma o afinación de rendimiento? Deja un comentario abajo, ¡y feliz codificación! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/spanish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..e1279e0f4 --- /dev/null +++ b/ocr/spanish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,181 @@ +--- +category: general +date: 2026-04-26 +description: Cómo ejecutar OCR en un formulario escaneado, aprender a preprocesar + la imagen para reducir el ruido y extraer texto de la imagen rápidamente. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: es +og_description: Cómo ejecutar OCR en documentos escaneados, preprocesar imágenes, + reducir el ruido y extraer texto de manera eficiente. +og_title: Cómo ejecutar OCR y preprocesar imágenes – Guía rápida +tags: +- OCR +- image processing +- Python +title: Cómo ejecutar OCR y preprocesar imágenes – Extraer texto de formularios escaneados +url: /es/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo ejecutar OCR – Guía completa para extraer texto de imágenes + +¿Alguna vez te has preguntado **cómo ejecutar OCR** en un formulario escaneado desordenado y obtener texto limpio y buscable? No eres el único. En muchos proyectos del mundo real la imagen cruda está llena de manchas, iluminación desigual y otras peculiaridades que hacen que el OCR listo‑para‑usar falle. + +¿La buena noticia? Con solo unas pocas líneas de Python y una tubería de preprocesamiento inteligente, puedes aumentar drásticamente la precisión del reconocimiento, **reducir el ruido**, y extraer las palabras exactas que necesitas. En este tutorial recorreremos cada paso—desde cargar la imagen hasta imprimir la cadena final—para que termines con un fragmento listo‑para‑usar que puedes adaptar a facturas, recibos o cualquier documento escaneado. + +## Lo que construirás + +- Una instancia de `OcrEngine` que se comunica con la biblioteca OCR subyacente. +- Una cadena de preprocesamiento que **binariza** la imagen y aplica un **desenfoque mediano** para suavizar las manchas. +- Una llamada simple a `process()` que devuelve un objeto que expone `text`, la cadena extraída. + +Al final tendrás un script autónomo que puedes ejecutar en cualquier archivo de imagen y ver inmediatamente el texto extraído en la consola. + +## Requisitos previos + +- Python 3.9+ (la sintaxis usada aquí coincide con la última versión estable). +- El paquete ficticio `aocr` – piénsalo como una capa ligera alrededor de Tesseract o cualquier motor OCR moderno. Instálalo con `pip install aocr`. +- Una imagen escaneada (`scanned_form.jpg`) ubicada en una carpeta a la que puedas referenciar. + +Si estás usando una biblioteca OCR real como `pytesseract`, puedes sustituir `OcrEngine` por la clase correspondiente—todo lo demás permanece igual. + +![](how-to-run-ocr-example.png "ejemplo de cómo ejecutar OCR mostrando un formulario escaneado y el texto extraído") + +*Texto alternativo: cómo ejecutar OCR en un documento escaneado y ver el texto extraído.* + +--- + +## Paso 1: Cómo ejecutar OCR – Inicializar el motor + +Antes de que el motor pueda leer algo, necesitamos crear una instancia. Piensa en `OcrEngine` como el cerebro que más tarde interpretará los datos visuales. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Por qué es importante:** Instanciar el motor configura los modelos internos, carga los paquetes de idioma y prepara el entorno de ejecución. Omitir este paso suele resultar en un error `NoneType` cuando luego llamas a `process()`. + +--- + +## Paso 2: Cómo preprocesar la imagen – Cargar tu formulario escaneado + +Ahora que el cerebro está listo, le alimentamos con una imagen. La imagen puede estar en cualquier formato compatible con `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Consejo profesional:** Usa rutas absolutas durante el desarrollo para evitar sorpresas de “archivo no encontrado” cuando el script se ejecuta desde un directorio de trabajo diferente. + +--- + +## Paso 3: Cómo reducir el ruido – Aplicar binarización y desenfoque mediano + +Los escaneos crudos a menudo contienen puntos sueltos, fondo desigual o sombras tenues. Dos trucos clásicos—**binarización** y **desenfoque mediano**—limpian sin sacrificar los bordes que definen los caracteres. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Profundizando + +- **Binarización**: El valor `threshold=180` le indica al algoritmo: “Todo lo que sea más brillante que 180 se vuelve blanco; todo lo demás se vuelve negro.” Ajusta este número si tu escaneo es demasiado oscuro o claro. +- **Desenfoque mediano**: Un radio de `2` significa que el filtro observa una ventana de 5×5 píxeles y reemplaza el píxel central con el valor mediano. Esto suaviza manchas aisladas mientras mantiene los trazos de las letras intactos. + +> **Caso límite:** Si tu documento tiene resaltados de color, un umbral binario simple puede borrarlos. En ese caso, considera usar `aocr.ImageFilters.adaptive_threshold()` en su lugar—esto adapta el corte localmente a lo largo de la imagen. + +--- + +## Paso 4: Cómo extraer texto – Ejecutar el proceso OCR + +Con una imagen limpia en mano, finalmente dejamos que el motor haga su magia. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **¿Qué ocurre tras bambalinas?** El motor ejecuta una red neuronal (o un emparejador de patrones heredado) sobre la matriz de píxeles, traduce cada glifo reconocido a caracteres Unicode y los ensambla en líneas y párrafos. + +--- + +## Paso 5: Cómo extraer texto – Imprimir el resultado + +El objeto `ocr_result` expone un conveniente atributo `text`. Veamos qué obtuvimos. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Salida esperada + +Si el formulario escaneado contiene: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Deberías ver algo como: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Observa cómo el paso de preprocesamiento eliminó los puntos sueltos que antes convertían “Amount” en “Am0unt”. Ese es el poder de **cómo reducir el ruido** antes del OCR. + +--- + +## Problemas comunes y cómo solucionarlos + +| Síntoma | Causa probable | Solución rápida | +|---------|----------------|-----------------| +| Caracteres distorsionados (p.ej., “@#%”) | Imagen demasiado oscura o demasiado clara | Ajusta el `threshold` en `binarize()`; prueba `adaptive_threshold`. | +| Palabras faltantes | Ruido aún presente | Aumenta el `radius` para `median_blur` o agrega un filtro `gaussian_blur`. | +| Idioma incorrecto (p.ej., letras en inglés se convierten en chino) | Paquete de idioma incorrecto cargado | Pasa `language="eng"` al crear `OcrEngine()` si la biblioteca lo soporta. | +| Procesamiento lento en archivos grandes | Alta resolución | Reduce la escala de la imagen primero: `aocr.ImageFilters.resize(width=1200)` antes de la binarización. | + +--- + +## Avanzando – Próximos pasos y temas relacionados + +- **Procesamiento por lotes**: Envuelve la lógica anterior en un bucle para manejar docenas de archivos automáticamente. +- **Salida estructurada**: Usa expresiones regulares en `ocr_result.text` para extraer campos como fechas o montos. +- **Bibliotecas alternativas**: Sustituye `aocr` por `pytesseract`—el código cambia solo en el paso de inicialización del motor. +- **Cómo preprocesar imágenes para PDFs**: Convierte cada página PDF a una imagen, luego aplica la misma tubería. + +Estas extensiones te permiten escalar la solución desde un solo formulario hasta una canalización de ingestión de documentos de nivel empresarial. + +--- + +## Conclusión + +Hemos cubierto **cómo ejecutar OCR** de principio a fin, mostrado **cómo preprocesar la imagen** para **reducir el ruido**, y demostrado **cómo extraer texto de la imagen** con un script limpio y reproducible. ¿La lección clave? Unos pocos filtros simples—binarización y desenfoque mediano—pueden convertir un escaneo ruidoso en una fuente de datos fiable, ahorrándote horas de limpieza manual. + +Ejecuta el script con tus propios documentos, ajusta los umbrales y observa cómo aumenta la precisión. Cuando estés listo, explora el procesamiento por lotes o integra la salida en una base de datos para archivos buscables. ¡Feliz codificación, y que tu OCR siempre sea perfecto! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/spanish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..7b1e1d021 --- /dev/null +++ b/ocr/spanish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-04-26 +description: Aprende cómo establecer la licencia en Aspose OCR y cómo validar la licencia + con un script conciso en Python. Sigue instrucciones paso a paso para una activación + sin complicaciones. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: es +og_description: Cómo establecer la licencia en Aspose OCR y cómo validar la licencia + usando Python. Obtén un ejemplo completo y ejecutable en minutos. +og_title: Cómo establecer la licencia en Aspose OCR – Guía rápida de Python +tags: +- Aspose OCR +- Python +- Licensing +title: Cómo establecer la licencia en Aspose OCR – Guía rápida de Python +url: /es/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo establecer la licencia en Aspose OCR – Guía rápida de Python + +¿Alguna vez te has preguntado **cómo establecer la licencia** para Aspose OCR sin volverte loco? No eres el único. La mayoría de los desarrolladores se topan con un obstáculo la primera vez que intentan desbloquear todo el potencial de la biblioteca, solo para ser acosados por una marca de agua de “Versión de prueba”. La buena noticia es que la solución es bastante sencilla, y puedes verificarla de inmediato. + +En este tutorial recorreremos **cómo establecer la licencia** *y* **cómo validar la licencia** usando un pequeño script de Python. Al final tendrás un ejemplo funcional que imprime “License OK”, además de un puñado de consejos para evitar errores comunes. + +## Requisitos previos + +- Python 3.8+ instalado (el código funciona en 3.9, 3.10 y versiones más recientes). +- Un archivo de licencia activo de Aspose OCR para Java (o .NET) – típicamente llamado `Aspose.OCR.Java.lic`. +- El paquete `asposeocr` instalado mediante `pip install asposeocr`. +- Familiaridad básica con la ejecución de scripts de Python desde la línea de comandos. + +¿Tienes todo eso? Genial—¡comencemos. + +## Cómo establecer la licencia en Aspose OCR (Paso 1) + +Establecer la licencia es esencialmente una operación de tres líneas, pero cada línea tiene un propósito. Lo desglosaremos para que comprendas *por qué* hacemos lo que hacemos. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**¿Por qué importar `License`?** +La clase `License` es la puerta de enlace que le indica al motor de Aspose OCR que has pagado por el producto. Sin crear una instancia, la biblioteca seguirá asumiendo que estás en modo de prueba. + +**¿Por qué instanciar `License`?** +Instanciar te brinda un objeto (`license_obj`) que puede contener la ruta a tu archivo `.lic` y, posteriormente, aplicarlo en tiempo de ejecución. + +## Cómo establecer la licencia en Aspose OCR – Proporcionando el archivo de licencia + +Ahora apuntamos el objeto al archivo de licencia real en el disco. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Consejos y trucos:** + +- **Ruta absoluta vs. relativa** – Si ejecutas el script desde una carpeta diferente, una ruta absoluta (`C:/licenses/...`) elimina los errores de “archivo no encontrado”. +- **Variables de entorno** – Almacenar la ruta en una variable de entorno (`OCR_LICENSE_PATH`) mantiene los secretos fuera del control de versiones: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Cómo validar la licencia – Asegurándose de que funcionó + +Establecer la licencia es solo la mitad de la batalla; necesitas confirmar que la biblioteca la aceptó. Ahí es donde brilla el paso de validación. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Si el archivo de licencia falta, está corrupto o no coincide, `validate()` lanzará una excepción. Capturar esa excepción te brinda una forma clara de informar problemas. + +## Ejemplo completo funcional (Todos los pasos combinados) + +A continuación se muestra el script completo, listo para ejecutarse. Ejecútalo desde una terminal (`python set_license.py`) y deberías ver impreso “License OK”. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Salida esperada** + +``` +License OK +``` + +Si algo sale mal, verás algo como: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Ese mensaje te indica exactamente qué corregir—no se requiere adivinar. + +## Cómo validar la licencia – Manejo de casos límite comunes + +Incluso con el script anterior, algunos escenarios pueden causarte problemas: + +| Situación | Qué ocurre | Cómo arreglar | +|-----------|------------|---------------| +| **Error tipográfico en la ruta del archivo** | `FileNotFoundError` from `set_license` | Verifica la ruta; usa `os.path.abspath()` para depurar. | +| **Tipo de archivo incorrecto** | Validation throws “Invalid license format” | Asegúrate de estar usando el archivo `.lic` que coincide con la edición de tu producto. | +| **Licencia expirada** | Validation raises “License expired” | Renueva la licencia con el soporte de Aspose y reemplaza el archivo. | +| **Ejecutando en un entorno restringido** (p. ej., AWS Lambda) | Permission error | Concede acceso de lectura al directorio o incrusta la licencia en el paquete de despliegue. | + +Consejo profesional: envuelve la llamada `set_license` en su propio bloque `try/except` si deseas diferenciar entre errores de “file not found” y “invalid format”. + +## Resumen visual + +![cómo establecer la licencia en Aspose OCR ejemplo](/images/aspose-ocr-license.png "cómo establecer la licencia en Aspose OCR ejemplo") + +*La captura de pantalla muestra el script imprimiendo “License OK” después de una activación exitosa.* + +## Errores comunes y mejores prácticas + +- **Nunca comprometas tu archivo de licencia en un repositorio público.** Usa variables de entorno o gestores de secretos (GitHub Secrets, Azure Key Vault) en su lugar. +- **Valida temprano.** Colocar `license_obj.validate()` justo después de `set_license` captura errores antes de que comience cualquier trabajo de OCR. +- **Reutiliza el objeto License.** Solo necesitas establecer la licencia una vez por proceso; las llamadas posteriores a OCR usarán automáticamente la licencia activada. +- **Registra la ruta de la licencia (sin el nombre del archivo) en producción** para ayudar en la depuración sin exponer el archivo real. + +## Próximos pasos – Extendiendo tu flujo de trabajo OCR + +Ahora que sabes **cómo establecer la licencia** y **cómo validar la licencia**, puedes pasar a las tareas principales de OCR: + +- **cómo leer una imagen** – `Image.load("sample.png")` +- **cómo extraer texto** – `ocr_engine.recognize(image)` +- **cómo configurar opciones de OCR** – ajusta la configuración de `OcrEngine` para idioma, precisión, etc. + +Cada uno de esos temas se basa en un motor con licencia correctamente activada, por lo que nunca volverás a ver la marca de agua de prueba. + +## Conclusión + +Hemos cubierto todo el proceso de **cómo establecer la licencia** para Aspose OCR, demostrado **cómo validar la licencia**, y te hemos proporcionado un script completo y ejecutable que imprime “License OK”. Al manejar los errores desde el principio y usar variables de entorno, mantienes tu aplicación segura y robusta. + +¿Tienes más preguntas sobre OCR, licencias o integrar Aspose en una canalización más grande? 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/spanish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..a0ea1eb3e --- /dev/null +++ b/ocr/spanish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: cómo usar OCR en PDFs escaneados, extraer texto de un PDF, ejecutar OCR + en un PDF y convertir un PDF escaneado en archivos buscables en unos pocos pasos. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: es +og_description: 'cómo usar OCR en Python: aprende a extraer texto de PDF, ejecutar + OCR en PDF y convertir PDF escaneados en documentos buscables.' +og_title: cómo usar OCR – Guía rápida para extraer texto de PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: Cómo usar OCR – Extraer texto de PDF con Python +url: /es/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cómo usar OCR – Extraer texto de PDF con Python + +¿Alguna vez te has preguntado **cómo usar OCR** para extraer texto de un contrato, recibo o libro electrónico escaneado? No estás solo. En muchos proyectos del mundo real el PDF que recibes es solo una imagen, y sin OCR no puedes buscar, indexar o analizar su contenido. + +En este tutorial recorreremos un ejemplo completo y ejecutable que muestra **cómo usar OCR**, cómo **extraer texto de PDF**, y por qué podrías querer **convertir PDF escaneado** en documentos buscables. También cubriremos el sutil arte de **cargar PDF como imagen** para que el motor OCR pueda ver cada página con claridad. + +> **Vista rápida:** Al final tendrás un script que carga un PDF multipágina, ejecuta OCR en cada página y muestra el texto reconocido, sin necesidad de servicios externos. + +## Lo que necesitarás + +- Python 3.9+ (cualquier versión reciente funciona) +- paquete `aocr` (o cualquier biblioteca OCR compatible que proporcione `OcrEngine` y `Image.load`) +- Un archivo PDF escaneado que quieras procesar (p. ej., `contract.pdf`) +- Una cantidad moderada de RAM (≈ 200 MB por PDF de 100 páginas suele ser suficiente) + +Si aún no has instalado la biblioteca OCR, ejecuta: + +```bash +pip install aocr +``` + +> **Consejo profesional:** Usa un entorno virtual para mantener tus dependencias ordenadas. + +## Paso 1: Cargar PDF como Imagen – La primera pieza del rompecabezas + +Antes de que pueda ocurrir cualquier OCR, el PDF debe estar representado como una imagen. Aquí es donde entra en juego la palabra clave secundaria **load pdf as image**. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Por qué importa:* `aocr.Image.load` rasteriza internamente cada página del PDF en un mapa de bits que el motor OCR puede entender. Si omites este paso y alimentas el PDF crudo, el motor generará un error porque espera datos de píxeles, no datos vectoriales. + +> **Nota:** La ruta puede ser absoluta o relativa. Asegúrate de que el archivo sea legible; de lo contrario obtendrás un `FileNotFoundError`. + +## Paso 2: Ejecutar OCR en PDF – Convertir píxeles en caracteres + +Ahora que el PDF vive como una imagen, finalmente podemos **run OCR on PDF**. El siguiente fragmento procesa todas las páginas de una sola vez: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*¿Qué ocurre bajo el capó?* `process_all_pages` recorre las páginas rasterizadas, aplica el modelo OCR y devuelve una lista de objetos de resultado—uno por página. Cada resultado contiene el texto reconocido, puntuaciones de confianza y cajas delimitadoras (si las necesitas más adelante). + +## Paso 3: Extraer texto de PDF – Sacar las cadenas + +Con los resultados OCR en mano, extraer el texto plano se vuelve trivial. Iteraremos sobre las páginas e imprimiremos la salida, demostrando la palabra clave secundaria **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Salida esperada** (truncada por brevedad): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Si necesitas el texto en una sola cadena, simplemente concatena: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Ahora has **extracted text from PDF** usando OCR con éxito. + +## Paso 4: Convertir PDF escaneado – Hacerlo buscable + +Muchas herramientas posteriores (como Elasticsearch o SharePoint) esperan un PDF buscable en lugar de un volcado de texto plano. Puedes incrustar la salida OCR de nuevo en el PDF original, efectivamente **convert scanned PDF** en una versión buscable. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*¿Por qué molestarse?* Un PDF buscable conserva el diseño y las imágenes originales mientras permite la selección e indexación de texto, una solución ganadora tanto para humanos como para máquinas. + +## Problemas comunes y casos límite + +### PDFs multipágina más grandes que la memoria + +Si tu PDF tiene cientos de páginas, cargar todo de una vez puede agotar la RAM. La biblioteca `aocr` soporta carga diferida: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Luego procesa las páginas una por una: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Escaneos de baja calidad + +La precisión del OCR disminuye drásticamente con escaneos borrosos o de bajo contraste. Antes de alimentar la imagen al motor, considera pre‑procesarla: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Soporte de idioma + +Por defecto el motor asume inglés. Para **run OCR on PDF** en otro idioma, establece el código de idioma: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Asegúrate de que el modelo de idioma correspondiente esté instalado. + +## Ejemplo completo y funcional + +Juntando todo, aquí tienes un script autónomo que puedes guardar como `ocr_pdf.py` y ejecutar inmediatamente: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Ejecuta así: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Verás el texto impreso en la consola, y si proporcionaste `-o`, aparecerá un PDF buscable junto al archivo original. + +## Consejos profesionales y buenas prácticas + +- **Procesamiento por lotes:** Cuando manejes decenas de PDFs, envuelve la lógica anterior en un bucle y registra el éxito/fracaso de cada archivo. +- **Filtrado por confianza:** Cada `page_result` incluye una métrica de confianza. Descarta o marca las páginas con baja confianza para revisión manual. +- **Paralelismo:** Si tu CPU tiene varios núcleos, considera usar `concurrent.futures` para procesar páginas en paralelo—solo ten cuidado con el uso de memoria. +- **Bloqueo de versión:** La API de `aocr` puede evolucionar. Fija la versión en `requirements.txt` (p. ej., `aocr==2.3.1`) para evitar cambios inesperados. + +## Conclusión + +Hemos recorrido **cómo usar OCR** para **extraer texto de PDF**, **run OCR on PDF**, **load PDF as image**, e incluso **convert scanned PDF** en un formato buscable. El código está completo, las explicaciones cubren tanto el *qué* como el *por qué*, y ahora dispones de un patrón reutilizable para cualquier proyecto que maneje PDFs basados en imágenes. + +¿Qué sigue? Prueba alimentar el texto extraído a una canalización de procesamiento de lenguaje natural, indexa los PDFs buscables con Elasticsearch, o experimenta con diferentes back‑ends OCR como Tesseract o Azure Computer Vision. El cielo es el límite, y las herramientas están a tu alcance. + +¡Feliz codificación, y que tus PDFs siempre sean buscables! + +![cómo usar OCR ejemplo](/images/ocr_workflow.png "cómo usar OCR") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/spanish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/spanish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..abe87026a --- /dev/null +++ b/ocr/spanish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-04-26 +description: Cómo usar hilos para cargar imágenes para OCR en Python. Aprende el procesamiento + OCR asíncrono con callbacks, hilos en segundo plano y carga de imágenes en solo + unos pocos pasos. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: es +og_description: Cómo usar hilos para cargar una imagen para OCR en Python. Esta guía + muestra un ejemplo completo y ejecutable con callbacks y ejecución en segundo plano. +og_title: Cómo usar hilos para cargar imágenes para OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Cómo usar hilos para cargar imágenes para OCR +url: /es/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cómo usar threading para cargar una imagen para OCR + +¿Alguna vez te has preguntado **cómo usar threading** para cargar una imagen para OCR sin congelar tu aplicación? Es un escenario que aparece tanto si estás construyendo un escáner de escritorio, un servicio web o un script sencillo que procesa imágenes masivas. ¿La buena noticia? Unas pocas líneas de Python y el patrón de threading adecuado mantendrán tu UI ágil mientras el motor OCR hace su magia. + +En este tutorial recorreremos un ejemplo completo, de extremo a extremo: cargar un PNG grande, iniciar OCR en un hilo en segundo plano y manejar el resultado con una devolución de llamada. Al final no solo sabrás **cómo usar threading**, sino también cómo **cargar una imagen para OCR** de forma limpia y reutilizable. + +## Lo que necesitarás + +- Python 3.9+ (la sintaxis que usamos funciona en cualquier versión reciente) +- `pillow` para manejo de imágenes (`pip install pillow`) +- `pytesseract` como un contenedor ligero alrededor de Tesseract OCR (`pip install pytesseract`) +- Motor Tesseract OCR instalado en tu máquina (descarga desde [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Un archivo de imagen grande que quieras procesar (`large_image.png` en esta guía) + +Sin frameworks adicionales, sin async/await—solo `threading` clásico y una devolución de llamada. + +## Paso 1: Importar el módulo threading (Requerido para ejecución en segundo plano) + +Lo primero que hacemos es importar el módulo `threading`. Este nos proporciona la clase `Thread`, que nos permite ejecutar cualquier función en un hilo del sistema operativo separado. + +```python +import threading +``` + +*Por qué es importante*: Si ejecutas OCR en el hilo principal, tu programa (especialmente una GUI) se congelará hasta que OCR termine. Al delegar el trabajo a un hilo en segundo plano, el hilo principal queda libre para actualizar la UI, manejar la entrada del usuario o iniciar otras tareas. + +## Paso 2: Definir una devolución de llamada que se invocará cuando OCR termine + +Una devolución de llamada es simplemente una función que otro fragmento de código llama cuando ha terminado. Aquí imprimiremos el texto reconocido, pero podrías almacenarlo, enviarlo a través de la red o actualizar un widget de la UI. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Consejo profesional*: Mantén la devolución de llamada ligera. Un procesamiento pesado dentro de la devolución de llamada anula el propósito del threading porque seguirá bloqueando el hilo que la llamó (a menudo el hilo principal). + +## Paso 3: Cargar la imagen que deseas procesar + +Cargar la imagen es una preocupación separada de OCR, pero sigue siendo parte del flujo de trabajo general. Usar Pillow hace esto trivial. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Por qué lo hacemos aquí*: Si la imagen es enorme, cargarla en el hilo principal ya podría causar un tropiezo. En muchas aplicaciones reales también descargarías la carga a un hilo, pero para mayor claridad la mantenemos sincrónica. + +## Paso 4: Crear un pequeño contenedor (wrapper) para el motor OCR + +El fragmento original usaba `engine.process_async`. Imitaremos eso con una pequeña clase que inicia un hilo internamente y llama a la devolución de llamada suministrada cuando termina. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Explicación*: +- `_run_ocr` realiza el trabajo pesado. +- `process_async` crea un objeto `Thread`, lo marca como daemon (para que el intérprete pueda salir incluso si el hilo sigue ejecutándose) y lo inicia. +- La devolución de llamada recibe ya sea el texto OCR o un mensaje de error. + +## Paso 5: Unir todo y hacer otro trabajo mientras OCR se ejecuta + +Ahora orquestamos todo el flujo: cargar la imagen, instanciar el motor, lanzar el OCR asíncrono y mantener el hilo principal ocupado con otra cosa (aquí simplemente imprimimos un mensaje). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Salida esperada (truncada por brevedad):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Si OCR falla, la devolución de llamada imprimirá un mensaje de error en lugar del texto. + +--- + +## Por qué este enfoque funciona mejor que un bucle simple + +- **Responsiveness**: El hilo principal nunca se bloquea en la llamada a OCR, que puede tardar segundos para imágenes grandes. +- **Scalability**: Puedes iniciar múltiples instancias de `SimpleOcrEngine`, cada una en su propio hilo, para procesar un lote de imágenes concurrentemente. +- **Separation of Concerns**: La carga, el procesamiento y el manejo de resultados están claramente separados, lo que hace que el código sea más fácil de probar y mantener. + +## Errores comunes y cómo evitarlos + +| Pitfall | What Happens | Fix | +|---------|--------------|-----| +| Olvidar marcar el hilo como *daemon* | El script se queda colgado después de que el trabajo principal termina porque el hilo OCR sigue vivo. | Establecer `worker.daemon = True` **or** `join()` el hilo antes de salir. | +| Usar una variable global para el resultado sin bloqueos | Las condiciones de carrera pueden corromper los datos cuando varios hilos escriben simultáneamente. | Pasar el resultado mediante una devolución de llamada (como hacemos) o usar contenedores seguros para hilos como `queue.Queue`. | +| Cargar una imagen masiva en el hilo principal | La UI se congela antes de que OCR en segundo plano siquiera comience. | Descargar la carga de la imagen a un hilo también, o usar técnicas de carga perezosa. | +| No manejar excepciones dentro del hilo de trabajo | Excepciones no capturadas matan silenciosamente el hilo, dejándote sin resultado. | Envolver la lógica OCR en `try/except` y reenviar el error a la devolución de llamada. | + +## Extender este patrón + +- **Progress Reporting**: Usa un `queue.Queue` compartido para enviar porcentajes de progreso intermedios desde el hilo OCR al hilo principal. +- **Thread Pool**: Para procesamiento por lotes, reemplaza objetos `Thread` individuales con un `concurrent.futures.ThreadPoolExecutor`. +- **GUI Integration**: En una aplicación Tkinter o PyQt, programa la devolución de llamada con `after()` (Tkinter) o `QTimer.singleShot` (Qt) para asegurar que las actualizaciones de UI ocurran en el hilo principal. + +## Ejemplo completo funcional (listo para copiar‑pegar) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/swedish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..c51366559 --- /dev/null +++ b/ocr/swedish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,247 @@ +--- +category: general +date: 2026-04-26 +description: Extrahera rubriktext med OCR i Python Aspose OCR. Lär dig hur du snabbt + och pålitligt extraherar text från ett specifikt område i bilder. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: sv +og_description: Extrahera rubriktext med OCR snabbt. Denna guide visar hur du extraherar + text från ett specifikt område med Python Aspose OCR på bara några rader. +og_title: Extrahera rubriktext med OCR i Python Aspose OCR – Komplett handledning +tags: +- OCR +- Python +- Aspose +title: Extrahera rubriktext med OCR i Python Aspose OCR – Steg‑för‑steg‑guide +url: /sv/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Extrahera rubriktext OCR – Fullständig Python Aspose OCR‑handledning + +Har du någonsin behövt **extrahera rubriktext med OCR** från en skannad faktura men inte ville bearbeta hela sidan? Du är inte ensam. I många verkliga pipelines innehåller rubriken den mest kritiska informationen—fakturanummer, datum, leverantörsnamn—så att snabbt plocka ut den kan spara mycket efterföljande arbete. + +I den här handledningen visar vi dig en färdig‑till‑körning‑lösning som **extraherar text från ett specifikt område** med hjälp av **Python Aspose OCR**‑biblioteket. Inga vaga referenser till externa dokument, bara ett komplett skript, en tydlig förklaring av varje rad och tips du faktiskt kan använda redan imorgon. + +## Vad du kommer att lära dig + +- Hur du installerar och importerar Aspose OCR‑paketet för Python. +- Hur du laddar en bild och definierar ett **region of interest (ROI)** som isolerar rubriken. +- Hur du kör OCR‑motorn på det ROI‑området och hämtar ren text. +- Vanliga fallgropar (t.ex. DPI‑mismatchar) och hur du undviker dem. +- Hur det förväntade resultatet ser ut så att du kan verifiera att allt fungerar. + +När du är klar kan du enkelt klistra in den här koden i vilket projekt som helst som behöver **extrahera rubriktext OCR** från fakturor, kvitton eller andra dokument med ett förutsägbart layout. + +## Förutsättningar + +- Python 3.8 eller nyare installerat på din maskin. +- En giltig Aspose OCR för Python‑licens (gratisprovversionen fungerar för utvärdering). +- En bildfil (`invoice.png`) som innehåller ett tydligt rubrikområde. +- Grundläggande kunskap om Python‑funktioner och filsökvägar. + +> **Pro tip:** Om du testar på en lågupplöst skanning, öka DPI‑värdet innan du skickar den till Aspose OCR – det förbättrar noggrannheten avsevärt. + +--- + +## Steg 1: Installera Aspose OCR‑paketet + +Först lägger du till biblioteket i din miljö. Det officiella paketet heter `aspose-ocr`. Kör detta en gång: + +```bash +pip install aspose-ocr +``` + +Om du använder ett virtuellt miljö (starkt rekommenderat), aktivera den innan du installerar. Detta säkerställer att paketet inte krockar med andra projekt. + +## Steg 2: Importera nödvändiga klasser och ladda bilden + +Nu importerar vi de nödvändiga klasserna till vårt skript och laddar fakturabilden. Observera användningen av **fullständiga sökvägar**; relativa sökvägar fungerar också, men absoluta sökvägar tar bort tvetydighet när skriptet körs på en server. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Varför detta är viktigt:** Att initiera `OcrEngine` en gång och återanvända den för flera bilder är mer effektivt än att skapa en ny motor varje gång. + +## Steg 3: Definiera rubrikområdet (ROI) + +Rubriken sitter vanligtvis högst upp på sidan, men de exakta koordinaterna kan variera. Här definierar vi en rektangel (`x`, `y`, `width`, `height`) som täcker rubriken. Justera siffrorna så att de matchar ditt dokuments layout. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Hur det fungerar:** Genom att anropa `set_roi` begränsar OCR‑motorn sin analys till denna rektangel, vilket dramatiskt snabbar upp bearbetningen och minskar brus från resten av sidan. + +## Steg 4: Applicera ROI och kör OCR + +Nu instruerar vi motorn att fokusera på rubrikområdet och sedan utföra OCR‑processen. Resultatobjektet innehåller den igenkända texten samt ytterligare metadata (konfidensvärden, språk osv.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Om OCR‑processen misslyckas (t.ex. på grund av ett ej stödformat) blir `ocr_result` `None`. En enkel guard‑sats kan göra ditt skript mer robust: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Steg 5: Hämta och skriv ut den extraherade rubriktexten + +Till sist drar vi ut texten från resultatobjektet och visar den. Du kan också skriva den till en fil eller skicka den till en annan funktion för vidare parsning. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Förväntat resultat + +När allt är korrekt konfigurerat bör du se något i stil med: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Om resultatet ser förvrängt ut, dubbelkolla ROI‑koordinaterna och säkerställ att källbilden har hög kontrast. + +--- + +## Variationer och specialfall + +### 1. Flera rubriker i ett dokument + +Ibland innehåller en PDF flera sidor, var och en med sin egen rubrik. Loopa över sidorna och justera ROI per sida: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Hantera snedvridna skanningar + +Om fakturan är något roterad, förbehandla bilden med OpenCV innan du skickar den till Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Ändra språkinställningar + +Aspose OCR kan automatiskt upptäcka språk, men du kan tvinga fram engelska för snabbare resultat: + +```python +ocr_engine.language = "en" +``` + +--- + +## Fullt fungerande exempel + +Nedan är det kompletta skriptet som du kan kopiera‑klistra in i en fil med namnet `extract_header.py`. Kom ihåg att ersätta bildsökvägen med din egen. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +När du kör detta skript bör rubrikraderna skrivas ut exakt som tidigare visat. Anpassa gärna `roi`‑värdena så att de passar just din fakturamall. + +--- + +## Vanliga frågor och svar + +**Q: Fungerar detta direkt med PDF‑filer?** +A: Inte utan vidare. Konvertera varje PDF‑sida till en bild (t.ex. med `pdf2image`) och skicka sedan PNG/JPG till skriptet. + +**Q: Vad händer om min rubrik innehåller både en logotyp och text?** +A: Aspose OCR fokuserar på textinnehåll. För logotyper, överväg att använda ett separat bildigenkänningsbibliotek som `opencv` eller `tesseract` med en anpassad modell. + +**Q: Är gratisprovet begränsat?** +A: Provet tillåter upp till 10 sidor per månad. För produktion, köp en licens för att ta bort begränsningen och låsa upp högre noggrannhetsinställningar. + +--- + +## Slutsats + +Du har nu en **komplett, citeringsvärd** guide för **extrahera rubriktext OCR** med **Python Aspose OCR**. Handledningen täckte allt från installation till hantering av specialfall och gav dig en återanvändbar funktion som du kan släppa in i större arbetsflöden. + +Nästa steg kan vara att **extrahera text från andra områden** som sidfot eller radposter, eller att kombinera detta tillvägagångssätt med en PDF‑till‑bild‑konverterare för att automatisera hela dokumentpipelines. Möjligheterna är oändliga—kom bara ihåg att hålla ROI‑koordinaterna korrekta och bilderna i hög upplösning. + +Har du en knepig layout? Dela den i kommentarerna så justerar vi ROI‑inställningarna tillsammans. 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/swedish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..82cb8d2a3 --- /dev/null +++ b/ocr/swedish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-04-26 +description: Extrahera text från bild med Aspose OCR i Python. Lär dig hur du extraherar + text, konverterar bild till text och laddar bild för OCR med flerspråkigt stöd. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: sv +og_description: extrahera text från bild omedelbart. Den här guiden visar hur du extraherar + text, konverterar bild till text och laddar bild för OCR med Aspose OCR i Python. +og_title: Extrahera text från bild med Python – Komplett flerspråkig OCR-handledning +tags: +- OCR +- Python +- Aspose +title: Extrahera text från bild med Python – Flerspråkig OCR-guide +url: /sv/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# extrahera text från bild med Python – Flerspråkig OCR-guide + +Har du någonsin behövt **extrahera text från bild** men varit osäker på vilket bibliotek som kan hantera blandade språk‑sidor? Du är inte ensam. I många verkliga applikationer—tänk fakturabehandling, övervakning av sociala medier eller flerspråkigt dokumentarkiv—kommer du att stöta på bilder som innehåller både latinska och kyrilliska tecken. + +Den goda nyheten? Med Aspose OCR för Python kan du **extrahera text**, **konvertera bild till text** och **ladda bild för OCR** på bara några rader, samtidigt som motorn automatiskt upptäcker språket. I den här handledningen går vi igenom ett komplett, körbart exempel, förklarar varför varje steg är viktigt och täcker ett par kantfall du kan stöta på. + +> **Vad du får med dig** +> * Ett färdigt skript som hämtar text från en blandad språk‑PNG. +> * Förståelse för hur man konfigurerar flerspråkig OCR i Python. +> * Tips för att hantera stora filer, olika bildformat och felsökning av vanliga fallgropar. + +## Förutsättningar + +- Python 3.8 eller nyare (koden använder f‑strings). +- `asposeocr`‑paketet installerat (`pip install asposeocr`). +- En bildfil (t.ex. `mixed_lang.png`) som innehåller text i mer än ett skriftsystem. +- Grundläggande kunskap om Python‑import och objekt‑orienterade API:er. + +Inga tunga beroenden, inga externa tjänster—bara en enkel pip‑installation så är du klar. + +--- + +## Steg 1 – Installera & importera Aspose OCR‑biblioteket + +Innan vi kan **ladda bild för OCR**, behöver vi själva biblioteket. Paketet levereras med OCR‑motorn i kärnan och en lättvikts‑bildläsare. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Varför detta är viktigt*: Att importera de specifika klasserna håller namnrymden ren och gör den efterföljande koden tydligare. Om du bara importerar `asposeocr` måste du kvalificera varje anrop (`aocr.OcrEngine()`), vilket kan bli rörigt. + +--- + +## Steg 2 – Skapa OCR‑motorn och aktivera flerspråkig detektering + +Aspose OCR kan automatiskt gissa språk(en) som finns i bilden. Att sätta `Language.AUTO` täcker latin, kyrilliska, arabiska och många fler. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Proffstips*: Om du känner till språkmängden i förväg kan du tilldela `Language.ENGLISH` eller `Language.RUSSIAN` för en liten prestandaförbättring. Men för riktigt blandade dokument är `AUTO` det säkraste valet. + +--- + +## Steg 3 – Ladda bilden du vill bearbeta + +Här är där vi **laddar bild för OCR**. Aspose stödjer PNG, JPEG, BMP, TIFF och till och med PDF‑sidor som behandlas som bilder. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Tips**: Om din bild är större än 2 MB, överväg att ändra storlek på den i förväg. Stora bilder ökar minnesanvändningen och kan sakta ner detekteringssteget. + +--- + +## Steg 4 – Kör OCR‑processen och fånga resultatet + +Att anropa `process()` gör det tunga arbetet: textdetektering, layoutanalys och språktolkning. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +Det returnerade `ocr_result`‑objektet innehåller flera användbara egenskaper: + +| Egenskap | Beskrivning | +|----------|-------------| +| `text` | Vanlig sträng med den igenkända texten (det du oftast använder). | +| `confidence` | Total förtroendescore (0‑100). | +| `lines` | Lista med `OcrLine`‑objekt med positionsdata (bra för PDF‑filer). | + +--- + +## Steg 5 – Visa den extraherade texten + +Till sist skriver vi ut resultatet. I en riktig applikation kan du skriva det till en databas eller skicka det till ett översättnings‑API. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Förväntad output** (exempel för en blandad språk‑bild): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Om du ser förvrängda tecken, dubbelkolla att bilden inte är korrupt och att du använder den senaste versionen av `asposeocr` (v23.7 vid skrivtillfället). + +--- + +## Steg 6 – Fullt skript du kan kopiera‑klistra + +Att sätta ihop allt eliminerar förvirringen “var börjar koden?”. Spara detta som `multilingual_ocr.py` och kör det från kommandoraden. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Kör det: + +```bash +python multilingual_ocr.py +``` + +Du bör se de extraherade strängarna skrivas ut i konsolen. Det är allt—**konvertera bild till text** med bara ett fåtal rader. + +--- + +## Vanliga frågor & hantering av kantfall + +### Vad händer om min bild innehåller handskrift? + +Aspose OCR är optimerad för tryckt text. Handskrivna skript kräver ofta en dedikerad modell (t.ex. Azure Read eller Google Vision). Du kan fortfarande prova `Language.AUTO`, men förvänta dig lägre förtroende. + +### Hur förbättrar jag noggrannheten på brusiga skanningar? + +1. Förbehandla bilden (binarisering, brusreducering). +2. Öka DPI till minst 300 ppi innan du skickar den till motorn. +3. Ställ explicit `ocr_engine.config.deskew = True` om bilden är sned. + +```python +ocr_engine.config.deskew = True +``` + +### Kan jag extrahera text från en PDF utan att först konvertera den till en bild? + +Ja—Aspose OCR kan öppna PDF‑sidor direkt: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Kom bara ihåg att varje sida behandlas som en bild internt, så samma kvalitetskriterier gäller. + +--- + +## Slutsats + +Du har nu ett gediget, helhetsrecept för att **extrahera text från bild** med Aspose OCR i Python, komplett med flerspråkigt stöd. Skriptet visar hur man **laddar bild för OCR**, **konverterar bild till text** och hanterar de vanligaste fallgroparna. + +Från och med nu kan du: + +- Integrera funktionen i en webbtjänst som accepterar användaruppladdningar. +- Kombinera den extraherade texten med ett språkdetekteringsbibliotek för att dirigera den till rätt översättnings‑engine. +- Experimentera med `ocr_engine.config`‑alternativ (t.ex. `max_recognition_time`, `text_orientation`) för att finjustera prestanda. + +Lycka till med kodningen, och må dina OCR‑pipelines alltid vara precisa! + +--- + +![Skärmbild av extraherad flerspråkig text – exempel på extrahera text från bild](image-placeholder.png "exempel på extrahera text från bild") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/swedish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..7e147074d --- /dev/null +++ b/ocr/swedish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: Hur du batch‑OCR:ar dina dokument och extraherar text från skanningar + i Python. Lär dig steg‑för‑steg batchbearbetning med OcrEngine för JSON‑utdata. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: sv +og_description: Hur du batch-OCR:ar dina skannade filer och extraherar text från skanningar + i ett enda skript. Komplett kod, tips och hantering av kantfall. +og_title: Hur man batchar OCR – Snabb Python-guide +tags: +- OCR +- Python +- Automation +title: Hur man batch-OCR – Extrahera text från skanningar effektivt +url: /sv/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Så batchar du OCR – Extrahera text från skanningar effektivt + +Har du någonsin undrat **hur man batchar OCR** en hög med skannade PDF-filer utan att förlora förståndet? Du är inte ensam—utvecklare frågar ständigt, *“Hur kan jag extrahera text från skanningar på en gång?”* Det goda nyheterna är att några rader Python kan förvandla den tråkiga uppgiften till en smidig, automatiserad pipeline. + +I den här handledningen går vi igenom en komplett, färdig‑att‑köra lösning som **extraherar text från skanningar**, sparar resultaten som JSON och ger dig en snabb kontroll i slutet. Inga externa tjänster, ingen magi—bara ren Python, `OcrEngine`‑klassen och lite mapp‑hantering. + +## Vad du får med dig + +- Ett fullt fungerande skript som **batchar OCR** över vilken mapp med bilder som helst. +- Klara förklaringar till *varför* varje rad finns, inte bara *vad* den gör. +- Tips för att hantera tomma mappar, icke‑bildfiler och stora batcher. +- Ett sätt att verifiera att JSON‑utdata faktiskt innehåller den extraherade texten. + +### Förutsättningar (det absolut nödvändigaste) + +| Krav | Varför det är viktigt | +|------|-----------------------| +| Python 3.8+ | Modern syntax & typ‑tips | +| `OcrEngine`‑biblioteket (eller ett kompatibelt omslag) | Kärnfunktion för OCR | +| En katalog med skannade bildfiler (PNG, JPG, TIFF) | Inmatningsdata | +| Skrivrättigheter för mål‑mappen | Sparar JSON‑resultat | + +Om du redan har detta, toppen—låt oss dyka in. + +![hur man batch OCR arbetsflöde](image-placeholder.png){alt="hur man batch OCR arbetsflöde"} + +## Steg 1 – Initiera OCR‑motorn (hur man batch OCR) + +Innan vi kan bearbeta något behöver vi en OCR‑motorsinstans. Tänk på den som “hjärnan” som läser varje bild och spottar ut text. Att initiera den en gång och återanvända den genom hela batchen är det mest effektiva mönstret. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Varför återanvända samma instans?** +> Att skapa en ny motor för varje fil skulle ladda tunga modeller i minnet upprepade gånger, vilket dramatiskt saktar ner batchen. En instans håller modellen i RAM och låter dig bearbeta tusentals bilder utan märkbar fördröjning. + +## Steg 2 – Peka på din skanningsmapp (extrahera text från skanningar) + +Dina skanningar finns någonstans på disken. Låt oss tala om för skriptet var de finns. Att använda absoluta sökvägar undviker “fil ej hittad”-överraskningar när skriptet startas från en annan arbetskatalog. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Proffstips:** +> Om du är på Windows fungerar snedstreck (`/`) lika bra med `os.path.abspath`, så du behöver inte escape:a bakåtsnedstreck. + +## Steg 3 – Välj var JSON‑resultaten ska hamna + +Du vill förmodligen ha en prydlig mapp för OCR‑resultaten. Att hålla utdata separat från källan gör det enkelt att rensa upp senare eller mata JSON‑filen in i en annan pipeline. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Varför skapa mappen programatiskt?** +> Det garanterar att skriptet inte kraschar om katalogen saknas, och `exist_ok=True` gör operationen idempotent—kör skriptet flera gånger utan fel. + +## Steg 4 – Kör batch‑processen (hur man batch OCR) + +Nu kommer kärnan i saken: att instruera `ocr_engine` att gå igenom varje fil i `input_dir`, köra OCR och dumpa JSON till `output_dir`. Flaggan `format="json"` talar om för motorn att serialisera resultatet på ett strukturerat sätt som efterföljande verktyg älskar. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Vad händer under huven? + +1. **Filupptäckt** – Motorn skannar `input_folder` rekursivt och ignorerar dolda filer. +2. **Filvalidering** – Endast stödjade bildändelser (`.png`, `.jpg`, `.tif`, etc.) skickas till OCR‑modellen. +3. **OCR‑exekvering** – Varje bild skickas till OCR‑motorn; text, förtroendescore och layoutdata fångas. +4. **JSON‑serialisering** – Resultatet skrivs till en fil med samma basnamn men med `.json`‑ändelse i `output_folder`. + +> **Hantering av kantfall:** +> - **Tom mapp:** Motorn loggar “No files found” och avslutar smidigt. +> - **Korrupt bild:** Den hoppar över filen, registrerar ett fel i en `batch_errors.log`, och fortsätter. +> - **Stor batch (10 000+ filer):** Minnesanvändningen hålls låg eftersom varje bild bearbetas oberoende. + +## Steg 5 – Bekräfta att konverteringen är klar + +Ett enkelt `print`‑uttryck ger omedelbar återkoppling i konsolen. För produktions‑pipelines kan du ersätta detta med ett loggningsanrop eller ett e‑postmeddelande. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +När du ser den raden kan du säkert inspektera `json_output`‑mappen. Varje JSON‑fil kommer ungefär se ut så här: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Du kan nu mata dessa JSON‑filer i en databas, ett sökindex eller något annat efterföljande analysverktyg. + +## Vanliga frågor (och snabba svar) + +**Q: Vad händer om jag behöver bearbeta PDF‑filer istället för bilder?** +A: Konvertera varje PDF‑sida till en bild först (t.ex. med `pdf2image`) och placera de resulterande PNG/JPG‑filerna i `input_dir`. Batch‑OCR‑logiken förblir oförändrad. + +**Q: Kan jag ändra utdataformatet till ren text?** +A: Absolut. Byt `format="json"` mot `format="txt"` så skriver motorn en `.txt`‑fil som bara innehåller den extraherade texten. + +**Q: Mina skanningar ligger i flera underkataloger—kommer skriptet att gå rekursivt?** +A: Ja. `batch_process` traverserar katalogträdet som standard. Om du vill ha en platt struktur, sätt `flatten=True` (om biblioteket stödjer det) eller efterbehandla JSON‑filnamnen. + +**Q: Hur hanterar jag icke‑latinska skript?** +A: Initiera `OcrEngine` med en språkparameter, t.ex. `OcrEngine(lang="spa+eng")`. Batch‑loopen i sig kräver inga förändringar. + +## Proffstips & Vanliga fallgropar + +- **Batch‑storlek spelar roll:** Om du märker CPU‑spikar, dämpa processen med ett enkelt `time.sleep(0.1)` mellan filer. +- **Loggning:** Byt `print`‑anropet mot Pythons `logging`‑modul för att fånga tidsstämplar och felnivåer. +- **Filnamnskrockar:** Om två skanningar har samma basnamn men ligger i olika underkataloger, kommer JSON‑filerna att skriva över varandra. Lägg till en hash av den relativa sökvägen i utdatafilens namn för att undvika detta. +- **Minnesläckor:** Vissa OCR‑bakändar håller fast vid inhemska resurser. Anropa `ocr_engine.close()` i slutet av ditt skript om biblioteket erbjuder en städrutin. + +## Fullt skript – Klart att kopiera & klistra in + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Förväntad konsolutdata** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Du kan verifiera JSON‑filen genom att öppna någon fil i `json_output` med en textredigerare eller genom att ladda den i Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Du bör se den råa OCR‑extraherade texten skriven till konsolen. + +## Avslutning + +Vi har precis gått igenom **hur man batchar OCR** för en hel katalog med skannade bilder och **extraherar text från skanningar** till rena, maskinläsbara JSON‑filer. Tillvägagångssättet är medvetet enkelt: konfigurera motorn en gång, peka på en mapp och låt biblioteket sköta det tunga arbetet. Härifrån kan du: + +- Anslut JSON‑filen + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/swedish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..e5f85c87f --- /dev/null +++ b/ocr/swedish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,241 @@ +--- +category: general +date: 2026-04-26 +description: Hur man skapar OCR snabbt och pålitligt. Lär dig att extrahera text från + bild, ladda bild för OCR och köra OCR på PNG med en anpassad ordlista. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: sv +og_description: Hur man skapar OCR i Python och extraherar text från en bild. Denna + guide visar hur man laddar en bild för OCR, kör OCR på PNG och använder en anpassad + ordlista. +og_title: Hur man skapar OCR i Python – Snabb textutvinning +tags: +- OCR +- Python +- Image Processing +title: Hur man skapar OCR i Python – Extrahera text från bild +url: /sv/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man skapar OCR i Python – Steg‑för‑steg‑guide + +Har du någonsin undrat **hur man skapar OCR** som kan läsa dina skannade PDF‑filer, skärmbilder eller handskrivna anteckningar? Du är inte ensam. I många verkliga projekt behöver vi *extrahera text från bild*‑filer, men de färdiga motorerna har ofta problem med domänspecifika ord. + +I den här handledningen kommer du att se ett komplett, körbart exempel som laddar en bild för OCR, använder en anpassad ordlista och slutligen **kör OCR på PNG**‑filer. I slutet kommer du att kunna extrahera text från vilken bild som helst och anpassa motorn till din egen terminologi. + +## Vad den här handledningen täcker + +* Installera det lilla men kraftfulla `aocr`‑paketet (eller något kompatibelt bibliotek). +* Konfigurera en **anpassad ordlista** så att termer som `aspocorp` eller `licensekey` känns igen. +* **Ladda en bild för OCR**, oavsett om det är en PNG, JPEG eller en skannad PDF‑sida. +* Köra OCR‑processen och skriva ut resultatet. + +Inga externa dokumentationslänkar, bara en självständig lösning som du kan kopiera‑klistra in och köra idag. + +### Förutsättningar + +* Python 3.8 eller nyare (koden använder f‑strängar). +* Grundläggande kunskap om kommandoraden – du kommer att skriva några `pip install`‑kommandon. +* En bildfil (`technical_doc.png` i exemplet) placerad någonstans du kan referera till. + +Om du uppfyller dessa tre punkter är du redo att köra. + +--- + +## Steg 1: Installera OCR‑biblioteket + +Först behöver vi en OCR‑motor som stöder ett programmerbart konfigurationsobjekt. `aocr`‑paketet är ett lättvikts‑wrapper runt en inbyggd OCR‑motor och fungerar bra för demonstrationer. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Proffstips:** Om du är på Windows och får ett kompileringsfel, prova `pip install aocr‑binary` som levereras med förbyggda wheels. + +### Varför installera detta bibliotek? + +`aocr` ger oss direkt åtkomst till ett `config`‑objekt där vi kan injicera en **anpassad ordlista**. Det är den hemliga ingrediensen för att förbättra noggrannheten på nischade vokabulärer. + +--- + +## Steg 2: Skapa OCR‑motorinstansen och lägg till en anpassad ordlista + +Nu startar vi motorn och talar om vilka ord den ska behandla som kända. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Varför en anpassad ordlista är viktig + +Standard‑OCR‑modeller är tränade på generiska korpusar. När modellen ser “aspocorp” kan den dela upp det till “aspo corp” eller helt enkelt släppa bokstäver. Genom att mata in en anpassad lista, biasar vi igenkänningaren mot den exakta stavningen vi behöver, vilket dramatiskt minskar efterbearbetningsarbetet. + +--- + +## Steg 3: Ladda bilden du vill bearbeta + +Här är där vi **laddar bild för OCR**. Metoden `Image.load` accepterar en sökvägssträng och bestämmer automatiskt filtypen. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Edge case:** Om din källa är en flersidig PDF, konvertera varje sida till PNG först (t.ex. med `pdf2image`) och mata in dem en‑och‑en till motorn. + +### Tips för bättre bildkvalitet + +* Håll upplösningen på minst 300 dpi. +* Säkerställ att bilden är rätt orienterad; rotera med `Pillow` om nödvändigt. +* Konvertera färgade skanningar till gråskala för att minska brus. + +--- + +## Steg 4: Kör OCR‑processen på PNG‑filen + +Med motorn konfigurerad och bilden laddad, kör vi slutligen **OCR på PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +`process()`‑anropet returnerar ett objekt som innehåller den igenkända texten, förtroendescore och avgränsningsrutor för varje ord. + +--- + +## Steg 5: Skriv ut den igenkända texten + +Det enklaste sättet att se vad motorn hittade är att skriva ut `text`‑attributet. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Förväntad utskrift + +Om `technical_doc.png` innehåller meningen *“The Aspocorp licensekey expires on 2025‑12‑31.”*, bör konsolen visa: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Observera hur den anpassade ordlistan behöll varumärkesnamnet intakt – något som en vanlig OCR kan ha förvrängt. + +--- + +## Fullt fungerande exempel (klart att kopiera‑klistra in) + +Nedan är hela skriptet, redo att sparas som `run_ocr.py`. Byt bara ut platshållarens sökväg mot platsen för din bild. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Kör det från terminalen: + +```bash +python run_ocr.py +``` + +Du bör se den extraherade texten skriven till konsolen, exakt som i det tidigare exemplet. + +--- + +## Vanliga frågor (FAQ) + +| Question | Answer | +|----------|--------| +| **Kan jag extrahera text från en skannad PDF?** | Ja. Konvertera varje sida till PNG (eller TIFF) först, och mata sedan in bilderna till samma skript. | +| **Vad händer om min bild är en JPEG istället för PNG?** | Metoden `Image.load` stöder JPEG, BMP, TIFF och PNG direkt. Byt bara filändelsen. | +| **Hur förbättrar jag noggrannheten på lågkontrastskanningar?** | Förprocessa med `Pillow` – öka kontrasten, applicera binarisering, eller använd `opencv` för att räta upp bilden. | +| **Finns det ett sätt att få förtroendescore för varje ord?** | `ocr_result` innehåller `words` – varje ord har ett `confidence`‑attribut som du kan iterera över. | +| **Kan jag köra detta på en huvudlös server?** | Absolut. `aocr` har inga GUI‑beroenden, vilket gör det perfekt för CI‑pipelines. | + +--- + +## Nästa steg & relaterade ämnen + +Nu när du vet **hur man skapar OCR** och **extraherar text från bild**‑filer, överväg att utforska: + +* **Förprocessningstekniker** – `load image for OCR` är bara första steget; använd `opencv` för att avbrusa eller skärpa. +* **Batch‑bearbetning** – loopa över en katalog med PNG‑filer för att skapa ett sökbart arkiv. +* **Flerspråkigt stöd** – lägg till språkpaket till motorn om du behöver läsa franska eller tyska dokument. +* **Integrering med Elasticsearch** – indexera den extraherade texten för fulltextsökning över skannade tillgångar. + +Var och en av dessa tillägg bygger på det grundmönster vi just gått igenom, så du kommer att finna övergången smidig. + +--- + +## Sammanfattning + +På några minuter har vi besvarat **hur man skapar OCR** som pålitligt **extraherar text från bild**‑filer, särskilt PNG‑filer, och vi har visat dig hur du **laddar bild för OCR**, använder en **anpassad ordlista**, och **kör OCR på PNG** utan några externa tjänster. + +Kör skriptet, justera ordlistan för att matcha ditt eget fackspråk, så har du en solid grund för alla dokument‑digitaliseringsprojekt. + +Om du stöter på problem, lämna en kommentar nedan—vi hjälper gärna till. Och glöm inte att dela dina framgångshistorier; gemenskapen lär sig bäst av verkliga exempel. + +**Redo att automatisera ditt pappersarbete?** Hämta koden, anpassa den, och börja omvandla pixlar till sökbar text redan idag! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/swedish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..024321e96 --- /dev/null +++ b/ocr/swedish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-04-26 +description: hur man extraherar OCR från bilder med Python – ett Python‑OCR‑exempel + som visar hur man laddar en bild för OCR och extraherar text från ett kvitto. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: sv +og_description: hur man extraherar OCR från bilder med Python. Lär dig ett Python + OCR‑exempel, ladda bild för OCR och extrahera text från kvitto på några minuter. +og_title: hur man extraherar OCR i Python – komplett guide +tags: +- OCR +- Python +- Image Processing +title: hur man extraherar OCR i Python – steg‑för‑steg‑handledning +url: /sv/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hur man extraherar ocr i Python – Komplett guide + +Har du någonsin undrat **hur man extraherar ocr** från ett suddigt kvitto eller en skannad faktura? Du är inte ensam—utvecklare stöter ständigt på problem när de behöver ren, maskinläsbar text från bilder. De goda nyheterna? Med bara några rader Python kan du förvandla en bild av ett kvitto till högkonfidens, sökbar text. + +I den här handledningen går vi igenom ett **python ocr example** som demonstrerar **how to load image for ocr**, kör motorn och behåller endast de tecken som uppfyller en 85 % konfidensgräns. I slutet kommer du att kunna **extract text from receipt** bilder utan att leta igenom dokumentation eller gissa API‑parametrar. + +## Vad du behöver + +- Python 3.9 eller nyare (syntaxen vi använder fungerar på 3.8+) +- `aocr`‑paketet (eller vilket OCR‑bibliotek som helst som tillhandahåller en `OcrEngine`‑klass). Installera det med: + +```bash +pip install aocr +``` + +- En exempel‑kvitto‑bild (`receipt.png`) placerad i en mapp du kan referera till. +- En textredigerare eller IDE—VS Code, PyCharm, eller till och med en enkel notebook räcker. + +Det är allt. Inga tunga ramverk, inga externa tjänster, bara ren Python. + +![Högkonfidens OCR-resultat – hur man extraherar ocr från ett kvitto](/images/ocr-high-confidence.png) + +*Bildtext: hur man extraherar ocr från ett kvitto med Python OCR* + +## Steg 1 – Skapa OCR‑motorinstansen (hur man extraherar ocr) + +Det första vi gör är att starta en OCR‑motor. Tänk på den som hjärnan som läser pixlarna åt oss. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Varför?** Att instansiera `OcrEngine` ger dig ett nytt konfigurationsobjekt. Du kan senare justera språkmodeller, DPI‑inställningar eller förbehandlingssteg—allt utan att röra den centrala bearbetningsloopen. + +## Steg 2 – Ladda bilden för OCR + +Därefter pekar vi motorn på bilden vi vill analysera. Här kommer nyckelordet **load image for ocr** in i bilden. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Proffstips:** Om din bild finns i en annan katalog, använd `os.path.join` för att bygga en plattformsoberoende sökväg. + +**Varför ladda bilden på detta sätt?** Hjälpfunktionen `Image.load` läser filen till ett format som motorn förstår och hanterar vanliga format (PNG, JPEG, TIFF) automatiskt. Att hoppa över detta steg eller mata in råa bytes skulle ge ett `ValueError`. + +## Steg 3 – Kör OCR‑processen + +Nu kör vi faktiskt OCR. Metoden `process` returnerar ett rikt resultatobjekt som innehåller igenkända symboler, konfidenspoäng och avgränsningsrutor. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**Vad innehåller `ocr_result`?** I de flesta bibliotek inkluderar det: + +- `text`: den råa sammanslagna strängen. +- `symbol_confidences`: en lista med `(char, confidence)`‑tupler. +- `boxes`: koordinater för varje tecken (användbart för visuell felsökning). + +Att ha tillgång till konfidens per tecken är avgörande för nästa steg. + +## Steg 4 – Behåll endast högkonfidens‑symboler (≥ 85 %) + +Ett kvitto har ofta smutsfläckar, svag tryck eller bakgrundsbrus. Genom att filtrera bort lågkonfidens‑symboler förbättrar vi avsevärt efterföljande parsning. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Varför 85 %?** Empiriskt balanserar ett tröskelvärde runt 0,85 återkallelse och precision för de flesta tryckta kvitton. Om du märker saknade siffror, sänk tröskeln; om du får nonsens, höj den. + +## Steg 5 – Skriv ut den högkonfidens‑extraherade texten + +Till sist skriver vi ut (eller sparar) den sanerade strängen. Detta är kärnan i vårt **extract text from receipt**‑arbetsflöde. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Typisk utdata ser ut så här: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Du kan nu mata in denna sträng i en CSV‑skrivare, en databas eller någon efterföljande analys‑pipeline. + +## Fullt, kör‑klart skript + +Nedan är den kompletta kodsnutten som du kan kopiera‑klistra in i `ocr_receipt.py` och köra omedelbart. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Spara filen, säkerställ att `receipt.png` finns, och kör: + +```bash +python ocr_receipt.py +``` + +Du bör se den rensade kvittotexten skriven till konsolen. + +## Edge Cases & Vad‑om‑scenarier + +| Situation | Föreslagen lösning | +|-----------|--------------------| +| **Mycket låg konfidens över hela linjen** | Förbehandla bilden: öka kontrast, konvertera till gråskala, eller applicera ett brusreduceringsfilter (`cv2.GaussianBlur`). | +| **Icke‑latinska tecken** | Skicka en språkmodell till `OcrEngine` (t.ex. `ocr_engine.language = "spa"` för spanska). | +| **Flera kvitton i en bild** | Kör OCR på hela bilden, dela sedan resultatet med reguljära uttryck som upptäcker `\n\n+` (dubbel radbrytning). | +| **Behöver även den råa OCR‑texten** | Behåll `ocr_result.text` tillsammans med den filtrerade versionen för felsökning. | + +## Vanliga fallgropar (och hur man undviker dem) + +- **Glömmer att installera biblioteket** – `pip install aocr` måste lyckas innan du importerar. +- **Använder fel sökvägsseparator** på Windows (`\` vs `/`). Använd `os.path.join`. +- **Hårdkodar konfidensgränsen** utan testning – kör alltid en snabb visuell kontroll på några kvitton först. +- **Ignorerar Unicode‑normalisering** – vissa kvitton innehåller speciella bindestreck; kör `unicodedata.normalize('NFKC', text)` om du planerar att lagra utdata. + +## Nästa steg – Gå bortom grunderna + +Nu när du vet **how to extract ocr** data från ett enskilt kvitto, kanske du vill: + +1. **Batch‑processa en mapp med kvitton** – loopa över alla PNG/JPG‑filer och skriv varje resultat till en CSV. +2. **Integrera med en databas** – lagra `high_confidence_text` i SQLite för snabba uppslag. +3. **Applicera naturlig språk‑parsning** – använd regex eller `dateutil` för att extrahera datum, totalsummor och skattebelopp. +4. **Experimentera med alternativa bibliotek** – `pytesseract`, `easyocr`, eller molntjänster (Google Vision, Azure OCR) om du behöver flerspråkigt stöd eller högre noggrannhet. + +Varje av dessa ämnen integrerar naturligt våra sekundära nyckelord: *python ocr example*, *extract text from receipt*, *load image for ocr*, och *how to use OCR*. + +## Slutsats + +Vi har precis gått igenom ett komplett **python ocr example** som visar **how to extract ocr** text från en kvittobild, filtrerar bort lågkonfidens‑symboler och levererar rena resultat. Stegen är enkla, koden är självständig, och metoden är tillräckligt flexibel för att anpassas till större projekt. + +Prova det med dina egna kvitton, justera konfidensgränsen och skala sedan upp till batch‑behandling. Om du stöter på egenheter—som en svag logotyp eller ett ovanligt typsnitt—kom ihåg tipsen för edge‑cases ovan. Lycka till med kodningen, och må dina OCR‑pipelines alltid vara korrekta! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/swedish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..7c6877500 --- /dev/null +++ b/ocr/swedish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,194 @@ +--- +category: general +date: 2026-04-26 +description: 'hur man OCR:ar i Python: Lär dig att extrahera text från bild och läsa + TIFF-filer i Python med ett grundläggande OCR‑exempel. Snabb, körbar kod medföljer.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: sv +og_description: 'hur man OCR i Python: En steg‑för‑steg‑guide som visar hur man extraherar + text från bild, läser TIFF‑fil i Python och konverterar skannad bildtext med ett + enkelt, körbart skript.' +og_title: hur man OCR:a i Python – Grundläggande OCR-exempel för att extrahera text +tags: +- OCR +- Python +- Image Processing +title: hur man OCR:ar i Python – Grundläggande OCR-exempel för att extrahera text +url: /sv/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hur man OCR:ar i Python – Grundläggande OCR‑exempel för att extrahera text + +Har du någonsin funderat **hur man OCR:ar i Python** när du har en skannad TIFF liggande på skrivbordet? Du är inte den enda som stirrar på en hög bildfiler och frågar: “Hur får jag orden ur detta?” Den goda nyheten är att förvandla en bild till ren text är en barnlek med rätt bibliotek och några tydliga steg. + +I den här handledningen går vi igenom ett **grundläggande OCR‑exempel** som läser en TIFF‑fil, extraherar texten och skriver ut den i konsolen. I slutet vet du exakt hur du **extraherar text från bild**‑filer, hur du hanterar de små egenheterna i TIFF‑format och vad du kan justera om du behöver **konvertera skannad bildtext** till något mer användbart. Ingen gömd magi – bara rakt på sak Python‑kod som du kan kopiera‑klistra och köra idag. + +## Vad du behöver + +Innan vi dyker ner, se till att du har: + +- Python 3.9+ installerat (den senaste stabila versionen är bäst). +- Ett pip‑installabelt OCR‑bibliotek. I den här guiden använder vi ett fiktivt paket `aocr` som efterliknar populära verktyg som Tesseract; du kan byta ut det mot `pytesseract` eller `easyocr` senare. +- En TIFF‑bild du vill bearbeta – döp den till `input.tiff` och lägg den i en mapp som du refererar till i koden. +- Grundläggande kunskap om kommandoraden (endast för att installera paketet). + +Det är allt. Inga tunga beroenden, inga Docker‑behållare, bara några rader kod. + +## Steg 1 – Installera och importera beroenden (hur man OCR:ar i Python) + +Först, hämta OCR‑paketet. Öppna en terminal och kör: + +```bash +pip install aocr +``` + +Om du föredrar ett riktigt bibliotek, byt ut `aocr` mot `pytesseract` och installera Tesseract‑motorn separat. + +Importera sedan det vi behöver. `Path`‑klassen från `pathlib` ger oss ett smidigt sätt att arbeta med filsökvägar på olika operativsystem. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Varför använda `Path`?* För att den abstraherar bort snedstreck (`/` vs `\`) och låter dig slå ihop kataloger utan att oroa dig för underliggande OS. Den lilla detaljen sparar ofta huvudvärk när du senare flyttar skriptet till en CI‑server. + +## Steg 2 – Skapa OCR‑motorn (grundläggande OCR‑exempel) + +Nästa steg är att starta OCR‑motorn. Tänk på `OcrEngine` som hjärnan som läser bilden och spottar ut tecken. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +De flesta OCR‑bibliotek låter dig justera språk, DPI eller förtroendetrösklar här. För detta **grundläggande OCR‑exempel** håller vi oss till standardinställningarna, men du kan utforska `ocr_engine.config` senare om du behöver hantera flerspråkiga dokument. + +## Steg 3 – Ladda din TIFF‑bild (läsa tiff‑fil i Python) + +Här kommer delen **läsa tiff‑fil i Python** in. TIFF‑filer kan ha flera sidor, men `Image.load` hämtar som standard den första sidan – perfekt för en enkelsidig skanning. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Byt ut `"YOUR_DIRECTORY"` mot den faktiska mappen som innehåller `input.tiff`. Om du är osäker på var skriptet körs, skriver `Path.cwd()` ut den aktuella arbetskatalogen – praktiskt för felsökning av sökvägsproblem. + +## Steg 4 – Kör OCR‑processen (extrahera text från bild) + +Nu händer magin. Att anropa `process()` skickar bilden genom OCR‑pipeline:n och returnerar ett resultatobjekt. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Bakom kulisserna kan motorn konvertera bilden till gråskala, applicera tröskling och föra den in i ett neuralt nätverk. Du behöver inte hantera de stegen; biblioteket abstraherar dem åt dig. + +## Steg 5 – Skriv ut den igenkända texten (konvertera skannad bildtext) + +Till sist, skriv ut texten. I riktiga projekt skulle du troligen skriva den till en fil eller en databas, men utskrift håller exemplet enkelt. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +När du kör skriptet bör du se något i stil med: + +``` +Hello, world! +This is a sample scanned document. +``` + +Om utskriften ser förvrängd ut, dubbelkolla att källbilden är tydlig och att OCR‑språket matchar texten. + +## Fullt fungerande skript + +Sätter vi ihop allt får vi det kompletta, körklara programmet: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Förväntad utskrift + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Om du behöver **konvertera skannad bildtext** till en sökbar PDF, kan du skicka `ocr_result.text` till en PDF‑generator som `reportlab` – men det är ett eget helt tutorial‑ämne. + +## Vanliga fallgropar & Pro‑tips + +- **Lågdpi‑skanningar**: OCR har svårt under 150 DPI. Om din TIFF är oskarp, skala upp den först med Pillow (`Image.open(...).resize(...)`). +- **Flera sidor**: För fler‑sidiga TIFF‑filer, iterera över `Image.load_multi_page()` (om ditt bibliotek stödjer det) och slå ihop resultaten. +- **Språkstöd**: Många motorer använder engelska som standard. Sätt `ocr_engine.language = "spa"` för spanska, till exempel. +- **Hantera blanksteg**: OCR lägger ofta till oönskade radbrytningar. Använd `str.splitlines()` eller reguljära uttryck för att rensa utskriften. +- **Prestanda**: Vid massbearbetning, återanvänd en enda `OcrEngine`‑instans istället för att skapa en ny för varje fil. + +## Utöka exemplet + +Nu när du behärskar **hur man OCR:ar i Python** för en enskild bild, överväg följande nästa steg: + +1. **Batch‑bearbetning** – Loopa igenom en katalog med TIFF‑filer och skriv varje resultat till en `.txt`‑fil. +2. **Integration med Pandas** – Spara extraherad text tillsammans med metadata för snabb analys. +3. **Hybrid‑metod** – Kombinera OCR med NLP‑bibliotek som `spaCy` för att extrahera entiteter (namn, datum, belopp) från skannade fakturor. +4. **Alternativa filformat** – Byt `Image.load` mot `Image.from_bytes` för att hantera bilder som kommer från ett API eller en databas. + +Alla dessa bygger på kärnidén att **extrahera text från bild** och **konvertera skannad bildtext** till något som maskiner kan förstå. + +## Slutsats + +Vi har gått igenom ett tydligt, end‑to‑end **grundläggande OCR‑exempel** som visar **hur man OCR:ar i Python**, hur man **läser tiff‑fil i Python**, och hur man **extraherar text från bild**‑filer med bara några få rader kod. Skriptet är självständigt, innehåller felhantering och skriver ut resultatet direkt, vilket gör det till en solid grund för alla projekt som behöver omvandla skannade dokument till redigerbar text. + +Känn dig fri att experimentera – byt ut OCR‑bakänden, justera förbehandlingen, eller koppla utskriften till ett efterföljande arbetsflöde. Himlen är gränsen när du på ett pålitligt sätt kan **konvertera skannad bildtext** till sökbara, strukturerade data. + +Har du frågor om kantfall, språkpaket eller prestandaoptimering? Lämna en kommentar nedan, och lycka till med kodandet! + +![hur man OCR:ar i Python‑exempel](/images/ocr-python-example.png "Skärmbild av hur man OCR:ar i Python‑skriptets utskrift") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/swedish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..df6ab05d7 --- /dev/null +++ b/ocr/swedish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,175 @@ +--- +category: general +date: 2026-04-26 +description: Hur man kör OCR på ett inskannat formulär, lär dig hur du förbehandlar + bilden för att minska brus och extraherar text från bilden snabbt. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: sv +og_description: Hur man kör OCR på skannade dokument, förbehandlar bilder, minskar + brus och extraherar text effektivt. +og_title: Hur man kör OCR och förbehandlar bilder – Snabbguide +tags: +- OCR +- image processing +- Python +title: Hur man kör OCR och förbehandlar bilder – Extrahera text från skannade formulär +url: /sv/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Så kör du OCR – En komplett guide för att extrahera text från bilder + +Har du någonsin undrat **hur man kör OCR** på ett rörigt inskannat formulär och får ren, sökbar text? Du är inte ensam. I många verkliga projekt är den råa bilden full av fläckar, ojämn belysning och andra egenheter som får standard‑OCR att snubbla. + +Den goda nyheten? Med bara några rader Python och en smart förbehandlings‑pipeline kan du dramatiskt öka igenkänningsnoggrannheten, **reducera brus**, och hämta exakt de ord du behöver. I den här handledningen går vi igenom varje steg—från att ladda bilden till att skriva ut den slutgiltiga strängen—så att du får ett färdigt kodexempel som du kan anpassa till fakturor, kvitton eller vilket inskannat dokument som helst. + +## Vad du kommer att bygga + +- En `OcrEngine`‑instans som kommunicerar med det underliggande OCR‑biblioteket. +- En förbehandlingskedja som **binariserar** bilden och applicerar en **median‑blur** för att jämna ut fläckar. +- Ett enkelt anrop till `process()` som returnerar ett objekt med egenskapen `text`, den extraherade strängen. + +När du är klar har du ett självständigt skript som du kan köra på vilken bildfil som helst och omedelbart se den extraherade texten i konsolen. + +## Förutsättningar + +- Python 3.9+ (syntaxen som används här matchar den senaste stabila versionen). +- Det fiktiva paketet `aocr` – tänk på det som ett tunt omslag runt Tesseract eller någon modern OCR‑motor. Installera det med `pip install aocr`. +- En inskannad bild (`scanned_form.jpg`) placerad i en mapp du kan referera till. + +Om du använder ett riktigt OCR‑bibliotek som `pytesseract` kan du byta ut `OcrEngine` mot den lämpliga klassen—allt annat förblir detsamma. + +![](how-to-run-ocr-example.png "exempel på hur man kör OCR som visar ett inskannat formulär och extraherad text") + +*Alt text: hur man kör OCR på ett inskannat dokument och visar den extraherade texten.* + +--- + +## Steg 1: Så kör du OCR – Initiera motorn + +Innan motorn kan läsa något måste vi skapa en instans. Tänk på `OcrEngine` som hjärnan som senare kommer att tolka den visuella datan. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Varför detta är viktigt:** Att instansiera motorn sätter upp interna modeller, laddar språkpaket och förbereder körmiljön. Att hoppa över detta steg resulterar ofta i ett `NoneType`‑fel när du senare anropar `process()`. + +--- + +## Steg 2: Så förbehandlar du bilden – Ladda ditt inskannade formulär + +Nu när hjärnan är redo matar vi den med en bild. Bilden kan vara i vilket format som helst som stöds av `aocr.Image`. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Proffstips:** Använd absoluta sökvägar under utveckling för att undvika “fil ej hittad”-överraskningar när skriptet körs från en annan arbetskatalog. + +--- + +## Steg 3: Så minskar du brus – Applicera binarisering & median‑blur + +Råa skanningar innehåller ofta lösa prickar, ojämn bakgrund eller svaga skuggor. Två klassiska knep—**binarisering** och **median‑blur**—rengör bilden utan att förlora kanterna som definierar tecken. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Djupdykning + +- **Binarisering**: Värdet `threshold=180` säger till algoritmen: “Allt som är ljusare än 180 blir vitt; allt annat blir svart.” Justera detta tal om din skanning är för mörk eller för ljus. +- **Median‑blur**: En radie på `2` betyder att filtret tittar på ett 5×5‑pixelfönster och ersätter centrumpixeln med medianvärdet. Detta jämnar ut isolerade fläckar samtidigt som bokstavsstreck behålls. + +> **Edge case:** Om ditt dokument har färgade markeringar kan ett enkelt binärt tröskelvärde radera dem. I så fall överväg att använda `aocr.ImageFilters.adaptive_threshold()` istället—det anpassar avgränsningen lokalt över bilden. + +--- + +## Steg 4: Så extraherar du text – Kör OCR‑processen + +Med en ren bild i handen låter vi nu motorn göra sin magi. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Vad händer under huven?** Motorn kör ett neuralt nätverk (eller en äldre mönstermatchare) över pixelmatrisen, översätter varje igenkänd glyf till Unicode‑tecken och sätter ihop dem till rader och stycken. + +--- + +## Steg 5: Så extraherar du text – Skriv ut resultatet + +`ocr_result`‑objektet har en bekväm `text`‑attribut. Låt oss se vad vi fick. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Förväntad utskrift + +Om det inskannade formuläret innehåller: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Du bör se något liknande: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Lägg märke till hur förbehandlingssteget eliminerade lösa prickar som tidigare gjorde att “Amount” blev “Am0unt”. Det är kraften i **hur man minskar brus** innan OCR. + +## Vanliga fallgropar & hur du åtgärdar dem + +| Symptom | Trolig orsak | Snabb åtgärd | +|---------|--------------|--------------| +| Otydliga tecken (t.ex. “@#%”) | Bilden är för mörk eller för ljus | Justera `threshold` i `binarize()`; prova `adaptive_threshold`. | +| Saknade ord | Bruset är fortfarande närvarande | Öka `radius` för `median_blur` eller lägg till ett `gaussian_blur`‑filter. | +| Fel språk (t.ex. engelska bokstäver blir kinesiska) | Fel språkpaket laddat | Skicka `language="eng"` när du skapar `OcrEngine()` om biblioteket stödjer det. | +| Långsam bearbetning på stora filer | Hög upplösning | Skala ner bilden först: `aocr.ImageFilters.resize(width=1200)` före binarisering. | + +## Gå vidare – Nästa steg och relaterade ämnen + +- **Batch‑behandling**: Packa in logiken i en loop för att automatiskt hantera dussintals filer. +- **Strukturerad output**: Använd reguljära uttryck på `ocr_result.text` för att plocka ut fält som datum eller belopp. +- **Alternativa bibliotek**: Byt ut `aocr` mot `pytesseract`—koden ändras bara i steget för motorinitialisering. +- **Hur man förbehandlar bild för PDF‑filer**: Konvertera varje PDF‑sida till en bild och applicera sedan samma pipeline. + +Dessa tillägg låter dig skala lösningen från ett enstaka formulär till en företagsklassad dokument‑intagspipeline. + +## Slutsats + +Vi har gått igenom **hur man kör OCR** från början till slut, visat **hur man förbehandlar bild** för att **reducera brus**, och demonstrerat **hur man extraherar text från bild** med ett rent, reproducerbart skript. Huvudpoängen? Några enkla filter—binarisering och median‑blur—kan förvandla en brusig skanning till en pålitlig datakälla, vilket sparar dig timmar av manuellt arbete. + +Kör skriptet med dina egna dokument, justera tröskelvärdena och se noggrannheten öka. När du är redo, utforska batch‑behandling eller integrera resultatet i en databas för sökbara arkiv. Lycka till med kodandet, och må din OCR alltid vara prickfri! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/swedish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..aed6cb884 --- /dev/null +++ b/ocr/swedish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-04-26 +description: Lär dig hur du ställer in licens i Aspose OCR och hur du validerar licensen + med ett koncist Python‑skript. Följ steg‑för‑steg‑instruktioner för problemfri aktivering. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: sv +og_description: Hur du ställer in licens i Aspose OCR och hur du validerar licensen + med Python. Få ett komplett, körbart exempel på några minuter. +og_title: Hur man anger licens i Aspose OCR – Snabb Python‑guide +tags: +- Aspose OCR +- Python +- Licensing +title: Hur man ställer in licens i Aspose OCR – Snabb Python‑guide +url: /sv/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Hur man anger licens i Aspose OCR – Snabb Python‑guide + +Har du någonsin undrat **hur man anger licens** för Aspose OCR utan att dra i håret? Du är inte ensam. De flesta utvecklare stöter på problem första gången de försöker låsa upp hela bibliotekets kraft, bara för att bli hemsökta av ett “Trial version”-vattenstämpel. Den goda nyheten är att lösningen är ganska enkel, och du kan verifiera den direkt. + +I den här handledningen går vi igenom **hur man anger licens** *och* **hur man validerar licens** med ett litet Python‑skript. I slutet har du ett fungerande exempel som skriver ut “License OK”, plus några tips för att undvika vanliga fallgropar. + +## Förutsättningar + +Innan vi dyker ner, se till att du har: + +- Python 3.8+ installerat (koden fungerar på 3.9, 3.10 och nyare). +- En aktiv Aspose OCR för Java (eller .NET) licensfil – vanligtvis namngiven `Aspose.OCR.Java.lic`. +- `asposeocr`‑paketet installerat via `pip install asposeocr`. +- Grundläggande erfarenhet av att köra Python‑skript från kommandoraden. + +Har du allt? Bra—låt oss börja. + +## Hur man anger licens i Aspose OCR (Steg 1) + +Att ange licensen är i princip en tre‑rads operation, men varje rad har ett syfte. Vi delar upp det så att du förstår *varför* vi gör vad vi gör. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Varför importera `License`?** +`License`‑klassen är porten som berättar för Aspose OCR‑motorn att du har betalat för produkten. Utan att skapa en instans kommer biblioteket fortsätta anta att du kör en provversion. + +**Varför instansiera `License`?** +Instansiering ger dig ett objekt (`license_obj`) som kan hålla sökvägen till din `.lic`‑fil och därefter tillämpa den på körningen. + +## Hur man anger licens i Aspose OCR – Tillhandahålla licensfilen + +Nu pekar vi objektet på den faktiska licensfilen på disken. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Tips & tricks:** + +- **Absolut vs. relativ sökväg** – Om du kör skriptet från en annan mapp, eliminerar en absolut sökväg (`C:/licenses/...`) “fil ej hittad”-fel. +- **Miljövariabler** – Att lagra sökvägen i en env‑var (`OCR_LICENSE_PATH`) håller hemligheter utanför källkontrollen: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Hur man validerar licens – Säkerställa att det fungerade + +Att ange licensen är bara halva striden; du måste bekräfta att biblioteket accepterade den. Det är här valideringssteget kommer in. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Om licensfilen saknas, är korrupt eller inte matchar, kommer `validate()` att kasta ett undantag. Att fånga det undantaget ger dig ett rent sätt att rapportera problem. + +## Fullt fungerande exempel (Alla steg kombinerade) + +Nedan är det kompletta, körklara skriptet. Kör det från en terminal (`python set_license.py`) så bör du se “License OK” skrivet. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Förväntad output** + +``` +License OK +``` + +Om något går fel, kommer du att se något liknande: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Det meddelandet talar exakt om vad som måste åtgärdas—ingen gissning behövs. + +## Hur man validerar licens – Hantera vanliga edge‑case + +Även med skriptet ovan kan några scenarier få dig att snubbla: + +| Situation | Vad händer | Hur man fixar | +|-----------|------------|---------------| +| **Fel i filsökväg** | `FileNotFoundError` från `set_license` | Dubbelkolla sökvägen; använd `os.path.abspath()` för felsökning. | +| **Fel filtyp** | Validation throws “Invalid license format” | Se till att du använder `.lic`‑filen som matchar din produktedition. | +| **Utgången licens** | Validation raises “License expired” | Förnya licensen via Aspose support och ersätt filen. | +| **Kör i en begränsad miljö** (t.ex. AWS Lambda) | Permission error | Ge läsbehörighet till katalogen eller bädda in licensen i distributionspaketet. | + +Proffstips: omslut anropet `set_license` med ett eget `try/except`‑block om du vill skilja mellan “file not found” och “invalid format”-fel. + +## Visuell sammanfattning + +![how to set license in Aspose OCR example](/images/aspose-ocr-license.png "how to set license in Aspose OCR example") + +*Skärmdumpen visar skriptet som skriver ut “License OK” efter en lyckad aktivering.* + +## Vanliga fallgropar & bästa praxis + +- **Ladda aldrig upp din licensfil till ett offentligt repo.** Använd miljövariabler eller hemlighets‑hanterare (GitHub Secrets, Azure Key Vault) istället. +- **Validera tidigt.** Att placera `license_obj.validate()` direkt efter `set_license` fångar fel innan någon OCR‑arbete påbörjas. +- **Återanvänd License‑objektet.** Du behöver bara ange licensen en gång per **process**; efterföljande OCR‑anrop kommer automatiskt att använda den aktiverade licensen. +- **Logga licensens sökväg (utan filnamn) i produktion** för att underlätta felsökning utan att avslöja den faktiska filen. + +## Nästa steg – Utöka ditt OCR‑arbetsflöde + +Nu när du vet **hur man anger licens** och **hur man validerar licens**, kan du gå vidare till de centrala OCR‑uppgifterna: + +- **hur man läser bild** – `Image.load("sample.png")` +- **hur man extraherar text** – `ocr_engine.recognize(image)` +- **hur man konfigurerar OCR‑alternativ** – justera `OcrEngine`‑inställningar för språk, noggrannhet osv. + +Var och en av dessa ämnen bygger på en framgångsrikt licensierad motor, så du kommer aldrig att se provvattenstämpeln igen. + +## Slutsats + +Vi har gått igenom hela processen för **hur man anger licens** för Aspose OCR, demonstrerat **hur man validerar licens**, och gett dig ett komplett, körbart skript som skriver ut “License OK”. Genom att hantera fel i förväg och använda miljövariabler håller du din applikation både säker och robust. + +Har du fler frågor om OCR, licensiering eller att integrera Aspose i en större pipeline? Lämna 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/swedish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..ae12dbc9d --- /dev/null +++ b/ocr/swedish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: hur man använder OCR på skannade PDF-filer, extraherar text från PDF, + kör OCR på PDF och konverterar skannad PDF till sökbara filer på några få steg +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: sv +og_description: 'hur man använder OCR i Python: lär dig hur du extraherar text från + PDF, kör OCR på PDF och konverterar skannade PDF-filer till sökbara dokument.' +og_title: hur man använder OCR – Snabbguide för att extrahera text från PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: hur man använder OCR – Extrahera text från PDF med Python +url: /sv/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# hur man använder OCR – Extrahera text från PDF med Python + +Har du någonsin funderat **hur man använder OCR** för att dra ut text ur ett skannat kontrakt, kvitto eller e‑bok? Du är inte ensam. I många verkliga projekt är PDF‑filen du får bara en bild, och utan OCR kan du varken söka, indexera eller analysera innehållet. + +I den här handledningen går vi igenom ett komplett, körbart exempel som visar **hur man använder OCR**, hur man **extraherar text från PDF**, och varför du kanske vill **konvertera skannad PDF** till sökbara dokument. Vi täcker också den subtila konsten att **ladda PDF som bild** så att OCR‑motorn kan se varje sida tydligt. + +> **Snabb förhandsgranskning:** I slutet har du ett skript som laddar en flersidig PDF, kör OCR på varje sida och skriver ut den igenkända texten – utan externa tjänster. + +## Vad du behöver + +- Python 3.9+ (vilken som helst nyare version fungerar) +- `aocr`‑paketet (eller något kompatibelt OCR‑bibliotek som tillhandahåller `OcrEngine` och `Image.load`) +- En skannad PDF‑fil du vill bearbeta (t.ex. `contract.pdf`) +- En måttlig mängd RAM (≈ 200 MB per 100‑sidig PDF brukar räcka) + +Om du ännu inte har installerat OCR‑biblioteket, kör: + +```bash +pip install aocr +``` + +> **Proffstips:** Använd en virtuell miljö för att hålla dina beroenden organiserade. + +## Steg 1: Ladda PDF som bild – Den första delen av pusslet + +Innan någon OCR kan ske måste PDF‑filen representeras som en bild. Här kommer det sekundära nyckelordet **load pdf as image** in i bilden. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Varför detta är viktigt:* `aocr.Image.load` rasteriserar internt varje PDF‑sida till en bitmap som OCR‑motorn kan förstå. Om du hoppar över detta steg och matar in den råa PDF‑filen, kommer motorn att ge ett fel eftersom den förväntar sig pixeldata, inte vektordata. + +> **Obs:** Sökvägen kan vara absolut eller relativ. Se till att filen är läsbar; annars får du ett `FileNotFoundError`. + +## Steg 2: Kör OCR på PDF – Omvandla pixlar till tecken + +Nu när PDF‑filen lever som en bild kan vi äntligen **köra OCR på PDF**. Följande kodsnutt bearbetar varje sida i ett svep: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Vad händer under huven?* `process_all_pages` loopar igenom de rasteriserade sidorna, applicerar OCR‑modellen och returnerar en lista med resultatobjekt – ett per sida. Varje resultat innehåller den igenkända texten, förtroendescore och avgränsningsrutor (om du behöver dem senare). + +## Steg 3: Extrahera text från PDF – Dra ut strängarna + +Med OCR‑resultaten i handen blir extrahering av ren text trivialt. Vi itererar över sidorna och skriver ut resultatet, vilket demonstrerar det sekundära nyckelordet **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Förväntad utskrift** (avkortad för korthet): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Om du vill ha texten i en enda sträng, konkatenera helt enkelt: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Nu har du framgångsrikt **extraherat text från PDF** med OCR. + +## Steg 4: Konvertera skannad PDF – Gör den sökbar + +Många efterföljande verktyg (som Elasticsearch eller SharePoint) förväntar sig en sökbar PDF snarare än en ren‑textdump. Du kan bädda in OCR‑utdata tillbaka i den ursprungliga PDF‑filen och på så sätt **konvertera skannad PDF** till en sökbar version. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Varför göra det?* En sökbar PDF behåller den ursprungliga layouten och bilderna samtidigt som den möjliggör textmarkering och indexering – en win‑win för både människor och maskiner. + +## Vanliga fallgropar och specialfall + +### Flersidiga PDF:er större än minnet + +Om din PDF har hundratals sidor kan det bli för mycket RAM att ladda allt på en gång. `aocr`‑biblioteket stödjer lazy loading: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Bearbeta sedan sidorna en i taget: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Lågt kvalitetskanningar + +OCR‑noggrannheten sjunker dramatiskt på suddiga eller lågkontrast‑skanningar. Innan du matar in bilden i motorn, överväg förbehandling: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Språkstöd + +Som standard antar motorn engelska. För att **köra OCR på PDF** på ett annat språk, ange språk‑koden: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Se till att motsvarande språkmodell är installerad. + +## Fullt fungerande exempel + +Sätter vi ihop allt får du ett självständigt skript som du kan spara som `ocr_pdf.py` och köra direkt: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Kör det så här: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Du kommer att se texten skriven till konsolen, och om du angav `-o` kommer en sökbar PDF att dyka upp bredvid originalfilen. + +## Proffstips & bästa praxis + +- **Batch‑bearbetning:** När du hanterar dussintals PDF‑filer, slå in logiken ovan i en loop och logga varje fils framgång/misslyckande. +- **Förtroendefiltrering:** Varje `page_result` innehåller ett förtroendemått. Kasta eller flagga sidor med låg förtroendegrad för manuell granskning. +- **Parallellism:** Om din CPU har flera kärnor, överväg att använda `concurrent.futures` för att bearbeta sidor parallellt – men håll ett öga på minnesanvändningen. +- **Versionslås:** `aocr`‑API:t kan förändras. Lås versionen i `requirements.txt` (t.ex. `aocr==2.3.1`) för att undvika brytande förändringar. + +## Slutsats + +Vi har gått igenom **hur man använder OCR** för att **extrahera text från PDF**, **köra OCR på PDF**, **ladda PDF som bild**, och även **konvertera skannad PDF** till ett sökbart format. Koden är komplett, förklaringarna täcker både *vad* och *varför*, och du har nu ett återanvändbart mönster för alla projekt som hanterar bild‑baserade PDF‑filer. + +Vad blir nästa steg? Prova att mata in den extraherade texten i en naturlig språk‑pipeline, indexera de sökbara PDF‑erna med Elasticsearch, eller experimentera med olika OCR‑bakgrunder som Tesseract eller Azure Computer Vision. Himlen är gränsen, och verktygen finns inom räckhåll. + +Lycklig kodning, och må dina PDF:er alltid vara sökbara! + +![exempel på hur man använder OCR](/images/ocr_workflow.png "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/swedish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/swedish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..7e2099f9a --- /dev/null +++ b/ocr/swedish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,211 @@ +--- +category: general +date: 2026-04-26 +description: Hur man använder trådar för att ladda en bild för OCR i Python. Lär dig + asynkron OCR‑behandling med återuppringningar, bakgrundstrådar och bildladdning + på bara några steg. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: sv +og_description: Hur man använder trådar för att ladda bild för OCR i Python. Denna + guide visar ett komplett, körbart exempel med återanrop och bakgrundskörning. +og_title: Hur man använder trådar för att ladda bild för OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Hur man använder trådar för att ladda bild för OCR +url: /sv/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Så använder du trådar för att ladda bild för OCR + +Har du någonsin funderat **hur man använder trådar** för att ladda bild för OCR utan att frysa din app? Det är ett scenario som dyker upp oavsett om du bygger en skrivbordsskanner, en webbtjänst eller ett enkelt skript som bearbetar massiva bilder. Den goda nyheten? Några rader Python och rätt trådmönster håller ditt UI snabbt medan OCR‑motorn gör sitt magiska. + +I den här handledningen går vi igenom ett komplett, end‑to‑end‑exempel: laddar en stor PNG, startar OCR på en bakgrundstråd och hanterar resultatet med en callback. När du är klar vet du inte bara **hur man använder trådar** utan också **hur man laddar bild för OCR** på ett rent, återanvändbart sätt. + +## Vad du behöver + +- Python 3.9+ (syntaxen vi använder fungerar på alla nyare versioner) +- `pillow` för bildhantering (`pip install pillow`) +- `pytesseract` som ett tunt omslag runt Tesseract OCR (`pip install pytesseract`) +- Tesseract OCR‑motor installerad på din maskin (ladda ner från [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- En stor bildfil du vill bearbeta (`large_image.png` i den här guiden) + +Inga extra ramverk, ingen async/await—bara klassisk `threading` och en callback. + +## Steg 1: Importera trådbiblioteket (krävs för bakgrundskörning) + +Det första vi gör är att importera `threading`‑modulen. Den ger oss `Thread`‑klassen, som låter oss köra vilken funktion som helst i en separat OS‑tråd. + +```python +import threading +``` + +*Varför detta är viktigt*: Om du kör OCR på huvudtråden kommer ditt program (särskilt ett GUI) att frysa tills OCR är klar. Genom att delegera arbetet till en bakgrundstråd förblir huvudtråden fri att uppdatera UI, hantera användarinmatning eller starta andra uppgifter. + +## Steg 2: Definiera en callback som anropas när OCR är klar + +En callback är helt enkelt en funktion som en annan kodbit anropar när den är färdig. Här skriver vi ut den igenkända texten, men du kan spara den, skicka den över nätverket eller uppdatera en UI‑widget. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Proffstips*: Håll callbacken lättviktig. Tung bearbetning i callbacken undergräver poängen med trådar eftersom den fortfarande blockerar tråden som anropade den (ofta huvudtråden). + +## Steg 3: Ladda bilden du vill bearbeta + +Att ladda bilden är en separat angelägenhet från OCR, men den är ändå en del av arbetsflödet. Med Pillow blir detta trivialt. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Varför vi gör det här*: Om bilden är enorm kan laddning på huvudtråden redan orsaka en hack. I många verkliga appar skulle du också avlasta laddningen till en tråd, men för tydlighetens skull håller vi den synkron. + +## Steg 4: Skapa ett litet OCR‑motor‑omslag + +Det ursprungliga kodsnutten använde `engine.process_async`. Vi efterliknar det med en liten klass som startar en tråd internt och anropar den medföljande callbacken när den är klar. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Förklaring*: +- `_run_ocr` gör det tunga arbetet. +- `process_async` skapar ett `Thread`‑objekt, markerar det som daemon (så att tolken kan avslutas även om tråden fortfarande kör) och startar det. +- Callbacken får antingen OCR‑texten eller ett felmeddelande. + +## Steg 5: Knyt ihop allt och gör annat arbete medan OCR kör + +Nu orkestrerar vi hela flödet: laddar bilden, instansierar motorn, avfyrar den asynkrona OCR:n och låter huvudtråden vara upptagen med något annat (här skriver vi bara ut ett meddelande). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Förväntad utskrift (avkortad för korthet):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Om OCR misslyckas kommer callbacken att skriva ut ett felmeddelande istället för texten. + +--- + +## Varför detta tillvägagångssätt fungerar bättre än en enkel loop + +- **Responsiveness**: Huvudtråden blockerar aldrig OCR‑anropet, vilket kan ta sekunder för stora bilder. +- **Scalability**: Du kan starta flera `SimpleOcrEngine`‑instanser, var och en i sin egen tråd, för att bearbeta en bildbatch parallellt. +- **Separation of Concerns**: Laddning, bearbetning och resultat‑hantering är tydligt separerade, vilket gör koden enklare att testa och underhålla. + +## Vanliga fallgropar och hur du undviker dem + +| Fallgrop | Vad händer | Lösning | +|---------|------------|---------| +| Glömmer att markera tråden som *daemon* | Skriptet hänger efter att huvuduppgiften är klar eftersom OCR‑tråden fortfarande lever. | Sätt `worker.daemon = True` **eller** `join()` tråden innan programmet avslutas. | +| Använder en global variabel för resultatet utan lås | Race‑condition kan förstöra data när flera trådar skriver samtidigt. | Skicka resultatet via en callback (som vi gör) eller använd trådsäkra behållare som `queue.Queue`. | +| Laddar en massiv bild på huvudtråden | UI fryser innan bakgrunds‑OCR ens startar. | Lasta av bildladdning till en tråd också, eller använd lazy‑loading‑tekniker. | +| Hanterar inte undantag i arbets‑tråden | Ohanterade undantag dödar tyst tråden, vilket lämnar dig utan resultat. | Omslut OCR‑logiken i `try/except` och skicka felet till callbacken. | + +## Utvidga detta mönster + +- **Progressrapportering**: Använd en delad `queue.Queue` för att skicka mellanliggande procentandelar från OCR‑tråden till huvudtråden. +- **Thread Pool**: För batch‑bearbetning, ersätt enskilda `Thread`‑objekt med en `concurrent.futures.ThreadPoolExecutor`. +- **GUI‑integration**: I en Tkinter‑ eller PyQt‑app, schemalägg callbacken med `after()` (Tkinter) eller `QTimer.singleShot` (Qt) för att säkerställa att UI‑uppdateringar sker på huvudtråden. + +## Fullt fungerande exempel (Kopiera‑klistra‑klart) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/thai/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..03f453a54 --- /dev/null +++ b/ocr/thai/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,240 @@ +--- +category: general +date: 2026-04-26 +description: ดึงข้อความส่วนหัวด้วย OCR โดยใช้ Python Aspose OCR. เรียนรู้วิธีดึงข้อความจากพื้นที่เฉพาะในภาพอย่างรวดเร็วและเชื่อถือได้. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: th +og_description: ดึงข้อความส่วนหัวด้วย OCR อย่างรวดเร็ว คู่มือนี้แสดงวิธีดึงข้อความจากพื้นที่เฉพาะโดยใช้ + Python Aspose OCR เพียงไม่กี่บรรทัด +og_title: ดึงข้อความส่วนหัวด้วย OCR ใน Python Aspose OCR – บทเรียนเต็มครบถ้วน +tags: +- OCR +- Python +- Aspose +title: สกัดข้อความส่วนหัวด้วย OCR ใน Python Aspose OCR – คู่มือขั้นตอนโดยละเอียด +url: /th/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# สกัดข้อความส่วนหัวด้วย OCR – บทแนะนำเต็มของ Python Aspose OCR + +เคยต้องการ **extract header text OCR** จากใบแจ้งหนี้ที่สแกนแล้วแต่ไม่อยากประมวลผลทั้งหน้าไหม? คุณไม่ได้เป็นคนเดียว ในหลาย ๆ pipeline ของโลกจริง ส่วนหัวมักมีข้อมูลที่สำคัญที่สุด—หมายเลขใบแจ้งหนี้, วันที่, ชื่อผู้ขาย—การดึงข้อมูลนี้ออกอย่างรวดเร็วสามารถประหยัดงานต่อไปได้มาก + +ในบทแนะนำนี้ เราจะแสดงวิธีแก้ปัญหาที่พร้อมใช้งานที่ **extracts specific area text** ด้วยไลบรารี **Python Aspose OCR** ไม่มีการอ้างอิงที่คลุมเครือไปยังเอกสารภายนอก เพียงสคริปต์ที่สมบูรณ์ คำอธิบายที่ชัดเจนของแต่ละบรรทัด และเคล็ดลับที่คุณจะใช้ได้จริงในวันพรุ่งนี้ + +## สิ่งที่คุณจะได้เรียนรู้ + +- วิธีการติดตั้งและนำเข้าแพ็กเกจ Aspose OCR สำหรับ Python. +- วิธีการโหลดภาพและกำหนด **region of interest (ROI)** ที่แยกส่วนหัวออก. +- วิธีการเรียกใช้ OCR engine บน ROI นั้นและดึงข้อความที่สะอาด. +- ข้อผิดพลาดทั่วไป (เช่น ความไม่ตรงกันของ DPI) และวิธีหลีกเลี่ยง. +- ลักษณะของผลลัพธ์ที่คาดหวังเพื่อให้คุณตรวจสอบว่าทุกอย่างทำงานได้. + +เมื่อเสร็จสิ้นคุณจะสามารถนำโค้ดนี้ไปใส่ในโปรเจกต์ใด ๆ ที่ต้องการ **extract header text OCR** จากใบแจ้งหนี้, ใบเสร็จ, หรือเอกสารใด ๆ ที่มีโครงสร้างคาดเดาได้ + +## ข้อกำหนดเบื้องต้น + +- Python 3.8 หรือใหม่กว่า ติดตั้งบนเครื่องของคุณ. +- ใบอนุญาต Aspose OCR for Python ที่ถูกต้อง (รุ่นทดลองฟรีใช้สำหรับการประเมิน). +- ไฟล์ภาพ (`invoice.png`) ที่มีส่วนหัวชัดเจน. +- ความคุ้นเคยพื้นฐานกับฟังก์ชัน Python และเส้นทางไฟล์. + +> **เคล็ดลับ:** หากคุณทดสอบบนสแกนความละเอียดต่ำ ให้เพิ่ม DPI ก่อนส่งให้ Aspose OCR – จะเพิ่มความแม่นยำอย่างมาก. + +--- + +## ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ Aspose OCR + +ขั้นแรก เพิ่มไลบรารีนี้ลงในสภาพแวดล้อมของคุณ แพ็กเกจอย่างเป็นทางการคือ `aspose-ocr` ให้รันคำสั่งนี้หนึ่งครั้ง: + +```bash +pip install aspose-ocr +``` + +หากคุณใช้ virtual environment (แนะนำอย่างยิ่ง) ให้เปิดใช้งานก่อนทำการติดตั้ง เพื่อให้แน่ใจว่าแพ็กเกจจะไม่ขัดแย้งกับโปรเจกต์อื่น. + +## ขั้นตอนที่ 2: นำเข้าคลาสที่จำเป็นและโหลดภาพ + +ตอนนี้เรานำคลาสที่จำเป็นเข้าสู่สคริปต์และโหลดภาพใบแจ้งหนี้ ให้สังเกตการใช้ **full paths**; เส้นทางสัมพัทธ์ก็ใช้ได้เช่นกัน แต่เส้นทางเต็มจะลบความกำกวมเมื่อสคริปต์ทำงานบนเซิร์ฟเวอร์. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **ทำไมเรื่องนี้สำคัญ:** การเริ่มต้น `OcrEngine` ครั้งเดียวและนำกลับมาใช้ใหม่สำหรับหลายภาพมีประสิทธิภาพมากกว่าการสร้าง engine ใหม่ทุกครั้ง. + +## ขั้นตอนที่ 3: กำหนดพื้นที่ส่วนหัว (ROI) + +ส่วนหัวมักอยู่ที่ด้านบนของหน้า แต่พิกัดที่แน่นอนอาจแตกต่างกัน ที่นี่เรากำหนดสี่เหลี่ยม (`x`, `y`, `width`, `height`) ที่ครอบคลุมส่วนหัว ปรับตัวเลขให้ตรงกับโครงสร้างเอกสารของคุณ. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **วิธีการทำงาน:** โดยการเรียก `set_roi` OCR engine จะจำกัดการวิเคราะห์ไว้ในสี่เหลี่ยมนี้ ซึ่งทำให้การประมวลผลเร็วขึ้นอย่างมากและลดสัญญาณรบกวนจากส่วนอื่นของหน้า. + +## ขั้นตอนที่ 4: ใช้ ROI และรัน OCR + +ตอนนี้เราบอก engine ให้โฟกัสที่พื้นที่ส่วนหัวแล้วดำเนินการ OCR ผลลัพธ์จะเป็นอ็อบเจ็กต์ที่มีข้อความที่รับรู้และเมทาดาต้าเพิ่มเติม (คะแนนความเชื่อมั่น, ภาษา, ฯลฯ). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +หาก OCR ล้มเหลว (เช่น รูปแบบภาพที่ไม่รองรับ) `ocr_result` จะเป็น `None` การใช้ guard clause อย่างรวดเร็วจะทำให้สคริปต์ของคุณแข็งแรงขึ้น: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## ขั้นตอนที่ 5: ดึงและพิมพ์ข้อความส่วนหัวที่สกัดออก + +สุดท้าย เราดึงข้อความจากอ็อบเจ็กต์ผลลัพธ์และแสดงออก คุณยังสามารถเขียนลงไฟล์หรือส่งต่อให้ฟังก์ชันอื่นเพื่อการแยกข้อมูลต่อไป. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### ผลลัพธ์ที่คาดหวัง + +เมื่อทุกอย่างตั้งค่าอย่างถูกต้อง คุณควรเห็นผลลัพธ์ประมาณนี้: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +หากผลลัพธ์ดูเป็นอักขระแปลก ๆ ให้ตรวจสอบพิกัด ROI อีกครั้งและตรวจสอบว่าภาพต้นฉบับมีคอนทราสต์สูง. + +--- + +## ความหลากหลายและกรณีขอบ + +### 1. ส่วนหัวหลายส่วนในเอกสารเดียว + +บางครั้ง PDF มีหลายหน้า แต่ละหน้ามีส่วนหัวของตนเอง ให้วนลูปผ่านหน้าและปรับ ROI ตามหน้า: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. จัดการกับการสแกนที่เอียง + +หากใบแจ้งหนี้หมุนเล็กน้อย ให้ทำการประมวลผลล่วงหน้าภาพด้วย OpenCV ก่อนส่งให้ Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. เปลี่ยนการตั้งค่าภาษา + +Aspose OCR สามารถตรวจจับภาษาด้วยตนเองได้ แต่คุณสามารถบังคับให้เป็น English เพื่อผลลัพธ์ที่เร็วขึ้น: + +```python +ocr_engine.language = "en" +``` + +## ตัวอย่างทำงานเต็มรูปแบบ + +ด้านล่างเป็นสคริปต์เต็มที่คุณสามารถคัดลอก‑วางลงในไฟล์ชื่อ `extract_header.py` อย่าลืมเปลี่ยนเส้นทางภาพให้เป็นของคุณเอง. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +การรันสคริปต์นี้ควรแสดงบรรทัดส่วนหัวตรงตามที่แสดงข้างต้น คุณสามารถปรับค่า `roi` ให้ตรงกับเทมเพลตใบแจ้งหนี้ของคุณได้ตามต้องการ. + +## คำถามที่พบบ่อย + +**Q: ทำงานกับ PDF โดยตรงได้หรือไม่?** +A: ไม่สามารถทำได้โดยตรง ต้องแปลงแต่ละหน้าของ PDF เป็นภาพ (เช่นใช้ `pdf2image`) แล้วจึงส่งไฟล์ PNG/JPG ให้สคริปต์. + +**Q: ถ้าส่วนหัวของฉันมีโลโก้และข้อความร่วมกันจะทำอย่างไร?** +A: Aspose OCR มุ่งเน้นที่เนื้อหาข้อความ สำหรับโลโก้ ควรใช้ไลบรารีการจดจำภาพแยกต่างหาก เช่น `opencv` หรือ `tesseract` พร้อมโมเดลที่กำหนดเอง. + +**Q: การทดลองใช้ฟรีมีข้อจำกัดหรือไม่?** +A: รุ่นทดลองให้ใช้ได้สูงสุด 10 หน้าต่อเดือน สำหรับการใช้งานจริง ควรซื้อไลเซนส์เพื่อยกเลิกข้อจำกัดและเปิดใช้งานการตั้งค่าความแม่นยำที่สูงขึ้น. + +## สรุป + +ตอนนี้คุณมีคู่มือ **complete, citation‑worthy** สำหรับ **extract header text OCR** ด้วย **Python Aspose OCR** บทแนะนำครอบคลุมทุกอย่างตั้งแต่การติดตั้งจนถึงการจัดการกรณีขอบ และให้ฟังก์ชันที่นำกลับมาใช้ได้ซ้ำใน workflow ที่ใหญ่ขึ้น + +ต่อไปคุณอาจสำรวจ **extract specific area text** สำหรับโซนอื่น ๆ เช่น ส่วนท้ายหรือรายการสินค้า หรือผสานวิธีนี้กับตัวแปลง PDF‑to‑image เพื่ออัตโนมัติ pipeline ของเอกสารทั้งหมด ความเป็นไปได้ไม่มีที่สิ้นสุด—เพียงจำไว้ว่าให้พิกัด ROI ของคุณแม่นยำและภาพของคุณมีความละเอียดสูง + +มีเลย์เอาต์ที่ซับซ้อน? แชร์ในคอมเมนต์และเราจะปรับ ROI ร่วมกัน ขอให้สนุกกับการเขียนโค้ด! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/thai/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..d575b37e4 --- /dev/null +++ b/ocr/thai/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,229 @@ +--- +category: general +date: 2026-04-26 +description: ดึงข้อความจากภาพโดยใช้ Aspose OCR ใน Python. เรียนรู้วิธีดึงข้อความ, + แปลงภาพเป็นข้อความ, และโหลดภาพสำหรับ OCR พร้อมการสนับสนุนหลายภาษา. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: th +og_description: ดึงข้อความจากรูปภาพได้ทันที คู่มือนี้แสดงวิธีดึงข้อความ แปลงรูปภาพเป็นข้อความ + และโหลดรูปภาพสำหรับ OCR ด้วย Aspose OCR ใน Python. +og_title: สกัดข้อความจากรูปภาพด้วย Python – บทเรียน OCR หลายภาษาครบถ้วน +tags: +- OCR +- Python +- Aspose +title: ดึงข้อความจากภาพด้วย Python – คู่มือ OCR หลายภาษา +url: /th/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# ดึงข้อความจากภาพด้วย Python – คู่มือ OCR หลายภาษา + +เคยต้องการ **ดึงข้อความจากภาพ** แต่ไม่แน่ใจว่าห้องสมุดไหนสามารถจัดการกับหน้าแบบหลายภาษาได้หรือไม่? คุณไม่ได้เป็นคนเดียว ในแอปพลิเคชันจริงหลาย ๆ ตัว—เช่น การประมวลผลใบแจ้งหนี้, การตรวจสอบโซเชียลมีเดีย, หรือการจัดเก็บเอกสารหลายภาษา—คุณจะเจอรูปภาพที่มีอักษรละตินและซีริลลิกผสมกัน + +ข่าวดีคืออะไร? ด้วย Aspose OCR for Python คุณสามารถ **ดึงข้อความ**, **แปลงภาพเป็นข้อความ**, และ **โหลดภาพสำหรับ OCR** ได้ในไม่กี่บรรทัด พร้อมให้เอนจินตรวจจับภาษาด้วยตัวเอง ในบทแนะนำนี้เราจะเดินผ่านตัวอย่างที่ทำงานได้เต็มรูปแบบ, อธิบายว่าทำไมแต่ละขั้นตอนถึงสำคัญ, และครอบคลุมกรณีขอบที่คุณอาจเจอระหว่างทาง + +> **สิ่งที่คุณจะได้เรียนรู้** +> * สคริปต์พร้อมรันที่ดึงข้อความจากไฟล์ PNG ที่มีหลายภาษา +> * ความเข้าใจในการตั้งค่า OCR หลายภาษาใน Python +> * เคล็ดลับการจัดการไฟล์ขนาดใหญ่, รูปแบบภาพต่าง ๆ, และการดีบักข้อผิดพลาดทั่วไป + +## Prerequisites + +- Python 3.8 หรือใหม่กว่า (โค้ดใช้ f‑strings) +- แพ็กเกจ `asposeocr` ติดตั้งแล้ว (`pip install asposeocr`) +- ไฟล์ภาพ (เช่น `mixed_lang.png`) ที่มีข้อความในสคริปต์มากกว่าหนึ่งแบบ +- ความคุ้นเคยพื้นฐานกับการ import ของ Python และ API แบบเชิงวัตถุ + +ไม่มีการพึ่งพาไลบรารีหนัก ๆ หรือบริการภายนอก—แค่ติดตั้ง pip ครั้งเดียวก็พร้อมใช้งาน + +--- + +## Step 1 – Install & import the Aspose OCR library + +ก่อนที่เราจะ **โหลดภาพสำหรับ OCR** เราต้องมีไลบรารีนี้ก่อน แพ็กเกจมาพร้อมกับเอนจิน OCR แกนและตัวโหลดภาพที่มีน้ำหนักเบา + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*ทำไมสิ่งนี้ถึงสำคัญ*: การ import คลาสเฉพาะทำให้เนมสเปซสะอาดและทำให้โค้ดต่อมาชัดเจนขึ้น หากคุณ import `asposeocr` เพียงอย่างเดียว คุณจะต้องระบุทุกการเรียก (`aocr.OcrEngine()`), ซึ่งทำให้โค้ดดูรก + +--- + +## Step 2 – Create the OCR engine and enable multilingual detection + +Aspose OCR สามารถคาดเดาภาษา(ๆ) ที่ปรากฏในภาพโดยอัตโนมัติ การตั้งค่า `Language.AUTO` ครอบคลุมละติน, ซีริลลิก, อาหรับ, และอื่น ๆ อีกมาก + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Pro tip*: หากคุณทราบชุดภาษาล่วงหน้า สามารถกำหนด `Language.ENGLISH` หรือ `Language.RUSSIAN` เพื่อเพิ่มประสิทธิภาพเล็กน้อย แต่สำหรับเอกสารที่ผสมหลายภาษา `AUTO` คือทางเลือกที่ปลอดภัยที่สุด + +--- + +## Step 3 – Load the image you want to process + +นี่คือจุดที่เราจะ **โหลดภาพสำหรับ OCR** Aspose รองรับ PNG, JPEG, BMP, TIFF, และแม้กระทั่งหน้า PDF ที่ถือเป็นภาพ + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **เคล็ดลับ**: หากภาพของคุณใหญ่กว่า 2 MB ควรปรับขนาดก่อน ภาพขนาดใหญ่จะใช้หน่วยความจำมากและอาจทำให้ขั้นตอนการตรวจจับช้าลง + +--- + +## Step 4 – Run the OCR process and capture the result + +การเรียก `process()` ทำหน้าที่หนัก ๆ: การตรวจจับข้อความ, การวิเคราะห์เลย์เอาต์, และการถอดรหัสภาษา + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +อ็อบเจ็กต์ `ocr_result` ที่คืนค่ามีคุณสมบัติที่เป็นประโยชน์หลายอย่าง: + +| Property | Description | +|----------|-------------| +| `text` | สตริงธรรมดาของข้อความที่ถูกจดจำ (สิ่งที่คุณจะใช้บ่อยที่สุด) | +| `confidence` | คะแนนความมั่นใจโดยรวม (0‑100) | +| `lines` | รายการของอ็อบเจ็กต์ `OcrLine` พร้อมข้อมูลตำแหน่ง (เหมาะสำหรับ PDF) | + +--- + +## Step 5 – Display the extracted text + +สุดท้ายเราจะพิมพ์ผลลัพธ์ออกมา ในแอปพลิเคชันจริงคุณอาจบันทึกลงฐานข้อมูลหรือส่งต่อไปยัง API แปลภาษา + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**ผลลัพธ์ที่คาดหวัง** (ตัวอย่างสำหรับภาพที่มีหลายภาษา): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +หากคุณเห็นอักขระแปลก ๆ ให้ตรวจสอบว่าภาพไม่เสียหายและคุณใช้เวอร์ชันล่าสุดของ `asposeocr` (v23.7 ณ เวลาที่เขียน) + +--- + +## Step 6 – Full script you can copy‑paste + +การรวมทั้งหมดเข้าด้วยกันช่วยขจัดความสับสนว่า “โค้ดเริ่มต้นที่ไหน” บันทึกไฟล์นี้เป็น `multilingual_ocr.py` แล้วรันจากคอมมานด์ไลน์ + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +รันมัน: + +```bash +python multilingual_ocr.py +``` + +คุณควรเห็นสตริงที่ดึงออกมาแสดงบนคอนโซล นั่นแหละ—**แปลงภาพเป็นข้อความ** ด้วยเพียงไม่กี่บรรทัด + +--- + +## Common questions & edge‑case handling + +### ถ้าภาพของฉันมีลายมือ? + +Aspose OCR ปรับแต่งสำหรับข้อความพิมพ์ ลายมือมักต้องใช้โมเดลเฉพาะ (เช่น Azure Read หรือ Google Vision) คุณยังสามารถลอง `Language.AUTO` ได้ แต่คาดว่าจะได้ความมั่นใจต่ำกว่า + +### จะปรับปรุงความแม่นยำบนสแกนที่มีนอยส์อย่างไร? + +1. เตรียมภาพล่วงหน้า (บิไนอาไรเซชัน, ลดจุดรบกวน) +2. เพิ่ม DPI อย่างน้อย 300 ppi ก่อนส่งให้เอนจิน +3. ตั้งค่า `ocr_engine.config.deskew = True` หากภาพเอียง + +```python +ocr_engine.config.deskew = True +``` + +### สามารถดึงข้อความจาก PDF ได้โดยไม่แปลงเป็นภาพก่อนหรือไม่? + +ได้—Aspose OCR สามารถเปิดหน้า PDF โดยตรง: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +เพียงจำไว้ว่าแต่ละหน้าถูกจัดการเป็นภาพภายใน ดังนั้นข้อพิจารณาด้านคุณภาพจึงเหมือนกัน + +--- + +## Conclusion + +ตอนนี้คุณมีสูตรครบวงจรเพื่อ **ดึงข้อความจากภาพ** ด้วย Aspose OCR ใน Python พร้อมการสนับสนุนหลายภาษา สคริปต์นี้แสดงวิธี **โหลดภาพสำหรับ OCR**, **แปลงภาพเป็นข้อความ**, และจัดการกับข้อผิดพลาดที่พบบ่อยที่สุด + +ต่อจากนี้คุณอาจ: + +- ผสานฟังก์ชันเข้ากับเว็บเซอร์วิสที่รับอัปโหลดจากผู้ใช้ +- คู่ข้อความที่ดึงได้กับไลบรารีตรวจจับภาษาเพื่อส่งต่อไปยังเอนจินแปลที่เหมาะสม +- ทดลองตัวเลือก `ocr_engine.config` (เช่น `max_recognition_time`, `text_orientation`) เพื่อปรับจูนประสิทธิภาพ + +ขอให้เขียนโค้ดสนุกและ OCR pipeline ของคุณแม่นยำเสมอ! + +--- + +![Screenshot of extracted multilingual text – extract text from image example](image-placeholder.png "ตัวอย่างการดึงข้อความจากภาพ") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/thai/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..3791e00a1 --- /dev/null +++ b/ocr/thai/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,233 @@ +--- +category: general +date: 2026-04-26 +description: วิธีทำ OCR เอกสารเป็นชุดและดึงข้อความจากสแกนใน Python เรียนรู้การประมวลผลเป็นชุดแบบขั้นตอนด้วย + OcrEngine เพื่อรับผลลัพธ์เป็น JSON +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: th +og_description: วิธีทำ OCR เป็นชุดกับไฟล์สแกนของคุณและดึงข้อความจากการสแกนในสคริปต์เดียว + โค้ดเต็ม, เคล็ดลับ, และการจัดการกรณีขอบ +og_title: วิธีทำ OCR แบบแบตช์ – คู่มือ Python อย่างรวดเร็ว +tags: +- OCR +- Python +- Automation +title: วิธีทำ OCR แบบกลุ่ม – ดึงข้อความจากการสแกนอย่างมีประสิทธิภาพ +url: /th/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีทำ Batch OCR – แยกข้อความจากการสแกนอย่างมีประสิทธิภาพ + +เคยสงสัย **how to batch OCR** กอง PDF ที่สแกนไว้จำนวนมหาศาลโดยไม่ทำให้คุณบ้าหรือไม่? คุณไม่ได้เป็นคนเดียว—นักพัฒนามักถามบ่อยว่า *“จะดึงข้อความจากการสแกนทั้งหมดในครั้งเดียวได้อย่างไร?”* ข่าวดีคือเพียงไม่กี่บรรทัดของ Python ก็สามารถเปลี่ยนงานที่น่าเบื่อให้เป็นกระบวนการอัตโนมัติที่ราบรื่นได้ + +ในบทแนะนำนี้เราจะเดินผ่านโซลูชันที่สมบูรณ์พร้อมรันได้ทันทีที่ **extracts text from scans**, บันทึกผลเป็น JSON, และให้การตรวจสอบความถูกต้องอย่างรวดเร็วในตอนท้าย ไม่ต้องพึ่งบริการภายนอก ไม่ต้องใช้เวทมนตร์—แค่ Python ธรรมดา, คลาส `OcrEngine`, และการจัดการโฟลเดอร์เล็กน้อย + +## สิ่งที่คุณจะได้เรียนรู้ + +- สคริปต์ที่ทำงานเต็มรูปแบบซึ่ง **batches OCR** บนโฟลเดอร์รูปภาพใด ๆ +- คำอธิบายที่ชัดเจนว่าทำไมแต่ละบรรทัดถึงมีอยู่ ไม่ใช่แค่ทำอะไร +- เคล็ดลับการจัดการโฟลเดอร์ว่าง, ไฟล์ที่ไม่ใช่รูปภาพ, และแบชขนาดใหญ่ +- วิธีตรวจสอบว่าไฟล์ JSON มีข้อความที่ดึงออกมาจริง ๆ + +### ข้อกำหนดเบื้องต้น (ขั้นต่ำที่สุด) + +| Requirement | Why it matters | +|-------------|----------------| +| Python 3.8+ | ไวยากรณ์สมัยใหม่ & type hints | +| `OcrEngine` library (or a compatible wrapper) | ฟังก์ชัน OCR หลัก | +| โฟลเดอร์ที่มีไฟล์สแกนเป็นรูปภาพ (PNG, JPG, TIFF) | ข้อมูลเข้า | +| สิทธิ์การเขียนสำหรับโฟลเดอร์ผลลัพธ์ | บันทึกไฟล์ JSON | + +หากคุณมีทั้งหมดนี้แล้ว เยี่ยม—มาเริ่มกันเลย + +![วิธีทำ batch OCR workflow](image-placeholder.png){alt="วิธีทำ batch OCR workflow"} + +## ขั้นตอนที่ 1 – เริ่มต้น OCR Engine (how to batch OCR) + +ก่อนที่เราจะประมวลผลอะไรได้ เราต้องมีอินสแตนซ์ของ OCR engine คิดว่าเป็น “สมอง” ที่จะอ่านแต่ละภาพและแปลงเป็นข้อความ การสร้างครั้งเดียวแล้วใช้ซ้ำตลอดแบชเป็นรูปแบบที่มีประสิทธิภาพที่สุด + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **ทำไมต้องใช้อินสแตนซ์เดียว?** +> การสร้างเอนจินใหม่สำหรับทุกไฟล์จะทำให้ต้องโหลดโมเดลหนัก ๆ เข้า RAM ซ้ำ ๆ ทำให้แบชช้าลงอย่างมาก อินสแตนซ์เดียวจะเก็บโมเดลใน RAM และให้คุณประมวลผลภาพหลายพันรูปโดยไม่รู้สึกช้าลง + +## ขั้นตอนที่ 2 – ระบุตำแหน่งโฟลเดอร์สแกนของคุณ (extract text from scans) + +สแกนของคุณอยู่ที่ไหนบนดิสก์ ให้บอกสคริปต์ว่าไปหาได้ที่ไหน การใช้พาธแบบ absolute จะหลีกเลี่ยงปัญหา “ไฟล์ไม่พบ” เมื่อสคริปต์รันจากโฟลเดอร์ทำงานอื่น + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **เคล็ดลับมือโปร:** +> หากคุณใช้ Windows, เครื่องหมายทับ (`/`) ทำงานได้ดีกับ `os.path.abspath` ดังนั้นไม่จำเป็นต้อง escape backslashes + +## ขั้นตอนที่ 3 – เลือกตำแหน่งที่ผลลัพธ์ JSON ควรจะไป + +คุณอาจต้องการโฟลเดอร์ที่เป็นระเบียบสำหรับผลลัพธ์ OCR การแยกเอาต์พุตออกจากแหล่งข้อมูลทำให้ทำความสะอาดได้ง่ายหรือส่งต่อ JSON ไปยัง pipeline อื่น + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **ทำไมต้องสร้างโฟลเดอร์ด้วยโปรแกรม?** +> มันรับประกันว่าสคริปต์จะไม่พังหากโฟลเดอร์ไม่มีอยู่, และ `exist_ok=True` ทำให้การดำเนินการเป็น idempotent—รันสคริปต์หลายครั้งก็ไม่มีข้อผิดพลาด + +## ขั้นตอนที่ 4 – รันกระบวนการแบช (how to batch OCR) + +นี่คือหัวใจของเรื่อง: บอก `ocr_engine` ให้เดินผ่านทุกไฟล์ใน `input_dir`, ทำ OCR, แล้วบันทึกเป็น JSON ไปที่ `output_dir` ธง `format="json"` บอกเอนจินให้จัดผลลัพธ์ในรูปแบบโครงสร้างที่เครื่องมือ downstream ชอบ + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### สิ่งที่เกิดขึ้นเบื้องหลัง? + +1. **การค้นหาไฟล์** – เอนจินสแกน `input_folder` อย่าง recursive, ข้ามไฟล์ที่ซ่อนอยู่ +2. **การตรวจสอบไฟล์** – เฉพาะไฟล์รูปภาพที่รองรับ (`.png`, `.jpg`, `.tif`, ฯลฯ) เท่านั้นที่ส่งให้โมเดล OCR +3. **การทำ OCR** – ส่งแต่ละภาพไปยัง OCR engine; ดึงข้อความ, คะแนนความมั่นใจ, และข้อมูลเลย์เอาต์ +4. **การแปลงเป็น JSON** – ผลลัพธ์จะถูกเขียนเป็นไฟล์ที่มีชื่อฐานเดียวกันแต่ต่อด้วย `.json` ใน `output_folder` + +> **การจัดการกรณีขอบ:** +> - **โฟลเดอร์ว่าง:** เอนจินบันทึก “No files found” แล้วจบอย่างสุภาพ +> - **ภาพเสีย:** ข้ามไฟล์, บันทึกข้อผิดพลาดใน `batch_errors.log`, แล้วดำเนินต่อ +> - **แบชขนาดใหญ่ (10k+ ไฟล์):** การใช้หน่วยความจำคงที่ต่ำเพราะแต่ละภาพประมวลผลแยกกัน + +## ขั้นตอนที่ 5 – ยืนยันการแปลงเสร็จสิ้น + +คำสั่ง `print` ง่าย ๆ จะให้ฟีดแบ็กทันทีในคอนโซล สำหรับ pipeline ผลิตจริงคุณอาจเปลี่ยนเป็นการล็อกหรือส่งอีเมลแจ้ง + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +เมื่อคุณเห็นบรรทัดนั้น, คุณสามารถตรวจสอบโฟลเดอร์ `json_output` ได้อย่างปลอดภัย แต่ละไฟล์ JSON จะมีลักษณะประมาณนี้: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +คุณสามารถนำไฟล์ JSON เหล่านี้ไปใส่ในฐานข้อมูล, ดัชนีการค้นหา, หรือเครื่องมือวิเคราะห์ downstream ใด ๆ ก็ได้ + +## คำถามที่พบบ่อย (และคำตอบสั้น) + +**Q: ถ้าต้องการประมวลผล PDF แทนรูปภาพล่ะ?** +A: แปลงแต่ละหน้า PDF เป็นรูปภาพก่อน (เช่น ใช้ `pdf2image`) แล้ววางไฟล์ PNG/JPG ที่ได้ลงใน `input_dir` โค้ดแบช OCR จะไม่ต้องเปลี่ยนแปลง + +**Q: สามารถเปลี่ยนรูปแบบเอาต์พุตเป็นข้อความธรรมดาได้ไหม?** +A: ทำได้เลย แค่เปลี่ยน `format="json"` เป็น `format="txt"` แล้วเอนจินจะเขียนไฟล์ `.txt` ที่มีเฉพาะข้อความที่ดึงออกมา + +**Q: สแกนของฉันอยู่หลายโฟลเดอร์ย่อย—สคริปต์จะทำการ recurse หรือไม่?** +A: ใช่ `batch_process` จะเดินทางผ่านโครงสร้างโฟลเดอร์โดยค่าเริ่มต้น หากต้องการเอาต์พุตแบบแบน ให้ตั้งค่า `flatten=True` (ถ้าห้องสมุดรองรับ) หรือทำ post‑process ชื่อไฟล์ JSON เอง + +**Q: จะจัดการกับสคริปต์ที่ไม่ใช่ละตินอย่างไร?** +A: เริ่มต้น `OcrEngine` ด้วยพารามิเตอร์ภาษา, เช่น `OcrEngine(lang="spa+eng")` ส่วนลูปแบชไม่ต้องเปลี่ยนแปลงใด ๆ + +## เคล็ดลับระดับมืออาชีพ & จุดหลบหลีกทั่วไป + +- **ขนาดแบชสำคัญ:** หากเห็น CPU พุ่งสูง ให้ใส่ `time.sleep(0.1)` ระหว่างไฟล์เพื่อชะลอ +- **การล็อก:** แทนที่ `print` ด้วยโมดูล `logging` ของ Python เพื่อบันทึกเวลาและระดับข้อผิดพลาด +- **การชนชื่อไฟล์:** หากสองสแกนมีชื่อฐานเดียวกันแต่อยู่ในโฟลเดอร์ย่อยต่างกัน, ไฟล์ JSON จะเขียนทับกัน ให้เพิ่มแฮชของพาธสัมพันธ์ลงในชื่อเอาต์พุตเพื่อหลีกเลี่ยง +- **การรั่วของหน่วยความจำ:** บาง backend ของ OCR จะเก็บทรัพยากรเนทีฟไว้ ให้เรียก `ocr_engine.close()` ตอนจบสคริปต์หากไลบรารีมีเมธอดทำความสะอาด + +## สคริปต์เต็ม – พร้อมคัดลอก & วาง + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**ผลลัพธ์ที่คาดว่าจะเห็นในคอนโซล** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +คุณสามารถตรวจสอบ JSON ได้โดยเปิดไฟล์ใดไฟล์หนึ่งใน `json_output` ด้วยโปรแกรมแก้ไขข้อความหรือโหลดใน Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +คุณควรเห็นข้อความดิบที่ OCR‑extract มาแสดงในคอนโซล + +## สรุป + +เราได้อธิบาย **how to batch OCR** โฟลเดอร์เต็มของภาพสแกนและ **extract text from scans** ไปเป็นไฟล์ JSON ที่อ่านได้โดยเครื่องจักร วิธีการนี้ออกแบบให้เรียบง่าย: ตั้งค่าเอนจินครั้งเดียว, ชี้ไปที่โฟลเดอร์, แล้วให้ไลบรารีทำงานหนักจากนั้นคุณสามารถ: + +- เชื่อมต่อ JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/thai/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..17c0727c3 --- /dev/null +++ b/ocr/thai/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-26 +description: วิธีสร้าง OCR อย่างรวดเร็วและเชื่อถือได้ เรียนรู้การสกัดข้อความจากภาพ + โหลดภาพสำหรับ OCR และรัน OCR บนไฟล์ PNG ด้วยพจนานุกรมที่กำหนดเอง +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: th +og_description: วิธีสร้าง OCR ด้วย Python และดึงข้อความจากภาพ คู่มือนี้แสดงวิธีโหลดภาพสำหรับ + OCR, รัน OCR บนไฟล์ PNG, และใช้พจนานุกรมกำหนดเอง. +og_title: วิธีสร้าง OCR ด้วย Python – การสกัดข้อความอย่างรวดเร็ว +tags: +- OCR +- Python +- Image Processing +title: วิธีสร้าง OCR ด้วย Python – แยกข้อความจากรูปภาพ +url: /th/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีสร้าง OCR ด้วย Python – คู่มือขั้นตอนต่อขั้นตอน + +เคยสงสัย **วิธีสร้าง OCR** ที่สามารถอ่านไฟล์ PDF ที่สแกน, ภาพหน้าจอ, หรือบันทึกมือของคุณหรือไม่? คุณไม่ได้เป็นคนเดียว ในหลายโครงการจริง ๆ เราต้องการ *ดึงข้อความจากไฟล์ภาพ* แต่เครื่องมือสำเร็จรูปมักจะสับสนกับคำเฉพาะโดเมน + +ในบทเรียนนี้คุณจะได้เห็นตัวอย่างที่สมบูรณ์และสามารถรันได้ ซึ่งโหลดภาพสำหรับ OCR, ใช้พจนานุกรมกำหนดเอง, และสุดท้าย **run OCR on PNG** คุณจะสามารถดึงข้อความจากภาพใด ๆ และปรับแต่งเอนจินให้สอดคล้องกับศัพท์ของคุณเองได้ + +## สิ่งที่บทเรียนนี้ครอบคลุม + +เราจะเดินผ่านทุกขั้นตอนที่คุณต้องทำ: + +* การติดตั้งแพ็กเกจ `aocr` ที่เล็กแต่ทรงพลัง (หรือไลบรารีที่เข้ากันได้) +* การกำหนด **พจนานุกรมกำหนดเอง** เพื่อให้คำเช่น `aspocorp` หรือ `licensekey` ถูกจดจำ +* **Loading an image for OCR**, ไม่ว่าจะเป็น PNG, JPEG หรือหน้าสแกนของ PDF +* การรันกระบวนการ OCR และพิมพ์ผลลัพธ์ + +ไม่มีลิงก์เอกสารภายนอก เพียงโซลูชันที่สามารถคัดลอก‑วางและรันได้ทันที + +### ข้อกำหนดเบื้องต้น + +* Python 3.8 หรือใหม่กว่า (โค้ดใช้ f‑strings) +* ความคุ้นเคยพื้นฐานกับ command line – คุณจะต้องพิมพ์คำสั่ง `pip install` สองสามครั้ง +* ไฟล์ภาพ (`technical_doc.png` ในตัวอย่าง) ที่วางไว้ในตำแหน่งที่คุณสามารถอ้างอิงได้ + +หากคุณมีสามสิ่งนี้ครบ คุณก็พร้อมเริ่มแล้ว + +--- + +## Step 1: Install the OCR Library + +ก่อนอื่นเราต้องการ OCR engine ที่รองรับการกำหนดค่าแบบโปรแกรมได้ แพ็กเกจ `aocr` เป็น wrapper ที่เบาและทำงานได้ดีสำหรับการสาธิต + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Pro tip:** หากคุณใช้ Windows แล้วเจอข้อผิดพลาดการคอมไพล์ ให้ลอง `pip install aocr‑binary` ซึ่งมี wheel ที่สร้างไว้ล่วงหน้า + +### ทำไมต้องติดตั้งไลบรารีนี้? + +`aocr` ให้เราถึง `config` object โดยตรงที่สามารถใส่ **custom dictionary** เข้าไปได้ นี่คือเคล็ดลับสำคัญสำหรับการเพิ่มความแม่นยำบนคำศัพท์เฉพาะ + +--- + +## Step 2: Create the OCR Engine Instance & Add a Custom Dictionary + +ตอนนี้เราจะสร้าง engine และบอกให้มันรู้จักคำที่ควรถือว่าเป็นที่รู้จัก + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### ทำไมพจนานุกรมกำหนดเองถึงสำคัญ + +โมเดล OCR มาตรฐานฝึกจากข้อมูลทั่วไป เมื่อโมเดลเจอ “aspocorp” มันอาจจะแยกเป็น “aspo corp” หรือทิ้งอักษรบางตัวไปได้ การใส่รายการกำหนดเองทำให้ recognizer มีแนวโน้มจดจำการสะกดที่เราต้องการ ลดความพยายามในการประมวลผลต่อไปอย่างมาก + +--- + +## Step 3: Load the Image You Want to Process + +นี่คือจุดที่เราจะ **load image for OCR** เมธอด `Image.load` รับพาธเป็นสตริงและกำหนดประเภทไฟล์โดยอัตโนมัติ + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Edge case:** หากแหล่งข้อมูลของคุณเป็น PDF หลายหน้า ให้แปลงแต่ละหน้าเป็น PNG ก่อน (เช่นด้วย `pdf2image`) แล้วส่งเข้า engine ทีละหน้า + +### เคล็ดลับเพื่อคุณภาพภาพที่ดียิ่งขึ้น + +* รักษาความละเอียดอย่างน้อย 300 dpi +* ตรวจสอบให้ภาพอยู่ในแนวตั้ง; หากต้องหมุนให้ใช้ `Pillow` +* แปลงสแกนสีเป็น grayscale เพื่อลดสัญญาณรบกวน + +--- + +## Step 4: Run the OCR Process on the PNG File + +เมื่อ engine ถูกกำหนดค่าและภาพถูกโหลดแล้ว เราจะ **run OCR on PNG** สุดท้าย + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +การเรียก `process()` จะคืนค่าเป็นอ็อบเจกต์ที่มีข้อความที่จดจำได้, คะแนนความมั่นใจ, และ bounding box ของแต่ละคำ + +--- + +## Step 5: Output the Recognized Text + +วิธีง่ายที่สุดเพื่อดูผลลัพธ์คือพิมพ์แอตทริบิวต์ `text` + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### ผลลัพธ์ที่คาดหวัง + +หาก `technical_doc.png` มีประโยค *“The Aspocorp licensekey expires on 2025‑12‑31.”* คอนโซลจะพิมพ์: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +สังเกตว่าพจนานุกรมกำหนดเองทำให้ชื่อแบรนด์คงอยู่โดยไม่ถูกแปลงผิดเหมือน OCR ปกติ + +--- + +## Full Working Example (Copy‑Paste Ready) + +ด้านล่างเป็นสคริปต์ทั้งหมด พร้อมบันทึกเป็น `run_ocr.py` เพียงเปลี่ยนพาธตัวอย่างให้ตรงกับตำแหน่งภาพของคุณ + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +รันจากเทอร์มินัล: + +```bash +python run_ocr.py +``` + +คุณควรเห็นข้อความที่ดึงออกมาปรากฏบนคอนโซล ตามที่แสดงในตัวอย่างก่อนหน้า + +--- + +## Frequently Asked Questions (FAQ) + +| Question | Answer | +|----------|--------| +| **Can I extract text from a scanned PDF?** | ใช่. ให้แปลงแต่ละหน้าเป็น PNG (หรือ TIFF) ก่อน แล้วส่งภาพเหล่านั้นไปยังสคริปต์เดียวกัน | +| **What if my image is a JPEG instead of PNG?** | เมธอด `Image.load` รองรับ JPEG, BMP, TIFF, และ PNG อยู่แล้ว เพียงเปลี่ยนนามสกุลไฟล์ | +| **How do I improve accuracy on low‑contrast scans?** | ทำการพรี‑โปรเซสด้วย `Pillow` – เพิ่มความคอนทราสต์, ทำ binarization, หรือใช้ `opencv` เพื่อลบการเอียง | +| **Is there a way to get confidence scores for each word?** | `ocr_result` มี `words` – แต่ละคำมีแอตทริบิวต์ `confidence` ที่คุณสามารถวนลูปได้ | +| **Can I run this on a headless server?** | แน่นอน. `aocr` ไม่มี dependency ของ GUI ทำให้เหมาะกับ CI pipelines | + +--- + +## Next Steps & Related Topics + +ตอนนี้คุณรู้ **how to create OCR** และ **extract text from image** แล้ว ลองสำรวจต่อ: + +* **Pre‑processing techniques** – `load image for OCR` เป็นแค่ขั้นตอนแรก; ใช้ `opencv` เพื่อลดสัญญาณรบกวนหรือเพิ่มความคมชัด +* **Batch processing** – วนลูปผ่านโฟลเดอร์ของ PNG เพื่อสร้างคลังข้อมูลที่ค้นหาได้ +* **Multi‑language support** – เพิ่ม language pack ให้ engine หากต้องอ่านเอกสารภาษาฝรั่งเศสหรือเยอรมัน +* **Integrating with Elasticsearch** – ทำดัชนีข้อความที่ดึงได้เพื่อการค้นหาเต็มข้อความในเอกสารสแกนทั้งหมด + +แต่ละหัวข้อขยายจากรูปแบบพื้นฐานที่เราได้ครอบคลุมแล้ว ทำให้การต่อยอดเป็นเรื่องง่าย + +--- + +## Wrap‑Up + +ในเวลาไม่กี่นาที เราได้ตอบ **how to create OCR** ที่สามารถ **extract text from image** ได้อย่างเชื่อถือได้ โดยเฉพาะ PNG เราแสดงวิธี **load image for OCR**, ใช้ **custom dictionary**, และ **run OCR on PNG** โดยไม่ต้องพึ่งบริการภายนอก + +ลองรันสคริปต์ ปรับพจนานุกรมให้ตรงกับศัพท์ของคุณเอง แล้วคุณจะมีพื้นฐานที่แข็งแกร่งสำหรับโครงการดิจิไทเซชันเอกสารใด ๆ + +หากเจอปัญหาใด ๆ คอมเมนต์ด้านล่างได้ เราพร้อมช่วยเหลือ อย่าลืมแชร์เรื่องราวความสำเร็จของคุณ; ชุมชนเรียนรู้ดีที่สุดจากตัวอย่างจริง + +**พร้อมจะทำให้กระบวนการเอกสารอัตโนมัติหรือยัง?** ดึงโค้ดมาใช้ ปรับให้เข้ากับความต้องการของคุณ แล้วเริ่มแปลงพิกเซลเป็นข้อความที่ค้นหาได้วันนี้! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/thai/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..2cdb23008 --- /dev/null +++ b/ocr/thai/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: วิธีดึง OCR จากรูปภาพด้วย Python – ตัวอย่าง OCR ด้วย Python ที่แสดงวิธีโหลดรูปภาพสำหรับ + OCR และดึงข้อความจากใบเสร็จ +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: th +og_description: วิธีดึง OCR จากภาพด้วย Python. เรียนรู้ตัวอย่าง OCR ด้วย Python, โหลดภาพสำหรับ + OCR, และดึงข้อความจากใบเสร็จในไม่กี่นาที. +og_title: วิธีดึง OCR ใน Python – คู่มือเต็ม +tags: +- OCR +- Python +- Image Processing +title: วิธีดึง OCR ใน Python – คู่มือทีละขั้นตอน +url: /th/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีดึงข้อมูล OCR ด้วย Python – คู่มือฉบับเต็ม + +เคยสงสัย **how to extract ocr** จากใบเสร็จที่เบลอหรือใบแจ้งหนี้ที่สแกนหรือไม่? คุณไม่ได้เป็นคนเดียว—นักพัฒนามักเจออุปสรรคเมื่อจำเป็นต้องได้ข้อความที่สะอาดและอ่านได้โดยเครื่องจากรูปภาพ ข่าวดีคือ? ด้วยเพียงไม่กี่บรรทัดของ Python คุณสามารถแปลงรูปภาพใบเสร็จให้เป็นข้อความที่มีความมั่นใจสูงและสามารถค้นหาได้. + +ในบทเรียนนี้เราจะเดินผ่าน **python ocr example** ที่แสดง **how to load image for ocr**, รันเอนจิน, และเก็บเฉพาะอักขระที่ผ่านเกณฑ์ความมั่นใจ 85 % สุดท้ายคุณจะสามารถ **extract text from receipt** จากรูปภาพได้โดยไม่ต้องค้นหาเอกสารหรือเดาพารามิเตอร์ของ API. + +## สิ่งที่คุณต้องการ + +- Python 3.9 หรือใหม่กว่า (ไวยากรณ์ที่เราใช้ทำงานบน 3.8+) +- แพคเกจ `aocr` (หรือไลบรารี OCR ใด ๆ ที่มีคลาส `OcrEngine`). ติดตั้งด้วย: + +```bash +pip install aocr +``` + +- ตัวอย่างรูปใบเสร็จ (`receipt.png`) ที่วางไว้ในโฟลเดอร์ที่คุณอ้างอิงได้ +- โปรแกรมแก้ไขข้อความหรือ IDE—VS Code, PyCharm, หรือแม้แต่โน๊ตบุ๊คง่าย ๆ ก็ใช้ได้ + +แค่นั้นเอง ไม่ต้องใช้เฟรมเวิร์กหนัก ๆ ไม่ต้องพึ่งบริการภายนอก เพียงแค่ Python ธรรมดา + +![ผลลัพธ์ OCR ความมั่นใจสูง – วิธีดึงข้อมูล OCR จากใบเสร็จ](/images/ocr-high-confidence.png) + +*ข้อความแทนภาพ: วิธีดึงข้อมูล OCR จากใบเสร็จด้วย Python OCR* + +## ขั้นตอนที่ 1 – สร้างอินสแตนซ์ของ OCR Engine (how to extract ocr) + +สิ่งแรกที่เราทำคือเปิดใช้งาน OCR engine คิดว่าเป็นสมองที่จะอ่านพิกเซลให้เรา + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**ทำไม?** การสร้างอินสแตนซ์ `OcrEngine` จะให้คุณได้อ็อบเจ็กต์การตั้งค่าใหม่ คุณสามารถปรับโมเดลภาษา, การตั้งค่า DPI, หรือขั้นตอนการเตรียมข้อมูลต่อมา—ทั้งหมดโดยไม่ต้องแก้ไขลูปการประมวลผลหลัก + +## ขั้นตอนที่ 2 – โหลดภาพสำหรับ OCR + +ต่อไปเราชี้เอนจินไปที่ภาพที่ต้องการวิเคราะห์ นี่คือจุดที่คีย์เวิร์ด **load image for ocr** เข้ามามีบทบาท + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **เคล็ดลับ:** หากภาพของคุณอยู่ในไดเรกทอรีอื่น ให้ใช้ `os.path.join` เพื่อสร้างพาธที่เป็นอิสระต่อแพลตฟอร์ม + +**ทำไมต้องโหลดภาพแบบนี้?** ตัวช่วย `Image.load` จะอ่านไฟล์เป็นรูปแบบที่เอนจินเข้าใจโดยอัตโนมัติ รองรับฟอร์แมตทั่วไป (PNG, JPEG, TIFF) หากข้ามขั้นตอนนี้หรือส่งไบต์ดิบจะทำให้เกิด `ValueError` + +## ขั้นตอนที่ 3 – รันกระบวนการ OCR + +ตอนนี้เราจะรัน OCR จริง ๆ เมธอด `process` จะคืนอ็อบเจ็กต์ผลลัพธ์ที่มีสัญลักษณ์ที่รู้จำ, คะแนนความมั่นใจ, และกล่องขอบเขต + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**`ocr_result` มีอะไรบ้าง?** ในไลบรารีส่วนใหญ่จะรวม: + +- `text`: สตริงที่ต่อกันแบบดิบ +- `symbol_confidences`: รายการของทูเพิล `(char, confidence)` +- `boxes`: พิกัดของแต่ละอักขระ (มีประโยชน์สำหรับการดีบักแบบภาพ) + +การเข้าถึงความมั่นใจต่ออักขระเป็นสิ่งสำคัญสำหรับขั้นตอนต่อไป + +## ขั้นตอนที่ 4 – เก็บเฉพาะสัญลักษณ์ที่มีความมั่นใจสูง (≥ 85 %) + +ใบเสร็จมักมีคราบ, พิมพ์สีอ่อน, หรือสัญญาณรบกวนพื้นหลัง การกรองสัญลักษณ์ที่ความมั่นใจต่ำช่วยปรับปรุงการแยกข้อมูลต่อไปอย่างมาก + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**ทำไมต้อง 85 %?** จากประสบการณ์ ค่าเกณฑ์ประมาณ 0.85 ให้สมดุลระหว่างรีคอลและพรีซิชันสำหรับใบเสร็จพิมพ์ส่วนใหญ่ หากพบว่าตัวเลขหายไปให้ลดค่าเกณฑ์; หากได้ข้อความไร้สาระให้เพิ่มค่า + +## ขั้นตอนที่ 5 – แสดงผลข้อความที่ดึงด้วยความมั่นใจสูง + +สุดท้ายเราจะพิมพ์ (หรือบันทึก) สตริงที่ทำความสะอาดแล้ว นี่คือหัวใจของเวิร์กโฟลว์ **extract text from receipt** ของเรา + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +ผลลัพธ์ทั่วไปจะเป็นแบบนี้: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +คุณสามารถนำสตริงนี้ไปใส่ใน CSV writer, ฐานข้อมูล, หรือพายไลน์การวิเคราะห์ต่อไปได้เลย + +## สคริปต์เต็มพร้อมรัน + +ด้านล่างเป็นโค้ดเต็มที่คุณสามารถคัดลอก‑วางลงใน `ocr_receipt.py` แล้วรันได้ทันที + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +บันทึกไฟล์, ตรวจสอบให้แน่ใจว่า `receipt.png` มีอยู่, แล้วเรียกใช้: + +```bash +python ocr_receipt.py +``` + +คุณควรเห็นข้อความใบเสร็จที่ทำความสะอาดแล้วแสดงบนคอนโซล + +## กรณีขอบและสถานการณ์ที่อาจเกิดขึ้น + +| สถานการณ์ | วิธีแก้แนะนำ | +|-----------|----------------| +| **ความมั่นใจต่ำมากทั่วทั้งภาพ** | ทำการพรี‑โปรเซสภาพ: เพิ่มคอนทราสต์, แปลงเป็นระดับสีเทา, หรือใช้ฟิลเตอร์ลดสัญญาณรบกวน (`cv2.GaussianBlur`) | +| **อักขระไม่ใช่ละติน** | ส่งโมเดลภาษาให้ `OcrEngine` (เช่น `ocr_engine.language = "spa"` สำหรับสเปน) | +| **หลายใบเสร็จในภาพเดียว** | รัน OCR ทั้งภาพแล้วแยกผลลัพธ์ด้วย regex ที่ตรวจจับ `\n\n+` (บรรทัดว่างสองบรรทัด) | +| **ต้องการข้อความ OCR ดิบด้วย** | เก็บ `ocr_result.text` ควบคู่กับเวอร์ชันที่กรองแล้วเพื่อการดีบัก | + +การปรับเปลี่ยนเหล่านี้ทำให้ความรู้ **how to use OCR** ของคุณขยายออกไปไกลกว่ากรณีง่ายที่สุด + +## ข้อผิดพลาดทั่วไป (และวิธีหลีกเลี่ยง) + +- **ลืมติดตั้งไลบรารี** – ต้องให้ `pip install aocr` สำเร็จก่อนนำเข้า +- **ใช้ตัวคั่นพาธผิด** บน Windows (`\` vs `/`). ใช้ `os.path.join` +- **กำหนดค่าเกณฑ์ความมั่นใจแบบฮาร์ดโค้ด** โดยไม่ทดสอบ – ควรตรวจสอบภาพอย่างเร็วบนใบเสร็จหลายใบก่อน +- **ละเลยการทำ Normalisation ของ Unicode** – ใบเสร็จบางใบมีอักขระขีดพิเศษ; ใช้ `unicodedata.normalize('NFKC', text)` หากต้องการเก็บผลลัพธ์ + +## ขั้นตอนต่อไป – ไปไกลกว่าพื้นฐาน + +ตอนนี้คุณรู้แล้วว่า **how to extract ocr** จากใบเสร็จเดียว คุณอาจอยากทำต่อ: + +1. **ประมวลผลหลายไฟล์ในโฟลเดอร์** – วนลูปไฟล์ PNG/JPG ทั้งหมดและเขียนผลลัพธ์แต่ละไฟล์ลง CSV +2. **เชื่อมต่อกับฐานข้อมูล** – เก็บ `high_confidence_text` ใน SQLite เพื่อการค้นหาเร็ว +3. **ใช้การแยกข้อความตามภาษาธรรมชาติ** – ใช้ regex หรือ `dateutil` ดึงวันที่, ยอดรวม, และจำนวนภาษี +4. **ทดลองไลบรารีอื่น** – `pytesseract`, `easyocr`, หรือบริการคลาวด์ (Google Vision, Azure OCR) หากต้องการรองรับหลายภาษา หรือความแม่นยำสูงกว่า + +หัวข้อเหล่านี้สอดคล้องกับคีย์เวิร์ดรองของเรา: *python ocr example*, *extract text from receipt*, *load image for ocr*, และ *how to use OCR*. + +## สรุป + +เราได้เดินผ่าน **python ocr example** ครบชุดที่แสดง **how to extract ocr** จากภาพใบเสร็จ, กรองสัญลักษณ์ที่ความมั่นใจต่ำ, และส่งออกผลลัพธ์ที่สะอาด ขั้นตอนง่าย ๆ โค้ดครบถ้วน และวิธีการยืดหยุ่นพอที่จะปรับใช้ในโครงการขนาดใหญ่ + +ลองใช้กับใบเสร็จของคุณเอง ปรับค่าเกณฑ์ความมั่นใจ แล้วขยายเป็นการประมวลผลแบบแบตช์ หากเจอปัญหาเช่นโลโก้จางหรือฟอนต์แปลก ๆ ให้จำวิธีแก้กรณีขอบด้านบน Happy coding, and may your OCR pipelines be ever accurate! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/thai/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..3f51400d7 --- /dev/null +++ b/ocr/thai/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-04-26 +description: 'วิธีใช้ OCR กับ Python: เรียนรู้การดึงข้อความจากภาพและอ่านไฟล์ TIFF + ด้วย Python โดยใช้ตัวอย่าง OCR พื้นฐาน พร้อมโค้ดที่รวดเร็วและสามารถรันได้รวมไว้ด้วย.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: th +og_description: 'วิธีทำ OCR ด้วย Python: คู่มือขั้นตอนต่อขั้นตอนที่แสดงวิธีดึงข้อความจากภาพ, + อ่านไฟล์ TIFF ด้วย Python, และแปลงข้อความจากภาพสแกนด้วยสคริปต์ง่าย ๆ ที่สามารถรันได้' +og_title: วิธีทำ OCR ด้วย Python – ตัวอย่าง OCR พื้นฐานสำหรับการดึงข้อความ +tags: +- OCR +- Python +- Image Processing +title: วิธีทำ OCR ด้วย Python – ตัวอย่าง OCR พื้นฐานสำหรับการดึงข้อความ +url: /th/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีทำ OCR ด้วย Python – ตัวอย่าง OCR พื้นฐานสำหรับการสกัดข้อความ + +เคยสงสัย **how to ocr python** เมื่อคุณมีไฟล์ TIFF สแกนอยู่บนโต๊ะของคุณไหม? คุณไม่ได้เป็นคนเดียวที่มองไฟล์รูปภาพหลายไฟล์แล้วถามว่า “จะดึงคำออกจากไฟล์นี้ได้อย่างไร?” ข่าวดีคือการเปลี่ยนรูปภาพให้เป็นข้อความธรรมดานั้นทำได้ง่ายมากเมื่อมีไลบรารีที่เหมาะสมและขั้นตอนที่ชัดเจนไม่กี่ขั้นตอน + +ในบทแนะนำนี้เราจะเดินผ่าน **basic OCR example** ที่อ่านไฟล์ TIFF, สกัดข้อความ, และพิมพ์ผลลัพธ์ลงคอนโซล. เมื่อเสร็จคุณจะรู้วิธี **extract text from image** จากไฟล์ภาพ, วิธีจัดการกับความแปลกของฟอร์แมต TIFF, และสิ่งที่ต้องปรับแต่งหากต้อง **convert scanned image text** ให้เป็นประโยชน์มากขึ้น ไม่มีเวทมนตร์ซ่อนอยู่—แค่ Python ธรรมดาที่คุณสามารถคัดลอก‑วางและรันได้ทันที + +## สิ่งที่คุณต้องมี + +ก่อนที่เราจะลงลึก, ตรวจสอบให้แน่ใจว่าคุณมี: + +- Python 3.9+ ติดตั้งแล้ว (เวอร์ชันล่าสุดที่เสถียรที่สุดเป็นตัวเลือกที่ดีที่สุด) +- ไลบรารี OCR ที่ติดตั้งผ่าน pip. สำหรับคู่มือนี้เราจะใช้แพ็กเกจสมมติ `aocr` ที่เลียนแบบเครื่องมือยอดนิยมอย่าง Tesseract; คุณสามารถเปลี่ยนเป็น `pytesseract` หรือ `easyocr` ได้ในภายหลัง +- ภาพ TIFF ที่ต้องการประมวลผล – ตั้งชื่อไฟล์เป็น `input.tiff` แล้ววางไว้ในโฟลเดอร์ที่คุณจะอ้างอิงในโค้ด +- ความคุ้นเคยพื้นฐานกับบรรทัดคำสั่ง (เพียงเพื่อทำการติดตั้งแพ็กเกจ) + +เท่านี้เอง ไม่มีการพึ่งพาไลบรารีหนัก ๆ, ไม่มี Docker container, แค่ไม่กี่บรรทัดของโค้ด + +## Step 1 – Install and Import Dependencies (how to ocr python) + +แรกเริ่มให้ติดตั้งแพ็กเกจ OCR. เปิดเทอร์มินัลและรัน: + +```bash +pip install aocr +``` + +หากคุณต้องการใช้ไลบรารีจริง ๆ ให้เปลี่ยน `aocr` เป็น `pytesseract` แล้วติดตั้งเอนจิน Tesseract แยกต่างหาก + +ต่อไปให้ import สิ่งที่ต้องการ. คลาส `Path` จาก `pathlib` ให้วิธีที่สะอาดในการทำงานกับเส้นทางไฟล์ข้ามระบบปฏิบัติการ + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*ทำไมต้องใช้ `Path`?* เพราะมันแยกความแตกต่างของสแลช (`/` vs `\`) และให้คุณรวมไดเรกทอรีได้โดยไม่ต้องกังวลเกี่ยวกับ OS ที่อยู่เบื้องหลัง รายละเอียดเล็ก ๆ นี้มักช่วยลดปัญหาเมื่อคุณย้ายสคริปต์ไปยังเซิร์ฟเวอร์ CI + +## Step 2 – Create the OCR Engine Instance (basic ocr example) + +ต่อไปให้สร้างอินสแตนซ์ของ OCR engine. คิดว่า `OcrEngine` คือสมองที่จะอ่านรูปภาพและส่งออกอักขระ + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +ไลบรารี OCR ส่วนใหญ่ให้คุณปรับภาษา, DPI, หรือเกณฑ์ความเชื่อมั่นได้ที่นี่ สำหรับ **basic OCR example** นี้เราจะใช้ค่าเริ่มต้น, แต่คุณสามารถสำรวจ `ocr_engine.config` ต่อไปได้หากต้องจัดการเอกสารหลายภาษา + +## Step 3 – Load Your TIFF Image (read tiff file python) + +นี่คือส่วนที่ **read tiff file python** เข้ามา. ไฟล์ TIFF สามารถมีหลายหน้า, แต่ `Image.load` จะดึงหน้าที่แรกโดยค่าเริ่มต้น—เหมาะกับการสแกนหน้าเดียว + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +แทนที่ `"YOUR_DIRECTORY"` ด้วยโฟลเดอร์จริงที่เก็บ `input.tiff`. หากคุณไม่แน่ใจว่าสคริปต์ทำงานจากที่ไหน, `Path.cwd()` จะพิมพ์ไดเรกทอรีทำงานปัจจุบัน—มีประโยชน์สำหรับดีบักปัญหาเส้นทาง + +## Step 4 – Run the OCR Process (extract text from image) + +ตอนนี้จุดมุ่งหมายของเราจะเริ่มทำงาน. การเรียก `process()` จะส่งภาพผ่าน pipeline ของ OCR และคืนอ็อบเจ็กต์ผลลัพธ์ + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +เบื้องหลังเครื่องยนต์อาจทำการแปลงภาพเป็นระดับสีเทา, ปรับค่า threshold, แล้วส่งเข้าเครือข่ายประสาทเทียม คุณไม่จำเป็นต้องจัดการขั้นตอนเหล่านี้; ไลบรารีทำหน้าที่แอบซ่อนไว้ให้คุณ + +## Step 5 – Print the Recognized Text (convert scanned image text) + +สุดท้ายให้พิมพ์ข้อความที่ได้รับ. ในโปรเจกต์จริงคุณอาจเขียนลงไฟล์หรือฐานข้อมูล, แต่การพิมพ์ทำให้ตัวอย่างดูเรียบง่าย + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +เมื่อรันสคริปต์, คุณควรเห็นผลลัพธ์ประมาณนี้: + +``` +Hello, world! +This is a sample scanned document. +``` + +หากผลลัพธ์ดูเป็นอักขระผสม, ตรวจสอบให้แน่ใจว่าภาพต้นฉบับชัดเจนและภาษาของ OCR ตรงกับข้อความ + +## Full Working Script + +รวมทุกอย่างเข้าด้วยกัน, นี่คือโปรแกรมที่พร้อมรันเต็มรูปแบบ: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Expected Output + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +หากคุณต้อง **convert scanned image text** ให้เป็น PDF ที่ค้นหาได้, คุณสามารถส่ง `ocr_result.text` ไปยังตัวสร้าง PDF อย่าง `reportlab`—แต่เรื่องนั้นเป็นบทแนะนำแยกอีกเรื่องหนึ่ง + +## Common Pitfalls & Pro Tips + +- **Low‑resolution scans**: OCR ทำงานได้ยากเมื่อความละเอียดต่ำกว่า 150 DPI. หาก TIFF ของคุณเบลอ, ให้อัป‑ซัมป์ก่อนด้วย Pillow (`Image.open(...).resize(...)`) +- **Multiple pages**: สำหรับ TIFF หลายหน้า, ให้วนลูป `Image.load_multi_page()` (ถ้าไลบรารีของคุณรองรับ) แล้วต่อผลลัพธ์เข้าด้วยกัน +- **Language support**: เครื่องส่วนใหญ่ตั้งค่าเริ่มต้นเป็นอังกฤษ. ตั้งค่า `ocr_engine.language = "spa"` เพื่อใช้ภาษาสเปนเป็นตัวอย่าง +- **Whitespace handling**: OCR มักเพิ่มบรรทัดว่างโดยไม่ตั้งใจ. ใช้ `str.splitlines()` หรือ regex เพื่อทำความสะอาดผลลัพธ์ +- **Performance**: หากต้องประมวลผลจำนวนมาก, ให้ใช้อินสแตนซ์ `OcrEngine` ตัวเดียวซ้ำ ๆ แทนการสร้างใหม่ทุกไฟล์ + +## Extending the Example + +ตอนนี้คุณได้เชี่ยวชาญ **how to ocr python** สำหรับภาพเดียวแล้ว, ลองทำขั้นตอนต่อไปนี้: + +1. **Batch processing** – วนลูปโฟลเดอร์ของ TIFFs แล้วเขียนผลลัพธ์แต่ละไฟล์ลง `.txt` +2. **Integration with Pandas** – เก็บข้อความที่สกัดไว้พร้อมเมตาดาต้าเพื่อการวิเคราะห์อย่างรวดเร็ว +3. **Hybrid approach** – ผสาน OCR กับไลบรารี NLP อย่าง `spaCy` เพื่อสกัดเอนทิตี (ชื่อ, วันที่, จำนวนเงิน) จากใบแจ้งหนี้ที่สแกน +4. **Alternative file formats** – แทนที่ `Image.load` ด้วย `Image.from_bytes` เพื่อจัดการภาพที่มาจาก API หรือฐานข้อมูล + +ทั้งหมดนี้ต่อยอดจากแนวคิดหลักของ **extract text from image** และ **convert scanned image text** ให้เป็นข้อมูลที่เครื่องคอมพิวเตอร์เข้าใจได้ + +## Conclusion + +เราได้เดินผ่าน **basic OCR example** อย่างชัดเจนจากต้นจนจบ ที่แสดง **how to ocr python**, วิธี **read tiff file python**, และวิธี **extract text from image** ด้วยเพียงไม่กี่บรรทัดสคริปต์. สคริปต์นี้เป็นอิสระ, มีการจัดการข้อผิดพลาด, และพิมพ์ผลลัพธ์โดยตรง, ทำให้เป็นพื้นฐานที่มั่นคงสำหรับโครงการใด ๆ ที่ต้องแปลงเอกสารสแกนเป็นข้อความที่แก้ไขได้ + +ลองทดลองเปลี่ยน backend OCR, ปรับการเตรียมภาพ, หรือเชื่อมต่อผลลัพธ์กับ workflow ถัดไป. ท้องฟ้าเป็นขอบเขตเมื่อคุณสามารถ **convert scanned image text** ให้เป็นข้อมูลที่ค้นหาได้อย่างมั่นใจ + +มีคำถามเกี่ยวกับกรณีขอบ, แพ็คภาษาต่าง ๆ, หรือการปรับประสิทธิภาพ? แสดงความคิดเห็นด้านล่าง, แล้วขอให้เขียนโค้ดอย่างสนุกสนาน! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/thai/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..b5f0ee536 --- /dev/null +++ b/ocr/thai/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,180 @@ +--- +category: general +date: 2026-04-26 +description: วิธีใช้ OCR กับแบบฟอร์มที่สแกน, เรียนรู้การเตรียมภาพล่วงหน้าเพื่อลดสัญญาณรบกวน, + และดึงข้อความจากภาพอย่างรวดเร็ว. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: th +og_description: วิธีรัน OCR บนเอกสารที่สแกน, เตรียมภาพล่วงหน้า, ลดสัญญาณรบกวน, และสกัดข้อความอย่างมีประสิทธิภาพ. +og_title: วิธีรัน OCR และทำการประมวลผลล่วงหน้าภาพ – คู่มือสั้น +tags: +- OCR +- image processing +- Python +title: วิธีใช้ OCR และทำการประมวลผลภาพล่วงหน้า – ดึงข้อความจากแบบฟอร์มที่สแกน +url: /th/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีการรัน OCR – คู่มือครบขั้นตอนสำหรับการสกัดข้อความจากรูปภาพ + +เคยสงสัย **วิธีการรัน OCR** บนแบบฟอร์มสแกนที่รกและต้องการข้อความที่สะอาดและค้นหาได้หรือไม่? คุณไม่ได้เป็นคนเดียว ในหลายโครงการจริง ๆ ภาพดิบเต็มไปด้วยจุดรบกวน แสงไม่สม่ำเสมอ และข้อบกพร่องอื่น ๆ ที่ทำให้ OCR ที่ใช้โดยตรงล้มเหลว + +ข่าวดีคือ? ด้วยเพียงไม่กี่บรรทัดของ Python และ pipeline การเตรียมข้อมูลอัจฉริยะ คุณสามารถเพิ่มความแม่นยำของการจดจำได้อย่างมาก **ลดสัญญาณรบกวน** และดึงคำที่ต้องการออกมาได้อย่างแม่นยำ ในบทแนะนำนี้เราจะเดินผ่านทุกขั้นตอน—from การโหลดรูปภาพจนถึงการพิมพ์สตริงสุดท้าย—เพื่อให้คุณได้สคริปต์พร้อมใช้ที่สามารถปรับใช้กับใบแจ้งหนี้ ใบเสร็จ หรือเอกสารสแกนใด ๆ + +## สิ่งที่คุณจะสร้าง + +- อินสแตนซ์ `OcrEngine` ที่สื่อสารกับไลบรารี OCR ภายใน +- เชนการเตรียมข้อมูลที่ **ทำให้เป็นไบนารี** (binarizes) รูปภาพและใช้ **median blur** เพื่อลดจุดรบกวน +- การเรียก `process()` อย่างง่ายที่คืนอ็อบเจ็กต์ที่มี `text` ซึ่งเป็นสตริงที่สกัดออกมา + +เมื่อเสร็จสิ้นคุณจะมีสคริปต์อิสระที่สามารถรันบนไฟล์รูปภาพใดก็ได้และเห็นข้อความที่สกัดออกมาทันทีในคอนโซล + +## ข้อกำหนดเบื้องต้น + +- Python 3.9+ (ไวยากรณ์ที่ใช้ตรงกับเวอร์ชันเสถียรล่าสุด) +- แพ็กเกจสมมติ `aocr` – คิดว่าเป็น wrapper เบา ๆ รอบ Tesseract หรือ OCR engine สมัยใหม่ใด ๆ ติดตั้งด้วย `pip install aocr` +- รูปสแกน (`scanned_form.jpg`) ที่วางไว้ในโฟลเดอร์ที่คุณอ้างอิงได้ + +หากคุณใช้ไลบรารี OCR จริง ๆ เช่น `pytesseract` คุณสามารถเปลี่ยน `OcrEngine` เป็นคลาสที่เหมาะสม—ส่วนอื่น ๆ ยังคงเหมือนเดิม + +![](how-to-run-ocr-example.png "ตัวอย่างการรัน OCR แสดงแบบฟอร์มสแกนและข้อความที่สกัดออกมา") + +*Alt text: วิธีการรัน OCR บนเอกสารสแกนและดูข้อความที่สกัดออกมา.* + +--- + +## ขั้นตอนที่ 1: วิธีการรัน OCR – เริ่มต้น Engine + +ก่อนที่ engine จะอ่านอะไรได้ เราต้องสร้างอินสแตนซ์ก่อน คิดว่า `OcrEngine` คือสมองที่จะตีความข้อมูลภาพต่อไป + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **ทำไมจึงสำคัญ:** การสร้างอินสแตนซ์ engine จะตั้งค่าโมเดลภายใน โหลดแพ็คภาษา และเตรียมสภาพแวดล้อมการทำงาน การข้ามขั้นตอนนี้มักทำให้เกิดข้อผิดพลาด `NoneType` เมื่อคุณเรียก `process()` ต่อไป + +--- + +## ขั้นตอนที่ 2: วิธีการเตรียมภาพ – โหลดแบบฟอร์มสแกนของคุณ + +เมื่อสมองพร้อมแล้ว เราจะป้อนรูปภาพให้มัน รูปภาพสามารถเป็นฟอร์แมตใดก็ได้ที่ `aocr.Image` รองรับ + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **เคล็ดลับ:** ใช้เส้นทางแบบ absolute ระหว่างการพัฒนาเพื่อหลีกเลี่ยงข้อผิดพลาด “file not found” เมื่อสคริปต์รันจากไดเรกทอรีทำงานที่ต่างกัน + +--- + +## ขั้นตอนที่ 3: วิธีการลดสัญญาณรบกวน – ใช้ Binarization & Median Blur + +สแกนดิบมักมีจุดกระจาย พื้นหลังไม่สม่ำเสมอ หรือเงาอ่อน ๆ เทคนิคคลาสสิกสองอย่าง—**binarization** และ **median blur**—จะทำความสะอาดโดยไม่ทำลายขอบที่กำหนดอักขระ + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### เจาะลึกเพิ่มเติม + +- **Binarization**: ค่า `threshold=180` บอกอัลกอริทึมว่า “ทุกอย่างที่สว่างกว่า 180 จะเป็นสีขาว; ส่วนที่เหลือเป็นสีดำ” ปรับค่านี้หากสแกนของคุณมืดหรือสว่างเกินไป +- **Median Blur**: รัศมี `2` หมายถึงฟิลเตอร์ดูหน้าต่างพิกเซล 5×5 และแทนค่าพิกเซลศูนย์กลางด้วยค่ามัธยฐาน ซึ่งช่วยลบจุดรบกวนแยกส่วนโดยคงเส้นของตัวอักษรไว้ + +> **กรณีขอบ:** หากเอกสารของคุณมีไฮไลท์สี การใช้ binary threshold ธรรมดาอาจทำให้สีเหล่านั้นหายไป ในกรณีนั้นลองใช้ `aocr.ImageFilters.adaptive_threshold()` แทน—มันจะปรับค่าตัดขอบแบบโลคัลทั่วภาพ + +--- + +## ขั้นตอนที่ 4: วิธีการสกัดข้อความ – รันกระบวนการ OCR + +เมื่อมีภาพที่สะอาดแล้ว เราก็ให้ engine ทำเวทมนตร์ของมัน + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **เกิดอะไรขึ้นเบื้องหลัง?** Engine จะรัน neural network (หรือ pattern matcher รุ่นเก่า) บนเมทริกซ์พิกเซล แปลง glyph ที่จดจำได้เป็นอักขระ Unicode แล้วประกอบเป็นบรรทัดและย่อหน้า + +--- + +## ขั้นตอนที่ 5: วิธีการสกัดข้อความ – พิมพ์ผลลัพธ์ + +อ็อบเจ็กต์ `ocr_result` มีแอตทริบิวต์ `text` ที่สะดวกใช้งาน มาดูกันว่าเราได้อะไรบ้าง + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### ผลลัพธ์ที่คาดหวัง + +หากแบบฟอร์มสแกนมีเนื้อหา: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +คุณควรเห็นอะไรประมาณนี้: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +สังเกตว่า ขั้นตอนการเตรียมข้อมูลได้กำจัดจุดรบกวนที่ทำให้ “Amount” กลายเป็น “Am0unt” ก่อนหน้านี้ นั่นคือพลังของ **การลดสัญญาณรบกวน** ก่อน OCR + +--- + +## ข้อผิดพลาดทั่วไป & วิธีแก้ + +| อาการ | สาเหตุที่เป็นไปได้ | วิธีแก้เร็ว | +|---------|--------------|-----------| +| ตัวอักษรแปลก (เช่น “@#%”) | ภาพมืดหรือสว่างเกินไป | ปรับ `threshold` ใน `binarize()`; ลอง `adaptive_threshold` | +| คำหาย | สัญญาณรบกวนยังคงอยู่ | เพิ่ม `radius` สำหรับ `median_blur` หรือเพิ่มฟิลเตอร์ `gaussian_blur` | +| ภาษาไม่ถูกต้อง (เช่น ตัวอักษรอังกฤษกลายเป็นจีน) | โหลดแพ็คภาษาไม่ตรง | ส่ง `language="eng"` เมื่อสร้าง `OcrEngine()` หากไลบรารีรองรับ | +| การประมวลผลช้าไฟล์ขนาดใหญ่ | ความละเอียดสูง | ลดขนาดภาพก่อน: `aocr.ImageFilters.resize(width=1200)` ก่อนทำ binarization | + +--- + +## ก้าวต่อไป – ขั้นตอนต่อไปและหัวข้อที่เกี่ยวข้อง + +- **การประมวลผลเป็นชุด**: ห่อ logic ข้างบนในลูปเพื่อจัดการไฟล์หลายสิบไฟล์โดยอัตโนมัติ +- **ผลลัพธ์แบบโครงสร้าง**: ใช้ regular expressions บน `ocr_result.text` เพื่อดึงฟิลด์เช่น วันที่หรือจำนวนเงิน +- **ไลบรารีทางเลือก**: แทนที่ `aocr` ด้วย `pytesseract`—การเปลี่ยนแปลงโค้ดเกิดขึ้นเฉพาะที่ขั้นตอนการสร้าง engine เท่านั้น +- **วิธีการเตรียมภาพสำหรับ PDF**: แปลงแต่ละหน้า PDF เป็นภาพ แล้วใช้ pipeline เดียวกัน + +การต่อยอดเหล่านี้ทำให้คุณขยายโซลูชันจากแบบฟอร์มเดี่ยวไปสู่ pipeline การรับเอกสารระดับองค์กร + +--- + +## สรุป + +เราได้ครอบคลุม **วิธีการรัน OCR** ตั้งแต่ต้นจนจบ แสดง **วิธีการเตรียมภาพ** เพื่อ **ลดสัญญาณรบกวน** และสาธิต **วิธีการสกัดข้อความจากรูปภาพ** ด้วยสคริปต์ที่สะอาดและทำซ้ำได้ สิ่งที่ควรจำ? ตัวกรองง่าย ๆ ไม่กี่ตัว—binarization และ median blur—สามารถเปลี่ยนสแกนที่มีสัญญาณรบกวนให้กลายเป็นแหล่งข้อมูลที่เชื่อถือได้ ประหยัดเวลาทำความสะอาดด้วยมือหลายชั่วโมง + +ลองรันสคริปต์กับเอกสารของคุณ ปรับค่า threshold แล้วดูความแม่นยำเพิ่มขึ้น เมื่อพร้อมแล้วสำรวจการประมวลผลเป็นชุดหรือผสานผลลัพธ์เข้าสู่ฐานข้อมูลเพื่อสร้างคลังข้อมูลที่ค้นหาได้ Happy coding, and may your OCR always be spot‑on! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/thai/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..1653044e4 --- /dev/null +++ b/ocr/thai/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,197 @@ +--- +category: general +date: 2026-04-26 +description: เรียนรู้วิธีตั้งค่าไลเซนส์ใน Aspose OCR และวิธีตรวจสอบไลเซนส์ด้วยสคริปต์ + Python ที่กระชับ ทำตามคำแนะนำทีละขั้นตอนเพื่อการเปิดใช้งานที่ไม่มีปัญหา +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: th +og_description: วิธีตั้งค่าไลเซนส์ใน Aspose OCR และวิธีตรวจสอบไลเซนส์โดยใช้ Python + รับตัวอย่างที่สมบูรณ์และสามารถรันได้ในไม่กี่นาที +og_title: วิธีตั้งค่าไลเซนส์ใน Aspose OCR – คู่มือ Python อย่างรวดเร็ว +tags: +- Aspose OCR +- Python +- Licensing +title: วิธีตั้งค่าไลเซนส์ใน Aspose OCR – คู่มือ Python อย่างรวดเร็ว +url: /th/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีตั้งค่า License ใน Aspose OCR – คู่มือ Python อย่างรวดเร็ว + +เคยสงสัย **วิธีตั้งค่า license** สำหรับ Aspose OCR โดยไม่ต้องบิดหัวของคุณไหม? คุณไม่ได้เป็นคนเดียวที่เจอปัญหา นักพัฒนาส่วนใหญ่มักเจออุปสรรคครั้งแรกเมื่อต้องการเปิดใช้งานฟีเจอร์เต็มของไลบรารี แล้วก็ต้องเจอกับลายน้ำ “Trial version” ข่าวดีคือวิธีแก้ไขค่อนข้างตรงไปตรงมาและคุณสามารถตรวจสอบได้ทันที + +ในบทเรียนนี้เราจะอธิบาย **วิธีตั้งค่า license** *และ* **วิธีตรวจสอบ license** ด้วยสคริปต์ Python ขนาดเล็ก สุดท้ายคุณจะได้ตัวอย่างที่ทำงานและพิมพ์ “License OK” พร้อมเคล็ดลับหลายอย่างเพื่อหลีกเลี่ยงข้อผิดพลาดทั่วไป + +## ความต้องการเบื้องต้น + +ก่อนที่เราจะดำเนินการต่อ โปรดตรวจสอบว่าคุณมี: + +- Python 3.8+ ติดตั้งอยู่ (โค้ดทำงานบน 3.9, 3.10 และรุ่นใหม่กว่า) +- ไฟล์ license ของ Aspose OCR for Java (หรือ .NET) ที่ใช้งานได้ – ปกติชื่อ `Aspose.OCR.Java.lic` +- แพ็กเกจ `asposeocr` ติดตั้งแล้วผ่าน `pip install asposeocr` +- ความคุ้นเคยพื้นฐานกับการรันสคริปต์ Python จากบรรทัดคำสั่ง + +พร้อมหรือยัง? ดีมาก—มาเริ่มกันเลย + +## วิธีตั้งค่า License ใน Aspose OCR (ขั้นตอน 1) + +การตั้งค่า license จริง ๆ แล้วเป็นการทำงานสามบรรทัด แต่ละบรรทัดมีเหตุผล เราจะอธิบายเพื่อให้คุณเข้าใจ *ทำไม* เราต้องทำเช่นนั้น + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**ทำไมต้อง import `License`?** +คลาส `License` คือประตูที่บอกกับเอ็นจิน Aspose OCR ว่าคุณได้ชำระเงินสำหรับผลิตภัณฑ์แล้ว หากไม่ได้สร้างอินสแตนซ์ ไลบรารีจะถือว่าคุณกำลังใช้รุ่นทดลองอยู่เสมอ + +**ทำไมต้องสร้างอินสแตนซ์ `License`?** +การสร้างอินสแตนซ์ให้คุณได้ออบเจ็กต์ (`license_obj`) ที่สามารถเก็บพาธไปยังไฟล์ `.lic` ของคุณและนำไปใช้กับ runtime ต่อไป + +## วิธีตั้งค่า License ใน Aspose OCR – ระบุไฟล์ License + +ต่อไปเราจะชี้ออบเจ็กต์ไปยังไฟล์ license จริงบนดิสก์ + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**เคล็ดลับและเทคนิค:** + +- **พาธแบบ absolute vs. relative** – หากคุณรันสคริปต์จากโฟลเดอร์อื่น พาธแบบ absolute (`C:/licenses/...`) จะช่วยขจัดข้อผิดพลาด “file not found” +- **ตัวแปรสภาพแวดล้อม** – การเก็บพาธไว้ใน env var (`OCR_LICENSE_PATH`) จะทำให้ข้อมูลลับไม่ถูกเก็บใน source control: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## วิธีตรวจสอบ License – ยืนยันว่าการตั้งค่าสำเร็จ + +การตั้งค่า license เป็นเพียงครึ่งหนึ่งของการทำงาน; คุณต้องยืนยันว่าไลบรารีรับ license แล้ว ขั้นตอนการตรวจสอบนี้จึงสำคัญ + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +หากไฟล์ license หาย, เสียหาย, หรือไม่ตรงกัน `validate()` จะโยน exception การจับ exception นี้ทำให้คุณรายงานปัญหาได้อย่างชัดเจน + +## ตัวอย่างทำงานเต็มรูปแบบ (รวมทุกขั้นตอน) + +ด้านล่างเป็นสคริปต์ที่พร้อมรันเต็มรูปแบบ รันจากเทอร์มินัล (`python set_license.py`) แล้วคุณควรเห็นข้อความ “License OK” + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**ผลลัพธ์ที่คาดหวัง** + +``` +License OK +``` + +หากมีอะไรผิดพลาด คุณจะเห็นข้อความเช่น: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +ข้อความนั้นบอกคุณอย่างชัดเจนว่าต้องแก้อะไร – ไม่ต้องเดา + +## วิธีตรวจสอบ License – จัดการกับกรณีขอบที่พบบ่อย + +แม้จะใช้สคริปต์ข้างต้นแล้ว ยังมีสถานการณ์บางอย่างที่อาจทำให้คุณเจอปัญหา: + +| สถานการณ์ | สิ่งที่เกิดขึ้น | วิธีแก้ | +|-----------|----------------|----------| +| **พาธไฟล์พิมพ์ผิด** | `FileNotFoundError` จาก `set_license` | ตรวจสอบพาธอีกครั้ง; ใช้ `os.path.abspath()` เพื่อดีบัก | +| **ประเภทไฟล์ไม่ตรง** | Validation โยน “Invalid license format” | ตรวจสอบให้แน่ใจว่าใช้ไฟล์ `.lic` ที่ตรงกับรุ่นผลิตภัณฑ์ | +| **License หมดอายุ** | Validation โยน “License expired” | ต่ออายุ license กับ Aspose support แล้วแทนที่ไฟล์ | +| **รันในสภาพแวดล้อมที่จำกัด** (เช่น AWS Lambda) | Permission error | ให้สิทธิ์การอ่านกับไดเรกทอรีหรือฝัง license ไว้ในแพ็กเกจการดีพลอยเมนต์ | + +เคล็ดลับ: ห่อการเรียก `set_license` ด้วยบล็อก `try/except` ของคุณเอง หากต้องการแยกแยะระหว่างข้อผิดพลาด “ไฟล์ไม่พบ” กับ “รูปแบบไม่ถูกต้อง” + +## สรุปภาพรวม + +![how to set license in Aspose OCR example](/images/aspose-ocr-license.png "how to set license in Aspose OCR example") + +*ภาพหน้าจอแสดงสคริปต์พิมพ์ “License OK” หลังจากเปิดใช้งานสำเร็จ* + +## ข้อผิดพลาดทั่วไป & แนวปฏิบัติที่ดีที่สุด + +- **ห้ามคอมมิทไฟล์ license ไปยังรีโปสิตอรีสาธารณะ** ใช้ตัวแปรสภาพแวดล้อมหรือ secret manager (GitHub Secrets, Azure Key Vault) แทน +- **ตรวจสอบล่วงหน้า** วาง `license_obj.validate()` ทันทีหลัง `set_license` เพื่อดักจับข้อผิดพลาดก่อนทำ OCR ใด ๆ +- **ใช้ License object ซ้ำ** คุณต้องตั้งค่า license เพียงครั้งเดียวต่อโปรเซส; การเรียก OCR ต่อไปจะใช้ license ที่เปิดใช้งานโดยอัตโนมัติ +- **บันทึกพาธของ license (โดยไม่รวมชื่อไฟล์) ใน production** เพื่อช่วยการดีบักโดยไม่เปิดเผยไฟล์จริง + +## ขั้นตอนต่อไป – ขยาย Workflow OCR ของคุณ + +ตอนนี้คุณรู้ **วิธีตั้งค่า license** และ **วิธีตรวจสอบ license** แล้ว สามารถไปสู่ขั้นตอน OCR หลักได้: + +- **วิธีอ่านภาพ** – `Image.load("sample.png")` +- **วิธีดึงข้อความ** – `ocr_engine.recognize(image)` +- **วิธีกำหนดค่า OCR options** – ปรับตั้งค่า `OcrEngine` สำหรับภาษา, ความแม่นยำ ฯลฯ + +หัวข้อเหล่านี้ทั้งหมดอาศัยเอ็นจินที่เปิดใช้งาน license อย่างถูกต้อง ดังนั้นคุณจะไม่เห็นลายน้ำ trial อีกต่อไป + +## สรุป + +เราได้ครอบคลุมกระบวนการทั้งหมดของ **วิธีตั้งค่า license** สำหรับ Aspose OCR, แสดง **วิธีตรวจสอบ license**, และให้สคริปต์ที่ทำงานได้เต็มรูปแบบที่พิมพ์ “License OK” การจัดการข้อผิดพลาดตั้งแต่ต้นและการใช้ตัวแปรสภาพแวดล้อมช่วยให้แอปของคุณปลอดภัยและทนทาน + +มีคำถามเพิ่มเติมเกี่ยวกับ OCR, การจัดการ license, หรือการผสาน Aspose เข้ากับ pipeline ขนาดใหญ่? แสดงความคิดเห็นได้เลย, แล้วขอให้สนุกกับการเขียนโค้ด! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/thai/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..45b92a993 --- /dev/null +++ b/ocr/thai/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: วิธีใช้ OCR กับ PDF ที่สแกน, ดึงข้อความจาก PDF, ทำ OCR บน PDF, และแปลง + PDF ที่สแกนให้เป็นไฟล์ที่สามารถค้นหาได้ในไม่กี่ขั้นตอน. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: th +og_description: 'วิธีใช้ OCR ใน Python: เรียนรู้วิธีดึงข้อความจาก PDF, ทำ OCR บน PDF, + และแปลง PDF สแกนให้เป็นเอกสารที่สามารถค้นหาได้.' +og_title: วิธีใช้ OCR – คู่มือด่วนสำหรับการดึงข้อความจาก PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: วิธีใช้ OCR – ดึงข้อความจาก PDF ด้วย Python +url: /th/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีใช้ OCR – ดึงข้อความจาก PDF ด้วย Python + +เคยสงสัย **how to use OCR** ว่าจะดึงข้อความจากสัญญาที่สแกน, ใบเสร็จ, หรือ ebook อย่างไรไหม? คุณไม่ได้เป็นคนเดียว ในหลายโครงการจริง ๆ PDF ที่คุณได้รับเป็นเพียงภาพเท่านั้น, และหากไม่มี OCR คุณจะไม่สามารถค้นหา, ทำดัชนี, หรือวิเคราะห์เนื้อหาได้ + +ในบทแนะนำนี้เราจะเดินผ่านตัวอย่างที่สมบูรณ์และสามารถรันได้ซึ่งแสดง **how to use OCR**, วิธี **extract text from PDF**, และเหตุผลที่คุณอาจต้องการ **convert scanned PDF** ไฟล์ให้เป็นเอกสารที่สามารถค้นหาได้ เราจะครอบคลุมศิลปะที่ละเอียดอ่อนของ **loading PDF as image** เพื่อให้เครื่อง OCR มองเห็นทุกหน้าอย่างชัดเจน + +> **Quick preview:** เมื่อจบคุณจะมีสคริปต์ที่โหลด PDF หลายหน้า, รัน OCR บนแต่ละหน้า, และพิมพ์ข้อความที่ถูกจดจำ – ไม่ต้องใช้บริการภายนอก + +## สิ่งที่คุณต้องการ + +- Python 3.9+ (เวอร์ชันล่าสุดใดก็ได้ที่ทำงานได้) +- `aocr` package (หรือไลบรารี OCR ที่เข้ากันได้ซึ่งให้ `OcrEngine` และ `Image.load`) +- ไฟล์ PDF ที่สแกนที่คุณต้องการประมวลผล (เช่น `contract.pdf`) +- RAM ปริมาณพอสมควร (≈ 200 MB ต่อ PDF 100 หน้าโดยทั่วไปก็พอใช้) + +หากคุณยังไม่ได้ติดตั้งไลบรารี OCR, ให้รัน: + +```bash +pip install aocr +``` + +> **Pro tip:** ใช้ virtual environment เพื่อจัดการ dependencies ให้เป็นระเบียบ + +## ขั้นตอนที่ 1: Load PDF as Image – ส่วนแรกของปริศนา + +ก่อนที่ OCR จะทำงาน, PDF ต้องถูกแปลงเป็นภาพ นี่คือจุดที่คีย์เวิร์ดรอง **load pdf as image** เข้ามามีบทบาท + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*ทำไมเรื่องนี้สำคัญ:* `aocr.Image.load` จะทำการแรสเตอร์แต่ละหน้าของ PDF เป็นบิตแมปที่เครื่อง OCR เข้าใจ หากคุณข้ามขั้นตอนนี้และส่ง PDF ดิบเข้าไป, เครื่องจะเกิดข้อผิดพลาดเพราะคาดหวังข้อมูลพิกเซล ไม่ใช่ข้อมูลเวกเตอร์ + +> **Note:** เส้นทางสามารถเป็นแบบ absolute หรือ relative ได้ ตรวจสอบให้ไฟล์สามารถอ่านได้; หากไม่เช่นนั้นคุณจะเจอ `FileNotFoundError`. + +## ขั้นตอนที่ 2: Run OCR on PDF – แปลงพิกเซลเป็นอักขระ + +เมื่อ PDF อยู่ในรูปภาพแล้ว, เราสามารถ **run OCR on PDF** ได้ในที่สุด โค้ดต่อไปนี้จะประมวลผลทุกหน้าในครั้งเดียว: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*อะไรที่เกิดขึ้นภายใน?* `process_all_pages` จะวนลูปผ่านหน้าที่แรสเตอร์, ใช้โมเดล OCR, และคืนค่าเป็นรายการของอ็อบเจกต์ผลลัพธ์—หนึ่งต่อหนึ่งหน้า แต่ละผลลัพธ์มีข้อความที่จดจำได้, คะแนนความมั่นใจ, และกล่องขอบเขต (หากคุณต้องการใช้ต่อไป) + +## ขั้นตอนที่ 3: Extract Text from PDF – ดึงข้อความออกมา + +เมื่อมีผลลัพธ์ OCR อยู่ในมือ, การดึงข้อความธรรมดากลายเป็นเรื่องง่าย เราจะวนลูปผ่านหน้าและพิมพ์ผลลัพธ์, แสดงคีย์เวิร์ดรอง **extract text from pdf** + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**ผลลัพธ์ที่คาดหวัง** (ตัดทอนเพื่อความกระชับ): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +หากคุณต้องการข้อความเป็นสตริงเดียว, เพียงแค่ต่อกัน: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +ตอนนี้คุณได้ **extracted text from PDF** ด้วย OCR อย่างสำเร็จแล้ว + +## ขั้นตอนที่ 4: Convert Scanned PDF – ทำให้สามารถค้นหาได้ + +เครื่องมือ downstream หลายตัว (เช่น Elasticsearch หรือ SharePoint) คาดหวัง PDF ที่สามารถค้นหาได้ ไม่ใช่แค่ dump ของข้อความธรรมดา คุณสามารถฝังผลลัพธ์ OCR กลับเข้าไปใน PDF ดั้งเดิม, ทำให้ **convert scanned PDF** เป็นเวอร์ชันที่สามารถค้นหาได้ + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*ทำไมต้องทำ?* PDF ที่สามารถค้นหาได้จะรักษาเลย์เอาต์และภาพเดิมไว้พร้อมกับให้สามารถเลือกข้อความและทำดัชนีได้ — เป็นประโยชน์ทั้งสำหรับมนุษย์และเครื่อง + +## ปัญหาที่พบบ่อย & กรณีขอบ + +### PDF หลายหน้าใหญ่เกินหน่วยความจำ + +หาก PDF ของคุณมีหลายร้อยหน้า, การโหลดทั้งหมดพร้อมกันอาจทำให้ RAM หมด `aocr` library รองรับการโหลดแบบ lazy: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +แล้วประมวลผลหน้าแบบทีละหน้า: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### สแกนคุณภาพต่ำ + +ความแม่นยำของ OCR ลดลงอย่างมากเมื่อสแกนเบลอหรือคอนทราสต์ต่ำ ก่อนส่งภาพให้เครื่อง, ควรพิจารณาการประมวลผลล่วงหน้า: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### การสนับสนุนภาษา + +โดยค่าเริ่มต้นเครื่องจะสมมติเป็นภาษาอังกฤษ เพื่อ **run OCR on PDF** ในภาษาอื่น, ตั้งค่าโค้ดภาษา: + +```python +ocr_engine.language = "spa" # Spanish +``` + +ตรวจสอบให้แน่ใจว่าโมเดลภาษาที่สอดคล้องได้ถูกติดตั้ง + +## ตัวอย่างทำงานเต็มรูปแบบ + +รวมทุกอย่างเข้าด้วยกัน, นี่คือสคริปต์ที่เป็นอิสระที่คุณสามารถวางลงในไฟล์ชื่อ `ocr_pdf.py` และรันได้ทันที: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Run it like so: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +คุณจะเห็นข้อความพิมพ์บนคอนโซล, และหากคุณระบุ `-o`, PDF ที่สามารถค้นหาได้จะปรากฏข้างไฟล์ต้นฉบับ + +## เคล็ดลับมืออาชีพ & แนวปฏิบัติที่ดีที่สุด + +- **Batch processing:** เมื่อจัดการกับหลายสิบไฟล์ PDF, ให้ใส่ตรรกะข้างต้นในลูปและบันทึกผลสำเร็จ/ความล้มเหลวของแต่ละไฟล์ +- **Confidence filtering:** แต่ละ `page_result` มีเมตริกความมั่นใจ. ลบหรือทำเครื่องหมายหน้าที่มีความมั่นใจต่ำเพื่อการตรวจสอบด้วยมือ +- **Parallelism:** หาก CPU ของคุณมีหลายคอร์, พิจารณาใช้ `concurrent.futures` เพื่อประมวลผลหน้าพร้อมกัน—แต่ต้องระวังการใช้หน่วยความจำ +- **Version lock:** API ของ `aocr` อาจเปลี่ยนแปลง. ระบุเวอร์ชันใน `requirements.txt` (เช่น `aocr==2.3.1`) เพื่อหลีกเลี่ยงการเปลี่ยนแปลงที่ทำให้พัง + +## สรุป + +เราได้อธิบาย **how to use OCR** เพื่อ **extract text from PDF**, **run OCR on PDF**, **load PDF as image**, และแม้กระทั่ง **convert scanned PDF** ให้เป็นรูปแบบที่สามารถค้นหาได้ โค้ดสมบูรณ์, คำอธิบายครอบคลุมทั้ง *what* และ *why*, และตอนนี้คุณมีรูปแบบที่นำกลับไปใช้ใหม่ได้สำหรับโครงการใด ๆ ที่จัดการกับ PDF ที่เป็นภาพ + +ต่อไปคุณจะทำอะไร? ลองส่งข้อความที่ดึงมาไปยัง pipeline ประมวลผลภาษาธรรมชาติ, ทำดัชนี PDF ที่สามารถค้นหาได้ด้วย Elasticsearch, หรือทดลองใช้ OCR back‑ends ต่าง ๆ เช่น Tesseract หรือ Azure Computer Vision. ไม่มีขีดจำกัด, และเครื่องมืออยู่ในมือของคุณ + +ขอให้เขียนโค้ดอย่างสนุกสนาน, และขอให้ PDF ของคุณสามารถค้นหาได้เสมอ! + +![ตัวอย่างการใช้ OCR](/images/ocr_workflow.png "วิธีใช้ 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/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/thai/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..a927a480e --- /dev/null +++ b/ocr/thai/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,209 @@ +--- +category: general +date: 2026-04-26 +description: วิธีใช้ threading เพื่อโหลดรูปภาพสำหรับ OCR ใน Python. เรียนรู้การประมวลผล + OCR แบบอะซิงโครนัสด้วย callbacks, background threads, และการโหลดรูปภาพในไม่กี่ขั้นตอน. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: th +og_description: วิธีใช้ threading เพื่อโหลดรูปภาพสำหรับ OCR ใน Python คู่มือนี้แสดงตัวอย่างที่สมบูรณ์และสามารถรันได้พร้อมกับการเรียกกลับและการทำงานในพื้นหลัง +og_title: วิธีใช้ Threading เพื่อโหลดภาพสำหรับ OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: วิธีใช้การทำงานหลายเธรดเพื่อโหลดภาพสำหรับ OCR +url: /th/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# วิธีใช้ Threading เพื่อโหลด Image สำหรับ OCR + +เคยสงสัย **วิธีใช้ threading** เพื่อโหลดภาพสำหรับ OCR โดยไม่ทำให้แอปของคุณค้างหรือไม่? นี่คือสถานการณ์ที่มักเกิดขึ้นไม่ว่าจะคุณกำลังสร้างเครื่องสแกนเดสก์ท็อป, บริการเว็บ, หรือสคริปต์ง่าย ๆ ที่ต้องประมวลผลรูปภาพจำนวนมาก ข่าวดีคือ เพียงไม่กี่บรรทัดของ Python พร้อมแพทเทิร์น threading ที่เหมาะสม จะทำให้ UI ของคุณตอบสนองได้เร็วขณะที่เอนจิน OCR ทำงานอยู่ + +ในบทเรียนนี้เราจะเดินผ่านตัวอย่างครบวงจรจากต้นจนจบ: โหลด PNG ขนาดใหญ่, เริ่ม OCR บนเธรดพื้นหลัง, และจัดการผลลัพธ์ด้วย callback. เมื่อจบคุณจะไม่เพียงรู้ **วิธีใช้ threading** เท่านั้น แต่ยังรู้ **วิธีโหลด Image สำหรับ OCR** อย่างสะอาดและนำกลับมาใช้ใหม่ได้ + +## สิ่งที่คุณต้องเตรียม + +- Python 3.9+ (ไวยากรณ์ที่ใช้ทำงานได้กับเวอร์ชันล่าสุดทั้งหมด) +- `pillow` สำหรับจัดการภาพ (`pip install pillow`) +- `pytesseract` เป็น wrapper เบา ๆ รอบ Tesseract OCR (`pip install pytesseract`) +- ติดตั้ง Tesseract OCR engine บนเครื่องของคุณ (ดาวน์โหลดจาก [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- ไฟล์ภาพขนาดใหญ่ที่คุณต้องการประมวลผล (`large_image.png` ในคู่มือนี้) + +ไม่มีเฟรมเวิร์กเพิ่มเติม, ไม่มี async/await—แค่ `threading` คลาสสิกและ callback + +## Step 1: Import the Threading Module (Required for Background Execution) + +สิ่งแรกที่เราทำคือ import โมดูล `threading`. โมดูลนี้ให้คลาส `Thread` ที่ทำให้เรารันฟังก์ชันใด ๆ ในเธรดของระบบปฏิบัติการแยกออกมา + +```python +import threading +``` + +*ทำไมเรื่องนี้ถึงสำคัญ*: หากคุณรัน OCR บนเธรดหลัก โปรแกรมของคุณ (โดยเฉพาะ GUI) จะค้างจนกว่า OCR จะเสร็จ. การมอบหมายงานให้เธรดพื้นหลังทำให้เธรดหลักยังคงอิสระในการอัปเดต UI, รับอินพุตจากผู้ใช้, หรือเริ่มงานอื่นต่อไป + +## Step 2: Define a Callback That Will Be Invoked When OCR Finishes + +Callback คือฟังก์ชันที่โค้ดส่วนอื่นเรียกใช้เมื่อทำงานเสร็จ. ที่นี่เราจะพิมพ์ข้อความที่ OCR จดจำได้, แต่คุณก็สามารถเก็บไว้, ส่งผ่านเครือข่าย, หรืออัปเดตวิดเจ็ต UI ได้ + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*เคล็ดลับ*: ทำให้ callback มีน้ำหนักเบา. การประมวลผลหนักภายใน callback จะทำลายประโยชน์ของ threading เพราะมันยังคงบล็อกเธรดที่เรียก (มักจะเป็นเธรดหลัก) + +## Step 3: Load the Image You Want to Process + +การโหลดภาพเป็นเรื่องแยกจาก OCR, แต่ก็เป็นส่วนหนึ่งของ workflow ทั้งหมด. การใช้ Pillow ทำให้เรื่องนี้ง่ายมาก + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*ทำไมเราทำที่นี่*: หากภาพใหญ่ การโหลดบนเธรดหลักอาจทำให้เกิดการกระตุกแล้ว. ในแอปจริง ๆ คุณอาจย้ายการโหลดไปยังเธรดอีกอันหนึ่ง, แต่เพื่อความชัดเจนเราจะทำแบบ synchronous ที่นี่ + +## Step 4: Create a Small OCR Engine Wrapper + +โค้ดต้นฉบับใช้ `engine.process_async`. เราจะจำลองด้วยคลาสเล็ก ๆ ที่สร้างเธรดภายในและเรียก callback ที่ส่งมาเมื่อทำเสร็จ + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*คำอธิบาย*: +- `_run_ocr` ทำงานหนักจริง. +- `process_async` สร้างอ็อบเจ็กต์ `Thread`, ตั้งให้เป็น daemon (เพื่อให้ interpreter สามารถออกได้แม้เธรดยังทำงาน), แล้วเริ่มเธรด. +- Callback จะได้รับข้อความ OCR หรือข้อความข้อผิดพลาด + +## Step 5: Tie Everything Together and Do Other Work While OCR Runs + +ตอนนี้เราจะจัดระเบียบ flow ทั้งหมด: โหลดภาพ, สร้างอินสแตนซ์ของ engine, เริ่ม OCR แบบ async, แล้วให้เธรดหลักทำอย่างอื่นต่อ (ที่นี่เราจะพิมพ์ข้อความ) + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**ผลลัพธ์ที่คาดหวัง (ตัดทอนเพื่อความกระชับ):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +หาก OCR ล้มเหลว, callback จะพิมพ์ข้อความข้อผิดพลาดแทนข้อความผลลัพธ์ + +--- + +## ทำไมวิธีนี้จึงดีกว่าการวนลูปแบบธรรมดา + +- **Responsiveness**: เธรดหลักไม่บล็อกการเรียก OCR, ซึ่งอาจใช้เวลาหลายนาทีสำหรับภาพขนาดใหญ่ +- **Scalability**: คุณสามารถสปินหลายอินสแตนซ์ของ `SimpleOcrEngine`, แต่ละอันทำงานบนเธรดของตนเอง เพื่อประมวลผลชุดภาพพร้อมกัน +- **Separation of Concerns**: การโหลด, การประมวลผล, และการจัดการผลลัพธ์ถูกแยกออกอย่างชัดเจน ทำให้โค้ดง่ายต่อการทดสอบและบำรุงรักษา + +## ข้อผิดพลาดทั่วไปและวิธีหลีกเลี่ยง + +| Pitfall | What Happens | Fix | +|---------|--------------|-----| +| Forgetting to mark the thread as *daemon* | สคริปต์ค้างหลังจากงานหลักเสร็จ เพราะเธรด OCR ยังคงทำงานอยู่ | ตั้ง `worker.daemon = True` **หรือ** `join()` เธรดก่อนออกจากโปรแกรม | +| Using a global variable for the result without locks | สภาพการแข่งขัน (race condition) ทำให้ข้อมูลเสียหายเมื่อหลายเธรดเขียนพร้อมกัน | ส่งผลลัพธ์ผ่าน callback (เช่นทำ) หรือใช้คอนเทนเนอร์ที่ปลอดเธรดเช่น `queue.Queue` | +| Loading a massive image on the main thread | UI ค้างก่อนที่ OCR พื้นหลังจะเริ่มทำงาน | ย้ายการโหลดภาพไปยังเธรดอีกอันหนึ่ง, หรือใช้เทคนิค lazy loading | +| Not handling exceptions inside the worker thread | ข้อผิดพลาดที่ไม่จับจะทำให้เธรดตายโดยเงียบ, ไม่ได้ผลลัพธ์ใด ๆ | ห่อโลจิก OCR ด้วย `try/except` แล้วส่งข้อผิดพลาดไปยัง callback | + +## การต่อยอดรูปแบบนี้ + +- **Progress Reporting**: ใช้ `queue.Queue` ร่วมกันเพื่อส่งเปอร์เซ็นต์ความคืบหน้าแบบกึ่งเรียลไทม์จากเธรด OCR ไปยังเธรดหลัก +- **Thread Pool**: สำหรับการประมวลผลเป็นชุด, แทนที่การสร้าง `Thread` แยก ๆ ด้วย `concurrent.futures.ThreadPoolExecutor` +- **GUI Integration**: ในแอป Tkinter หรือ PyQt, ให้กำหนดเวลาเรียก callback ด้วย `after()` (Tkinter) หรือ `QTimer.singleShot` (Qt) เพื่อให้การอัปเดต UI เกิดบนเธรดหลัก + +## Full Working Example (Copy‑Paste Ready) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/turkish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..838990c66 --- /dev/null +++ b/ocr/turkish/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,248 @@ +--- +category: general +date: 2026-04-26 +description: Python Aspose OCR kullanarak başlık metnini OCR ile çıkarın. Görüntülerden + belirli bir alanın metnini hızlı ve güvenilir bir şekilde nasıl çıkaracağınızı öğrenin. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: tr +og_description: Başlık metnini OCR ile hızlıca çıkarın. Bu kılavuz, Python Aspose + OCR kullanarak belirli bir alanın metnini sadece birkaç satırda nasıl çıkaracağınızı + gösterir. +og_title: Python Aspose OCR ile Başlık Metnini Çıkarma – Tam Kılavuz +tags: +- OCR +- Python +- Aspose +title: Python Aspose OCR ile Başlık Metnini Çıkarma – Adım Adım Rehber +url: /tr/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Başlık Metnini OCR ile Çıkarma – Tam Python Aspose OCR Öğreticisi + +Hiç taranmış bir faturadan **başlık metnini OCR** ile çıkarmak istediniz ama tüm sayfayı işlemek istemediniz mi? Tek başınıza değilsiniz. Gerçek dünyadaki birçok işlem hattında başlık, fatura numarası, tarih, satıcı adı gibi en kritik bilgileri içerir—bu bölümü hızlıca çıkarmak, sonraki işleri büyük ölçüde azaltabilir. + +Bu öğreticide, **Python Aspose OCR** kütüphanesini kullanarak **belirli bir alanın metnini** çıkartan hazır bir çözümü göstereceğiz. Dış dökümantasyon referansları yerine, eksiksiz bir betik, her satırın net açıklaması ve yarın hemen kullanabileceğiniz ipuçları bulacaksınız. + +## Öğrenecekleriniz + +- Python için Aspose OCR paketinin nasıl kurulup içe aktarılacağını. +- Görüntüyü nasıl yükleyeceğinizi ve başlığı izole eden bir **ilgi bölgesi (ROI)** nasıl tanımlayacağınızı. +- OCR motorunu bu ROI üzerinde çalıştırıp temiz metni nasıl alacağınızı. +- Yaygın tuzaklar (ör. DPI uyumsuzlukları) ve bunlardan nasıl kaçınılacağını. +- Beklenen çıktının nasıl göründüğünü, böylece her şeyin doğru çalıştığını nasıl doğrulayacağınızı. + +Bu bölümü tamamladığınızda, faturalar, makbuzlar veya öngörülebilir bir düzeni olan herhangi bir belgede **başlık metnini OCR** ile çıkarmak için bu kodu herhangi bir projeye ekleyebileceksiniz. + +## Ön Koşullar + +- Makinenizde yüklü Python 3.8 veya daha yeni bir sürüm. +- Geçerli bir Aspose OCR for Python lisansı (ücretsiz deneme sürümü değerlendirme için yeterlidir). +- Açık bir başlık bölgesi içeren bir görüntü dosyası (`invoice.png`). +- Python fonksiyonları ve dosya yolları konusunda temel bilgi. + +> **Pro ipucu:** Düşük çözünürlüklü bir tarama ile test yapıyorsanız, Aspose OCR’a vermeden önce DPI’yı artırın – bu, doğruluğu büyük ölçüde artırır. + +--- + +## Adım 1: Aspose OCR Paketini Kurun + +İlk olarak, kütüphaneyi ortamınıza ekleyin. Resmi paket `aspose-ocr`. Bunu bir kez çalıştırın: + +```bash +pip install aspose-ocr +``` + +Sanal ortam (virtual environment) kullanıyorsanız (şiddetle tavsiye edilir), kurulumdan önce onu etkinleştirin. Böylece paket diğer projelerle çakışmaz. + +## Adım 2: Gerekli Sınıfları İçe Aktarın ve Görüntüyü Yükleyin + +Şimdi gerekli sınıfları betiğimize dahil edip fatura görüntüsünü yüklüyoruz. **Tam yollar** kullanımına dikkat edin; göreli yollar da çalışır, ancak mutlak yollar sunucuda çalıştırıldığında belirsizliği ortadan kaldırır. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Neden Önemli:** `OcrEngine`i bir kez başlatıp birden çok görüntüde yeniden kullanmak, her seferinde yeni bir motor oluşturmak yerine daha verimlidir. + +## Adım 3: Başlık Bölgesini (ROI) Tanımlayın + +Başlık genellikle sayfanın üst kısmında yer alır, ancak kesin koordinatlar değişebilir. Burada başlığı kapsayan bir dikdörtgen (`x`, `y`, `width`, `height`) tanımlıyoruz. Sayfanıza göre sayıları ayarlayın. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Nasıl Çalışır:** `set_roi` metodunu çağırarak OCR motorunun analizini bu dikdörtgene sınırlandırıyoruz; bu, işleme süresini büyük ölçüde hızlandırır ve sayfanın geri kalanındaki gürültüyü azaltır. + +## Adım 4: ROI’yi Uygulayın ve OCR’ı Çalıştırın + +Şimdi motoru başlık bölgesine odaklamasını söylüyor ve OCR sürecini yürütüyoruz. Sonuç nesnesi tanınan metni ve ek meta verileri (güven skorları, dil vb.) içerir. + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +OCR başarısız olursa (ör. desteklenmeyen görüntü formatı), `ocr_result` `None` olur. Hızlı bir guard clause eklemek betiğinizi daha dayanıklı kılar: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Adım 5: Çıkarılan Başlık Metnini Alın ve Yazdırın + +Son olarak, sonuç nesnesinden metni çekip ekrana bastırıyoruz. Metni bir dosyaya yazabilir veya başka bir fonksiyona aktararak daha fazla ayrıştırma yapabilirsiniz. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Beklenen Çıktı + +Her şey doğru ayarlandıysa, aşağıdakine benzer bir çıktı görmelisiniz: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Çıktı bozuk görünüyorsa, ROI koordinatlarını yeniden kontrol edin ve kaynak görüntünün yüksek kontrastlı olduğundan emin olun. + +--- + +## Varyasyonlar ve Kenar Durumlar + +### 1. Tek Bir Belgede Birden Çok Başlık + +Bazen bir PDF birden fazla sayfa içerir ve her sayfanın kendi başlığı vardır. Sayfalar üzerinde döngü kurup ROI’yi sayfaya göre ayarlayın: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Eğik Taramalarla Baş Etme + +Fatura hafifçe döndürülmüşse, Aspose OCR’a vermeden önce görüntüyü OpenCV ile ön‑işlemden geçirin: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Dil Ayarlarını Değiştirme + +Aspose OCR dili otomatik algılayabilir, ancak daha hızlı sonuçlar için İngilizceyi zorlayabilirsiniz: + +```python +ocr_engine.language = "en" +``` + +--- + +## Tam Çalışan Örnek + +Aşağıda `extract_header.py` adlı bir dosyaya kopyalayıp yapıştırabileceğiniz eksiksiz betik yer alıyor. Görüntü yolunu kendi dosyanıza göre güncellemeyi unutmayın. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Bu betiği çalıştırdığınızda, daha önce gösterildiği gibi başlık satırlarını tam olarak alacaksınız. `roi` değerlerini kendi fatura şablonunuza göre ayarlamaktan çekinmeyin. + +--- + +## Sık Sorulan Sorular + +**S: Bu doğrudan PDF’lerle çalışır mı?** +C: Kutudan çıkmaz. Her PDF sayfasını bir görüntüye (ör. `pdf2image` kullanarak) dönüştürün, ardından PNG/JPG’yi betiğe verin. + +**S: Başlığımda logo ve metin birlikte mi?** +C: Aspose OCR yalnızca metin içeriğine odaklanır. Logolar için ayrı bir görüntü tanıma kütüphanesi (örn. `opencv` veya `tesseract` ile özel model) kullanın. + +**S: Ücretsiz deneme sürümü sınırlı mı?** +C: Deneme ayda 10 sayfayla sınırlıdır. Üretim ortamı için lisans satın alarak sınırlamayı kaldırabilir ve daha yüksek doğruluk ayarlarını açabilirsiniz. + +--- + +## Sonuç + +Artık **Python Aspose OCR** kullanarak **başlık metnini OCR** ile çıkarmak için **tam, kaynakça eklenebilir** bir kılavuzunuz var. Öğreticide kurulumdan kenar durumların ele alınmasına kadar her şeyi kapsadık ve yeniden kullanılabilir bir fonksiyon sunduk. + +Sonraki adım olarak, alt bilgi veya satır‑kalemleri gibi diğer bölgeler için **belirli alan metni çıkarma** işlemini keşfedebilir ya da bu yaklaşımı bir PDF‑to‑image dönüştürücüyle birleştirerek tam‑belge otomasyon hatları oluşturabilirsiniz. Olasılıklar sınırsız—sadece ROI koordinatlarınızı doğru tutun ve görüntülerinizin yüksek çözünürlükte olduğundan emin olun. + +Zor bir düzen mi var? Yorumlarda paylaşın, ROI’yi birlikte ayarlayalım. Mutlu 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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/turkish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..a3a09a781 --- /dev/null +++ b/ocr/turkish/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-26 +description: Aspose OCR'i Python'da kullanarak görüntüden metin çıkarın. Metni nasıl + çıkaracağınızı, görüntüyü metne nasıl dönüştüreceğinizi ve çok dilli destekle OCR + için görüntüyü nasıl yükleyeceğinizi öğrenin. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: tr +og_description: Görüntüden anında metin çıkarın. Bu kılavuz, metni nasıl çıkaracağınızı, + görüntüyü metne nasıl dönüştüreceğinizi ve Aspose OCR kullanarak Python’da OCR için + görüntüyü nasıl yükleyeceğinizi gösterir. +og_title: Python ile görüntüden metin çıkarma – Tam Çok Dilli OCR Eğitimi +tags: +- OCR +- Python +- Aspose +title: Python ile görüntüden metin çıkarma – Çok Dilli OCR Rehberi +url: /tr/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python ile Görüntüden Metin Çıkarma – Çok Dilli OCR Rehberi + +Görselden **metin çıkarmak** istediğinizde, karışık‑dilli sayfaları işleyebilecek bir kütüphane bulamadığınız oldu mu? Tek başınıza değilsiniz. Gerçek dünyadaki birçok uygulamada—fatura işleme, sosyal medya izleme veya çok dilli belge arşivleme gibi—Latin ve Kiril karakterlerini aynı anda içeren resimlerle karşılaşırsınız. + +İyi haber? Aspose OCR for Python ile sadece birkaç satır kod yazarak **metin çıkarabilir**, **görseli metne dönüştürebilir** ve **görseli OCR için yükleyebilirsiniz**, tüm bunları motorun dili otomatik algılamasına bırakabilirsiniz. Bu öğreticide, çalıştırılabilir bir örnek üzerinden adım adım ilerleyecek, her adımın neden önemli olduğunu açıklayacak ve yolda karşılaşabileceğiniz birkaç uç durumu ele alacağız. + +> **Neler Öğreneceksiniz** +> * Karışık‑dilli bir PNG dosyasından metin çeken, doğrudan çalıştırılabilir bir betik. +> * Python’da çok dilli OCR nasıl yapılandırılır, bunu anlayacaksınız. +> * Büyük dosyalar, farklı görsel formatları ve yaygın hataların giderilmesi için ipuçları. + +## Prerequisites + +- Python 3.8 ve üzeri (kod f‑string kullanıyor). +- `asposeocr` paketi kurulu (`pip install asposeocr`). +- Bir görsel dosyası (ör. `mixed_lang.png`) ve içinde birden fazla alfabeden metin bulunmalı. +- Python importları ve nesne‑yönelimli API’lar hakkında temel bilgi. + +Ağır bağımlılıklar yok, harici servisler yok—tek bir pip kurulumu yeterli ve hemen başlayabilirsiniz. + +--- + +## Step 1 – Install & import the Aspose OCR library + +Before we can **load image for OCR**, we need the library itself. The package ships with the core OCR engine and a lightweight image loader. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Why this matters*: Importing the specific classes keeps the namespace tidy and makes the later code clearer. If you only import `asposeocr`, you’ll have to qualify every call (`aocr.OcrEngine()`), which can be noisy. + +*Bu neden önemli*: Belirli sınıfları içe aktarmak ad alanını temiz tutar ve sonraki kodu daha anlaşılır hâle getirir. Sadece `asposeocr` içe aktarırsanız, her çağrıyı (`aocr.OcrEngine()`) nitelendirmeniz gerekir ve bu kodu gürültülü yapar. + +--- + +## Step 2 – Create the OCR engine and enable multilingual detection + +Aspose OCR can automatically guess the language(s) present in the image. Setting `Language.AUTO` covers Latin, Cyrillic, Arabic, and many more. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Pro tip*: If you know the language set in advance, you can assign `Language.ENGLISH` or `Language.RUSSIAN` for a tiny performance boost. But for truly mixed documents, `AUTO` is the safest bet. + +*İpucu*: Dil setini önceden biliyorsanız, `Language.ENGLISH` ya da `Language.RUSSIAN` atayarak ufak bir performans artışı elde edebilirsiniz. Ancak gerçekten karışık belgeler için `AUTO` en güvenli seçimdir. + +--- + +## Step 3 – Load the image you want to process + +Here’s where we **load image for OCR**. Aspose supports PNG, JPEG, BMP, TIFF, and even PDF pages treated as images. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Tip**: If your image is larger than 2 MB, consider resizing it beforehand. Large images increase memory usage and can slow down the detection step. + +> **İpucu**: Görseliniz 2 MB’dan büyükse, önceden yeniden boyutlandırmayı düşünün. Büyük görseller bellek kullanımını artırır ve algılama adımını yavaşlatabilir. + +--- + +## Step 4 – Run the OCR process and capture the result + +Calling `process()` does the heavy lifting: text detection, layout analysis, and language decoding. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +The returned `ocr_result` object contains several useful properties: + +| Property | Description | +|----------|-------------| +| `text` | Plain string of the recognized text (what you’ll most often use). | +| `confidence` | Overall confidence score (0‑100). | +| `lines` | List of `OcrLine` objects with positional data (great for PDFs). | + +| Özellik | Açıklama | +|----------|-------------| +| `text` | Tanınan metnin düz stringi (en sık kullanacağınız). | +| `confidence` | Genel güven skorları (0‑100). | +| `lines` | Pozisyon verileri içeren `OcrLine` nesnelerinin listesi (PDF’ler için harika). | + +--- + +## Step 5 – Display the extracted text + +Finally, we print the output. In a real application you might write it to a database or feed it into a translation API. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Expected output** (example for a mixed‑language image): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +If you see garbled characters, double‑check that the image is not corrupted and that you’re using the latest version of `asposeocr` (v23.7 at the time of writing). + +Eğer bozuk karakterler görürseniz, görselin bozulmadığını ve `asposeocr` paketinin (yazım anındaki sürüm v23.7) en yeni sürümünü kullandığınızı bir kez daha kontrol edin. + +--- + +## Step 6 – Full script you can copy‑paste + +Putting it all together eliminates the “where does the code start?” confusion. Save this as `multilingual_ocr.py` and run it from the command line. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Run it: + +```bash +python multilingual_ocr.py +``` + +You should see the extracted strings printed to the console. That’s it—**convert image to text** with just a handful of lines. + +--- + +## Common questions & edge‑case handling + +### What if my image contains handwriting? +Aspose OCR is tuned for printed text. Handwritten scripts often need a dedicated model (e.g., Azure Read or Google Vision). You can still try `Language.AUTO`, but expect lower confidence. + +### How do I improve accuracy on noisy scans? +1. Pre‑process the image (binarization, despeckling). +2. Increase DPI to at least 300 ppi before feeding it to the engine. +3. Explicitly set `ocr_engine.config.deskew = True` if the image is skewed. + +```python +ocr_engine.config.deskew = True +``` + +### Can I extract text from a PDF without converting it to an image first? +Yes—Aspose OCR can open PDF pages directly: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Just remember that each page is treated as an image internally, so the same quality considerations apply. + +--- + +## Conclusion + +You now have a solid, end‑to‑end recipe to **extract text from image** using Aspose OCR in Python, complete with multilingual support. The script demonstrates how to **load image for OCR**, **convert image to text**, and handle the most common pitfalls. + +From here you might: + +- Integrate the function into a web service that accepts user uploads. +- Pair the extracted text with a language‑detection library to route it to the right translation engine. +- Experiment with `ocr_engine.config` options (e.g., `max_recognition_time`, `text_orientation`) to fine‑tune performance. + +Happy coding, and may your OCR pipelines be ever accurate! + +--- + +![Screenshot of extracted multilingual text – extract text from image example](image-placeholder.png "extract text from 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/turkish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/turkish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..5ce216b70 --- /dev/null +++ b/ocr/turkish/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,234 @@ +--- +category: general +date: 2026-04-26 +description: Belgelerinizi toplu OCR ile işleyip taramalardan metin çıkarmayı Python’da + nasıl yapacağınızı öğrenin. JSON çıktısı için OcrEngine ile adım adım toplu işleme + öğrenin. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: tr +og_description: Taradığınız dosyaları toplu OCR ile işleyip taramalardan tek bir betik + içinde metin çıkarmanın yolu. Tam kod, ipuçları ve uç durum yönetimi. +og_title: Batch OCR Nasıl Yapılır – Hızlı Python Rehberi +tags: +- OCR +- Python +- Automation +title: Toplu OCR Nasıl Yapılır – Taramalardan Metni Verimli Şekilde Çıkarma +url: /tr/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Toplu OCR Nasıl Yapılır – Taramalardan Metin Verimli Şekilde Çıkarma + +Hiç **toplu OCR** yaparak bir dağ taranmış PDF'yi aklınızı kaybetmeden nasıl işleyebileceğinizi merak ettiniz mi? Tek başınıza değilsiniz—geliştiriciler sürekli olarak, *“Taramalardan metni tek seferde nasıl çıkarabilirim?”* sorusunu soruyor. İyi haber şu ki, birkaç satır Python bu zahmetli işi sorunsuz, otomatik bir akışa dönüştürebilir. + +Bu öğreticide, **taramalardan metin çıkaran**, sonuçları JSON olarak kaydeden ve sonunda hızlı bir kontrol sağlayan, tamamen çalıştırılabilir bir çözümü adım adım inceleyeceğiz. Harici hizmetler yok, sihir yok—sadece saf Python, `OcrEngine` sınıfı ve biraz klasör yönetimi. + +## Ne Kazanacaksınız + +- Görüntü klasöründeki herhangi bir dosya için **toplu OCR** yapan tam işlevsel bir betik. +- Her satırın *neden* var olduğunu açıklayan net açıklamalar, sadece *ne* yaptığını değil. +- Boş klasörler, görüntü olmayan dosyalar ve büyük partilerle başa çıkma ipuçları. +- JSON çıktısının gerçekten çıkarılan metni içerdiğini doğrulamanın bir yolu. + +### Önkoşullar (en temel gereksinimler) + +| Gereksinim | Neden Önemli | +|------------|--------------| +| Python 3.8+ | Modern sözdizimi ve tip ipuçları | +| `OcrEngine` library (or a compatible wrapper) | Çekirdek OCR işlevselliği | +| Tarama görüntü dosyaları içeren bir dizin (PNG, JPG, TIFF) | Girdi verisi | +| Çıktı klasörü için yazma izinleri | JSON sonuçlarını kaydetme | + +Eğer bunlara sahipseniz, harika—hadi başlayalım. + +![toplu OCR iş akışı](image-placeholder.png){alt="toplu OCR iş akışı"} + +## Adım 1 – OCR Motorunu Başlatma (toplu OCR nasıl yapılır) + +Herhangi bir şeyi işlemeye başlamadan önce bir OCR motoru örneğine ihtiyacımız var. Bunu, her görüntüyü okuyup metin üretecek “beyin” olarak düşünün. Motoru bir kez başlatıp tüm parti boyunca yeniden kullanmak en verimli yaklaşımdır. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Aynı örneği neden yeniden kullanmalıyız?** +> Her dosya için yeni bir motor oluşturmak, ağır modelleri belleğe tekrar tekrar yükler ve partiyi dramatik şekilde yavaşlatır. Tek bir örnek modeli RAM'de tutar ve binlerce görüntüyü fark edilir bir yavaşlama olmadan işleyebilmenizi sağlar. + +## Adım 2 – Taramalarınızın Klasörünü Belirtin (taramalardan metin çıkarma) + +Taramalarınız bir yerde diskte duruyor. Betiğe nerede olduklarını söyleyelim. Mutlak yollar, betik farklı bir çalışma dizininden başlatıldığında “dosya bulunamadı” hatalarını önler. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Pro ipucu:** +> Windows kullanıyorsanız, `os.path.abspath` ile ileri eğik çizgiler (`/`) sorunsuz çalışır, bu yüzden ters eğik çizgileri kaçırmanıza gerek yok. + +## Adım 3 – JSON Sonuçlarının Nereye Gideceğini Seçin + +Muhtemelen OCR sonuçları için düzenli bir klasör istersiniz. Çıktıyı kaynağın dışına tutmak, daha sonra temizlemeyi veya JSON'u başka bir akışa beslemeyi kolaylaştırır. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Klasörü programlı olarak neden oluşturmalıyız?** +> Klasör eksik olsa bile betiğin çökmesini engeller ve `exist_ok=True` işlemi idempotent hâle getirir—betiği birden fazla kez çalıştırdığınızda hata almazsınız. + +## Adım 4 – Parti İşlemini Çalıştırın (toplu OCR nasıl yapılır) + +İşte asıl kısım: `ocr_engine`'i `input_dir` içindeki her dosyayı gezmeye, OCR çalıştırmaya ve `output_dir` içine JSON dökmeye yönlendirin. `format="json"` bayrağı, motorun sonucu aşağı akış araçlarının sevdiği yapılandırılmış bir biçimde serileştirmesini sağlar. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Arkada Ne Oluyor? + +1. **Dosya keşfi** – Motor, `input_folder`'ı gizli dosyaları yok sayarak özyinelemeli tarar. +2. **Dosya doğrulama** – Yalnızca desteklenen görüntü uzantıları (`.png`, `.jpg`, `.tif` vb.) OCR modeline gönderilir. +3. **OCR yürütme** – Her görüntü OCR motoruna gönderilir; metin, güven skorları ve düzen verileri yakalanır. +4. **JSON serileştirme** – Sonuç, aynı temel ada sahip ancak `.json` uzantılı bir dosya olarak `output_folder` içinde yazılır. + +> **Köşe durumları yönetimi:** +> - **Boş klasör:** Motor “Dosya bulunamadı” mesajı verir ve sorunsuz bir şekilde döner. +> - **Bozuk görüntü:** Dosya atlanır, `batch_errors.log` içinde bir hata kaydı oluşturulur ve işlem devam eder. +> - **Büyük parti (10k+ dosya):** Bellek kullanımı düşük kalır çünkü her görüntü bağımsız işlenir. + +## Adım 5 – Dönüşümün Tamamlandığını Doğrulama + +Basit bir `print` ifadesi, konsolda anlık geri bildirim sağlar. Üretim akışlarında bunu bir log çağrısı veya e‑posta bildirimiyle değiştirebilirsiniz. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Bu satırı gördüğünüzde, `json_output` klasörünü güvenle inceleyebilirsiniz. Her JSON dosyası kabaca şu şekilde görünecektir: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Artık bu JSON dosyalarını bir veritabanına, bir arama indeksine veya herhangi bir downstream analiz aracına besleyebilirsiniz. + +## Sık Sorulan Sorular (ve hızlı cevaplar) + +**S: PDF'leri görüntü yerine işlemek istersem ne yapmalıyım?** +C: Önce her PDF sayfasını bir görüntüye dönüştürün (ör. `pdf2image` kullanarak) ve elde edilen PNG/JPG dosyalarını `input_dir` içine koyun. Toplu OCR mantığı değişmez. + +**S: Çıktı formatını düz metin olarak değiştirebilir miyim?** +C: Kesinlikle. `format="json"` yerine `format="txt"` koyun, motor sadece çıkarılan metni içeren bir `.txt` dosyası yazar. + +**S: Taramalarım birden fazla alt‑klasörde—betik özyinelemeli mi?** +C: Evet. `batch_process` varsayılan olarak dizin ağacını yürür. Düz bir çıktı isterseniz, `flatten=True` (kütüphane destekliyorsa) ayarlayın veya JSON dosya adlarını sonradan işleyin. + +**S: Latin dışı alfabelerle nasıl başa çıkılır?** +C: `OcrEngine`'i bir dil parametresiyle başlatın, ör. `OcrEngine(lang="spa+eng")`. Toplu döngüde başka bir değişiklik yapmanıza gerek yok. + +## Profesyonel İpuçları ve Yaygın Tuzaklar + +- **Batch boyutu önemli:** CPU dalgalanmaları fark ederseniz, dosyalar arasında basit bir `time.sleep(0.1)` ekleyerek süreci yavaşlatın. +- **Loglama:** `print` çağrısını Python'un `logging` modülüyle değiştirerek zaman damgaları ve hata seviyeleri yakalayın. +- **Dosya adı çakışmaları:** İki tarama aynı temel ada sahip ama farklı alt‑klasörlerde bulunuyorsa, JSON dosyaları birbirinin üzerine yazılır. Çıktı adına göreceli yolun bir hash'ini ekleyerek bunu önleyin. +- **Bellek sızıntıları:** Bazı OCR arka planları yerel kaynakları tutar. Kütüphane bir temizlik yöntemi sağlıyorsa, betiğin sonunda `ocr_engine.close()` çağırın. + +## Tam Script – Kopyalayıp Yapıştırmaya Hazır + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Beklenen konsol çıktısı** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +JSON'u bir metin düzenleyiciyle `json_output` içindeki herhangi bir dosyayı açarak ya da Python içinde yükleyerek doğrulayabilirsiniz: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Konsolda çıkarılan ham OCR‑metninin yazdırıldığını görmelisiniz. + +## Sonuç + +**Toplu OCR** ile bir klasördeki tüm taranmış görüntüleri nasıl işleyip **taramalardan metin** çıkarıp temiz, makine‑okunur JSON dosyalarına dönüştürebileceğinizi ele aldık. Yaklaşım kasıtlı olarak basit: motoru bir kez kurun, bir klasöre yönlendirin ve kütüphane ağır işi halletsin. Bundan sonra şunları yapabilirsiniz: + +- JSON'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/turkish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/turkish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..9cb61fe35 --- /dev/null +++ b/ocr/turkish/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,242 @@ +--- +category: general +date: 2026-04-26 +description: OCR'yi hızlı ve güvenilir bir şekilde nasıl oluşturacağınızı öğrenin. + Görüntüden metin çıkarmayı, OCR için görüntüyü yüklemeyi ve özel bir sözlükle PNG + üzerinde OCR çalıştırmayı öğrenin. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: tr +og_description: Python'da OCR nasıl oluşturulur ve görüntüden metin nasıl çıkarılır. + Bu rehber, OCR için görüntünün nasıl yükleneceğini, PNG üzerinde OCR çalıştırmayı + ve özel bir sözlük kullanmayı gösterir. +og_title: Python'da OCR Nasıl Oluşturulur – Hızlı Metin Çıkarma +tags: +- OCR +- Python +- Image Processing +title: Python'da OCR Nasıl Oluşturulur – Görüntüden Metin Çıkarma +url: /tr/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python'da OCR Nasıl Oluşturulur – Adım Adım Kılavuz + +Hiç **OCR nasıl oluşturulur** diye merak ettiniz mi ve taranmış PDF'lerinizi, ekran görüntülerinizi ya da el yazısı notlarınızı okuyabilen bir OCR? Tek başınıza değilsiniz. Birçok gerçek dünya projesinde *görüntüden metin çıkarma* dosyalarına ihtiyacımız var, ancak kutudan çıkan motorlar genellikle alan‑özel kelimelerde zorlanıyor. + +Bu öğreticide, OCR için bir görüntü yükleyen, özel bir sözlük uygulayan ve sonunda **PNG dosyalarında OCR çalıştıran** eksiksiz, çalıştırılabilir bir örnek göreceksiniz. Sonuna kadar herhangi bir görüntüden metin çıkarabilecek ve motoru kendi terminolojinize uyarlayabileceksiniz. + +## Bu Öğreticide Neler Kapsanıyor + +* Küçük ama güçlü `aocr` paketini (veya uyumlu herhangi bir kütüphaneyi) kurmak. +* **Özel bir sözlük** yapılandırarak `aspocorp` veya `licensekey` gibi terimlerin tanınmasını sağlamak. +* **OCR için bir görüntü yükleme**, ister PNG, JPEG ya da taranmış bir PDF sayfası olsun. +* OCR sürecini çalıştırmak ve sonucu yazdırmak. + +Harici dokümantasyon bağlantıları yok, sadece bugün kopyala‑yapıştır yapıp çalıştırabileceğiniz bağımsız bir çözüm. + +### Önkoşullar + +* Python 3.8 ve üzeri (kod f‑string'ler kullanıyor). +* Komut satırıyla temel aşinalık – birkaç `pip install` komutu yazacaksınız. +* Örnekteki (`technical_doc.png`) bir görüntü dosyası, referans alabileceğiniz bir yerde konumlandırılmış. + +Bu üç öğeyi karşılıyorsanız, hazırsınız. + +--- + +## Adım 1: OCR Kütüphanesini Kurun + +İlk olarak, programlanabilir bir yapılandırma nesnesini destekleyen bir OCR motoruna ihtiyacımız var. `aocr` paketi, yerel bir OCR motoru etrafında hafif bir sarmalayıcıdır ve demolar için iyi çalışır. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Pro ipucu:** Windows kullanıyorsanız ve bir derleme hatası alıyorsanız, önceden derlenmiş tekerlekleri içeren `pip install aocr‑binary` komutunu deneyin. + +### Neden Bu Kütüphane Kurulmalı? + +`aocr`, **özel bir sözlük** ekleyebileceğimiz bir `config` nesnesine doğrudan erişim sağlar. Bu, niş kelime dağarcıklarında doğruluğu artıran gizli sosdur. + +--- + +## Adım 2: OCR Motoru Örneğini Oluşturun ve Özel Bir Sözlük Ekleyin + +Şimdi motoru başlatıyoruz ve hangi kelimeleri bilinen olarak ele alması gerektiğini söylüyoruz. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Neden Özel Bir Sözlük Önemlidir + +Standart OCR modelleri genel korpuslar üzerinde eğitilmiştir. Model “aspocorp” gördüğünde, bunu “aspo corp” olarak bölüp harfleri tamamen atabilir. Özel bir liste sağlayarak tanıyıcıyı ihtiyacımız olan tam yazımına yönlendiririz ve son‑işlem çabasını büyük ölçüde azaltırız. + +--- + +## Adım 3: İşlemek İstediğiniz Görüntüyü Yükleyin + +İşte **OCR için görüntü yükleme** kısmı. `Image.load` yöntemi bir yol dizesi alır ve dosya tipini otomatik olarak belirler. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Köşe durumu:** Kaynağınız çok sayfalı bir PDF ise, önce her sayfayı PNG'ye dönüştürün (ör. `pdf2image` ile) ve motorun içine tek tek besleyin. + +### Daha İyi Görüntü Kalitesi İçin İpuçları + +* Çözünürlüğü en az 300 dpi tutun. +* Görüntünün dik olduğundan emin olun; gerekirse `Pillow` ile döndürün. +* Renkli taramaları gürültüyü azaltmak için gri tonlamaya çevirin. + +--- + +## Adım 4: PNG Dosyasında OCR İşlemini Çalıştırın + +Motor yapılandırıldı ve görüntü yüklendiğinde, sonunda **PNG üzerinde OCR çalıştırıyoruz**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +`process()` çağrısı, tanınan metni, güven skorlarını ve her kelime için sınırlayıcı kutuları içeren bir nesne döndürür. + +--- + +## Adım 5: Tanınan Metni Çıktı Alın + +Motorun ne bulduğunu görmenin en basit yolu `text` özelliğini yazdırmaktır. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Beklenen Çıktı + +`technical_doc.png` dosyası *“The Aspocorp licensekey expires on 2025‑12‑31.”* cümlesini içeriyorsa, konsol şu şekilde görüntülenmelidir: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Özel sözlüğün marka adını olduğu gibi koruduğuna dikkat edin—sıradan bir OCR bunu bozmuş olabilirdi. + +--- + +## Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +Aşağıda, `run_ocr.py` olarak kaydedilebilecek tam script yer alıyor. Yer tutucu yolu, görüntünüzün konumuyla değiştirmeniz yeterli. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Terminalden çalıştırın: + +```bash +python run_ocr.py +``` + +Daha önceki örnekte gösterildiği gibi, çıkarılan metnin konsola yazdırıldığını görmelisiniz. + +--- + +## Sıkça Sorulan Sorular (SSS) + +| Soru | Cevap | +|----------|--------| +| **Tarama PDF'den metin çıkarabilir miyim?** | Evet. Önce her sayfayı PNG (veya TIFF) formatına dönüştürün, ardından görüntüleri aynı script'e besleyin. | +| **Görüntüm PNG yerine JPEG olursa ne olur?** | `Image.load` yöntemi JPEG, BMP, TIFF ve PNG'yi kutudan çıkar çıkmaz destekler. Sadece dosya uzantısını değiştirin. | +| **Düşük kontrastlı taramalarda doğruluğu nasıl artırırım?** | `Pillow` ile ön‑işlem yapın – kontrastı artırın, ikilileştirme uygulayın veya `opencv` ile eğikliği düzeltin. | +| **Her kelime için güven skorlarını almak mümkün mü?** | `ocr_result` içinde `words` bulunur – her kelimenin bir `confidence` özelliği vardır ve bu üzerinden döngü kurabilirsiniz. | +| **Bunu başsız (headless) bir sunucuda çalıştırabilir miyim?** | Kesinlikle. `aocr` GUI bağımlılıkları içermez, CI pipeline'ları için mükemmeldir. | + +--- + +## Sonraki Adımlar ve İlgili Konular + +Artık **OCR nasıl oluşturulur** ve **görüntü dosyalarından metin çıkarma** konularını bildiğinize göre, şunları keşfetmeyi düşünün: + +* **Ön‑işleme teknikleri** – `load image for OCR` sadece ilk adımdır; gürültüyü azaltmak veya keskinleştirmek için `opencv` kullanın. +* **Toplu işleme** – aranabilir bir arşiv oluşturmak için PNG'lerin bulunduğu bir dizinin üzerinden döngü yapın. +* **Çok‑dilli destek** – Fransızca veya Almanca belgeleri okumak istiyorsanız motorun dil paketlerini ekleyin. +* **Elasticsearch ile entegrasyon** – çıkarılan metni taranmış varlıklar üzerinde tam metin araması için indeksleyin. + +Bu uzantıların her biri, az önce ele aldığımız temel desene dayanır, bu yüzden geçiş sorunsuz olacaktır. + +--- + +## Özet + +Birkaç dakikada, özellikle PNG dosyalarında güvenilir bir şekilde **görüntü dosyalarından metin çıkaran OCR nasıl oluşturulur** sorusunu yanıtladık ve size **OCR için görüntü yükleme**, **özel bir sözlük uygulama** ve **PNG üzerinde OCR çalıştırma** işlemlerini harici hizmetler olmadan nasıl yapacağınızı gösterdik. + +Script'i çalıştırın, sözlüğü kendi jargonunuza göre ayarlayın ve herhangi bir belge‑dijitalleştirme projesi için sağlam bir temel elde edin. + +Herhangi bir sorunla karşılaşırsanız, aşağıya yorum bırakın—yardımcı olmaktan mutluluk duyarız. Ve başarı hikayelerinizi paylaşmayı unutmayın; topluluk gerçek‑dünya örneklerinden en iyi şekilde öğrenir. + +**Belgelerinizi otomatikleştirmeye hazır mısınız?** Kodu alın, uyarlayın ve bugün pikselleri aranabilir metne dönüştürmeye başlayı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/turkish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/turkish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..44cf6bca1 --- /dev/null +++ b/ocr/turkish/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Python kullanarak görüntülerden OCR nasıl çıkarılır – OCR için görüntüyü + nasıl yükleyeceğinizi ve bir makbuzdan metin çıkaracağınızı gösteren bir Python + OCR örneği. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: tr +og_description: Python kullanarak görüntülerden OCR nasıl çıkarılır. Bir Python OCR + örneği öğrenin, OCR için görüntüyü yükleyin ve dakikalar içinde makbuzdan metni + çıkarın. +og_title: Python'da OCR Nasıl Çıkarılır – Tam Kılavuz +tags: +- OCR +- Python +- Image Processing +title: Python'da OCR nasıl çıkarılır – Adım adım öğretici +url: /tr/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Python'da OCR Nasıl Çıkarılır – Tam Kılavuz + +Hiç **how to extract ocr** ifadesini bulanık bir makbuz ya da taranmış bir faturadan merak ettiniz mi? Tek başınıza değilsiniz—geliştiriciler, temiz, makine‑okunabilir metne ihtiyaç duyduklarında sık sık bir engelle karşılaşıyorlar. İyi haber? Sadece birkaç Python satırıyla bir makbuzun resmini yüksek‑güvenilir, aranabilir metne dönüştürebilirsiniz. + +Bu öğreticide **python ocr example** gösteren bir **how to load image for ocr** örneği üzerinden ilerleyecek, motoru çalıştıracak ve %85 % güven eşiğini karşılayan karakterleri tutacağız. Sonunda **extract text from receipt** görüntülerinden belgeyi taramaya ya da API parametrelerini tahmin etmeye gerek kalmadan metin çıkarabileceksiniz. + +## İhtiyacınız Olanlar + +- Python 3.9 veya daha yeni (kullandığımız sözdizimi 3.8+ ile çalışır) +- `aocr` paketi (veya bir `OcrEngine` sınıfı sağlayan herhangi bir OCR kütüphanesi). Şöyle kurun: + +```bash +pip install aocr +``` + +- `receipt.png` adlı örnek makbuz görüntüsü, referans alabileceğiniz bir klasörde bulunmalı. +- Bir metin editörü ya da IDE—VS Code, PyCharm ya da basit bir notebook yeterli. + +Hepsi bu. Ağır çerçeveler yok, harici hizmetler yok, sadece saf Python. + +![Yüksek‑güvenilir OCR sonucu – how to extract ocr from a receipt](/images/ocr-high-confidence.png) + +*Görsel alt metni: how to extract ocr from a receipt using Python OCR* + +## 1. Adım – OCR Motoru Örneğini Oluşturma (how to extract ocr) + +İlk yaptığımız şey bir OCR motoru başlatmak. Bunu, pikselleri bizim için okuyacak bir beyin olarak düşünün. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Why?** `OcrEngine` örneği oluşturmak size yeni bir yapılandırma nesnesi verir. Daha sonra dil modellerini, DPI ayarlarını ya da ön işleme adımlarını—ana işleme döngüsüne dokunmadan—ayarlayabilirsiniz. + +## 2. Adım – OCR için Görüntüyü Yükleme + +Sonra motoru analiz etmek istediğimiz görüntüye yönlendiririz. İşte **load image for ocr** anahtar kelimesinin devreye girdiği yer. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Pro tip:** Görüntünüz farklı bir dizinde bulunuyorsa, platform‑bağımsız bir yol oluşturmak için `os.path.join` kullanın. + +**Why load the image this way?** `Image.load` yardımcı işlevi dosyayı motorun anlayabileceği bir formata okur, yaygın formatları (PNG, JPEG, TIFF) otomatik olarak işler. Bu adımı atlamak ya da ham baytları beslemek bir `ValueError` oluşturur. + +## 3. Adım – OCR İşlemini Çalıştırma + +Şimdi OCR'ı gerçekten çalıştırıyoruz. `process` metodu, tanınan semboller, güven skorları ve sınırlayıcı kutular içeren zengin bir sonuç nesnesi döndürür. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**What does `ocr_result` contain?** Çoğu kütüphanede şunlar bulunur: + +- `text`: ham birleştirilmiş dize. +- `symbol_confidences`: `(char, confidence)` ikililerinden oluşan bir liste. +- `boxes`: her karakter için koordinatlar (görsel hata ayıklama için faydalı). + +Karakter bazında güvene erişim bir sonraki adım için hayati önem taşır. + +## 4. Adım – Yalnızca Yüksek‑Güvenilir Sembolleri Tut (≥ 85 %) + +Bir makbuz genellikle lekeler, soluk baskı ya da arka plan gürültüsü içerir. Düşük‑güvenilir sembolleri filtreleyerek sonraki ayrıştırmayı büyük ölçüde iyileştiririz. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Why 85 %?** Deneysel olarak, %0.85 civarında bir eşik çoğu basılı makbuz için geri çağırma ve kesinliği dengeler. Sayılar eksikse eşik değerini düşürün; anlamsız karakterler görürseniz yükseltin. + +## 5. Adım – Yüksek‑Güvenilir Çıkarılan Metni Çıktılamak + +Son olarak, temizlenmiş dizeyi yazdırır (ya da saklarız). Bu, **extract text from receipt** iş akışımızın çekirdeğidir. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Tipik çıktı şöyle görünür: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Artık bu dizeyi bir CSV yazıcıya, bir veritabanına ya da herhangi bir sonraki analiz boru hattına besleyebilirsiniz. + +## Tam, Çalıştırmaya Hazır Script + +Aşağıda `ocr_receipt.py` dosyasına kopyalayıp hemen çalıştırabileceğiniz tam kod parçacığı yer alıyor. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Dosyayı kaydedin, `receipt.png` dosyasının mevcut olduğundan emin olun ve çalıştırın: + +```bash +python ocr_receipt.py +``` + +Temizlenmiş makbuz metninin konsola yazdırıldığını göreceksiniz. + +## Kenar Durumları ve Ne‑Olur Senaryoları + +| Durum | Önerilen Çözüm | +|-----------|----------------| +| **Very low confidence across the board** | Görüntüyü ön‑işleme tabi tutun: kontrastı artırın, gri tonlamaya dönüştürün veya bir gürültü azaltma filtresi (`cv2.GaussianBlur`) uygulayın. | +| **Non‑Latin characters** | `OcrEngine`'e bir dil modeli geçin (ör. `ocr_engine.language = "spa"` İspanyolca için). | +| **Multiple receipts in one image** | Tüm görüntüde OCR çalıştırın, ardından `\n\n+` (çift satır sonu) tespit eden düzenli ifadelerle sonucu bölün. | +| **Need the raw OCR text as well** | Hata ayıklama için filtrelenmiş sürümün yanında `ocr_result.text`'i tutun. | + +Bu varyasyonlar, **how to use OCR** bilginizin en basit durumu aşarak ölçeklenmesini sağlar. + +## Yaygın Tuzaklar (Ve Nasıl Kaçınılır) + +- **Forgetting to install the library** – `pip install aocr` komutunun başarılı olması gerekir, ardından içe aktarım yapılabilir. +- **Using the wrong path separator** on Windows (`\` vs `/`). Use `os.path.join`. +- **Hard‑coding the confidence threshold** without testing – always run a quick visual check on a few receipts first. +- **Ignoring Unicode normalisation** – bazı makbuzlar özel tire karakterleri içerir; çıktıyı saklamayı planlıyorsanız `unicodedata.normalize('NFKC', text)` çalıştırın. + +## Sonraki Adımlar – Temelin Ötesine Geçmek + +Şimdi **how to extract ocr** verisini tek bir makbuzdan çıkarabildiğinize göre, şunları yapmak isteyebilirsiniz: + +1. **Batch process a folder of receipts** – tüm PNG/JPG dosyaları üzerinde döngü kurup her sonucu bir CSV'ye yazın. +2. **Integrate with a database** – `high_confidence_text`'i hızlı aramalar için SQLite'ta saklayın. +3. **Apply natural‑language parsing** – tarih, toplam ve vergi tutarlarını çekmek için regex ya da `dateutil` kullanın. +4. **Experiment with alternative libraries** – `pytesseract`, `easyocr` ya da bulut hizmetleri (Google Vision, Azure OCR) çok dilli destek ya da daha yüksek doğruluk gerektiğinde tercih edin. + +Bu konular doğal olarak ikincil anahtar kelimelerimizi içerir: *python ocr example*, *extract text from receipt*, *load image for ocr*, ve *how to use OCR*. + +## Sonuç + +Tam bir **python ocr example** üzerinden **how to extract ocr** metninin bir makbuz görüntüsünden nasıl çıkarılacağını, düşük‑güvenilir sembollerin nasıl filtreleneceğini ve temiz sonuçların nasıl çıktılanacağını gösterdik. Adımlar basit, kod bağımsız ve yaklaşım daha büyük projelere uyacak kadar esnek. + +Kendi makbuzlarınızla deneyin, güven eşiğini ayarlayın ve ardından toplu işleme geçin. Eğer ince bir logo ya da alışılmadık bir font gibi tuhaflıklarla karşılaşırsanız, yukarıdaki kenar‑durum ipuçlarını hatırlayın. İyi kodlamalar, OCR boru hatlarınız her zaman doğru 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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/turkish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..f1b591bc4 --- /dev/null +++ b/ocr/turkish/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,195 @@ +--- +category: general +date: 2026-04-26 +description: 'Python ile OCR nasıl yapılır: Görüntüden metin çıkarmayı ve temel bir + OCR örneği kullanarak tiff dosyasını Python ile okumayı öğrenin. Hızlı, çalıştırılabilir + kod dahil.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: tr +og_description: 'python ile ocr nasıl yapılır: Görüntüden metin çıkarma, tiff dosyasını + python ile okuma ve taranmış görüntü metnini basit, çalıştırılabilir bir script + ile dönüştürmeyi gösteren adım adım bir rehber.' +og_title: Python ile OCR nasıl yapılır – Metin Çıkarma için Temel OCR Örneği +tags: +- OCR +- Python +- Image Processing +title: Python ile OCR nasıl yapılır – Metin Çıkarma için Temel OCR Örneği +url: /tr/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# python ile ocr nasıl yapılır – Metin Çıkarma için Temel OCR Örneği + +Masada taranmış bir TIFF dosyası olduğunda **python ile ocr nasıl yapılır** diye merak ettiniz mi? Sadece bir sürü görüntü dosyasına bakıp “Bu dosyadan kelimeleri nasıl çıkarırım?” diye soran tek kişi siz değilsiniz. İyi haber şu ki, doğru kütüphane ve birkaç net adımla bir resmi düz metne dönüştürmek çocuk oyuncağı. + +Bu öğreticide, bir TIFF dosyasını okuyan, metni çıkaran ve konsola yazdıran **temel bir OCR örneği** üzerinden ilerleyeceğiz. Sonunda **görüntüden metin çıkarma** dosyalarını tam olarak nasıl yapacağınızı, TIFF formatının inceliklerini nasıl yöneteceğinizi ve **tarama görüntüsü metnini dönüştürme** ihtiyacınız olduğunda neyi ayarlamanız gerektiğini öğreneceksiniz. Gizli bir sihir yok—bugün kopyala‑yapıştır yapıp çalıştırabileceğiniz sade bir Python kodu. + +## İhtiyacınız Olanlar + +İlerlemeye başlamadan önce şunların yüklü olduğundan emin olun: + +- Python 3.9+ (en yeni kararlı sürüm tercih edilir). +- Pip ile kurulabilen bir OCR kütüphanesi. Bu rehberde popüler araçları taklit eden hayali bir `aocr` paketi kullanacağız; daha sonra `pytesseract` ya da `easyocr` ile değiştirebilirsiniz. +- İşlemek istediğiniz bir TIFF görüntüsü – dosya adını `input.tiff` olarak belirleyin ve kodda referans vereceğiniz bir klasöre koyun. +- Komut satırıyla temel bir aşinalık (paketi kurmak için yeterli). + +Hepsi bu. Ağır bağımlılıklar, Docker konteynerleri yok, sadece birkaç satır kod. + +## Adım 1 – Bağımlılıkları Kur ve İçe Aktar (python ile ocr nasıl yapılır) + +İlk olarak OCR paketini edinin. Bir terminal açıp şu komutu çalıştırın: + +```bash +pip install aocr +``` + +Gerçek bir kütüphane tercih ediyorsanız `aocr` yerine `pytesseract` yazın ve Tesseract motorunu ayrı olarak kurun. + +Şimdi ihtiyacımız olanları içe aktaralım. `pathlib`’ten `Path` sınıfı, işletim sistemine bağımlı olmadan dosya yollarıyla çalışmamızı sağlayan temiz bir yol sunar. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*`Path` neden kullanılır?* Çünkü `/` ve `\` gibi ayırıcıları soyutlar ve dizinleri birleştirirken alt sistemle uğraşmazsınız. Bu küçük detay, betiği bir CI sunucusuna taşıdığınızda baş ağrısını önler. + +## Adım 2 – OCR Motoru Örneği Oluştur (temel ocr örneği) + +Şimdi OCR motorunu başlatalım. `OcrEngine`’i, resmi okuyup karakterleri üreten bir beyin olarak düşünün. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +Çoğu OCR kütüphanesi burada dil, DPI veya güven eşiği gibi ayarları değiştirmenize izin verir. Bu **temel OCR örneği** için varsayılanları kullanacağız, ancak çok dilli belgelerle çalışmanız gerektiğinde `ocr_engine.config`’ı keşfedebilirsiniz. + +## Adım 3 – TIFF Görüntünüzü Yükleyin (python ile tiff dosyası oku) + +İşte **python ile tiff dosyası oku** kısmının devreye girdiği yer. TIFF’ler çok sayfalı olabilir, ancak `Image.load` varsayılan olarak ilk sayfayı alır—tek sayfalı taramalar için mükemmeldir. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +`"YOUR_DIRECTORY"` ifadesini `input.tiff` dosyanızın bulunduğu gerçek klasörle değiştirin. Betiğin nerede çalıştığından emin değilseniz, `Path.cwd()` mevcut çalışma dizinini yazdırır—yol sorunlarını ayıklamak için kullanışlıdır. + +## Adım 4 – OCR İşlemini Çalıştır (görüntüden metin çıkarma) + +Şimdi sihir gerçekleşir. `process()` çağrısı resmi OCR hattından geçirir ve bir sonuç nesnesi döndürür. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Arka planda motor, görüntüyü gri tonlamaya dönüştürüp eşikleme uygulayabilir ve bir sinir ağına besleyebilir. Bu adımları yönetmeniz gerekmez; kütüphane bunları sizin yerinize halleder. + +## Adım 5 – Tanınan Metni Yazdır (tarama görüntüsü metnini dönüştürme) + +Son olarak metni dışa aktarın. Gerçek projelerde muhtemelen bir dosyaya ya da veritabanına yazarsınız, ancak örneği sade tutmak için ekrana bastırıyoruz. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Betik çalıştırıldığında aşağıdakine benzer bir çıktı görmelisiniz: + +``` +Hello, world! +This is a sample scanned document. +``` + +Çıktı bozuk görünüyorsa, kaynak görüntünün net olduğundan ve OCR dilinin metinle eşleştiğinden emin olun. + +## Tam Çalışan Betik + +Hepsini bir araya getirdiğimizde, işte eksiksiz, anında çalıştırılabilir program: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Beklenen Çıktı + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +**Tarama görüntüsü metnini** aranabilir bir PDF’e dönüştürmeniz gerekiyorsa, `ocr_result.text`’i `reportlab` gibi bir PDF oluşturucuya yönlendirebilirsiniz—ama bu ayrı bir öğreticinin konusu. + +## Yaygın Tuzaklar & Profesyonel İpuçları + +- **Düşük çözünürlüklü taramalar**: OCR, 150 DPI altında zorlanır. TIFF bulanıksa, Pillow (`Image.open(...).resize(...)`) ile önce ölçeklendirin. +- **Çok sayfalı dosyalar**: Çok sayfalı TIFF’ler için `Image.load_multi_page()` (kütüphaneniz destekliyorsa) üzerinden döngü kurup sonuçları birleştirin. +- **Dil desteği**: Çoğu motor varsayılan olarak İngilizce’yi kullanır. Örneğin İspanyolca için `ocr_engine.language = "spa"` ayarlayın. +- **Boşluk yönetimi**: OCR sık sık gereksiz satır sonları ekler. `str.splitlines()` ya da düzenli ifadelerle çıktıyı temizleyin. +- **Performans**: Toplu işlemde, her dosya için yeni bir `OcrEngine` oluşturmak yerine tek bir örnek yeniden kullanın. + +## Örneği Genişletmek + +Artık tek bir görüntü için **python ile ocr nasıl yapılır** konusunu kavradığınıza göre, aşağıdaki adımları değerlendirin: + +1. **Toplu işleme** – Bir klasördeki TIFF’ler üzerinde döngü kurup her sonucu bir `.txt` dosyasına yazın. +2. **Pandas ile bütünleştirme** – Çıkarılan metni meta verilerle birlikte saklayarak hızlı analiz yapın. +3. **Hibrit yaklaşım** – OCR’ı `spaCy` gibi NLP kütüphaneleriyle birleştirerek taranmış faturalardan varlıkları (isim, tarih, tutar) çıkarın. +4. **Alternatif dosya formatları** – API ya da veritabanından gelen görüntüler için `Image.load` yerine `Image.from_bytes` kullanın. + +Tüm bu adımlar, **görüntüden metin çıkarma** ve **tarama görüntüsü metnini** makinelerin anlayabileceği bir forma dönüştürme temel fikri üzerine inşa edilmiştir. + +## Sonuç + +Net, uçtan uca bir **temel OCR örneği** üzerinden **python ile ocr nasıl yapılır**, **python ile tiff dosyası oku** ve **görüntüden metin çıkarma** işlemlerini sadece birkaç satır kodla gösterdik. Betik bağımsız, hata yönetimi içeriyor ve sonucu doğrudan ekrana yazdırıyor; bu da taranmış belgeleri düzenlenebilir metne dönüştürmek isteyen her proje için sağlam bir temel oluşturur. + +Denemeler yapmaktan çekinmeyin—OCR arka ucunu değiştirin, ön işleme adımlarını ayarlayın ya da çıktıyı sonraki bir iş akışına bağlayın. Güvenilir bir şekilde **tarama görüntüsü metnini** aranabilir, sorgulanabilir verilere dönüştürebildiğinizde sınır yoktur. + +Kenar durumları, dil paketleri ya da performans ayarları hakkında sorularınız mı var? Aşağıya yorum bırakın, iyi kodlamalar! + +![python ile ocr örneği](/images/ocr-python-example.png "python ile ocr betik çıktısının ekran görüntüsü") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/turkish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..246db0d8d --- /dev/null +++ b/ocr/turkish/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,183 @@ +--- +category: general +date: 2026-04-26 +description: Tarama yapılan bir formda OCR nasıl çalıştırılır, gürültüyü azaltmak + için görüntüyü nasıl ön işleme tabi tutacağınızı öğrenin ve görüntüden hızlıca metin + çıkarın. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: tr +og_description: Tarama belgelerinde OCR nasıl çalıştırılır, görüntüler nasıl ön işlenir, + gürültü nasıl azaltılır ve metin verimli bir şekilde nasıl çıkarılır. +og_title: OCR Nasıl Çalıştırılır ve Görüntüler Nasıl Ön İşlenir – Hızlı Rehber +tags: +- OCR +- image processing +- Python +title: OCR Nasıl Çalıştırılır ve Görüntüler Nasıl Ön İşlenir – Taralı Formlardan Metin + Çıkarma +url: /tr/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# OCR Nasıl Çalıştırılır – Görsellerden Metin Çıkarma İçin Tam Kılavuz + +Hiç **OCR nasıl çalıştırılır** diye merak ettiniz mi, dağınık taranmış bir formdan temiz, aranabilir metin elde etmek? Tek başınıza değilsiniz. Gerçek dünyadaki birçok projede ham görüntü, lekeler, dengesiz aydınlatma ve OCR’ın kutudan çıktığı gibi zorlanmasına neden olan diğer tuhaflıklarla dolu. + +İyi haber? Sadece birkaç satır Python ve akıllı bir ön‑işleme hattı ile tanıma doğruluğunu büyük ölçüde artırabilir, **gürültüyü azaltabilir** ve ihtiyacınız olan tam kelimeleri çıkarabilirsiniz. Bu öğreticide, resmi yüklemekten son dizeyi yazdırmaya kadar her adımı adım adım göstereceğiz—bu sayede faturalar, makbuzlar veya herhangi bir taranmış belgeye uyarlayabileceğiniz hazır bir kod parçacığı elde edeceksiniz. + +## Ne Oluşturacaksınız + +- Alt OCR kütüphanesiyle iletişim kuran bir `OcrEngine` örneği. +- Görüntüyü **ikili**leştiren ve lekeleri yumuşatmak için **median blur** uygulayan bir ön‑işleme zinciri. +- `process()` metodunu çağırarak `text` özelliği üzerinden çıkarılan dizeyi döndüren basit bir çağrı. + +Sonunda, herhangi bir görüntü dosyası üzerinde çalıştırabileceğiniz ve çıktıyı doğrudan konsolda görebileceğiniz bağımsız bir betiğiniz olacak. + +## Ön Koşullar + +- Python 3.9+ (burada kullanılan sözdizimi en son kararlı sürümle uyumludur). +- Kurgusal `aocr` paketi – Tesseract ya da modern bir OCR motorunun ince bir sarmalayıcısı gibi düşünün. `pip install aocr` ile kurun. +- Referans verebileceğiniz bir klasörde bulunan taranmış bir görüntü (`scanned_form.jpg`). + +Gerçek bir OCR kütüphanesi olan `pytesseract` kullanıyorsanız, `OcrEngine` sınıfını uygun sınıfla değiştirebilirsiniz—diğer her şey aynı kalır. + +![](how-to-run-ocr-example.png "OCR nasıl çalıştırılır örneği: taranmış bir form ve çıkarılan metin") + +*Alt metin: OCR nasıl çalıştırılır bir taranmış belgede ve çıkarılan metni görüntüleme.* + +--- + +## Adım 1: OCR Nasıl Çalıştırılır – Motoru Başlatma + +Motor bir şey okuyabilmeden önce bir örnek oluşturmalıyız. `OcrEngine`i, daha sonra görsel veriyi yorumlayacak beyin olarak düşünün. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Neden önemli:** Motorun örneklenmesi, iç modelleri kurar, dil paketlerini yükler ve çalışma ortamını hazırlar. Bu adımı atlamak, `process()` çağırdığınızda genellikle `NoneType` hatasına yol açar. + +--- + +## Adım 2: Görüntüyü Ön‑İşleme – Taranmış Formunuzu Yükleyin + +Beyin hazır olduğuna göre, ona bir resim veriyoruz. Görüntü, `aocr.Image` tarafından desteklenen herhangi bir formatta olabilir. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **İpucu:** Geliştirme sırasında mutlak yollar kullanın; böylece betik farklı bir çalışma dizininden çalıştırıldığında “dosya bulunamadı” hataları almazsınız. + +--- + +## Adım 3: Gürültüyü Azaltma – İkilileştirme ve Median Blur Uygulama + +Ham taramalar genellikle rastgele noktalar, dengesiz arka plan veya hafif gölgeler içerir. İki klasik hile—**ikilileştirme** ve **median blur**—karakter kenarlarını kaybetmeden görüntüyü temizler. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Daha Derine İnmek + +- **İkilileştirme**: `threshold=180` değeri algoritmaya şunu söyler: “180’den daha parlak olanlar beyaz, geri kalanlar siyah olsun.” Taramanız çok karanlık ya da çok aydınlıksa bu sayıyı ayarlayın. +- **Median Blur**: `2` yarıçapı, filtrenin 5×5 piksel penceresine bakıp merkez pikseli medyan değerle değiştirdiği anlamına gelir. Bu, izole lekeleri yumuşatırken harf darbelerini korur. + +> **Köşe durumu:** Belgenizde renkli vurgulamalar varsa, basit bir ikili eşik bu renkleri silebilir. Bu durumda, `aocr.ImageFilters.adaptive_threshold()` kullanmayı düşünün—bu, eşik değerini görüntü boyunca yerel olarak ayarlar. + +--- + +## Adım 4: Metin Çıkarma – OCR İşlemini Çalıştırma + +Temiz bir görüntü elde ettiğimize göre, motorun sihrini şimdi serbest bırakıyoruz. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Arka planda ne oluyor?** Motor, piksel matrisinin üzerinden bir sinir ağı (veya eski desen eşleştirici) çalıştırır, tanınan her glifi Unicode karakterlerine çevirir ve bunları satır ve paragraf hâline getirir. + +--- + +## Adım 5: Metin Çıkarma – Sonucu Yazdırma + +`ocr_result` nesnesi kullanışlı bir `text` özelliği sunar. Şimdi ne elde ettiğimize bakalım. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Beklenen Çıktı + +Eğer taranmış form şunları içeriyorsa: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Şu şekilde bir çıktı görmelisiniz: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Ön‑işleme adımının, daha önce “Amount” kelimesini “Am0unt” yapan izole noktaları nasıl ortadan kaldırdığını fark edin. Bu, OCR’dan **önce gürültüyü azaltma** gücüdür. + +--- + +## Yaygın Tuzaklar & Çözüm Önerileri + +| Belirti | Muhtemel Neden | Hızlı Çözüm | +|---------|----------------|-------------| +| Bozuk karakterler (örn. “@#%”) | Görüntü çok karanlık ya da çok aydınlık | `binarize()` içindeki `threshold` değerini ayarlayın; `adaptive_threshold` deneyin. | +| Eksik kelimeler | Gürültü hâlâ mevcut | `median_blur` için `radius` değerini artırın veya bir `gaussian_blur` filtresi ekleyin. | +| Yanlış dil (örn. İngiliz harfleri Çince’ye dönüşüyor) | Yanlış dil paketi yüklendi | Kütüphane destekliyorsa `OcrEngine()` oluştururken `language="eng"` parametresini geçin. | +| Büyük dosyalarda yavaş işlem | Yüksek çözünürlük | İkilileştirmeden önce görüntüyü küçültün: `aocr.ImageFilters.resize(width=1200)`. | + +--- + +## Daha İleri – Sonraki Adımlar ve İlgili Konular + +- **Toplu işleme**: Yukarıdaki mantığı bir döngüye sararak yüzlerce dosyayı otomatik olarak işleyin. +- **Yapısal çıktı**: `ocr_result.text` üzerinde düzenli ifadeler kullanarak tarih veya tutar gibi alanları çekin. +- **Alternatif kütüphaneler**: `aocr` yerine `pytesseract` kullanın—kod sadece motor başlatma adımında değişir. +- **PDF’ler için görüntü ön‑işleme**: Her PDF sayfasını bir görüntüye dönüştürün, ardından aynı hattı uygulayın. + +Bu genişletmeler, çözümünüzü tek bir formdan kurumsal ölçekli belge alım hattına kadar ölçeklendirmenizi sağlar. + +--- + +## Sonuç + +**OCR nasıl çalıştırılır** konusunu baştan sona ele aldık, **görüntüyü ön‑işleme** ile **gürültüyü azaltma** yöntemlerini gösterdik ve **görüntüden metin çıkarma** için temiz, tekrarlanabilir bir betik sunduk. Ana çıkarım? Birkaç basit filtre—ikilileştirme ve median blur—gürültülü bir taramayı güvenilir bir veri kaynağına dönüştürerek saatlerce manuel temizlikten tasarruf sağlar. + +Kendi belgelerinizle betiği deneyin, eşik değerlerini ayarlayın ve doğruluğun nasıl yükseldiğini izleyin. Hazır olduğunuzda toplu işleme keşfedin ya da çıktıyı bir veritabanına entegre ederek aranabilir arşivler oluşturun. İyi kodlamalar, OCR’ınız daima kusursuz 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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/turkish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..65dadbc91 --- /dev/null +++ b/ocr/turkish/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,196 @@ +--- +category: general +date: 2026-04-26 +description: Aspose OCR'de lisansı nasıl ayarlayacağınızı ve kısa bir Python betiğiyle + lisansı nasıl doğrulayacağınızı öğrenin. Sorunsuz aktivasyon için adım adım talimatları + izleyin. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: tr +og_description: Aspose OCR'de lisansı nasıl ayarlarsınız ve Python kullanarak lisansı + nasıl doğrularsınız. Dakikalar içinde tam, çalıştırılabilir bir örnek alın. +og_title: Aspose OCR'de Lisansı Nasıl Ayarlarsınız – Hızlı Python Rehberi +tags: +- Aspose OCR +- Python +- Licensing +title: Aspose OCR'de Lisans Nasıl Ayarlanır – Hızlı Python Rehberi +url: /tr/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Aspose OCR'de Lisans Nasıl Ayarlanır – Hızlı Python Rehberi + +Aspose OCR için **lisansı nasıl ayarlayacağınızı** hiç merak ettiniz mi, saçınızı yolmak zorunda kalmadan? Tek başınıza değilsiniz. Çoğu geliştirici, kütüphanenin tam gücünü açmaya çalıştığında ilk kez bir sorunla karşılaşır ve “Deneme sürümü” filigranı tarafından rahatsız edilir. İyi haber şu ki, çözüm oldukça basit ve hemen doğrulayabilirsiniz. + +Bu öğreticide, küçük bir Python betiği kullanarak **lisansı nasıl ayarlayacağınızı** *ve* **lisansı nasıl doğrulayacağınızı** adım adım göstereceğiz. Sonunda “License OK” yazdıran çalışan bir örnek ve yaygın tuzaklardan kaçınmanız için birkaç ipucu elde edeceksiniz. + +## Önkoşullar + +- Python 3.8+ yüklü (kod 3.9, 3.10 ve daha yeni sürümlerde çalışır). +- Aktif bir Aspose OCR for Java (veya .NET) lisans dosyası – genellikle `Aspose.OCR.Java.lic` olarak adlandırılır. +- `asposeocr` paketi `pip install asposeocr` ile yüklü. +- Komut satırından Python betikleri çalıştırma konusunda temel bilgi. + +Hepsi hazır mı? Harika—başlayalım. + +## Aspose OCR'de Lisans Nasıl Ayarlanır (Adım 1) + +Lisansı ayarlamak temelde üç satırlık bir işlemdir, ancak her satırın bir amacı vardır. Neden yaptığımızı anlamanız için adımları açıklayacağız. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**`License` sınıfını neden içe aktarıyoruz?** +`License` sınıfı, Aspose OCR motoruna ürün için ödeme yaptığınızı bildiren bir geçittir. Bir örnek oluşturulmazsa, kütüphane deneme sürümünde olduğunuzu varsayar. + +**`License` sınıfını neden örnekliyoruz?** +Örnekleme, `.lic` dosyanızın yolunu tutabilen ve ardından çalışma zamanına uygulayabilen bir nesne (`license_obj`) sağlar. + +## Aspose OCR'de Lisans Nasıl Ayarlanır – Lisans Dosyasını Sağlama + +Şimdi nesneyi diskteki gerçek lisans dosyasına yönlendiriyoruz. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**İpuçları & püf noktaları:** + +- **Mutlak vs. göreli yol** – Betiği farklı bir klasörden çalıştırıyorsanız, mutlak bir yol (`C:/licenses/...`) “dosya bulunamadı” hatalarını ortadan kaldırır. +- **Ortam değişkenleri** – Yolu bir ortam değişkeninde (`OCR_LICENSE_PATH`) saklamak, gizli bilgileri kaynak kontrolünden uzak tutar: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Lisansı Doğrulama – Çalıştığını Kontrol Etme + +Lisansı ayarlamak sadece işin yarısıdır; kütüphanenin lisansı kabul ettiğini doğrulamanız gerekir. İşte doğrulama adımının devreye girdiği yer. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Lisans dosyası eksik, bozuk veya eşleşmiyorsa, `validate()` bir istisna fırlatır. Bu istisnayı yakalamak, sorunları raporlamanın temiz bir yolunu sağlar. + +## Tam Çalışan Örnek (Tüm Adımlar Birleştirildi) + +Aşağıda eksiksiz, çalıştırmaya hazır betik yer alıyor. Bir terminalden çalıştırın (`python set_license.py`) ve “License OK” çıktısını görmelisiniz. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Beklenen çıktı** + +``` +License OK +``` + +Bir şeyler ters giderse, aşağıdakine benzer bir şey göreceksiniz: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Bu mesaj tam olarak neyi düzeltmeniz gerektiğini söyler—tahmin yapmanıza gerek yok. + +## Lisansı Doğrulama – Yaygın Kenar Durumlarını Ele Alma + +Yukarıdaki betik ile bile, birkaç senaryo sizi zorlayabilir: + +| Durum | Ne Olur | Nasıl Düzeltilir | +|-----------|--------------|------------| +| **Dosya yolu yazım hatası** | `set_license`'tan `FileNotFoundError` | Yolu tekrar kontrol edin; hata ayıklamak için `os.path.abspath()` kullanın. | +| **Yanlış dosya türü** | Doğrulama “Invalid license format” hatası verir | Ürün sürümünüzle eşleşen `.lic` dosyasını kullandığınızdan emin olun. | +| **Süresi dolmuş lisans** | Doğrulama “License expired” hatası verir | Aspose desteğiyle lisansı yenileyin ve dosyayı değiştirin. | +| **Kısıtlı bir ortamda çalıştırma** (ör. AWS Lambda) | İzin hatası | Dizin okuma erişimini verin veya lisansı dağıtım paketine gömün. | + +Pro ipucu: “dosya bulunamadı” ve “geçersiz format” hatalarını ayırmak istiyorsanız `set_license` çağrısını kendi `try/except` bloğunuz içinde sarın. + +## Görsel Özet + +![Aspose OCR'de lisans nasıl ayarlanır örneği](/images/aspose-ocr-license.png "Aspose OCR'de lisans nasıl ayarlanır örneği") + +*Ekran görüntüsü, betiğin başarılı bir aktivasyondan sonra “License OK” çıktısını gösterdiğini gösterir.* + +## Yaygın Tuzaklar & En İyi Uygulamalar + +- **Lisans dosyanızı asla herkese açık bir depoya commit etmeyin.** Bunun yerine ortam değişkenleri veya gizli yönetim araçları (GitHub Secrets, Azure Key Vault) kullanın. +- **Erken doğrulama yapın.** `set_license`'tan hemen sonra `license_obj.validate()` yerleştirmek, OCR çalışması başlamadan hataları yakalar. +- **License nesnesini yeniden kullanın.** Lisansı süreç başına sadece bir kez ayarlamanız gerekir; sonraki OCR çağrıları otomatik olarak etkinleştirilmiş lisansı kullanır. +- **Üretimde lisans yolunu (dosya adı olmadan) kaydedin**; böylece gerçek dosyayı ortaya çıkarmadan hata ayıklamaya yardımcı olur. + +## Sonraki Adımlar – OCR İş Akışınızı Genişletme + +Artık **lisansı nasıl ayarlayacağınızı** ve **lisansı nasıl doğrulayacağınızı** bildiğinize göre, temel OCR görevlerine geçebilirsiniz: + +- **görseli nasıl okuyacağınız** – `Image.load("sample.png")` +- **metni nasıl çıkaracağınız** – `ocr_engine.recognize(image)` +- **OCR seçeneklerini nasıl yapılandıracağınız** – dil, doğruluk vb. için `OcrEngine` ayarlarını düzenleyin. + +Bu konuların her biri başarılı bir şekilde lisanslanmış bir motor üzerine kurulur, böylece bir daha deneme filigranını görmezsiniz. + +## Sonuç + +Aspose OCR için **lisansı nasıl ayarlayacağınızı** tüm süreç boyunca ele aldık, **lisansı nasıl doğrulayacağınızı** gösterdik ve “License OK” yazdıran eksiksiz, çalıştırılabilir bir betik sağladık. Hataları önceden ele alarak ve ortam değişkenlerini kullanarak uygulamanızı hem güvenli hem de sağlam tutarsınız. + +OCR, lisanslama veya Aspose'u daha büyük bir pipeline'a entegre etme 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/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/turkish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..a011c4d42 --- /dev/null +++ b/ocr/turkish/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: Tarama yapılan PDF'lerde OCR kullanma, PDF'den metin çıkarma, PDF'de + OCR çalıştırma ve taranmış PDF'yi birkaç adımda aranabilir dosyalara dönüştürme. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: tr +og_description: 'Python''da OCR nasıl kullanılır: PDF''den metin çıkarmayı öğrenin, + PDF üzerinde OCR çalıştırın ve taranmış PDF''leri aranabilir belgelere dönüştürün.' +og_title: OCR Nasıl Kullanılır – PDF'ten Metin Çıkarma Hızlı Rehberi +tags: +- OCR +- Python +- PDF +- Text Extraction +title: OCR nasıl kullanılır – PDF'den Python ile Metin Çıkarma +url: /tr/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# OCR Nasıl Kullanılır – PDF'den Metin Çıkarma Python ile + +Hiç **OCR nasıl kullanılır** diye merak ettiniz mi ve taranmış bir sözleşme, fiş ya da e‑kitaptan metin çıkarmak istediniz mi? Yalnız değilsiniz. Gerçek dünyadaki birçok projede aldığınız PDF sadece bir görüntüdür ve OCR olmadan içeriğini arayamaz, indeksleyemez ya da analiz edemezsiniz. + +Bu öğreticide, **OCR nasıl kullanılır**, **PDF'den metin çıkarma** ve taranmış PDF dosyalarını **arama yapılabilir belgelere dönüştürme** konularını gösteren tam, çalıştırılabilir bir örnek üzerinden adım adım ilerleyeceğiz. Ayrıca OCR motorunun her sayfayı net bir şekilde görebilmesi için **PDF'yi görüntü olarak yükleme** inceliklerine de değineceğiz. + +> **Hızlı ön izleme:** Sonunda çok sayfalı bir PDF'i yükleyen, her sayfada OCR çalıştıran ve tanınan metni ekrana yazdıran bir betiğiniz olacak – harici hizmetlere ihtiyaç duymadan. + +## Gereksinimler + +- Python 3.9+ (herhangi bir yeni sürüm yeterli) +- `aocr` paketi (veya `OcrEngine` ve `Image.load` sağlayan uyumlu bir OCR kütüphanesi) +- İşlemek istediğiniz taranmış PDF dosyası (ör. `contract.pdf`) +- Makul bir RAM miktarı (≈ 200 MB / 100 sayfalık PDF genellikle yeterlidir) + +OCR kütüphanesini henüz kurmadıysanız, şu komutu çalıştırın: + +```bash +pip install aocr +``` + +> **İpucu:** Bağımlılıkları düzenli tutmak için bir sanal ortam (virtual environment) kullanın. + +## Adım 1: PDF'yi Görüntü Olarak Yükle – Bulmacanın İlk Parçası + +Herhangi bir OCR işlemi gerçekleşmeden önce PDF, bir görüntü olarak temsil edilmelidir. İşte burada ikincil anahtar kelime **load pdf as image** devreye girer. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Neden önemli?* `aocr.Image.load` her PDF sayfasını OCR motorunun anlayabileceği bir bitmap’e rasterleştirir. Bu adımı atlayıp ham PDF'i verirseniz, motor piksel verisi beklediği için bir hata fırlatır; vektör verisi almaz. + +> **Not:** Yol mutlak ya da göreli olabilir. Dosyanın okunabilir olduğundan emin olun; aksi takdirde `FileNotFoundError` alırsınız. + +## Adım 2: PDF Üzerinde OCR Çalıştır – Pikselleri Karaktere Dönüştürme + +PDF artık bir görüntü olduğuna göre **run OCR on PDF** işlemini gerçekleştirebiliriz. Aşağıdaki kod parçacığı tüm sayfaları tek seferde işler: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Arka planda ne oluyor?* `process_all_pages` rasterleştirilmiş sayfalar üzerinde döner, OCR modelini uygular ve sayfa başına bir sonuç nesnesi içeren bir liste döndürür. Her sonuç, tanınan metin, güven skorları ve (isteğe bağlı) sınırlama kutularını (bounding boxes) içerir. + +## Adım 3: PDF'den Metin Çıkarma – Metinleri Çekme + +OCR sonuçları elinizde olduğuna göre düz metni çıkarmak çok basit. Sayfalar üzerinde döngü kurup çıktıyı ekrana yazdıracağız ve ikincil anahtar kelime **extract text from pdf**'yi göstereceğiz. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Beklenen çıktı** (kısaltılmış): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Metni tek bir dize olarak istiyorsanız, sadece birleştirin: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Böylece **PDF'den metin çıkarma** işlemini OCR ile başarıyla tamamladınız. + +## Adım 4: Taranmış PDF'yi Dönüştür – Arama Yapılabilir Hale Getirme + +Birçok downstream araç (ör. Elasticsearch veya SharePoint) düz metin dökümü yerine arama yapılabilir bir PDF bekler. OCR çıktısını orijinal PDF'e gömerek **convert scanned PDF** işlemini gerçekleştirebilir, böylece arama yapılabilir bir sürüm elde edebilirsiniz. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Neden zahmet?* Arama yapılabilir bir PDF, orijinal düzeni ve görselleri korurken metin seçimi ve indekslemeye izin verir – insanlar ve makineler için kazan‑kazan bir durum. + +## Yaygın Tuzaklar & Kenar Durumları + +### Bellekten Daha Büyük Çok Sayfalı PDF'ler + +PDF'iniz yüzlerce sayfa içeriyorsa, hepsini bir anda yüklemek RAM'i tüketebilir. `aocr` kütüphanesi tembel (lazy) yüklemeyi destekler: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Ardından sayfaları tek tek işleyin: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Düşük Kaliteli Taramalar + +Bulanık ya da düşük kontrastlı taramalar OCR doğruluğunu ciddi şekilde düşürür. Görüntüyü motora vermeden önce ön işleme yapmayı düşünün: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Dil Desteği + +Varsayılan olarak motor İngilizce varsayar. Başka bir dilde **run OCR on PDF** yapmak için dil kodunu ayarlayın: + +```python +ocr_engine.language = "spa" # Spanish +``` + +İlgili dil modelinin kurulu olduğundan emin olun. + +## Tam Çalışan Örnek + +Her şeyi bir araya getirerek, `ocr_pdf.py` adlı bir dosyaya koyup hemen çalıştırabileceğiniz bağımsız bir betik: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Şöyle çalıştırın: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Metin konsola yazdırılacak ve `-o` parametresi verdiyseniz, orijinal dosyanın yanında arama yapılabilir bir PDF oluşacaktır. + +## İpucu ve En İyi Uygulamalar + +- **Toplu işleme:** Onlarca PDF ile çalışırken yukarıdaki mantığı bir döngüye sarın ve her dosyanın başarı/başarısızlık durumunu kaydedin. +- **Güven skorları filtresi:** Her `page_result` bir güven metriği içerir. Düşük güvenli sayfaları elden geçirme için atın ya da işaretleyin. +- **Paralellik:** CPU'nuz birden fazla çekirdek içeriyorsa, `concurrent.futures` kullanarak sayfaları paralel işleyin — ancak bellek kullanımına dikkat edin. +- **Sürüm kilidi:** `aocr` API'si zamanla değişebilir. `requirements.txt` içinde sürümü sabitleyin (ör. `aocr==2.3.1`) böylece kırılma riskini azaltırsınız. + +## Sonuç + +**OCR nasıl kullanılır**, **PDF'den metin çıkarma**, **PDF üzerinde OCR çalıştırma**, **PDF'yi görüntü olarak yükleme** ve hatta **taranmış PDF'yi arama yapılabilir formata dönüştürme** konularını adım adım ele aldık. Kod tamam, açıklamalar *ne* ve *neden* sorularını yanıtlıyor ve artık görüntü‑tabanlı PDF'lerle çalışan herhangi bir proje için yeniden kullanılabilir bir deseniniz var. + +Sırada ne var? Çıkarılan metni bir doğal dil işleme hattına besleyin, arama yapılabilir PDF'leri Elasticsearch ile indeksleyin ya da Tesseract, Azure Computer Vision gibi farklı OCR arka planlarıyla deney yapın. Ufkunuz geniş, araçlar ise parmaklarınızın ucunda. + +İyi kodlamalar, ve PDF'leriniz her zaman arama yapılabilir olsun! + +![how to use OCR example](/images/ocr_workflow.png "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/turkish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/turkish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..bbd4d142f --- /dev/null +++ b/ocr/turkish/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,212 @@ +--- +category: general +date: 2026-04-26 +description: Python’da OCR için görüntü yüklemek amacıyla threading nasıl kullanılır. + Geri aramalar, arka plan iş parçacıkları ve görüntü yükleme ile asenkron OCR işleme + birkaç adımda öğrenin. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: tr +og_description: Python'da OCR için görüntüyü yüklemek amacıyla threading nasıl kullanılır. + Bu kılavuz, geri aramalar ve arka plan yürütme ile tam, çalıştırılabilir bir örnek + gösterir. +og_title: OCR için Görüntüyü Yüklemek İçin Threading Nasıl Kullanılır +tags: +- Python +- Threading +- OCR +- Image Processing +title: OCR için Görüntüyü Yüklemek İçin Threading Nasıl Kullanılır +url: /tr/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Threading Kullanarak OCR İçin Görüntü Yükleme Nasıl Yapılır + +Uygulamanızın donmasına neden olmadan OCR için görüntüyü yüklemek için **threading nasıl kullanılır** diye hiç merak ettiniz mi? Bu, masaüstü tarayıcı, web servisi ya da büyük resimleri işleyen basit bir betik geliştiriyor olsanız da karşınıza çıkabilecek bir senaryodur. İyi haber? Birkaç satır Python ve doğru threading deseni, OCR motoru sihrini yaparken UI'nizin hızlı kalmasını sağlayacak. + +Bu öğreticide, büyük bir PNG'yi yükleme, OCR'yi arka plan thread'inde başlatma ve sonucu bir callback ile işleme gibi tam bir uçtan uca örnek üzerinden ilerleyeceğiz. Sonunda sadece **threading nasıl kullanılır** değil, aynı zamanda **OCR için görüntü nasıl yüklenir** konusunda temiz ve yeniden kullanılabilir bir yöntem de öğreneceksiniz. + +## Gereksinimler + +- Python 3.9+ (kullandığımız sözdizimi herhangi bir yeni sürümde çalışır) +- `pillow` görüntü işleme için (`pip install pillow`) +- `pytesseract` Tesseract OCR için ince bir sarmalayıcıdır (`pip install pytesseract`) +- Makinenize Tesseract OCR motoru kurulu olmalı (indirmek için [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- İşlemek istediğiniz büyük bir görüntü dosyası (`large_image.png` bu kılavuzda) + +Ekstra framework yok, async/await yok—sadece klasik `threading` ve bir callback. + +## Adım 1: Threading Modülünü İçe Aktarın (Arka Plan Çalıştırma İçin Gerekli) + +İlk yaptığımız şey `threading` modülünü içe aktarmaktır. Bu modül, herhangi bir fonksiyonu ayrı bir işletim sistemi thread'inde çalıştırmamızı sağlayan `Thread` sınıfını sunar. + +```python +import threading +``` + +*Neden önemli*: OCR'yi ana thread'de çalıştırırsanız, programınız (özellikle bir GUI) OCR bitene kadar donacaktır. İşi bir arka plan thread'ine devrederek, ana thread UI'yi güncellemek, kullanıcı girdisini işlemek veya başka görevler başlatmak için serbest kalır. + +## Adım 2: OCR Bittiğinde Çağrılacak Bir Callback Tanımlayın + +Callback, başka bir kod parçasının işi bittiğinde çağırdığı basit bir fonksiyondur. Burada tanınan metni yazdıracağız, ancak onu saklayabilir, ağ üzerinden gönderebilir veya bir UI widget'ını güncelleyebilirsiniz. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Pro ipucu*: Callback'i hafif tutun. Callback içinde ağır işlem yapmak, threading amacını bozar çünkü yine de onu çağıran thread'i (genellikle ana thread) engeller. + +## Adım 3: İşlemek İstediğiniz Görüntüyü Yükleyin + +Görüntüyü yüklemek OCR'dan ayrı bir konudur, ancak yine de genel iş akışının bir parçasıdır. Pillow kullanmak bunu çok basit hale getirir. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Neden burada yapıyoruz*: Görüntü çok büyükse, ana thread'de yüklemek zaten bir takılmaya neden olabilir. Gerçek dünyadaki birçok uygulamada yüklemeyi bir thread'e de taşırsınız, ancak açıklık için senkron tutuyoruz. + +## Adım 4: Küçük Bir OCR Motor Sarmalayıcısı Oluşturun + +Orijinal kod parçası `engine.process_async` kullanıyordu. Bunu, içinde bir thread başlatan ve iş bittiğinde verilen callback'i çağıran küçük bir sınıfla taklit edeceğiz. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Açıklama*: +- `_run_ocr` ağır işi yapar. +- `process_async` bir `Thread` nesnesi oluşturur, onu daemon olarak işaretler (thread hâlâ çalışıyor olsa bile yorumlayıcının çıkabilmesi için) ve başlatır. +- Callback, OCR metnini ya da bir hata mesajını alır. + +## Adım 5: Her Şeyi Birleştirip OCR Çalışırken Başka İşler Yapın + +Şimdi tüm akışı düzenliyoruz: görüntüyü yüklüyoruz, motoru örnekliyoruz, async OCR'yi başlatıyoruz ve ana thread'i başka bir şeyle meşgul tutuyoruz (burada sadece bir mesaj yazdırıyoruz). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Beklenen çıktı (kısaltılmış):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +OCR başarısız olursa, callback metin yerine bir hata mesajı yazdıracaktır. + +--- + +## Bu Yaklaşımın Daha İyi Çalışmasının Sebebi + +- **Yanıt Verebilirlik**: Ana thread OCR çağrısında asla bloklanmaz, bu büyük görüntüler için saniyeler sürebilir. +- **Ölçeklenebilirlik**: Birden fazla `SimpleOcrEngine` örneği oluşturabilir, her birini kendi thread'inde çalıştırarak bir grup görüntüyü eşzamanlı işleyebilirsiniz. +- **Sorumlulukların Ayrılması**: Yükleme, işleme ve sonuç yönetimi temiz bir şekilde ayrılmıştır, bu da kodun test edilmesini ve bakımını kolaylaştırır. + +## Yaygın Tuzaklar ve Nasıl Kaçınılır + +| Tuzak | Ne Olur | Çözüm | +|------|----------|------| +| Thread'i *daemon* olarak işaretlemeyi unutmak | Ana iş bittiğinde script, OCR thread'i hâlâ çalıştığı için takılır. | `worker.daemon = True` **veya** çıkmadan önce thread'i `join()` yapın. | +| Sonuç için kilitsiz global değişken kullanmak | Birden fazla thread aynı anda yazdığında yarış koşulları veriyi bozabilir. | Sonucu bir callback aracılığıyla (bizim yaptığımız gibi) iletin veya `queue.Queue` gibi thread‑güvenli konteynerler kullanın. | +| Büyük bir görüntüyü ana thread'de yüklemek | Arka plan OCR başlamadan UI donar. | Görüntü yüklemeyi de bir thread'e taşıyın veya tembel yükleme tekniklerini kullanın. | +| Worker thread içinde istisnaları ele almamak | Yakalanmamış istisnalar thread'i sessizce öldürür, sonuç elde edemezsiniz. | OCR mantığını `try/except` ile sarın ve hatayı callback'e iletin. | + +## Bu Deseni Genişletmek + +- **İlerleme Raporlama**: OCR thread'inden ana thread'e ara yüzde ilerleme yüzdelerini itmek için paylaşılan bir `queue.Queue` kullanın. +- **Thread Havuzu**: Toplu işleme için bireysel `Thread` nesnelerini `concurrent.futures.ThreadPoolExecutor` ile değiştirin. +- **GUI Entegrasyonu**: Tkinter veya PyQt uygulamasında, UI güncellemelerinin ana thread'de gerçekleşmesini sağlamak için callback'i `after()` (Tkinter) veya `QTimer.singleShot` (Qt) ile zamanlayın. + +## Tam Çalışan Örnek (Kopyala‑Yapıştır Hazır) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md b/ocr/vietnamese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md new file mode 100644 index 000000000..fd61e69bc --- /dev/null +++ b/ocr/vietnamese/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/_index.md @@ -0,0 +1,250 @@ +--- +category: general +date: 2026-04-26 +description: Trích xuất văn bản tiêu đề bằng OCR sử dụng Python Aspose OCR. Tìm hiểu + cách trích xuất văn bản từ khu vực cụ thể trong hình ảnh một cách nhanh chóng và + đáng tin cậy. +draft: false +keywords: +- extract header text ocr +- extract specific area text +- python aspose ocr +- ocr region of interest python +- aspose ocr roi +language: vi +og_description: Trích xuất nhanh văn bản tiêu đề bằng OCR. Hướng dẫn này cho thấy + cách trích xuất văn bản từ khu vực cụ thể bằng Python Aspose OCR chỉ trong vài dòng. +og_title: Trích xuất văn bản tiêu đề bằng OCR với Python Aspose OCR – Hướng dẫn đầy + đủ +tags: +- OCR +- Python +- Aspose +title: Trích xuất văn bản tiêu đề bằng OCR với Python Aspose OCR – Hướng dẫn từng + bước +url: /vi/python-java/general/extract-header-text-ocr-with-python-aspose-ocr-step-by-step/ +--- + +{{< 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 Đầu đề OCR – Hướng dẫn đầy đủ Python Aspose OCR + +Bạn đã bao giờ cần **extract header text OCR** từ một hoá đơn đã quét nhưng không muốn xử lý toàn bộ trang chưa? Bạn không phải là người duy nhất. Trong nhiều quy trình thực tế, phần đầu đề chứa thông tin quan trọng nhất—số hoá đơn, ngày, tên nhà cung cấp—vì vậy việc trích xuất nhanh chóng có thể tiết kiệm rất nhiều công việc ở các bước sau. + +Trong hướng dẫn này, chúng tôi sẽ cho bạn thấy một giải pháp sẵn sàng chạy mà **extracts specific area text** bằng cách sử dụng thư viện **Python Aspose OCR**. Không có những tham chiếu mơ hồ tới tài liệu bên ngoài, chỉ có một script hoàn chỉnh, giải thích rõ ràng từng dòng, và các mẹo bạn sẽ thực sự dùng ngay ngày mai. + +## Những gì bạn sẽ học + +- Cách cài đặt và import gói Aspose OCR cho Python. +- Cách tải một hình ảnh và định nghĩa một **region of interest (ROI)** để cô lập phần đầu đề. +- Cách chạy engine OCR trên ROI đó và lấy văn bản sạch. +- Những lỗi thường gặp (ví dụ: không khớp DPI) và cách tránh chúng. +- Kết quả đầu ra mong đợi trông như thế nào để bạn có thể xác minh mọi thứ hoạt động. + +Khi kết thúc, bạn sẽ có thể chèn đoạn mã này vào bất kỳ dự án nào cần **extract header text OCR** từ hoá đơn, biên lai, hoặc bất kỳ tài liệu nào có bố cục dự đoán được. + +## Yêu cầu trước + +- Python 3.8 hoặc mới hơn đã được cài đặt trên máy của bạn. +- Giấy phép Aspose OCR cho Python hợp lệ (bản dùng thử miễn phí đủ cho việc đánh giá). +- Một file ảnh (`invoice.png`) chứa vùng đầu đề rõ ràng. +- Kiến thức cơ bản về các hàm Python và đường dẫn file. + +> **Mẹo chuyên nghiệp:** Nếu bạn đang thử nghiệm trên bản quét độ phân giải thấp, hãy tăng DPI trước khi đưa vào Aspose OCR – nó cải thiện độ chính xác đáng kể. + +--- + +## Bước 1: Cài đặt gói Aspose OCR + +Đầu tiên, thêm thư viện vào môi trường của bạn. Gói chính thức là `aspose-ocr`. Chạy lệnh này một lần: + +```bash +pip install aspose-ocr +``` + +Nếu bạn đang sử dụng môi trường ảo (được khuyến nghị mạnh mẽ), hãy kích hoạt nó trước khi cài đặt. Điều này đảm bảo gói không xung đột với các dự án khác. + +## Bước 2: Import các lớp cần thiết và tải ảnh + +Bây giờ chúng ta đưa các lớp cần thiết vào script và tải ảnh hoá đơn. Lưu ý việc sử dụng **full paths**; các đường dẫn tương đối cũng hoạt động, nhưng đường dẫn tuyệt đối loại bỏ sự mơ hồ khi script chạy trên máy chủ. + +```python +# Step 2: Imports and image loading +from asposeocr import OcrEngine, Rectangle, Image + +# Create an OCR engine instance – this object holds all settings. +ocr_engine = OcrEngine() + +# Load the image that contains the invoice. +# Replace "YOUR_DIRECTORY/invoice.png" with your actual file location. +ocr_engine.image = Image.load(r"C:\Invoices\invoice.png") +``` + +> **Tại sao điều này quan trọng:** Khởi tạo `OcrEngine` một lần và tái sử dụng cho nhiều ảnh sẽ hiệu quả hơn so với việc tạo engine mới mỗi lần. + +## Bước 3: Định nghĩa Vùng Đầu đề (ROI) + +Phần đầu đề thường nằm ở đầu trang, nhưng tọa độ chính xác có thể thay đổi. Ở đây chúng ta định nghĩa một hình chữ nhật (`x`, `y`, `width`, `height`) bao phủ phần đầu đề. Điều chỉnh các số để phù hợp với bố cục tài liệu của bạn. + +```python +# Step 3: Define the region of interest (ROI) that contains the header. +# Rectangle(x, y, width, height) – all values are in pixels. +header_region = Rectangle(50, 20, 500, 80) # Example values; tweak as needed. +``` + +> **Cách hoạt động:** Bằng cách gọi `set_roi`, engine OCR giới hạn phân tích trong hình chữ nhật này, giúp tăng tốc xử lý đáng kể và giảm nhiễu từ phần còn lại của trang. + +## Bước 4: Áp dụng ROI và chạy OCR + +Bây giờ chúng ta yêu cầu engine tập trung vào vùng đầu đề và sau đó thực hiện quá trình OCR. Đối tượng kết quả chứa văn bản đã nhận dạng và các siêu dữ liệu bổ sung (điểm confidence, ngôn ngữ, v.v.). + +```python +# Step 4: Apply the ROI to the OCR engine. +ocr_engine.set_roi(header_region) + +# Step 5: Perform OCR on the defined ROI. +ocr_result = ocr_engine.process() +``` + +Nếu OCR thất bại (ví dụ: định dạng ảnh không được hỗ trợ), `ocr_result` sẽ là `None`. Một câu guard ngắn có thể làm script của bạn chắc chắn hơn: + +```python +if ocr_result is None: + raise RuntimeError("OCR processing failed – check image format and ROI.") +``` + +## Bước 5: Lấy và In Văn bản Đầu đề Đã Trích xuất + +Cuối cùng, chúng ta lấy văn bản từ đối tượng kết quả và hiển thị. Bạn cũng có thể ghi nó vào file hoặc truyền cho hàm khác để phân tích sâu hơn. + +```python +# Step 6: Print the extracted header text. +print("Header text:", ocr_result.text) +``` + +### Kết quả mong đợi + +Khi mọi thứ được cấu hình đúng, bạn sẽ thấy kết quả giống như: + +``` +Header text: Acme Corp +Invoice #12345 +Date: 2026‑04‑20 +``` + +Nếu kết quả bị rối, hãy kiểm tra lại tọa độ ROI và đảm bảo ảnh nguồn có độ tương phản cao. + +--- + +## Các biến thể & Trường hợp đặc biệt + +### 1. Nhiều đầu đề trong một tài liệu + +Đôi khi một PDF chứa nhiều trang, mỗi trang có đầu đề riêng. Lặp qua các trang và điều chỉnh ROI cho mỗi trang: + +```python +for page_number, img_path in enumerate(image_paths, start=1): + ocr_engine.image = Image.load(img_path) + # Adjust Y coordinate based on page height if needed. + ocr_engine.set_roi(Rectangle(50, 20, 500, 80)) + result = ocr_engine.process() + print(f"Page {page_number} header:", result.text) +``` + +### 2. Xử lý ảnh quét bị nghiêng + +Nếu hoá đơn hơi nghiêng, hãy tiền xử lý ảnh bằng OpenCV trước khi đưa vào Aspose OCR: + +```python +import cv2 +import numpy as np + +# Load with OpenCV, correct rotation, then convert back to Aspose Image. +cv_img = cv2.imread(r"C:\Invoices\invoice.png") +# Assume we have a function `deskew` that returns a corrected image. +deskewed = deskew(cv_img) +# Convert back to Aspose Image: +aspose_img = Image.from_array(deskewed) # Pseudo‑code; actual conversion may vary. +ocr_engine.image = aspose_img +``` + +### 3. Thay đổi cài đặt ngôn ngữ + +Aspose OCR có thể tự động phát hiện ngôn ngữ, nhưng bạn có thể ép buộc tiếng Anh để có kết quả nhanh hơn: + +```python +ocr_engine.language = "en" +``` + +--- + +## Ví dụ Hoạt động Đầy đủ + +Dưới đây là script hoàn chỉnh bạn có thể sao chép‑dán vào file có tên `extract_header.py`. Nhớ thay đổi đường dẫn ảnh cho phù hợp. + +```python +# extract_header.py +# Complete example: extract header text OCR using Python Aspose OCR + +from asposeocr import OcrEngine, Rectangle, Image + +def extract_header(image_path: str, + roi: Rectangle = Rectangle(50, 20, 500, 80), + language: str = "en") -> str: + """ + Extracts text from the header region of an invoice image. + + :param image_path: Full path to the invoice image (PNG, JPG, etc.). + :param roi: Rectangle defining the header area (default works for most A4 invoices). + :param language: OCR language code; default is English. + :return: Recognized header text. + :raises RuntimeError: If OCR processing fails. + """ + engine = OcrEngine() + engine.language = language + engine.image = Image.load(image_path) + engine.set_roi(roi) + + result = engine.process() + if result is None: + raise RuntimeError("OCR processing failed – verify image and ROI.") + return result.text.strip() + +if __name__ == "__main__": + # Example usage + invoice_path = r"C:\Invoices\invoice.png" + header_text = extract_header(invoice_path) + print("Header text:", header_text) +``` + +Chạy script này sẽ xuất ra các dòng đầu đề chính xác như đã thấy ở trên. Bạn có thể tự do điều chỉnh giá trị `roi` để phù hợp với mẫu hoá đơn cụ thể của mình. + +--- + +## Các Câu hỏi Thường gặp Được Trả lời + +**Q: Điều này có hoạt động trực tiếp với PDF không?** +A: Không có sẵn. Cần chuyển mỗi trang PDF thành ảnh (ví dụ: dùng `pdf2image`) rồi đưa PNG/JPG vào script. + +**Q: Nếu đầu đề của tôi chứa cả logo và văn bản thì sao?** +A: Aspose OCR tập trung vào nội dung văn bản. Đối với logo, hãy cân nhắc sử dụng thư viện nhận dạng ảnh riêng như `opencv` hoặc `tesseract` với mô hình tùy chỉnh. + +**Q: Bản dùng thử miễn phí có giới hạn không?** +A: Bản dùng thử cho phép tối đa 10 trang mỗi tháng. Đối với môi trường sản xuất, mua giấy phép để bỏ giới hạn và mở khóa các cài đặt độ chính xác cao hơn. + +--- + +## Kết luận + +Bạn đã có một hướng dẫn **đầy đủ, đáng trích dẫn** cho việc **extract header text OCR** bằng **Python Aspose OCR**. Hướng dẫn đã bao phủ mọi thứ từ cài đặt đến xử lý các trường hợp đặc biệt, và cung cấp cho bạn một hàm có thể tái sử dụng trong các quy trình lớn hơn. + +Tiếp theo, bạn có thể khám phá **extract specific area text** cho các khu vực khác như chân trang hoặc các mục dòng, hoặc kết hợp cách này với bộ chuyển đổi PDF‑to‑image để tự động hoá toàn bộ quy trình tài liệu. Các khả năng là vô hạn—chỉ cần nhớ giữ tọa độ ROI chính xác và ảnh có độ phân giải cao. + +Có bố cục khó khăn? Hãy chia sẻ trong phần bình luận và chúng tôi sẽ điều chỉnh ROI cùng bạ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/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md b/ocr/vietnamese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md new file mode 100644 index 000000000..5e793008c --- /dev/null +++ b/ocr/vietnamese/python-java/general/extract-text-from-image-with-python-multilingual-ocr-guide/_index.md @@ -0,0 +1,232 @@ +--- +category: general +date: 2026-04-26 +description: Trích xuất văn bản từ hình ảnh bằng Aspose OCR trong Python. Tìm hiểu + cách trích xuất văn bản, chuyển đổi hình ảnh thành văn bản và tải hình ảnh cho OCR + với hỗ trợ đa ngôn ngữ. +draft: false +keywords: +- extract text from image +- how to extract text +- convert image to text +- load image for ocr +- multilingual ocr python +language: vi +og_description: Trích xuất văn bản từ hình ảnh ngay lập tức. Hướng dẫn này chỉ cách + trích xuất văn bản, chuyển đổi hình ảnh thành văn bản và tải hình ảnh để OCR bằng + Aspose OCR trong Python. +og_title: Trích xuất văn bản từ hình ảnh bằng Python – Hướng dẫn OCR đa ngôn ngữ toàn + diện +tags: +- OCR +- Python +- Aspose +title: Trích xuất văn bản từ hình ảnh bằng Python – Hướng dẫn OCR đa ngôn ngữ +url: /vi/python-java/general/extract-text-from-image-with-python-multilingual-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 bằng Python – Hướng dẫn OCR đa ngôn ngữ + +Bạn đã bao giờ cần **trích xuất văn bản từ hình ảnh** nhưng không chắc thư viện nào có thể xử lý các trang đa ngôn ngữ? Bạn không phải là người duy nhất. Trong nhiều ứng dụng thực tế—như xử lý hoá đơn, giám sát mạng xã hội, hoặc lưu trữ tài liệu đa ngôn ngữ—bạn sẽ gặp những hình ảnh chứa cả ký tự Latin và Cyrillic. + +Tin tốt? Với Aspose OCR for Python bạn có thể **trích xuất văn bản**, **chuyển đổi hình ảnh thành văn bản**, và **tải hình ảnh cho OCR** chỉ trong vài dòng, đồng thời cho phép engine tự động phát hiện ngôn ngữ. Trong hướng dẫn này, chúng tôi sẽ đi qua một ví dụ hoàn chỉnh, có thể chạy được, giải thích lý do mỗi bước quan trọng, và đề cập một vài trường hợp đặc biệt mà bạn có thể gặp. + +> **Bạn sẽ nhận được** +> * Một script sẵn sàng chạy để lấy văn bản từ PNG đa ngôn ngữ. +> * Hiểu cách cấu hình OCR đa ngôn ngữ trong Python. +> * Mẹo xử lý các tệp lớn, các định dạng hình ảnh khác nhau, và gỡ lỗi các vấn đề thường gặp. + +## Yêu cầu trước + +- Python 3.8 hoặc mới hơn (code sử dụng f‑strings). +- Gói `asposeocr` đã được cài đặt (`pip install asposeocr`). +- Một tệp hình ảnh (ví dụ: `mixed_lang.png`) chứa văn bản bằng hơn một bảng chữ viết. +- Kiến thức cơ bản về import trong Python và API hướng đối tượng. + +Không có phụ thuộc nặng, không có dịch vụ bên ngoài—chỉ cần một lệnh pip install và bạn đã sẵn sàng. + +--- + +## Bước 1 – Cài đặt & import thư viện Aspose OCR + +Trước khi chúng ta có thể **tải hình ảnh cho OCR**, chúng ta cần thư viện này. Gói này đi kèm với engine OCR lõi và một bộ tải hình ảnh nhẹ. + +```python +# Install the package (run once in your environment) +# pip install asposeocr + +# Import the required classes +import asposeocr as aocr +from asposeocr import OcrEngine, OcrConfig, Language +``` + +*Tại sao điều này quan trọng*: Import các lớp cụ thể giúp không gian tên gọn gàng và làm cho mã sau này rõ ràng hơn. Nếu bạn chỉ import `asposeocr`, bạn sẽ phải đặt tiền tố cho mọi lời gọi (`aocr.OcrEngine()`), điều này gây rối. + +--- + +## Bước 2 – Tạo engine OCR và bật phát hiện đa ngôn ngữ + +Aspose OCR có thể tự động đoán ngôn ngữ (các ngôn ngữ) có trong hình ảnh. Đặt `Language.AUTO` bao gồm Latin, Cyrillic, Arabic và nhiều ngôn ngữ khác. + +```python +# Initialize the OCR engine +ocr_engine = OcrEngine() + +# Enable automatic language detection (covers Latin, Cyrillic, etc.) +ocr_engine.config.language = Language.AUTO +``` + +*Mẹo chuyên nghiệp*: Nếu bạn biết trước bộ ngôn ngữ, bạn có thể gán `Language.ENGLISH` hoặc `Language.RUSSIAN` để tăng hiệu năng nhẹ. Nhưng đối với các tài liệu thực sự hỗn hợp, `AUTO` là lựa chọn an toàn nhất. + +--- + +## Bước 3 – Tải hình ảnh bạn muốn xử lý + +Đây là nơi chúng ta **tải hình ảnh cho OCR**. Aspose hỗ trợ PNG, JPEG, BMP, TIFF, và thậm chí các trang PDF được xử lý như hình ảnh. + +```python +# Path to the image containing mixed‑language text +image_file_path = "YOUR_DIRECTORY/mixed_lang.png" + +# Load the image into the OCR engine +ocr_engine.image = aocr.Image.load(image_file_path) +``` + +> **Mẹo**: Nếu hình ảnh của bạn lớn hơn 2 MB, hãy cân nhắc giảm kích thước trước. Hình ảnh lớn tăng mức sử dụng bộ nhớ và có thể làm chậm bước phát hiện. + +--- + +## Bước 4 – Chạy quá trình OCR và lấy kết quả + +Gọi `process()` thực hiện công việc nặng: phát hiện văn bản, phân tích bố cục, và giải mã ngôn ngữ. + +```python +# Execute the OCR operation +ocr_result = ocr_engine.process() +``` + +Đối tượng `ocr_result` trả về chứa một số thuộc tính hữu ích: + +| Thuộc tính | Mô tả | +|------------|------| +| `text` | Chuỗi văn bản thuần của kết quả nhận dạng (thường được sử dụng nhất). | +| `confidence` | Điểm tin cậy tổng thể (0‑100). | +| `lines` | Danh sách các đối tượng `OcrLine` có dữ liệu vị trí (rất hữu ích cho PDF). | + +--- + +## Bước 5 – Hiển thị văn bản đã trích xuất + +Cuối cùng, chúng ta in ra kết quả. Trong một ứng dụng thực tế, bạn có thể ghi nó vào cơ sở dữ liệu hoặc truyền vào API dịch thuật. + +```python +print("Recognized Text:") +print(ocr_result.text) +``` + +**Kết quả mong đợi** (ví dụ cho hình ảnh đa ngôn ngữ): + +``` +Recognized Text: +Hello world! +Привет мир! +``` + +Nếu bạn thấy ký tự bị rối, hãy kiểm tra lại xem hình ảnh có bị hỏng không và bạn đang sử dụng phiên bản mới nhất của `asposeocr` (v23.7 tại thời điểm viết). + +--- + +## Bước 6 – Toàn bộ script bạn có thể sao chép và dán + +Kết hợp tất cả lại sẽ loại bỏ sự nhầm lẫn “đoạn code bắt đầu từ đâu?”. Lưu lại dưới tên `multilingual_ocr.py` và chạy từ dòng lệnh. + +```python +# multilingual_ocr.py +# ------------------------------------------------- +# Complete example: extract text from image (multilingual) +# ------------------------------------------------- + +import asposeocr as aocr +from asposeocr import OcrEngine, Language + +def extract_text(image_path: str) -> str: + """ + Loads an image, runs Aspose OCR with auto language detection, + and returns the recognized text. + """ + engine = OcrEngine() + engine.config.language = Language.AUTO + engine.image = aocr.Image.load(image_path) + result = engine.process() + return result.text + +if __name__ == "__main__": + # Adjust this path to point at your own image file + img_path = "YOUR_DIRECTORY/mixed_lang.png" + text = extract_text(img_path) + print("Recognized Text:") + print(text) +``` + +Chạy nó: + +```bash +python multilingual_ocr.py +``` + +Bạn sẽ thấy các chuỗi đã trích xuất được in ra console. Hết rồi—**chuyển đổi hình ảnh thành văn bản** chỉ với vài dòng mã. + +--- + +## Các câu hỏi thường gặp & xử lý trường hợp đặc biệt + +### Nếu hình ảnh của tôi chứa chữ viết tay thì sao? + +Aspose OCR được tối ưu cho văn bản in. Các script viết tay thường cần một mô hình riêng (ví dụ, Azure Read hoặc Google Vision). Bạn vẫn có thể thử `Language.AUTO`, nhưng hãy mong đợi độ tin cậy thấp hơn. + +### Làm thế nào để cải thiện độ chính xác trên các bản quét nhiễu? + +1. Tiền xử lý hình ảnh (nhị phân hoá, loại bỏ nhiễu). +2. Tăng DPI lên ít nhất 300 ppi trước khi đưa vào engine. +3. Đặt rõ ràng `ocr_engine.config.deskew = True` nếu hình ảnh bị nghiêng. + +```python +ocr_engine.config.deskew = True +``` + +### Tôi có thể trích xuất văn bản từ PDF mà không chuyển nó sang hình ảnh trước không? + +Có—Aspose OCR có thể mở các trang PDF trực tiếp: + +```python +ocr_engine.image = aocr.Image.load("document.pdf", page_number=1) +``` + +Chỉ cần nhớ rằng mỗi trang được xử lý như một hình ảnh nội bộ, vì vậy các lưu ý về chất lượng vẫn áp dụng. + +--- + +## Kết luận + +Bây giờ bạn đã có một công thức toàn diện, đầu‑tới‑cuối để **trích xuất văn bản từ hình ảnh** bằng Aspose OCR trong Python, hỗ trợ đa ngôn ngữ. Script này minh họa cách **tải hình ảnh cho OCR**, **chuyển đổi hình ảnh thành văn bản**, và xử lý các vấn đề thường gặp nhất. + +Từ đây bạn có thể: + +- Tích hợp hàm vào dịch vụ web cho phép người dùng tải lên. +- Kết hợp văn bản đã trích xuất với thư viện phát hiện ngôn ngữ để chuyển tới engine dịch phù hợp. +- Thử nghiệm các tùy chọn `ocr_engine.config` (ví dụ, `max_recognition_time`, `text_orientation`) để tinh chỉnh hiệu năng. + +Chúc lập trình vui vẻ, và hy vọng các pipeline OCR của bạn luôn chính xác! + +--- + +![Ảnh chụp màn hình văn bản đa ngôn ngữ đã trích xuất – ví dụ trích xuất văn bản từ hình ảnh](image-placeholder.png "ví dụ trích xuất văn bản từ hình ảnh") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md b/ocr/vietnamese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md new file mode 100644 index 000000000..c5e69c29b --- /dev/null +++ b/ocr/vietnamese/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/_index.md @@ -0,0 +1,236 @@ +--- +category: general +date: 2026-04-26 +description: Cách thực hiện OCR hàng loạt cho tài liệu và trích xuất văn bản từ các + bản quét bằng Python. Học quy trình xử lý hàng loạt từng bước với OcrEngine để xuất + ra định dạng JSON. +draft: false +keywords: +- how to batch OCR +- extract text from scans +- OCR batch processing +- Python OCR automation +- JSON OCR output +language: vi +og_description: Cách thực hiện OCR hàng loạt cho các tệp đã quét và trích xuất văn + bản từ các bản quét trong một script duy nhất. Mã hoàn chỉnh, mẹo và xử lý các trường + hợp đặc biệt. +og_title: Cách thực hiện OCR hàng loạt – Hướng dẫn Python nhanh +tags: +- OCR +- Python +- Automation +title: Cách thực hiện OCR hàng loạt – Trích xuất văn bản từ ảnh quét một cách hiệu + quả +url: /vi/python-java/general/how-to-batch-ocr-extract-text-from-scans-efficiently/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Thực Hiện Batch OCR – Trích Xuất Văn Bản Từ Các Tập Tin Quét Hiệu Quả + +Bạn đã bao giờ tự hỏi **cách batch OCR** một đống tài liệu PDF đã quét mà không mất trí không? Bạn không phải là người duy nhất—các nhà phát triển liên tục hỏi, *“Làm sao tôi có thể trích xuất văn bản từ các tập tin quét trong một lần?”* Tin tốt là chỉ với vài dòng Python, công việc tẻ nhạt đó có thể biến thành một quy trình tự động mượt mà. + +Trong hướng dẫn này, chúng ta sẽ đi qua một giải pháp hoàn chỉnh, sẵn sàng chạy mà **trích xuất văn bản từ các tập tin quét**, lưu kết quả dưới dạng JSON, và cung cấp cho bạn một kiểm tra nhanh cuối cùng. Không có dịch vụ bên ngoài, không có phép thuật—chỉ Python thuần, lớp `OcrEngine`, và một chút xử lý thư mục. + +## Những Điều Bạn Sẽ Nhận Được + +- Một script hoạt động đầy đủ có thể **batch OCR** trên bất kỳ thư mục ảnh nào. +- Giải thích rõ ràng *tại sao* mỗi dòng tồn tại, không chỉ *cái gì* nó làm. +- Mẹo xử lý các thư mục trống, tệp không phải ảnh, và các batch lớn. +- Cách xác minh rằng đầu ra JSON thực sự chứa văn bản đã trích xuất. + +### Yêu Cầu Cơ Bản (tối thiểu nhất) + +| Yêu cầu | Lý do quan trọng | +|-------------|----------------| +| Python 3.8+ | Cú pháp hiện đại & gợi ý kiểu | +| `OcrEngine` library (or a compatible wrapper) | Chức năng OCR cốt lõi | +| A directory with scanned image files (PNG, JPG, TIFF) | Thư mục chứa các tệp ảnh đã quét (PNG, JPG, TIFF) | +| Write permissions for the output folder | Quyền ghi cho thư mục đầu ra | + +Nếu bạn đã có những thứ này, tuyệt vời—hãy bắt đầu. + +![how to batch OCR workflow](image-placeholder.png){alt="luồng công việc batch OCR"} + +## Bước 1 – Khởi Tạo Engine OCR (cách batch OCR) + +Trước khi chúng ta có thể xử lý bất kỳ thứ gì, chúng ta cần một thể hiện của engine OCR. Hãy nghĩ nó như “bộ não” sẽ đọc mỗi ảnh và xuất ra văn bản. Khởi tạo một lần và tái sử dụng nó cho toàn bộ batch là mẫu hiệu quả nhất. + +```python +# Step 1: Create an OCR engine instance +# The OcrEngine class abstracts the low‑level OCR library (Tesseract, EasyOCR, etc.) +ocr_engine = OcrEngine() +``` + +> **Tại sao lại tái sử dụng cùng một thể hiện?** +> Tạo một engine mới cho mỗi tệp sẽ liên tục tải các mô hình nặng vào bộ nhớ, làm chậm batch đáng kể. Một thể hiện duy nhất giữ mô hình trong RAM và cho phép bạn xử lý hàng nghìn ảnh mà không gặp sự chậm lại đáng chú ý. + +## Bước 2 – Chỉ Định Thư Mục Chứa Các Tập Tin Quét (trích xuất văn bản từ các tập tin quét) + +Các tập tin quét của bạn nằm ở đâu đó trên đĩa. Hãy cho script biết nơi chúng nằm. Sử dụng đường dẫn tuyệt đối tránh những bất ngờ “không tìm thấy tệp” khi script được chạy từ thư mục làm việc khác. + +```python +import os + +# Step 2: Specify the folder that contains scanned images +# Replace YOUR_DIRECTORY with the actual base path on your machine. +input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") +``` + +> **Mẹo chuyên nghiệp:** +> Nếu bạn đang dùng Windows, dấu gạch chéo (`/`) hoạt động tốt với `os.path.abspath`, vì vậy bạn không cần escape dấu gạch ngược. + +## Bước 3 – Chọn Địa Điểm Lưu Kết Quả JSON + +Bạn có lẽ muốn một thư mục gọn gàng cho kết quả OCR. Giữ đầu ra riêng biệt với nguồn giúp việc dọn dẹp sau này dễ dàng hơn hoặc đưa JSON vào một pipeline khác. + +```python +# Step 3: Specify where the JSON results should be saved +output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") +os.makedirs(output_dir, exist_ok=True) # Ensure the folder exists +``` + +> **Tại sao tạo thư mục bằng chương trình?** +> Điều này đảm bảo script sẽ không bị crash nếu thư mục chưa tồn tại, và `exist_ok=True` làm cho thao tác trở nên idempotent—chạy script nhiều lần mà không gặp lỗi. + +## Bước 4 – Chạy Quá Trình Batch (cách batch OCR) + +Bây giờ là phần cốt lõi: yêu cầu `ocr_engine` duyệt qua mọi tệp trong `input_dir`, thực hiện OCR, và ghi JSON vào `output_dir`. Tham số `format="json"` báo cho engine tuần tự hoá kết quả theo cách có cấu trúc mà các công cụ downstream yêu thích. + +```python +# Step 4: Run batch processing to convert all scans to JSON format +ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" +) +``` + +### Điều gì đang diễn ra bên trong? + +1. **Khám phá tệp** – Engine quét `input_folder` một cách đệ quy, bỏ qua các tệp ẩn. +2. **Xác thực tệp** – Chỉ các phần mở rộng ảnh được hỗ trợ (`.png`, `.jpg`, `.tif`, v.v.) mới được đưa vào mô hình OCR. +3. **Thực thi OCR** – Mỗi ảnh được gửi tới engine OCR; văn bản, điểm tin cậy và dữ liệu bố cục được ghi lại. +4. **Tuần tự hoá JSON** – Kết quả được ghi vào một tệp có cùng tên cơ sở nhưng có phần mở rộng `.json` trong `output_folder`. + +> **Xử lý các trường hợp đặc biệt:** +> - **Thư mục trống:** Engine ghi log “No files found” và trả về một cách êm ái. +> - **Ảnh hỏng:** Bỏ qua tệp, ghi một mục lỗi vào `batch_errors.log`, và tiếp tục. +> - **Batch lớn (hơn 10k tệp):** Việc sử dụng bộ nhớ vẫn thấp vì mỗi ảnh được xử lý độc lập. + +## Bước 5 – Xác Nhận Quá Trình Chuyển Đổi Hoàn Thành + +Một câu lệnh `print` đơn giản cung cấp phản hồi ngay lập tức trong console. Đối với các pipeline sản xuất, bạn có thể thay thế bằng lời gọi logging hoặc thông báo email. + +```python +# Step 5: Inform the user that the batch conversion has finished +print("Batch conversion complete.") +``` + +Khi bạn thấy dòng này, bạn có thể an toàn kiểm tra thư mục `json_output`. Mỗi tệp JSON sẽ trông tương tự như sau: + +```json +{ + "file_name": "invoice_001.png", + "text": "Invoice #001\nDate: 2024‑12‑01\nTotal: $1,234.56", + "confidence": 0.97, + "layout": [ + {"line": 1, "bbox": [10, 20, 200, 40]}, + {"line": 2, "bbox": [10, 50, 180, 70]}, + {"line": 3, "bbox": [10, 80, 150, 100]} + ] +} +``` + +Bây giờ bạn có thể đưa các tệp JSON này vào cơ sở dữ liệu, chỉ mục tìm kiếm, hoặc bất kỳ công cụ phân tích downstream nào. + +## Câu Hỏi Thường Gặp (và câu trả lời nhanh) + +**Q: Nếu tôi cần xử lý PDF thay vì ảnh thì sao?** +A: Đầu tiên chuyển mỗi trang PDF thành ảnh (ví dụ, dùng `pdf2image`) và đặt các tệp PNG/JPG kết quả vào `input_dir`. Logic batch OCR vẫn không thay đổi. + +**Q: Tôi có thể đổi định dạng đầu ra thành văn bản thuần không?** +A: Chắc chắn. Thay `format="json"` bằng `format="txt"` và engine sẽ ghi một tệp `.txt` chỉ chứa văn bản đã trích xuất. + +**Q: Các tập tin quét của tôi nằm trong nhiều thư mục con—script có duyệt đệ quy không?** +A: Có. `batch_process` mặc định duyệt cây thư mục. Nếu bạn muốn đầu ra phẳng, đặt `flatten=True` (nếu thư viện hỗ trợ) hoặc xử lý hậu kỳ tên tệp JSON. + +**Q: Làm sao tôi xử lý các script không phải Latin?** +A: Khởi tạo `OcrEngine` với tham số ngôn ngữ, ví dụ `OcrEngine(lang="spa+eng")`. Vòng lặp batch không cần thay đổi gì. + +## Mẹo Chuyên Nghiệp & Những Cạm Bẫy Thường Gặp + +- **Kích thước batch quan trọng:** Nếu bạn thấy CPU tăng đột biến, hãy giảm tốc quá trình bằng cách chèn `time.sleep(0.1)` đơn giản giữa các tệp. +- **Logging:** Thay lời gọi `print` bằng mô-đun `logging` của Python để ghi lại thời gian và mức độ lỗi. +- **Xung đột tên tệp:** Nếu hai ảnh quét có cùng tên cơ sở nhưng nằm trong các thư mục con khác nhau, các tệp JSON sẽ ghi đè lên nhau. Thêm một hash của đường dẫn tương đối vào tên đầu ra để tránh điều này. +- **Rò rỉ bộ nhớ:** Một số backend OCR giữ lại tài nguyên gốc. Gọi `ocr_engine.close()` vào cuối script nếu thư viện cung cấp phương thức dọn dẹp. + +## Toàn Bộ Script – Sẵn Sàng Sao Chép & Dán + +```python +import os +from ocr_engine import OcrEngine # Replace with the actual import path + +def main(): + # Step 1: Initialize the OCR engine (how to batch OCR) + ocr_engine = OcrEngine() + + # Step 2: Directory with scanned images (extract text from scans) + input_dir = os.path.abspath("YOUR_DIRECTORY/scans/") + if not os.path.isdir(input_dir): + raise FileNotFoundError(f"Input folder not found: {input_dir}") + + # Step 3: Destination for JSON results + output_dir = os.path.abspath("YOUR_DIRECTORY/json_output/") + os.makedirs(output_dir, exist_ok=True) + + # Step 4: Run the batch OCR process + ocr_engine.batch_process( + input_folder=input_dir, + output_folder=output_dir, + format="json" + ) + + # Step 5: Confirmation message + print("Batch conversion complete.") + +if __name__ == "__main__": + main() +``` + +**Kết quả console dự kiến** + +``` +Scanning folder: /home/user/YOUR_DIRECTORY/scans/ +Found 42 image files. +Processing file 1/42: invoice_001.png … done. +Processing file 2/42: receipt_2024-03.jpg … done. +… +Batch conversion complete. +``` + +Bạn có thể xác minh JSON bằng cách mở bất kỳ tệp nào trong `json_output` bằng trình soạn thảo văn bản hoặc tải nó trong Python: + +```python +import json, pathlib + +sample = pathlib.Path(output_dir) / "invoice_001.json" +data = json.loads(sample.read_text()) +print(data["text"]) +``` + +Bạn sẽ thấy văn bản thô đã được OCR trích xuất được in ra console. + +## Kết Luận + +Chúng ta vừa vừa hoàn thành **cách batch OCR** một thư mục đầy ảnh đã quét và **trích xuất văn bản từ các tập tin quét** thành các tệp JSON sạch, có thể đọc được bởi máy. Cách tiếp cận được thiết kế đơn giản: thiết lập engine một lần, chỉ định thư mục, và để thư viện thực hiện phần nặng. Từ đây bạn có thể: + +- Kết nối JSON + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md b/ocr/vietnamese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md new file mode 100644 index 000000000..45f29d92f --- /dev/null +++ b/ocr/vietnamese/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/_index.md @@ -0,0 +1,243 @@ +--- +category: general +date: 2026-04-26 +description: Cách tạo OCR nhanh chóng và đáng tin cậy. Học cách trích xuất văn bản + từ hình ảnh, tải hình ảnh cho OCR và chạy OCR trên file PNG với từ điển tùy chỉnh. +draft: false +keywords: +- how to create OCR +- extract text from image +- extract text scanned document +- load image for OCR +- run OCR on png +language: vi +og_description: Cách tạo OCR trong Python và trích xuất văn bản từ hình ảnh. Hướng + dẫn này cho thấy cách tải hình ảnh cho OCR, chạy OCR trên PNG và sử dụng từ điển + tùy chỉnh. +og_title: Cách tạo OCR trong Python – Trích xuất văn bản nhanh +tags: +- OCR +- Python +- Image Processing +title: Cách tạo OCR trong Python – Trích xuất văn bản từ hình ảnh +url: /vi/python-java/general/how-to-create-ocr-in-python-extract-text-from-image/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Tạo OCR trong Python – Hướng Dẫn Từng Bước + +Bạn đã bao giờ tự hỏi **cách tạo OCR** để đọc các file PDF đã quét, ảnh chụp màn hình, hay ghi chú viết tay chưa? Bạn không phải là người duy nhất. Trong nhiều dự án thực tế, chúng ta cần *trích xuất văn bản từ file ảnh*, nhưng các engine có sẵn thường gặp khó khăn với các từ ngữ chuyên ngành. + +Trong tutorial này, bạn sẽ thấy một ví dụ hoàn chỉnh, có thể chạy ngay, tải một ảnh để OCR, áp dụng một từ điển tùy chỉnh, và cuối cùng **chạy OCR trên file PNG**. Khi kết thúc, bạn sẽ có thể trích xuất văn bản từ bất kỳ ảnh nào và tùy biến engine cho thuật ngữ riêng của mình. + +## Những Nội Dung Tutorial Này Bao Gồm + +Chúng ta sẽ đi qua từng bước cần thiết: + +* Cài đặt gói `aocr` nhỏ gọn nhưng mạnh mẽ (hoặc bất kỳ thư viện tương thích nào). +* Cấu hình **từ điển tùy chỉnh** để các thuật ngữ như `aspocorp` hay `licensekey` được nhận diện. +* **Tải ảnh để OCR**, dù là PNG, JPEG, hay một trang PDF đã quét. +* Chạy quá trình OCR và in kết quả ra. + +Không có liên kết tài liệu bên ngoài, chỉ có một giải pháp tự chứa mà bạn có thể sao chép‑dán và chạy ngay hôm nay. + +### Yêu Cầu Trước + +* Python 3.8 hoặc mới hơn (code sử dụng f‑strings). +* Kiến thức cơ bản về dòng lệnh – bạn sẽ gõ một vài lệnh `pip install`. +* Một file ảnh (`technical_doc.png` trong ví dụ) được lưu ở nơi bạn có thể tham chiếu. + +Nếu bạn đáp ứng ba yêu cầu trên, bạn đã sẵn sàng. + +--- + +## Bước 1: Cài Đặt Thư Viện OCR + +Đầu tiên, chúng ta cần một engine OCR hỗ trợ đối tượng cấu hình có thể lập trình. Gói `aocr` là một wrapper nhẹ quanh một engine OCR gốc và hoạt động tốt cho các demo. + +```bash +# Install the library (run once) +pip install aocr +``` + +> **Mẹo chuyên nghiệp:** Nếu bạn đang dùng Windows và gặp lỗi biên dịch, thử `pip install aocr‑binary` – gói này cung cấp các wheel đã được xây dựng sẵn. + +### Tại Sao Cài Đặt Thư Viện Này? + +`aocr` cho phép chúng ta truy cập trực tiếp vào một đối tượng `config` nơi chúng ta có thể chèn **từ điển tùy chỉnh**. Đó là bí quyết để cải thiện độ chính xác trên các từ vựng chuyên ngành. + +--- + +## Bước 2: Tạo Instance của Engine OCR & Thêm Từ Điển Tùy Chỉnh + +Bây giờ chúng ta khởi động engine và chỉ định những từ mà nó nên coi là đã biết. + +```python +from aocr import OcrEngine + +# Step 2: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Provide a custom dictionary to improve recognition of domain‑specific terms +ocr_engine.config.custom_dictionary = [ + "aspocorp", # our company's brand name + "ocrengine", # the library name itself + "licensekey" # a common field in our contracts +] +``` + +### Tại Sao Từ Điển Tùy Chỉnh Quan Trọng + +Các mô hình OCR tiêu chuẩn được huấn luyện trên các corpus chung. Khi mô hình gặp “aspocorp”, nó có thể tách thành “aspo corp” hoặc thậm chí bỏ mất các ký tự. Bằng cách cung cấp danh sách tùy chỉnh, chúng ta hướng nhận dạng về đúng chính tả cần thiết, giảm đáng kể công việc xử lý hậu kỳ. + +--- + +## Bước 3: Tải Ảnh Bạn Muốn Xử Lý + +Đây là nơi chúng ta **tải ảnh để OCR**. Phương thức `Image.load` nhận một chuỗi đường dẫn và tự động xác định loại file. + +```python +import aocr + +# Step 3: Load the image that contains the text you want to extract +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/technical_doc.png") +``` + +> **Trường hợp đặc biệt:** Nếu nguồn của bạn là một PDF đa trang, hãy chuyển mỗi trang sang PNG trước (ví dụ, dùng `pdf2image`) và đưa chúng vào engine từng cái một. + +### Mẹo Để Có Ảnh Chất Lượng Tốt Hơn + +* Giữ độ phân giải ít nhất 300 dpi. +* Đảm bảo ảnh được đặt thẳng; nếu cần, xoay bằng `Pillow`. +* Chuyển các bản quét màu sang thang xám để giảm nhiễu. + +--- + +## Bước 4: Chạy Quá Trình OCR Trên File PNG + +Với engine đã được cấu hình và ảnh đã được tải, cuối cùng chúng ta **chạy OCR trên PNG**. + +```python +# Step 4: Run the OCR process +ocr_result = ocr_engine.process() +``` + +Lệnh `process()` trả về một đối tượng chứa văn bản đã nhận diện, điểm tin cậy, và các bounding box cho mỗi từ. + +--- + +## Bước 5: Xuất Văn Bản Được Nhận Diện + +Cách đơn giản nhất để xem engine đã tìm được gì là in thuộc tính `text`. + +```python +# Step 5: Output the recognized text +print(ocr_result.text) +``` + +### Kết Quả Dự Kiến + +Nếu `technical_doc.png` chứa câu *“The Aspocorp licensekey expires on 2025‑12‑31.”*, console sẽ hiển thị: + +``` +The Aspocorp licensekey expires on 2025-12-31. +``` + +Bạn sẽ thấy từ điển tùy chỉnh giữ nguyên tên thương hiệu – điều mà một OCR thông thường có thể đã làm rối. + +--- + +## Ví Dụ Hoàn Chỉnh (Sẵn Sàng Sao Chép‑Dán) + +Dưới đây là toàn bộ script, sẵn sàng lưu dưới tên `run_ocr.py`. Chỉ cần thay đường dẫn placeholder bằng vị trí ảnh của bạn. + +```python +# run_ocr.py +# ------------------------------------------------- +# Complete example showing how to create OCR, +# load an image, apply a custom dictionary, +# and extract text from a PNG file. +# ------------------------------------------------- + +from aocr import OcrEngine +import aocr + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Add domain‑specific words + ocr_engine.config.custom_dictionary = [ + "aspocorp", + "ocrengine", + "licensekey" + ] + + # 3️⃣ Load the image you want to process + # (Make sure the path points to a real file) + image_path = "YOUR_DIRECTORY/technical_doc.png" + ocr_engine.image = aocr.Image.load(image_path) + + # 4️⃣ Run the OCR engine + ocr_result = ocr_engine.process() + + # 5️⃣ Print the extracted text + print("=== Extracted Text ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +Chạy nó từ terminal: + +```bash +python run_ocr.py +``` + +Bạn sẽ thấy văn bản đã trích xuất được in ra console, giống như trong ví dụ ở trên. + +--- + +## Câu Hỏi Thường Gặp (FAQ) + +| Câu hỏi | Trả lời | +|----------|--------| +| **Tôi có thể trích xuất văn bản từ PDF đã quét không?** | Có. Đầu tiên chuyển mỗi trang sang PNG (hoặc TIFF), sau đó đưa các ảnh vào script giống nhau. | +| **Nếu ảnh của tôi là JPEG thay vì PNG thì sao?** | Phương thức `Image.load` hỗ trợ JPEG, BMP, TIFF và PNG ngay từ đầu. Chỉ cần thay đổi phần mở rộng file. | +| **Làm sao cải thiện độ chính xác trên các bản quét có độ tương phản thấp?** | Tiền xử lý bằng `Pillow` – tăng độ tương phản, áp dụng nhị phân hoá, hoặc dùng `opencv` để chỉnh góc. | +| **Có cách lấy điểm tin cậy cho từng từ không?** | `ocr_result` chứa `words` – mỗi từ có thuộc tính `confidence` mà bạn có thể lặp qua. | +| **Tôi có thể chạy trên server không có giao diện (headless) không?** | Hoàn toàn có thể. `aocr` không phụ thuộc GUI, rất phù hợp cho các pipeline CI. | + +--- + +## Các Bước Tiếp Theo & Chủ Đề Liên Quan + +Bây giờ bạn đã biết **cách tạo OCR** và **trích xuất văn bản từ file ảnh**, hãy khám phá thêm: + +* **Kỹ thuật tiền xử lý** – `load image for OCR` chỉ là bước đầu; dùng `opencv` để giảm nhiễu hoặc làm nét. +* **Xử lý hàng loạt** – lặp qua một thư mục PNG để tạo kho lưu trữ có thể tìm kiếm. +* **Hỗ trợ đa ngôn ngữ** – thêm gói ngôn ngữ vào engine nếu bạn cần đọc tài liệu tiếng Pháp hoặc tiếng Đức. +* **Tích hợp với Elasticsearch** – lập chỉ mục văn bản đã trích xuất để tìm kiếm toàn văn trên các tài sản đã quét. + +Mỗi phần mở rộng này dựa trên mẫu cốt lõi chúng ta vừa học, vì vậy việc chuyển đổi sẽ rất nhẹ nhàng. + +--- + +## Kết Luận + +Trong vài phút, chúng ta đã trả lời **cách tạo OCR** có thể **trích xuất văn bản từ file ảnh** một cách đáng tin cậy, đặc biệt là PNG, và đã chỉ cho bạn cách **tải ảnh để OCR**, áp dụng **từ điển tùy chỉnh**, và **chạy OCR trên PNG** mà không cần dịch vụ bên ngoài. + +Hãy chạy thử script, tùy chỉnh từ điển cho phù hợp với thuật ngữ của bạn, và bạn sẽ có nền tảng vững chắc cho bất kỳ dự án số hoá tài liệu nào. + +Nếu gặp khó khăn, để lại bình luận bên dưới—chúng tôi sẵn sàng hỗ trợ. Đừng quên chia sẻ câu chuyện thành công của bạn; cộng đồng học hỏi tốt nhất từ những ví dụ thực tế. + +**Sẵn sàng tự động hoá công việc giấy tờ?** Lấy code, tùy biến, và bắt đầu biến pixel thành văn bản có thể tìm kiếm ngay hôm nay! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md b/ocr/vietnamese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md new file mode 100644 index 000000000..f26a8c244 --- /dev/null +++ b/ocr/vietnamese/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/_index.md @@ -0,0 +1,208 @@ +--- +category: general +date: 2026-04-26 +description: Cách trích xuất OCR từ hình ảnh bằng Python – một ví dụ OCR bằng Python + cho thấy cách tải hình ảnh để OCR và trích xuất văn bản từ biên lai. +draft: false +keywords: +- how to extract ocr +- python ocr example +- extract text from receipt +- load image for ocr +- how to use OCR +language: vi +og_description: cách trích xuất OCR từ hình ảnh bằng Python. Tìm hiểu ví dụ OCR bằng + Python, tải hình ảnh để OCR và trích xuất văn bản từ biên lai chỉ trong vài phút. +og_title: cách trích xuất OCR trong Python – Hướng dẫn đầy đủ +tags: +- OCR +- Python +- Image Processing +title: Cách trích xuất OCR trong Python – Hướng dẫn từng bước +url: /vi/python-java/general/how-to-extract-ocr-in-python-step-by-step-tutorial/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cách trích xuất OCR trong Python – Hướng dẫn đầy đủ + +Bạn đã bao giờ tự hỏi **cách trích xuất OCR** từ một biên lai mờ hoặc một hoá đơn đã quét chưa? Bạn không phải là người duy nhất—các nhà phát triển thường gặp khó khăn khi cần văn bản sạch, có thể đọc được bằng máy từ hình ảnh. Tin tốt là gì? Chỉ với vài dòng Python, bạn có thể biến một bức ảnh biên lai thành văn bản có độ tin cậy cao và có thể tìm kiếm. + +Trong hướng dẫn này, chúng ta sẽ đi qua một **python ocr example** minh họa **cách tải ảnh cho OCR**, chạy engine, và chỉ giữ lại các ký tự đạt ngưỡng độ tin cậy 85 %. Khi kết thúc, bạn sẽ có thể **trích xuất văn bản từ biên lai** mà không cần lục lọi tài liệu hay đoán các tham số API. + +## Những gì bạn cần + +- Python 3.9 hoặc mới hơn (cú pháp chúng tôi dùng hoạt động trên 3.8+) +- Gói `aocr` (hoặc bất kỳ thư viện OCR nào cung cấp lớp `OcrEngine`). Cài đặt bằng: +```bash +pip install aocr +``` +- Một hình ảnh biên lai mẫu (`receipt.png`) đặt trong thư mục bạn có thể tham chiếu. +- Một trình soạn thảo văn bản hoặc IDE—VS Code, PyCharm, hoặc thậm chí một notebook đơn giản cũng được. + +Chỉ vậy thôi. Không có khung công tác nặng, không có dịch vụ bên ngoài, chỉ Python thuần. + +![Kết quả OCR độ tin cậy cao – cách trích xuất OCR từ biên lai](/images/ocr-high-confidence.png) + +*Văn bản thay thế hình ảnh: cách trích xuất OCR từ biên lai bằng Python OCR* + +## Bước 1 – Tạo thể hiện OCR Engine (cách trích xuất OCR) + +Điều đầu tiên chúng ta làm là khởi tạo một OCR engine. Hãy nghĩ nó như bộ não sẽ đọc các pixel cho chúng ta. + +```python +# Step 1: Initialize the OCR engine +from aocr import OcrEngine + +ocr_engine = OcrEngine() +``` + +**Tại sao?** Khởi tạo `OcrEngine` cung cấp cho bạn một đối tượng cấu hình mới. Bạn có thể sau này điều chỉnh mô hình ngôn ngữ, cài đặt DPI, hoặc các bước tiền xử lý—tất cả mà không cần chạm vào vòng lặp xử lý chính. + +## Bước 2 – Tải ảnh cho OCR + +Tiếp theo chúng ta chỉ engine tới hình ảnh muốn phân tích. Đây là nơi từ khóa **load image for ocr** xuất hiện. + +```python +# Step 2: Load the receipt image +image_path = "YOUR_DIRECTORY/receipt.png" +ocr_engine.image = OcrEngine.Image.load(image_path) +``` + +> **Mẹo chuyên nghiệp:** Nếu hình ảnh của bạn nằm trong thư mục khác, hãy sử dụng `os.path.join` để xây dựng đường dẫn độc lập nền tảng. + +**Tại sao phải tải ảnh theo cách này?** Trợ giúp `Image.load` đọc tệp vào định dạng mà engine hiểu, tự động xử lý các định dạng phổ biến (PNG, JPEG, TIFF). Bỏ qua bước này hoặc cung cấp raw bytes sẽ gây ra lỗi `ValueError`. + +## Bước 3 – Chạy quy trình OCR + +Bây giờ chúng ta thực sự chạy OCR. Phương thức `process` trả về một đối tượng kết quả phong phú chứa các ký hiệu đã nhận dạng, điểm tin cậy và hộp bao. + +```python +# Step 3: Execute OCR and capture the result +ocr_result = ocr_engine.process() +``` + +**`ocr_result` chứa gì?** Trong hầu hết các thư viện, nó bao gồm: + +- `text`: chuỗi gộp thô. +- `symbol_confidences`: danh sách các tuple `(char, confidence)`. +- `boxes`: tọa độ cho mỗi ký tự (hữu ích cho việc gỡ lỗi trực quan). + +Có quyền truy cập vào độ tin cậy từng ký tự là cần thiết cho bước tiếp theo. + +## Bước 4 – Giữ lại chỉ các ký tự độ tin cậy cao (≥ 85 %) + +Biên lai thường có vết bẩn, in mờ hoặc nhiễu nền. Bằng cách lọc bỏ các ký tự độ tin cậy thấp, chúng ta cải thiện đáng kể việc phân tích sau này. + +```python +# Step 4: Filter out low‑confidence characters +high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 +) +``` + +**Tại sao 85 %?** Theo kinh nghiệm, ngưỡng khoảng 0.85 cân bằng độ thu hồi và độ chính xác cho hầu hết các biên lai in. Nếu bạn thấy thiếu số, hạ ngưỡng; nếu nhận được ký tự rác, tăng ngưỡng. + +## Bước 5 – Xuất văn bản đã trích xuất độ tin cậy cao + +Cuối cùng, chúng ta in (hoặc lưu) chuỗi đã được làm sạch. Đây là cốt lõi của quy trình **extract text from receipt** của chúng ta. + +```python +# Step 5: Show the cleaned result +print("High‑confidence text:", high_confidence_text) +``` + +Kết quả đầu ra thường trông như sau: + +``` +High‑confidence text: Store XYZ +Date: 2024‑04‑22 +Total: $23.45 +``` + +Bây giờ bạn có thể đưa chuỗi này vào trình ghi CSV, cơ sở dữ liệu, hoặc bất kỳ pipeline phân tích nào tiếp theo. + +## Toàn bộ script sẵn sàng chạy + +Dưới đây là đoạn mã hoàn chỉnh mà bạn có thể sao chép‑dán vào `ocr_receipt.py` và chạy ngay lập tức. + +```python +# ocr_receipt.py +# A complete python ocr example that extracts high‑confidence text from a receipt. + +from aocr import OcrEngine + +def main(): + # 1️⃣ Create the OCR engine + ocr_engine = OcrEngine() + + # 2️⃣ Load the image you want to analyze + image_path = "YOUR_DIRECTORY/receipt.png" + ocr_engine.image = OcrEngine.Image.load(image_path) + + # 3️⃣ Run the OCR process + ocr_result = ocr_engine.process() + + # 4️⃣ Keep only symbols with confidence ≥ 85% + high_confidence_text = ''.join( + char for char, confidence in ocr_result.symbol_confidences + if confidence >= 0.85 + ) + + # 5️⃣ Output the result + print("High‑confidence text:", high_confidence_text) + +if __name__ == "__main__": + main() +``` + +Lưu file, đảm bảo `receipt.png` tồn tại, và thực thi: + +```bash +python ocr_receipt.py +``` + +Bạn sẽ thấy văn bản biên lai đã được làm sạch được in ra console. + +## Các trường hợp đặc biệt & Kịch bản nếu‑xảy‑ra + +| Tình huống | Giải pháp đề xuất | +|-----------|----------------| +| **Độ tin cậy rất thấp trên toàn bộ** | Tiền xử lý ảnh: tăng độ tương phản, chuyển sang thang xám, hoặc áp dụng bộ lọc giảm nhiễu (`cv2.GaussianBlur`). | +| **Ký tự không phải Latin** | Cung cấp mô hình ngôn ngữ cho `OcrEngine` (ví dụ, `ocr_engine.language = "spa"` cho tiếng Tây Ban Nha). | +| **Nhiều biên lai trong một ảnh** | Chạy OCR trên toàn bộ ảnh, sau đó tách kết quả bằng biểu thức chính quy phát hiện `\\n\\n+` (dòng ngắt đôi). | +| **Cần cả văn bản OCR thô** | Giữ `ocr_result.text` cùng với phiên bản đã lọc để gỡ lỗi. | + +Những biến thể này đảm bảo kiến thức **how to use OCR** của bạn mở rộng vượt ra ngoài trường hợp đơn giản nhất. + +## Những sai lầm thường gặp (Và cách tránh chúng) + +- **Quên cài đặt thư viện** – `pip install aocr` phải thành công trước khi bạn import. +- **Sử dụng dấu phân tách đường dẫn sai** trên Windows (`\\` vs `/`). Dùng `os.path.join`. +- **Cố định ngưỡng độ tin cậy** mà không thử nghiệm – luôn thực hiện kiểm tra nhanh trực quan trên một vài biên lai trước. +- **Bỏ qua chuẩn hoá Unicode** – một số biên lai chứa ký tự gạch đặc biệt; chạy `unicodedata.normalize('NFKC', text)` nếu bạn dự định lưu kết quả. + +## Các bước tiếp theo – Vượt ra ngoài nền tảng cơ bản + +Bây giờ bạn đã biết **cách trích xuất OCR** dữ liệu từ một biên lai duy nhất, bạn có thể muốn: + +1. **Xử lý hàng loạt một thư mục các biên lai** – lặp qua tất cả các file PNG/JPG và ghi mỗi kết quả vào CSV. +2. **Tích hợp với cơ sở dữ liệu** – lưu `high_confidence_text` trong SQLite để tra cứu nhanh. +3. **Áp dụng phân tích ngôn ngữ tự nhiên** – dùng regex hoặc `dateutil` để lấy ngày, tổng tiền và số thuế. +4. **Thử nghiệm các thư viện thay thế** – `pytesseract`, `easyocr`, hoặc các dịch vụ đám mây (Google Vision, Azure OCR) nếu bạn cần hỗ trợ đa ngôn ngữ hoặc độ chính xác cao hơn. + +Mỗi chủ đề này tự nhiên bao gồm các từ khóa phụ của chúng ta: *python ocr example*, *extract text from receipt*, *load image for ocr*, và *how to use OCR*. + +## Kết luận + +Chúng ta vừa đi qua một **python ocr example** hoàn chỉnh, cho thấy **cách trích xuất OCR** văn bản từ ảnh biên lai, lọc bỏ các ký tự độ tin cậy thấp, và xuất kết quả sạch. Các bước đơn giản, mã tự chứa, và cách tiếp cận đủ linh hoạt để áp dụng cho các dự án lớn hơn. + +Hãy thử với các biên lai của bạn, điều chỉnh ngưỡng độ tin cậy, và sau đó mở rộng lên xử lý hàng loạt. Nếu gặp những bất thường—như logo mờ hoặc phông chữ lạ—hãy nhớ các mẹo trường hợp đặc biệt ở trên. Chúc lập trình vui vẻ, và chúc các pipeline OCR của bạn luôn chính xác! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md b/ocr/vietnamese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md new file mode 100644 index 000000000..ddacd82a7 --- /dev/null +++ b/ocr/vietnamese/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/_index.md @@ -0,0 +1,193 @@ +--- +category: general +date: 2026-04-26 +description: 'cách sử dụng OCR trong Python: Học cách trích xuất văn bản từ hình ảnh + và đọc tệp TIFF bằng Python bằng một ví dụ OCR cơ bản. Bao gồm mã nhanh, có thể + chạy ngay.' +draft: false +keywords: +- how to ocr python +- extract text from image +- read tiff file python +- basic ocr example +- convert scanned image text +language: vi +og_description: 'cách sử dụng OCR trong Python: Hướng dẫn từng bước cho thấy cách + trích xuất văn bản từ hình ảnh, đọc tệp TIFF bằng Python và chuyển đổi văn bản từ + ảnh đã quét bằng một script đơn giản, có thể chạy được.' +og_title: Cách sử dụng OCR trong Python – Ví dụ OCR cơ bản để trích xuất văn bản +tags: +- OCR +- Python +- Image Processing +title: cách sử dụng OCR trong Python – Ví dụ OCR cơ bản để trích xuất văn bản +url: /vi/python-java/general/how-to-ocr-python-basic-ocr-example-for-extracting-text/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cách ocr python – Ví dụ OCR Cơ bản để Trích xuất Văn bản + +Bạn đã bao giờ tự hỏi **cách ocr python** khi có một tệp TIFF đã quét nằm trên bàn làm việc chưa? Bạn không phải là người duy nhất đang nhìn vào một loạt các tệp ảnh và hỏi, “Làm sao tôi lấy được chữ từ đây?” Tin tốt là việc biến một bức ảnh thành văn bản thuần túy trở nên cực kỳ dễ dàng với thư viện phù hợp và một vài bước rõ ràng. + +Trong tutorial này, chúng ta sẽ đi qua một **ví dụ OCR cơ bản** đọc tệp TIFF, trích xuất văn bản và in ra console. Khi kết thúc, bạn sẽ biết chính xác cách **trích xuất văn bản từ ảnh**, cách xử lý các đặc thù của định dạng TIFF, và những gì cần điều chỉnh nếu bạn muốn **chuyển đổi văn bản ảnh đã quét** thành dạng hữu ích hơn. Không có phép thuật ẩn – chỉ là Python đơn giản mà bạn có thể sao chép‑dán và chạy ngay hôm nay. + +## Những gì bạn cần + +- Python 3.9+ đã được cài đặt (phiên bản ổn định mới nhất là tốt nhất). +- Thư viện OCR có thể cài đặt qua pip. Trong hướng dẫn này chúng tôi sẽ sử dụng gói giả lập `aocr` mô phỏng các công cụ phổ biến như Tesseract; bạn có thể thay thế bằng `pytesseract` hoặc `easyocr` sau. +- Một ảnh TIFF bạn muốn xử lý – đặt tên là `input.tiff` và đặt vào thư mục mà bạn sẽ tham chiếu trong mã. +- Kiến thức cơ bản về dòng lệnh (chỉ để cài đặt gói). + +Đó là tất cả. Không có phụ thuộc nặng, không có container Docker, chỉ một vài dòng mã. + +## Bước 1 – Cài đặt và Nhập các phụ thuộc (how to ocr python) + +Đầu tiên, lấy gói OCR. Mở terminal và chạy: + +```bash +pip install aocr +``` + +Nếu bạn muốn một thư viện thực tế, thay `aocr` bằng `pytesseract` và cài đặt engine Tesseract riêng. + +Bây giờ nhập những gì chúng ta cần. Lớp `Path` từ `pathlib` cung cấp cách sạch sẽ để làm việc với đường dẫn tệp trên mọi hệ điều hành. + +```python +# Step 1: Import the Path class for handling file paths +from pathlib import Path + +# Import the OCR engine and image loader from the chosen library +from aocr import OcrEngine, Image +``` + +*Tại sao dùng `Path`?* Vì nó trừu tượng hoá các dấu gạch chéo (`/` vs `\`) và cho phép bạn nối thư mục mà không lo về hệ điều hành nền. Chi tiết nhỏ này thường cứu bạn khỏi những rắc rối khi chuyển script sang máy CI. + +## Bước 2 – Tạo Instance cho Engine OCR (basic ocr example) + +Tiếp theo, khởi động engine OCR. Hãy nghĩ `OcrEngine` như bộ não sẽ đọc ảnh và đưa ra các ký tự. + +```python +# Step 2: Create an instance of the OCR engine +ocr_engine = OcrEngine() +``` + +Hầu hết các thư viện OCR cho phép bạn tinh chỉnh ngôn ngữ, DPI, hoặc ngưỡng confidence ở đây. Đối với **ví dụ OCR cơ bản** này, chúng ta sẽ dùng các giá trị mặc định, nhưng bạn có thể khám phá `ocr_engine.config` sau nếu cần xử lý tài liệu đa ngôn ngữ. + +## Bước 3 – Tải ảnh TIFF của bạn (read tiff file python) + +Đây là nơi phần **read tiff file python** xuất hiện. TIFF có thể có nhiều trang, nhưng `Image.load` sẽ lấy trang đầu tiên theo mặc định — hoàn hảo cho một bản quét một trang. + +```python +# Step 3: Load the image you want to recognize +# Using a generic placeholder path makes it easy to adapt the example +ocr_engine.image = Image.load(Path("YOUR_DIRECTORY/input.tiff")) +``` + +Thay `"YOUR_DIRECTORY"` bằng thư mục thực tế chứa `input.tiff`. Nếu bạn không chắc script chạy ở đâu, `Path.cwd()` sẽ in ra thư mục làm việc hiện tại — rất hữu ích để debug vấn đề đường dẫn. + +## Bước 4 – Chạy quy trình OCR (extract text from image) + +Bây giờ phép màu xảy ra. Gọi `process()` sẽ đưa ảnh qua pipeline OCR và trả về một đối tượng kết quả. + +```python +# Step 4: Run the OCR process to extract text from the image +ocr_result = ocr_engine.process() +``` + +Ở phía sau, engine có thể đang chuyển ảnh sang grayscale, áp dụng threshold, và đưa vào mạng nơ‑ron. Bạn không cần quản lý các bước này; thư viện đã trừu tượng hoá chúng. + +## Bước 5 – In ra Văn bản đã Nhận dạng (convert scanned image text) + +Cuối cùng, xuất ra văn bản. Trong các dự án thực tế, bạn có thể ghi vào file hoặc cơ sở dữ liệu, nhưng việc in ra giúp ví dụ gọn gàng. + +```python +# Step 5: Print the recognized text to the console +print(ocr_result.text) +``` + +Khi bạn chạy script, bạn sẽ thấy một kết quả giống như: + +``` +Hello, world! +This is a sample scanned document. +``` + +Nếu đầu ra bị rối, hãy kiểm tra lại ảnh nguồn có rõ ràng không và ngôn ngữ OCR có khớp với văn bản không. + +## Script Hoàn chỉnh + +Kết hợp tất cả lại, đây là chương trình hoàn chỉnh, sẵn sàng chạy: + +```python +# Full script: how to ocr python – basic OCR example + +from pathlib import Path +from aocr import OcrEngine, Image # Replace with your OCR library if needed + +def main(): + # Initialize the OCR engine + ocr_engine = OcrEngine() + + # Load the TIFF image (adjust the path as needed) + image_path = Path("YOUR_DIRECTORY/input.tiff") + if not image_path.is_file(): + raise FileNotFoundError(f"Could not find {image_path}. Make sure the file exists.") + + ocr_engine.image = Image.load(image_path) + + # Perform OCR + ocr_result = ocr_engine.process() + + # Output the extracted text + print("=== OCR Output ===") + print(ocr_result.text) + +if __name__ == "__main__": + main() +``` + +### Kết quả Dự kiến + +``` +=== OCR Output === +Your scanned document’s text appears here, line by line. +``` + +Nếu bạn cần **chuyển đổi văn bản ảnh đã quét** thành PDF có thể tìm kiếm, bạn có thể truyền `ocr_result.text` vào một trình tạo PDF như `reportlab` — nhưng đó là một tutorial riêng. + +## Những Cạm Bẫy Thường Gặp & Mẹo Chuyên Nghiệp + +- **Quét độ phân giải thấp**: OCR gặp khó khăn dưới 150 DPI. Nếu TIFF của bạn mờ, hãy tăng độ phân giải trước bằng Pillow (`Image.open(...).resize(...)`). +- **Nhiều trang**: Đối với TIFF đa trang, lặp qua `Image.load_multi_page()` (nếu thư viện hỗ trợ) và nối các kết quả lại. +- **Hỗ trợ ngôn ngữ**: Nhiều engine mặc định là tiếng Anh. Đặt `ocr_engine.language = "spa"` cho tiếng Tây Ban Nha, ví dụ. +- **Xử lý khoảng trắng**: OCR thường thêm các ngắt dòng không mong muốn. Sử dụng `str.splitlines()` hoặc biểu thức chính quy để làm sạch kết quả. +- **Hiệu năng**: Khi xử lý hàng loạt, tái sử dụng một instance `OcrEngine` duy nhất thay vì tạo mới cho mỗi tệp. + +## Mở rộng Ví dụ + +Bây giờ bạn đã thành thạo **cách ocr python** cho một ảnh đơn, hãy xem các bước tiếp theo: + +1. **Xử lý hàng loạt** – Lặp qua một thư mục chứa các TIFF và ghi mỗi kết quả vào tệp `.txt`. +2. **Tích hợp với Pandas** – Lưu trữ văn bản đã trích xuất cùng với siêu dữ liệu để phân tích nhanh. +3. **Phương pháp kết hợp** – Kết hợp OCR với các thư viện NLP như `spaCy` để trích xuất thực thể (tên, ngày, số tiền) từ hoá đơn quét. +4. **Định dạng tệp thay thế** – Thay `Image.load` bằng `Image.from_bytes` để xử lý ảnh đến từ API hoặc cơ sở dữ liệu. + +Tất cả những điều này dựa trên ý tưởng cốt lõi của **trích xuất văn bản từ ảnh** và **chuyển đổi văn bản ảnh đã quét** thành thứ mà máy móc có thể hiểu. + +## Kết luận + +Chúng ta đã đi qua một **ví dụ OCR cơ bản** rõ ràng, từ đầu đến cuối, cho thấy **cách ocr python**, cách **đọc tệp tiff bằng python**, và cách **trích xuất văn bản từ ảnh** chỉ với vài dòng mã. Script tự chứa, bao gồm xử lý lỗi, và in kết quả trực tiếp, tạo nền tảng vững chắc cho bất kỳ dự án nào cần biến tài liệu quét thành văn bản có thể chỉnh sửa. + +Hãy thoải mái thử nghiệm — thay đổi backend OCR, tinh chỉnh tiền xử lý, hoặc kết nối đầu ra vào quy trình downstream. Khi bạn có thể tin cậy **chuyển đổi văn bản ảnh đã quét** thành dữ liệu có thể tìm kiếm, mọi khả năng đều mở ra. + +Có câu hỏi về các trường hợp đặc biệt, gói ngôn ngữ, hay tối ưu hiệu năng? Để lại bình luận bên dưới, và chúc bạn lập trình vui vẻ! + +![how to ocr python example](/images/ocr-python-example.png "Screenshot of how to ocr python script output") + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md b/ocr/vietnamese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md new file mode 100644 index 000000000..c673cb361 --- /dev/null +++ b/ocr/vietnamese/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/_index.md @@ -0,0 +1,181 @@ +--- +category: general +date: 2026-04-26 +description: Cách chạy OCR trên mẫu quét, học cách tiền xử lý hình ảnh để giảm nhiễu + và trích xuất văn bản từ hình ảnh một cách nhanh chóng. +draft: false +keywords: +- how to run OCR +- how to preprocess image +- extract text from image +- how to extract text +- how to reduce noise +language: vi +og_description: Cách chạy OCR trên tài liệu đã quét, tiền xử lý hình ảnh, giảm nhiễu + và trích xuất văn bản một cách hiệu quả. +og_title: Cách chạy OCR và tiền xử lý hình ảnh – Hướng dẫn nhanh +tags: +- OCR +- image processing +- Python +title: Cách chạy OCR và tiền xử lý hình ảnh – Trích xuất văn bản từ biểu mẫu đã quét +url: /vi/python-java/general/how-to-run-ocr-and-preprocess-images-extract-text-from-scann/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Chạy OCR – Hướng Dẫn Toàn Diện để Trích Xuất Văn Bản từ Hình Ảnh + +Bạn đã bao giờ tự hỏi **cách chạy OCR** trên một mẫu quét lộn xộn và nhận được văn bản sạch, có thể tìm kiếm chưa? Bạn không phải là người duy nhất. Trong nhiều dự án thực tế, hình ảnh thô đầy các đốm, ánh sáng không đồng đều và những khuyết điểm khác khiến OCR “ra khỏi hộp” gặp khó khăn. + +Tin tốt là gì? Chỉ với vài dòng Python và một pipeline tiền xử lý thông minh, bạn có thể tăng đáng kể độ chính xác nhận dạng, **giảm nhiễu**, và lấy ra đúng những từ bạn cần. Trong tutorial này, chúng ta sẽ đi qua từng bước — từ tải ảnh đến in chuỗi kết quả — để bạn có một đoạn mã sẵn sàng sử dụng cho hoá đơn, biên lai hoặc bất kỳ tài liệu quét nào. + +## Những gì bạn sẽ xây dựng + +- Một thể hiện `OcrEngine` giao tiếp với thư viện OCR bên dưới. +- Một chuỗi tiền xử lý **binarize** (nhị phân hoá) ảnh và áp dụng **median blur** (làm mờ trung vị) để làm sạch các đốm. +- Một lời gọi đơn giản tới `process()` trả về một đối tượng cung cấp `text`, chuỗi đã trích xuất. + +Khi hoàn thành, bạn sẽ có một script tự chứa mà bạn có thể chạy trên bất kỳ tệp ảnh nào và ngay lập tức xem văn bản đã trích xuất trong console. + +## Yêu cầu trước + +- Python 3.9+ (cú pháp ở đây phù hợp với phiên bản ổn định mới nhất). +- Gói giả lập `aocr` – tưởng tượng nó là một lớp bao bọc mỏng quanh Tesseract hoặc bất kỳ engine OCR hiện đại nào. Cài đặt bằng `pip install aocr`. +- Một ảnh quét (`scanned_form.jpg`) được đặt trong thư mục bạn có thể tham chiếu. + +Nếu bạn đang dùng một thư viện OCR thực tế như `pytesseract`, bạn có thể thay `OcrEngine` bằng lớp thích hợp — mọi thứ còn lại vẫn giữ nguyên. + +![](how-to-run-ocr-example.png "ví dụ cách chạy OCR hiển thị một mẫu quét và văn bản đã trích xuất") + +*Alt text: cách chạy OCR trên một tài liệu quét và xem văn bản đã trích xuất.* + +--- + +## Bước 1: Cách Chạy OCR – Khởi Tạo Engine + +Trước khi engine có thể đọc bất kỳ thứ gì, chúng ta cần tạo một thể hiện. Hãy nghĩ `OcrEngine` như bộ não sẽ sau này giải thích dữ liệu hình ảnh. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() +``` + +> **Tại sao điều này quan trọng:** Việc khởi tạo engine thiết lập các mô hình nội bộ, tải các gói ngôn ngữ và chuẩn bị môi trường chạy. Bỏ qua bước này thường dẫn đến lỗi `NoneType` khi bạn gọi `process()` sau này. + +--- + +## Bước 2: Cách Tiền Xử Lý Ảnh – Tải Mẫu Quét Của Bạn + +Bây giờ bộ não đã sẵn sàng, chúng ta cung cấp cho nó một bức ảnh. Ảnh có thể ở bất kỳ định dạng nào được `aocr.Image` hỗ trợ. + +```python +# Step 2: Load the image you want to recognize +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/scanned_form.jpg") +``` + +> **Mẹo chuyên nghiệp:** Sử dụng đường dẫn tuyệt đối trong quá trình phát triển để tránh những bất ngờ “file không tìm thấy” khi script chạy từ thư mục làm việc khác. + +--- + +## Bước 3: Cách Giảm Nhiễu – Áp Dụng Binarization & Median Blur + +Các bản quét thô thường chứa các đốm lẻ, nền không đồng đều hoặc bóng mờ nhẹ. Hai thủ thuật cổ điển — **binarization** và **median blur** — làm sạch ảnh mà không làm mất các cạnh quan trọng của ký tự. + +```python +# Step 3: Pre‑process the image to improve recognition accuracy +# • Binarize converts the image to black‑and‑white using a threshold +# • Median blur reduces noise while preserving edges +ocr_engine.image = ocr_engine.image.apply_filters( + aocr.ImageFilters.binarize(threshold=180), + aocr.ImageFilters.median_blur(radius=2) +) +``` + +### Đi sâu hơn + +- **Binarization**: Giá trị `threshold=180` nói với thuật toán: “Bất cứ gì sáng hơn 180 sẽ trở thành trắng; mọi thứ còn lại sẽ trở thành đen.” Điều chỉnh con số này nếu bản quét của bạn quá tối hoặc quá sáng. +- **Median Blur**: Bán kính `2` có nghĩa bộ lọc xem một cửa sổ 5×5 pixel và thay thế pixel trung tâm bằng giá trị trung vị. Điều này làm mờ các đốm lẻ trong khi giữ nguyên nét chữ. + +> **Trường hợp đặc biệt:** Nếu tài liệu của bạn có các vùng tô màu, một ngưỡng nhị phân đơn giản có thể xóa chúng. Trong trường hợp đó, hãy cân nhắc dùng `aocr.ImageFilters.adaptive_threshold()` — nó sẽ điều chỉnh ngưỡng một cách cục bộ trên toàn ảnh. + +--- + +## Bước 4: Cách Trích Xuất Văn Bản – Chạy Quy Trình OCR + +Với một ảnh đã được làm sạch, cuối cùng chúng ta để engine thực hiện phép màu của nó. + +```python +# Step 4: Run the OCR process on the prepared image +ocr_result = ocr_engine.process() +``` + +> **Bên trong engine đang làm gì?** Engine chạy một mạng nơ-ron (hoặc bộ khớp mẫu cũ) trên ma trận pixel, dịch mỗi glyph đã nhận dạng thành ký tự Unicode, và ghép chúng lại thành các dòng và đoạn văn. + +--- + +## Bước 5: Cách Trích Xuất Văn Bản – In Kết Quả + +Đối tượng `ocr_result` cung cấp thuộc tính tiện lợi `text`. Hãy xem chúng ta nhận được gì. + +```python +# Step 5: Print the extracted text +print(ocr_result.text) +``` + +### Đầu ra dự kiến + +Nếu mẫu quét chứa: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Bạn sẽ thấy một thứ gì đó như: + +``` +Name: Jane Doe +Date: 2024-04-24 +Amount: $123.45 +``` + +Chú ý cách bước tiền xử lý đã loại bỏ các đốm lẻ khiến “Amount” trước đây bị hiển thị thành “Am0unt”. Đó là sức mạnh của **cách giảm nhiễu** trước khi OCR. + +--- + +## Những Sai Lầm Thường Gặp & Cách Khắc Phục + +| Triệu chứng | Nguyên nhân có thể | Giải pháp nhanh | +|------------|-------------------|-----------------| +| Ký tự lộn xộn (ví dụ “@#%”) | Ảnh quá tối hoặc quá sáng | Điều chỉnh `threshold` trong `binarize()`; thử `adaptive_threshold`. | +| Thiếu từ | Nhiễu vẫn còn | Tăng `radius` cho `median_blur` hoặc thêm bộ lọc `gaussian_blur`. | +| Ngôn ngữ sai (ví dụ chữ Anh thành chữ Trung) | Gói ngôn ngữ không đúng | Đưa `language="eng"` khi tạo `OcrEngine()` nếu thư viện hỗ trợ. | +| Xử lý chậm trên tệp lớn | Độ phân giải cao | Thu nhỏ ảnh trước: `aocr.ImageFilters.resize(width=1200)` trước khi binarization. | + +--- + +## Tiến Xa Hơn – Các Bước Tiếp Theo và Chủ Đề Liên Quan + +- **Xử lý hàng loạt**: Đóng gói logic trên vào một vòng lặp để tự động xử lý hàng chục tệp. +- **Kết quả có cấu trúc**: Dùng biểu thức chính quy trên `ocr_result.text` để lấy các trường như ngày tháng hoặc số tiền. +- **Thư viện thay thế**: Thay `aocr` bằng `pytesseract` — chỉ cần thay đổi đoạn khởi tạo engine. +- **Cách tiền xử lý ảnh cho PDF**: Chuyển mỗi trang PDF thành ảnh, rồi áp dụng cùng pipeline. + +Những mở rộng này cho phép bạn mở rộng giải pháp từ một mẫu đơn lẻ lên một pipeline nhập liệu tài liệu cấp doanh nghiệp. + +--- + +## Kết Luận + +Chúng ta đã bao quát **cách chạy OCR** từ đầu đến cuối, trình bày **cách tiền xử lý ảnh** để **giảm nhiễu**, và minh họa **cách trích xuất văn bản từ ảnh** bằng một script sạch, có thể tái sử dụng. Bài học chính? Một vài bộ lọc đơn giản — binarization và median blur — có thể biến một bản quét nhiễu thành nguồn dữ liệu đáng tin cậy, giúp bạn tiết kiệm hàng giờ công việc dọn dẹp thủ công. + +Hãy chạy script với tài liệu của riêng bạn, tinh chỉnh các ngưỡng, và quan sát độ chính xác tăng lên. Khi đã sẵn sàng, khám phá xử lý hàng loạt hoặc tích hợp kết quả vào cơ sở dữ liệu để lưu trữ có thể tìm kiếm. Chúc lập trình vui vẻ, và mong OCR của bạn luôn chính xác! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/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/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md b/ocr/vietnamese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md new file mode 100644 index 000000000..348ac3bb1 --- /dev/null +++ b/ocr/vietnamese/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/_index.md @@ -0,0 +1,198 @@ +--- +category: general +date: 2026-04-26 +description: Tìm hiểu cách thiết lập giấy phép trong Aspose OCR và cách xác thực giấy + phép bằng một script Python ngắn gọn. Thực hiện các hướng dẫn từng bước để kích + hoạt một cách dễ dàng. +draft: false +keywords: +- how to set license +- how to validate license +- Aspose OCR license Python +- license activation steps +- OCR library configuration +language: vi +og_description: Cách thiết lập giấy phép trong Aspose OCR và cách xác thực giấy phép + bằng Python. Nhận một ví dụ hoàn chỉnh, có thể chạy ngay trong vài phút. +og_title: Cách thiết lập giấy phép trong Aspose OCR – Hướng dẫn nhanh Python +tags: +- Aspose OCR +- Python +- Licensing +title: Cách thiết lập giấy phép trong Aspose OCR – Hướng dẫn nhanh Python +url: /vi/python-java/general/how-to-set-license-in-aspose-ocr-quick-python-guide/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Đặt Giấy Phép cho Aspose OCR – Hướng Dẫn Nhanh Python + +Bạn đã bao giờ tự hỏi **cách đặt giấy phép** cho Aspose OCR mà không phải rối bời chưa? Bạn không phải là người duy nhất. Hầu hết các nhà phát triển gặp khó khăn lần đầu tiên khi cố gắng mở khóa toàn bộ tính năng của thư viện, chỉ để bị “Trial version” watermark ám ảnh. Tin tốt là cách khắc phục khá đơn giản, và bạn có thể kiểm chứng ngay lập tức. + +Trong tutorial này, chúng ta sẽ đi qua **cách đặt giấy phép** *và* **cách xác thực giấy phép** bằng một script Python nhỏ. Khi kết thúc, bạn sẽ có một ví dụ hoạt động in ra “License OK”, cùng một vài mẹo để tránh những lỗi thường gặp. + +## Các Điều Kiện Cần Có + +Trước khi bắt đầu, hãy chắc chắn bạn đã có: + +- Python 3.8+ được cài đặt (code hoạt động trên 3.9, 3.10 và các phiên bản mới hơn). +- Một file giấy phép Aspose OCR cho Java (hoặc .NET) đang hoạt động – thường có tên `Aspose.OCR.Java.lic`. +- Gói `asposeocr` đã được cài đặt qua `pip install asposeocr`. +- Kiến thức cơ bản về cách chạy script Python từ dòng lệnh. + +Đã có đủ chưa? Tuyệt vời—bắt đầu nào. + +## Cách Đặt Giấy Phép cho Aspose OCR (Bước 1) + +Việc đặt giấy phép thực chất chỉ gồm ba dòng lệnh, nhưng mỗi dòng đều có mục đích riêng. Chúng ta sẽ giải thích để bạn hiểu *tại sao* phải làm như vậy. + +```python +# Step 1: Import the License class from Aspose OCR +from asposeocr import License + +# Step 2: Create a License instance +license_obj = License() +``` + +**Tại sao phải import `License`?** +Lớp `License` là cổng vào cho phép engine Aspose OCR biết bạn đã mua sản phẩm. Nếu không tạo một instance, thư viện sẽ vẫn giả định bạn đang dùng bản trial. + +**Tại sao phải khởi tạo `License`?** +Khởi tạo tạo ra một đối tượng (`license_obj`) có thể chứa đường dẫn tới file `.lic` của bạn và áp dụng nó cho runtime. + +## Cách Đặt Giấy Phép cho Aspose OCR – Cung Cấp File Giấy Phép + +Bây giờ chúng ta chỉ định đối tượng tới file giấy phép thực tế trên đĩa. + +```python +# Step 3: Provide the path to your license file +license_path = "YOUR_DIRECTORY/Aspose.OCR.Java.lic" +license_obj.set_license(license_path) +``` + +**Mẹo & thủ thuật:** + +- **Đường dẫn tuyệt đối vs. tương đối** – Nếu bạn chạy script từ một thư mục khác, đường dẫn tuyệt đối (`C:/licenses/...`) sẽ loại bỏ lỗi “file not found”. +- **Biến môi trường** – Lưu đường dẫn trong một biến môi trường (`OCR_LICENSE_PATH`) giúp giữ bí mật khỏi source control: + +```python +import os +license_path = os.getenv("OCR_LICENSE_PATH", "default/path/Aspose.OCR.Java.lic") +license_obj.set_license(license_path) +``` + +## Cách Xác Thực Giấy Phép – Đảm Bảo Nó Đã Hoạt Động + +Đặt giấy phép chỉ là một nửa công việc; bạn cần xác nhận rằng thư viện đã chấp nhận nó. Đó là lúc bước xác thực tỏa sáng. + +```python +# Step 4: Validate the license to ensure it is applied correctly +license_obj.validate() +``` + +Nếu file giấy phép bị thiếu, hỏng, hoặc không khớp, `validate()` sẽ ném ra một ngoại lệ. Bắt ngoại lệ này cho phép bạn báo cáo vấn đề một cách sạch sẽ. + +## Ví Dụ Hoàn Chỉnh (Tất Cả Các Bước Kết Hợp) + +Dưới đây là script hoàn chỉnh, sẵn sàng chạy. Chạy nó từ terminal (`python set_license.py`) và bạn sẽ thấy “License OK” được in ra. + +```python +""" +Complete example: how to set license and how to validate license +for Aspose OCR using Python. +""" + +import os +from asposeocr import License + +def main(): + # Create License instance + license_obj = License() + + # Retrieve license path – prefer env var for flexibility + license_path = os.getenv( + "OCR_LICENSE_PATH", + "YOUR_DIRECTORY/Aspose.OCR.Java.lic" # fallback to hard‑coded path + ) + + try: + # Apply the license file + license_obj.set_license(license_path) + + # Verify that the license is active + license_obj.validate() + + # If we reach this point, everything is fine + print("License OK") + except Exception as e: + # Provide a helpful error message + print(f"License validation failed: {e}") + # Optional: exit with non‑zero status for CI pipelines + exit(1) + +if __name__ == "__main__": + main() +``` + +**Kết quả mong đợi** + +``` +License OK +``` + +Nếu có gì sai, bạn sẽ thấy thông báo như: + +``` +License validation failed: License file not found at /path/to/Aspose.OCR.Java.lic +``` + +Thông báo đó cho bạn biết chính xác gì cần sửa—không cần đoán mò. + +## Cách Xác Thực Giấy Phép – Xử Lý Các Trường Hợp Cạnh Thường Gặp + +Ngay cả với script trên, một vài tình huống vẫn có thể gây lỗi: + +| Tình huống | Điều gì xảy ra | Cách khắc phục | +|-----------|----------------|----------------| +| **Lỗi đánh máy đường dẫn** | `FileNotFoundError` từ `set_license` | Kiểm tra lại đường dẫn; dùng `os.path.abspath()` để debug. | +| **Sai loại file** | Xác thực ném “Invalid license format” | Đảm bảo bạn đang dùng file `.lic` phù hợp với phiên bản sản phẩm. | +| **Giấy phép hết hạn** | Xác thực ném “License expired” | Gia hạn giấy phép với bộ phận hỗ trợ Aspose và thay thế file. | +| **Chạy trong môi trường hạn chế** (ví dụ: AWS Lambda) | Lỗi quyền truy cập | Cấp quyền đọc cho thư mục hoặc nhúng giấy phép vào package triển khai. | + +Mẹo chuyên nghiệp: bao bọc lời gọi `set_license` trong một khối `try/except` riêng nếu bạn muốn phân biệt lỗi “file not found” và “invalid format”. + +## Tóm Tắt Trực Quan + +![cách đặt giấy phép trong ví dụ Aspose OCR](/images/aspose-ocr-license.png "cách đặt giấy phép trong ví dụ Aspose OCR") + +*Ảnh chụp màn hình cho thấy script in ra “License OK” sau khi kích hoạt thành công.* + +## Những Sai Lầm Thường Gặp & Thực Hành Tốt + +- **Không bao giờ commit file giấy phép lên repo công khai.** Sử dụng biến môi trường hoặc công cụ quản lý bí mật (GitHub Secrets, Azure Key Vault) thay thế. +- **Xác thực sớm.** Đặt `license_obj.validate()` ngay sau `set_license` để bắt lỗi trước khi thực hiện bất kỳ công việc OCR nào. +- **Tái sử dụng đối tượng License.** Bạn chỉ cần đặt giấy phép một lần cho mỗi process; các lời gọi OCR tiếp theo sẽ tự động sử dụng giấy phép đã kích hoạt. +- **Ghi log đường dẫn giấy phép (không bao gồm tên file) trong môi trường production** để hỗ trợ debug mà không lộ file thực tế. + +## Các Bước Tiếp Theo – Mở Rộng Quy Trình OCR Của Bạn + +Bây giờ bạn đã biết **cách đặt giấy phép** và **cách xác thực giấy phép**, bạn có thể tiến tới các nhiệm vụ OCR cốt lõi: + +- **cách đọc ảnh** – `Image.load("sample.png")` +- **cách trích xuất văn bản** – `ocr_engine.recognize(image)` +- **cách cấu hình tùy chọn OCR** – điều chỉnh các thiết lập của `OcrEngine` cho ngôn ngữ, độ chính xác, v.v. + +Mỗi chủ đề này dựa trên một engine đã được cấp phép thành công, vì vậy bạn sẽ không còn thấy watermark trial nữa. + +## Kết Luận + +Chúng ta đã bao quát toàn bộ quy trình **cách đặt giấy phép** cho Aspose OCR, trình bày **cách xác thực giấy phép**, và cung cấp một script hoàn chỉnh, có thể chạy được và in ra “License OK”. Bằng cách xử lý lỗi từ đầu và sử dụng biến môi trường, bạn giữ cho ứng dụng của mình vừa an toàn vừa ổn định. + +Có thêm câu hỏi về OCR, giấy phép, hoặc tích hợp Aspose vào pipeline lớn hơn? Hãy để lại bình luận, và chúc bạn lập trình vui vẻ! + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/vietnamese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md b/ocr/vietnamese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md new file mode 100644 index 000000000..8f96b6bbb --- /dev/null +++ b/ocr/vietnamese/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/_index.md @@ -0,0 +1,231 @@ +--- +category: general +date: 2026-04-26 +description: cách sử dụng OCR trên PDF đã quét, trích xuất văn bản từ PDF, chạy OCR + trên PDF và chuyển PDF đã quét thành các tệp có thể tìm kiếm trong vài bước. +draft: false +keywords: +- how to use OCR +- extract text from pdf +- run OCR on pdf +- convert scanned pdf +- load pdf as image +language: vi +og_description: 'cách sử dụng OCR trong Python: học cách trích xuất văn bản từ PDF, + chạy OCR trên PDF và chuyển PDF đã quét thành tài liệu có thể tìm kiếm.' +og_title: cách sử dụng OCR – Hướng dẫn nhanh để trích xuất văn bản từ PDF +tags: +- OCR +- Python +- PDF +- Text Extraction +title: Cách sử dụng OCR – Trích xuất văn bản từ PDF bằng Python +url: /vi/python-java/general/how-to-use-ocr-extract-text-from-pdf-with-python/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# cách sử dụng OCR – Trích xuất Văn bản từ PDF với Python + +Bạn đã bao giờ tự hỏi **cách sử dụng OCR** để lấy văn bản từ một hợp đồng, biên lai hoặc ebook đã được quét chưa? Bạn không phải là người duy nhất. Trong nhiều dự án thực tế, PDF bạn nhận được chỉ là một hình ảnh, và nếu không có OCR bạn không thể tìm kiếm, lập chỉ mục hoặc phân tích nội dung của nó. + +Trong hướng dẫn này, chúng ta sẽ đi qua một ví dụ hoàn chỉnh, có thể chạy được, cho thấy **cách sử dụng OCR**, cách **trích xuất văn bản từ PDF**, và lý do tại sao bạn có thể muốn **chuyển đổi PDF đã quét** thành các tài liệu có thể tìm kiếm. Chúng ta cũng sẽ đề cập đến nghệ thuật tinh tế của **tải PDF dưới dạng hình ảnh** để engine OCR có thể nhìn thấy mỗi trang một cách rõ ràng. + +> **Xem nhanh:** Khi kết thúc, bạn sẽ có một script tải một PDF đa trang, chạy OCR trên mỗi trang và in ra văn bản đã nhận dạng – không cần dịch vụ bên ngoài. + +## Những gì bạn cần + +- Python 3.9+ (bất kỳ phiên bản gần đây nào cũng được) +- Gói `aocr` (hoặc bất kỳ thư viện OCR tương thích nào cung cấp `OcrEngine` và `Image.load`) +- Một file PDF đã quét mà bạn muốn xử lý (ví dụ: `contract.pdf`) +- Một lượng RAM vừa phải (≈ 200 MB cho mỗi 100 trang PDF thường là đủ) + +Nếu bạn chưa cài đặt thư viện OCR, chạy: + +```bash +pip install aocr +``` + +> **Mẹo chuyên nghiệp:** Sử dụng môi trường ảo để giữ các phụ thuộc của bạn gọn gàng. + +## Bước 1: Tải PDF dưới dạng Hình ảnh – Mảnh ghép đầu tiên của Bức tranh + +Trước khi OCR có thể thực hiện, PDF phải được biểu diễn dưới dạng hình ảnh. Đây là nơi từ khóa phụ **load pdf as image** phát huy vai trò. + +```python +# Step 1: Create an OCR engine instance +ocr_engine = OcrEngine() + +# Step 2: Load the PDF file as a multi‑page image +ocr_engine.image = aocr.Image.load("YOUR_DIRECTORY/contract.pdf") +``` + +*Lý do quan trọng:* `aocr.Image.load` nội bộ raster hoá mỗi trang PDF thành bitmap mà engine OCR có thể hiểu. Nếu bạn bỏ qua bước này và đưa PDF thô vào, engine sẽ báo lỗi vì nó mong đợi dữ liệu pixel, không phải dữ liệu vector. + +> **Lưu ý:** Đường dẫn có thể là tuyệt đối hoặc tương đối. Đảm bảo file có thể đọc được; nếu không sẽ gặp `FileNotFoundError`. + +## Bước 2: Chạy OCR trên PDF – Biến Pixel thành Ký tự + +Bây giờ PDF đã tồn tại dưới dạng hình ảnh, chúng ta cuối cùng có thể **run OCR on PDF**. Đoạn mã sau xử lý mọi trang trong một lần: + +```python +# Step 3: Run OCR on every page of the document +page_results = ocr_engine.process_all_pages() +``` + +*Điều gì đang diễn ra phía sau?* `process_all_pages` lặp qua các trang đã raster, áp dụng mô hình OCR và trả về một danh sách các đối tượng kết quả — một cho mỗi trang. Mỗi kết quả chứa văn bản đã nhận dạng, điểm tin cậy và các hộp bao (nếu bạn cần chúng sau này). + +## Bước 3: Trích xuất Văn bản từ PDF – Lấy Chuỗi Văn bản ra + +Với kết quả OCR trong tay, việc trích xuất văn bản thuần trở nên đơn giản. Chúng ta sẽ duyệt qua các trang và in ra đầu ra, minh họa từ khóa phụ **extract text from pdf**. + +```python +# Step 4: Iterate through the results and output the recognized text +for page_number, page_result in enumerate(page_results, start=1): + print(f"--- Page {page_number} ---") + print(page_result.text) +``` + +**Kết quả mong đợi** (rút gọn để ngắn gọn): + +``` +--- Page 1 --- +This Agreement is made on the 1st day of January... +--- Page 2 --- +Section 2.1: Definitions... +``` + +Nếu bạn cần văn bản dưới dạng một chuỗi duy nhất, chỉ cần nối lại: + +```python +full_text = "\n".join(r.text for r in page_results) +``` + +Bây giờ bạn đã **trích xuất văn bản từ PDF** thành công bằng OCR. + +## Bước 4: Chuyển đổi PDF đã Quét – Tạo PDF có thể Tìm kiếm + +Nhiều công cụ hạ nguồn (như Elasticsearch hoặc SharePoint) yêu cầu một PDF có thể tìm kiếm thay vì một bản dump văn bản thuần. Bạn có thể nhúng kết quả OCR trở lại PDF gốc, thực chất **convert scanned PDF** thành phiên bản có thể tìm kiếm. + +```python +# Optional: Create a searchable PDF +searchable_pdf_path = "YOUR_DIRECTORY/contract_searchable.pdf" +ocr_engine.save_searchable_pdf(searchable_pdf_path) +print(f"Searchable PDF saved to {searchable_pdf_path}") +``` + +*Tại sao lại làm như vậy?* Một PDF có thể tìm kiếm giữ nguyên bố cục và hình ảnh gốc đồng thời cho phép chọn văn bản và lập chỉ mục — một thắng lợi cho cả con người và máy móc. + +## Những Cạm Bẫy Thường Gặp & Các Trường Hợp Đặc Biệt + +### PDF Đa Trang Lớn Hơn Bộ Nhớ + +Nếu PDF của bạn có hàng trăm trang, việc tải toàn bộ cùng một lúc có thể làm cạn kiệt RAM. Thư viện `aocr` hỗ trợ tải lười: + +```python +ocr_engine.image = aocr.Image.load("bigfile.pdf", lazy=True) +``` + +Sau đó xử lý các trang từng cái một: + +```python +for page in ocr_engine.image.iter_pages(): + result = ocr_engine.process_page(page) + print(result.text) +``` + +### Quét Chất Lượng Thấp + +Độ chính xác OCR giảm đáng kể trên các bản quét mờ hoặc độ tương phản thấp. Trước khi đưa hình ảnh vào engine, hãy cân nhắc tiền xử lý: + +```python +from aocr import preprocess + +# Improve contrast and denoise +clean_image = preprocess.enhance(ocr_engine.image, contrast=1.5, denoise=True) +ocr_engine.image = clean_image +``` + +### Hỗ trợ Ngôn ngữ + +Mặc định engine giả định tiếng Anh. Để **run OCR on PDF** bằng ngôn ngữ khác, đặt mã ngôn ngữ: + +```python +ocr_engine.language = "spa" # Spanish +``` + +Đảm bảo mô hình ngôn ngữ tương ứng đã được cài đặt. + +## Ví dụ Hoàn chỉnh + +Kết hợp mọi thứ lại, đây là một script tự chứa mà bạn có thể lưu vào file `ocr_pdf.py` và chạy ngay: + +```python +# ocr_pdf.py +from aocr import OcrEngine, Image, preprocess + +def main(pdf_path: str, output_path: str = None): + # Initialize OCR engine + ocr_engine = OcrEngine() + + # Load PDF as image (lazy loading for large files) + ocr_engine.image = Image.load(pdf_path, lazy=False) + + # Optional preprocessing – improves accuracy on noisy scans + ocr_engine.image = preprocess.enhance(ocr_engine.image, contrast=1.4, denoise=True) + + # Run OCR on all pages + page_results = ocr_engine.process_all_pages() + + # Print extracted text + for i, result in enumerate(page_results, start=1): + print(f"--- Page {i} ---") + print(result.text) + + # If a searchable PDF is desired + if output_path: + ocr_engine.save_searchable_pdf(output_path) + print(f"Searchable PDF saved to {output_path}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser(description="Extract text from a scanned PDF using OCR.") + parser.add_argument("pdf", help="Path to the input scanned PDF") + parser.add_argument("-o", "--output", help="Path to save searchable PDF (optional)") + args = parser.parse_args() + main(args.pdf, args.output) +``` + +Chạy nó như sau: + +```bash +python ocr_pdf.py YOUR_DIRECTORY/contract.pdf -o YOUR_DIRECTORY/contract_searchable.pdf +``` + +Bạn sẽ thấy văn bản được in ra console, và nếu bạn cung cấp tùy chọn `-o`, một PDF có thể tìm kiếm sẽ xuất hiện bên cạnh file gốc. + +## Mẹo Chuyên Nghiệp & Thực Hành Tốt + +- **Xử lý hàng loạt:** Khi xử lý hàng chục PDF, bao gói logic trên trong một vòng lặp và ghi log thành công/thất bại cho mỗi file. +- **Lọc theo độ tin cậy:** Mỗi `page_result` bao gồm một chỉ số tin cậy. Loại bỏ hoặc đánh dấu các trang có độ tin cậy thấp để xem xét thủ công. +- **Song song:** Nếu CPU của bạn có nhiều lõi, cân nhắc sử dụng `concurrent.futures` để xử lý các trang song song — chỉ cần chú ý tới việc sử dụng bộ nhớ. +- **Khóa phiên bản:** API `aocr` có thể thay đổi. Ghim phiên bản trong `requirements.txt` (ví dụ: `aocr==2.3.1`) để tránh các thay đổi gây lỗi. + +## Kết luận + +Chúng ta đã đi qua **cách sử dụng OCR** để **trích xuất văn bản từ PDF**, **run OCR on PDF**, **load PDF as image**, và thậm chí **convert scanned PDF** thành định dạng có thể tìm kiếm. Mã nguồn đã hoàn chỉnh, các giải thích bao phủ cả *cái gì* và *tại sao*, và bạn giờ đã có một mẫu có thể tái sử dụng cho bất kỳ dự án nào liên quan tới PDF dựa trên hình ảnh. + +Tiếp theo là gì? Hãy thử đưa văn bản đã trích xuất vào một pipeline xử lý ngôn ngữ tự nhiên, lập chỉ mục các PDF có thể tìm kiếm bằng Elasticsearch, hoặc thử nghiệm các backend OCR khác như Tesseract hoặc Azure Computer Vision. Bầu trời là giới hạn, và các công cụ đã sẵn sàng trong tay bạn. + +Chúc lập trình vui vẻ, và chúc các PDF của bạn luôn có thể tìm kiếm được! + +![ví dụ cách sử dụng OCR](/images/ocr_workflow.png "cách sử dụng OCR") + +--- + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file diff --git a/ocr/vietnamese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md b/ocr/vietnamese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md new file mode 100644 index 000000000..cec78855a --- /dev/null +++ b/ocr/vietnamese/python-java/general/how-to-use-threading-to-load-image-for-ocr/_index.md @@ -0,0 +1,210 @@ +--- +category: general +date: 2026-04-26 +description: Cách sử dụng threading để tải ảnh cho OCR trong Python. Học xử lý OCR + bất đồng bộ với callbacks, các luồng nền và tải ảnh chỉ trong vài bước. +draft: false +keywords: +- how to use threading +- load image for OCR +- python threading OCR +- async OCR callback +- background thread image processing +language: vi +og_description: Cách sử dụng threading để tải ảnh cho OCR trong Python. Hướng dẫn + này trình bày một ví dụ đầy đủ, có thể chạy được với các callback và thực thi nền. +og_title: Cách sử dụng đa luồng để tải ảnh cho OCR +tags: +- Python +- Threading +- OCR +- Image Processing +title: Cách sử dụng đa luồng để tải ảnh cho OCR +url: /vi/python-java/general/how-to-use-threading-to-load-image-for-ocr/ +--- + +{{< blocks/products/pf/main-wrap-class >}} +{{< blocks/products/pf/main-container >}} +{{< blocks/products/pf/tutorial-page-section >}} + +# Cách Sử Dụng Threading Để Tải Ảnh Cho OCR + +Bạn có bao giờ tự hỏi **cách sử dụng threading** để tải ảnh cho OCR mà không làm treo ứng dụng của mình không? Đây là một tình huống thường gặp dù bạn đang xây dựng một máy quét desktop, một dịch vụ web, hay một script đơn giản xử lý hàng loạt hình ảnh lớn. Tin tốt là gì? Chỉ cần vài dòng Python và mẫu threading phù hợp, giao diện người dùng của bạn sẽ luôn phản hồi nhanh trong khi engine OCR thực hiện công việc của nó. + +Trong hướng dẫn này, chúng ta sẽ đi qua một ví dụ hoàn chỉnh, từ đầu đến cuối: tải một tệp PNG lớn, khởi chạy OCR trên một luồng nền, và xử lý kết quả bằng một callback. Khi kết thúc, bạn sẽ không chỉ biết **cách sử dụng threading** mà còn biết **cách tải ảnh cho OCR** một cách sạch sẽ và tái sử dụng. + +## Những Gì Bạn Cần + +- Python 3.9+ (cú pháp chúng tôi dùng hoạt động trên bất kỳ phiên bản mới nào) +- `pillow` để xử lý ảnh (`pip install pillow`) +- `pytesseract` là một wrapper nhẹ quanh Tesseract OCR (`pip install pytesseract`) +- Engine Tesseract OCR được cài đặt trên máy của bạn (tải về từ [tesseract‑ocr.org](https://github.com/tesseract-ocr/tesseract)) +- Một tệp ảnh lớn mà bạn muốn xử lý (`large_image.png` trong hướng dẫn này) + +Không cần framework bổ sung, không async/await—chỉ cần `threading` cổ điển và một callback. + +## Bước 1: Nhập Module Threading (Cần Thiết Cho Thực Thi Nền) + +Điều đầu tiên chúng ta làm là nhập module `threading`. Nó cung cấp lớp `Thread`, cho phép chúng ta chạy bất kỳ hàm nào trong một luồng OS riêng biệt. + +```python +import threading +``` + +*Tại sao điều này quan trọng*: Nếu bạn chạy OCR trên luồng chính, chương trình của bạn (đặc biệt là GUI) sẽ bị treo cho đến khi OCR hoàn thành. Bằng cách giao công việc cho một luồng nền, luồng chính vẫn tự do cập nhật UI, xử lý nhập liệu người dùng, hoặc khởi chạy các tác vụ khác. + +## Bước 2: Định Nghĩa Callback Sẽ Được Gọi Khi OCR Hoàn Thành + +Callback chỉ đơn giản là một hàm mà một đoạn mã khác gọi khi nó hoàn thành. Ở đây chúng ta sẽ in ra văn bản đã nhận dạng, nhưng bạn cũng có thể lưu nó, gửi qua mạng, hoặc cập nhật một widget UI. + +```python +def ocr_done(result_text: str) -> None: + """Called when the OCR thread finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) # Display the recognized text +``` + +*Mẹo chuyên nghiệp*: Giữ callback nhẹ. Xử lý nặng trong callback làm mất mục đích của threading vì nó vẫn sẽ chặn luồng đã gọi (thường là luồng chính). + +## Bước 3: Tải Ảnh Bạn Muốn Xử Lý + +Việc tải ảnh là một mối quan tâm riêng biệt so với OCR, nhưng vẫn là một phần của quy trình tổng thể. Sử dụng Pillow làm cho việc này trở nên đơn giản. + +```python +from PIL import Image + +def load_image(path: str) -> Image.Image: + """Loads an image from disk and returns a Pillow Image object.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + except Exception as exc: + raise RuntimeError(f"Failed to load image: {exc}") from exc +``` + +*Tại sao chúng ta làm việc này ở đây*: Nếu ảnh quá lớn, việc tải nó trên luồng chính có thể gây giật. Trong nhiều ứng dụng thực tế, bạn cũng sẽ chuyển tải ảnh sang một luồng, nhưng để rõ ràng chúng ta giữ nó đồng bộ. + +## Bước 4: Tạo Một Wrapper Nhỏ Cho Engine OCR + +Đoạn mã gốc sử dụng `engine.process_async`. Chúng ta sẽ mô phỏng điều đó bằng một lớp nhỏ khởi tạo một luồng bên trong và gọi callback đã cung cấp khi hoàn thành. + +```python +import pytesseract + +class SimpleOcrEngine: + """A minimal OCR engine that runs pytesseract in a background thread.""" + + def __init__(self, image: Image.Image): + self.image = image + + def _run_ocr(self, callback): + """Internal method executed in the worker thread.""" + try: + # pytesseract returns the recognized text as a plain string + text = pytesseract.image_to_string(self.image) + callback(text) + except Exception as exc: + callback(f"OCR failed: {exc}") + + def process_async(self, callback): + """Public method to start OCR on a new thread.""" + worker = threading.Thread(target=self._run_ocr, args=(callback,)) + worker.daemon = True # Daemon so it won’t block program exit + worker.start() + print("OCR thread started…") +``` + +*Giải thích*: +- `_run_ocr` thực hiện công việc nặng. +- `process_async` tạo một đối tượng `Thread`, đánh dấu nó là daemon (để trình thông dịch có thể thoát ngay cả khi luồng vẫn đang chạy), và khởi chạy nó. +- Callback nhận hoặc là văn bản OCR hoặc là thông báo lỗi. + +## Bước 5: Kết Hợp Tất Cả Và Thực Hiện Các Công Việc Khác Khi OCR Đang Chạy + +Bây giờ chúng ta điều phối toàn bộ quy trình: tải ảnh, khởi tạo engine, khởi chạy OCR bất đồng bộ, và giữ luồng chính bận với một việc khác (ở đây chúng ta chỉ in một thông báo). + +```python +if __name__ == "__main__": + # 1️⃣ Load the image you want to OCR + img_path = "YOUR_DIRECTORY/large_image.png" + image = load_image(img_path) + + # 2️⃣ Create the OCR engine instance + engine = SimpleOcrEngine(image) + + # 3️⃣ Start OCR on a background thread, passing our callback + engine.process_async(callback=ocr_done) + + # 4️⃣ Do other work while OCR runs (simulated with a loop) + for i in range(5): + print(f"Main thread doing other work… ({i+1}/5)") + # In a real app you might update a progress bar, handle UI events, etc. + threading.Event().wait(0.5) # Sleep 0.5 s without blocking the OS thread + + # Give the OCR thread a moment to finish before the script exits + threading.Event().wait(2) + print("Script finished.") +``` + +**Kết quả mong đợi (được rút gọn để ngắn gọn):** + +``` +Image 'YOUR_DIRECTORY/large_image.png' loaded – size: (3840, 2160) +OCR thread started… +Main thread doing other work… (1/5) +Main thread doing other work… (2/5) +... +--- Async OCR finished --- +The quick brown fox jumps over the lazy dog. +Script finished. +``` + +Nếu OCR thất bại, callback sẽ in ra thông báo lỗi thay vì văn bản. + +--- + +## Tại Sao Cách Tiếp Cận Này Hoạt Động Tốt Hơn So Với Vòng Lặp Đơn Giản + +- **Độ phản hồi**: Luồng chính không bao giờ bị chặn khi gọi OCR, việc này có thể mất vài giây đối với ảnh lớn. +- **Khả năng mở rộng**: Bạn có thể khởi tạo nhiều instance của `SimpleOcrEngine`, mỗi cái trên một luồng riêng, để xử lý đồng thời một loạt ảnh. +- **Tách biệt các mối quan tâm**: Việc tải, xử lý và xử lý kết quả được tách biệt rõ ràng, giúp mã dễ kiểm thử và bảo trì hơn. + +## Những Cạm Bẫy Thường Gặp và Cách Tránh + +| Cạm bẫy | Điều gì xảy ra | Cách khắc phục | +|---------|----------------|----------------| +| Quên đánh dấu luồng là *daemon* | Script bị treo sau khi công việc chính hoàn thành vì luồng OCR vẫn còn hoạt động. | Đặt `worker.daemon = True` **hoặc** `join()` luồng trước khi thoát. | +| Sử dụng biến toàn cục để lưu kết quả mà không có khóa | Các điều kiện race có thể làm hỏng dữ liệu khi nhiều luồng ghi đồng thời. | Truyền kết quả qua callback (như chúng ta làm) hoặc sử dụng các container an toàn với luồng như `queue.Queue`. | +| Tải ảnh khổng lồ trên luồng chính | UI bị treo trước khi OCR nền bắt đầu. | Chuyển tải ảnh sang một luồng khác, hoặc sử dụng kỹ thuật tải lười (lazy loading). | +| Không xử lý ngoại lệ bên trong luồng worker | Các ngoại lệ không được bắt sẽ giết luồng một cách im lặng, khiến bạn không nhận được kết quả. | Bao bọc logic OCR trong `try/except` và chuyển lỗi tới callback. | + +## Mở Rộng Mô Hình Này + +- **Báo cáo tiến độ**: Sử dụng một `queue.Queue` chia sẻ để đẩy các phần trăm tiến độ trung gian từ luồng OCR tới luồng chính. +- **Thread Pool**: Đối với xử lý batch, thay thế các đối tượng `Thread` riêng lẻ bằng `concurrent.futures.ThreadPoolExecutor`. +- **Tích hợp GUI**: Trong ứng dụng Tkinter hoặc PyQt, lên lịch callback bằng `after()` (Tkinter) hoặc `QTimer.singleShot` (Qt) để đảm bảo cập nhật UI diễn ra trên luồng chính. + +## Ví Dụ Hoàn Chỉnh (Sẵn Sàng Sao Chép‑Dán) + +```python +import threading +from PIL import Image +import pytesseract + +def ocr_done(result_text: str) -> None: + """Callback invoked when OCR finishes.""" + print("\n--- Async OCR finished ---") + print(result_text) + +def load_image(path: str) -> Image.Image: + """Load an image and report its size.""" + try: + img = Image.open(path) + print(f"Image '{path}' loaded – size: {img.size}") + return img + +{{< /blocks/products/pf/tutorial-page-section >}} +{{< /blocks/products/pf/main-container >}} +{{< /blocks/products/pf/main-wrap-class >}} +{{< blocks/products/products-backtop-button >}} \ No newline at end of file