পিডিএফ অনুসন্ধান শব্দ হাইলাইট করুন, কেন আয়তক্ষেত্রটি তির্যক পাঠকে ভুলভাবে ফ্রেম করে?

ইটালিক হরফগুলি অগত্যা অনুসন্ধান করা চতুর্ভুজের ক্ষেত্রটিকে ঘেরা আয়তক্ষেত্রের চেয়ে ছোট করে না। যখন আপনাকে চার-কোণার দিকনির্দেশের তথ্য ধরে রাখতে হবে, হাইলাইটিং যোগ করতে সরাসরি quads=True-এর ফলাফল ব্যবহার করুন; হাইলাইটিং সঠিক কিনা তা নির্ধারণ করতে কোনো এলাকার পার্থক্য থ্রেশহোল্ড ব্যবহার করবেন না।

যখন তির্যক পাঠ্যের জন্য অনুসন্ধান হাইলাইট বাক্সটি তির্যক করা হয়, তখন এটি প্রায়শই ফন্টের সাথে সমস্যা থাকার কারণে নয়, বরং হাইলাইট করার জন্য ব্যবহৃত জ্যামিতিক বস্তুটি ভুলভাবে নির্বাচন করা হয়। এই নিবন্ধটি এমন ডেভেলপারদের জন্য যারা পিডিএফ টেক্সট পজিশনিং প্রক্রিয়া করতে PyMuPDF ব্যবহার করেন। এটি ব্যাখ্যা করে কেন ঘেরা আয়তক্ষেত্র (Rect) তির্যক বা ঘোরানো পাঠ্যের হাইলাইটিং সঠিক কিনা এবং বিভিন্ন পরিস্থিতিতে কীভাবে এটি পরিচালনা করা যায় তা নির্ধারণ করতে ব্যবহার করা যায় না।

এই নিবন্ধটি পড়ার পরে, আপনি অনুসন্ধানের ফলাফলের জন্য Quad বা Rect ব্যবহার করবেন কিনা তা নির্ধারণ করতে পারেন, অনুসন্ধান করার সময় কোন হিট, ক্রস-সারি, একাধিক হিট এবং ক্রপবক্স ক্রপিং কীভাবে পরিচালনা করবেন তা জানুন এবং কোন সমস্যাগুলি জ্যামিতিক অবস্থানের সুযোগের বাইরে তা বুঝতে পারেন৷

সম্পূর্ণ পাঠ্যটি সিন্থেটিক নমুনাগুলির সাথে প্রদর্শিত হয় এবং কোডটি একটি বিচ্ছিন্ন পরিবেশে নমুনা পরীক্ষায় পাস করে, তবে এটি সমস্ত বাস্তব ফাইল বা পণ্যের প্রভাবগুলির গ্যারান্টি উপস্থাপন করে না। গুরুত্বপূর্ণ নথিগুলি প্রক্রিয়া করার আগে, দয়া করে মূলগুলি রাখুন এবং তারপরে নীচের সীমানা এবং গ্রহণযোগ্য আইটেমগুলি অনুসারে সেগুলি পর্যালোচনা করুন৷

ইটালিক টেক্সট সার্চ হাইলাইট করার জন্য, Quad বা Rect বেছে নিন? এক বাক্যে উপসংহার

তির্যক ফন্ট অগত্যা অনুসন্ধান দ্বারা প্রাপ্ত চতুর্ভুজ ক্ষেত্রটিকে ঘেরা আয়তক্ষেত্রের চেয়ে ছোট করে না। যখন চার-কোণার দিকনির্দেশের তথ্য ধরে রাখার প্রয়োজন হয়, তখন হাইলাইট যোগ করতে সরাসরি quads=True-এর ফলাফল ব্যবহার করুন। হাইলাইটিং সঠিক কিনা তা নির্ধারণ করতে কোনো এলাকার পার্থক্য থ্রেশহোল্ড ব্যবহার করবেন না।

আপনার অবস্থাপ্রস্তাবিত অভ্যাসকারণ
তির্যক বা ঘোরানো টেক্সট, চার কোণার অভিযোজন সংরক্ষণ করা প্রয়োজনহাইলাইট যোগ করতে quads=True এর ফলাফল সরাসরি ব্যবহার করুনQuad চার কোণার অভিযোজন তথ্য ধরে রাখে
হাইলাইটিং সঠিক কিনা তা নির্ধারণ করতে আমি এলাকার পার্থক্য থ্রেশহোল্ড ব্যবহার করতে চাই।এটা করবেন নাতির্যক ফন্ট অগত্যা চতুর্ভুজ এলাকা ছোট করে না, এবং থ্রেশহোল্ড রায় অবিশ্বাস্য।
অনুসন্ধান শব্দগুলি লাইন জুড়ে বিস্তৃত এবং ইঞ্জিন তাদের একই শব্দভান্ডার ইউনিট হিসাবে স্বীকৃতি দেয় না।ফিরে আসা সমস্ত চতুর্ভুজ টুকরা রাখুন এবং পৃথকভাবে হাইলাইট আঁকুনএকটি রেক্টে জোর করে একত্রিত করা মাঝখানে সাদা স্থানের শব্দার্থ হারাবে।
পৃষ্ঠায় ক্রপবক্স ক্রপিং আছেক্রপবক্স পুনরুদ্ধার করার পরে বিষয়বস্তু এখনও দর্শনযোগ্য এলাকার মধ্যে আছে কিনা তা যাচাই করুনsearch_for দ্বারা প্রত্যাবর্তিত স্থানাঙ্কগুলি অপরিবর্তিত মূল পৃষ্ঠা স্থানের উপর ভিত্তি করে এবং ধরে নেওয়া যায় না যে get_text ডিফল্টরূপে ক্রপ করা এলাকাটিকে উপেক্ষা করে
একাধিক হিটআইটেম দ্বারা পৃষ্ঠা নম্বর আইটেম রাখুন এবং তাদের এক এক করে প্রক্রিয়া করুনশুধুমাত্র প্রথমটি প্রক্রিয়া করলে অবশিষ্ট অবস্থানগুলি মিস হবে৷

কেন ইটালিক টেক্সট ভুলভাবে প্রদর্শিত হয়?

অনেক লোক ডিফল্টভাবে ধরে নেবে যে তির্যক অক্ষরগুলির আবদ্ধ আয়তক্ষেত্রটি কোয়াডের চেয়ে অনেক বড়, তাই হাইলাইট করার জন্য রেক্ট ব্যবহার করা "ফ্রেম বিচ্যুতি" ঘটাবে। প্রকৃতপক্ষে, ইটালিক ফন্ট অগত্যা অনুসন্ধান করা কোয়াডের ক্ষেত্রফলকে ঘেরা আয়তক্ষেত্রের চেয়ে ছোট করে না, তাই হাইলাইটিং সঠিক কিনা তা বিচার করার জন্য ক্ষেত্রফলের পার্থক্য ব্যবহার করা নির্ভরযোগ্য নয়।

যা সত্যই প্রয়োজন তা হ'ল চার কোণে ওরিয়েন্টেশন তথ্য ধরে রাখা। কোয়াড এই তথ্যটি রেকর্ড করে, তাই আকারগুলি অনুমান করার জন্য বাহ্যিক আয়তক্ষেত্র ব্যবহার করার চেয়ে সরাসরি হাইলাইট যুক্ত করা আরও নির্ভরযোগ্য।

স্ব-নিয়ন্ত্রিত রচনার উদাহরণ

উদাহরণ নির্ভরতা আমদানি তালিকায় পাওয়া যাবে। কোড মেমরিতে ইনপুট তৈরি করে এবং বাহ্যিক ফাইল ছাড়াই চলতে পারে। রানটাইম রেকর্ডগুলি আলাদাভাবে সরবরাহ করা হয় এবং সমস্ত খাঁটি ফাইলের গ্যারান্টি উপস্থাপন করে না।

import pymupdf
with pymupdf.open() as source:
    page = source.new_page(width=300, height=300)
    page.insert_text((100, 250), "Searchable", fontsize=14, rotate=90)
    hits = page.search_for("Searchable", quads=True)
    assert len(hits) == 1
    assert isinstance(hits[0], pymupdf.Quad)
    page.add_highlight_annot(hits)
    assert page.search_for("Missing", quads=True) == []
    raw = source.tobytes()
with pymupdf.open(stream=raw, filetype="pdf") as doc:
    page = doc[0]  # Keep the owning page alive while using annotations.
    annotations = list(page.annots())
    assert len(annotations) == 1
    assert len(annotations[0].vertices) == 4

বাউন্ডারি ইনপুটগুলির সঠিক আউটপুট এবং প্রক্রিয়াকরণ

উপরের সংশ্লেষণ উদাহরণটি কোয়াডের আচরণ যাচাই করার জন্য মেমরিতে একটি পিডিএফ তৈরি করে। নীচে বেশ কয়েকটি সাধারণ সীমানা ইনপুট রয়েছে।

1. অনুসন্ধানের পদগুলি ক্রস-লাইন

যদি অনুসন্ধান শব্দটি লাইন ব্রেক অতিক্রম করে এবং ইঞ্জিনটি এটিকে একই শব্দ ইউনিট হিসাবে স্বীকৃতি না দেয় তবে search_for একটি খালি তালিকা ফিরিয়ে দিতে পারে বা কেবল কিছু টুকরোর সাথে মেলে যেতে পারে।

  • জোর করে একাধিক অ-সংলগ্ন কোয়াডকে একটি রেক্টে একত্রিত করবেন না, অন্যথায় আপনি মাঝখানে ফাঁকা অঞ্চলগুলির শব্দার্থ হারাবেন।
  • সমস্ত ফিরে আসা কোয়াড বিভাগগুলি রাখুন এবং সেগুলি আলাদাভাবে হাইলাইট করুন।

2. অনুসন্ধানের পদগুলিতে নিয়মিত বিশেষ অক্ষর রয়েছে

যদি অনুসন্ধান শব্দটিতে নিয়মিত বিশেষ অক্ষর থাকে তবে এড়াতে না পারে তবে ফলাফলগুলি প্রত্যাশা পূরণ করতে পারে না। কল করার আগে, ইনপুট স্ট্রিংটি নিরাপদে চিকিত্সা করা উচিত।

3. ক্রপবক্স ক্রপ

যদি কোনও পৃষ্ঠায় একটি ক্রপবক্স ক্লিপ থাকে, তবে search_for দ্বারা ফেরত স্থানাঙ্কগুলি এখনও মূল পৃষ্ঠার স্থানের উপর ভিত্তি করে হবে যা ঘোরানো হয়নি। CropBox পুনরুদ্ধার করার পরে, আপনাকে যাচাই করতে হবে যে সামগ্রীটি এখনও দৃশ্যমান অঞ্চলের মধ্যে রয়েছে কিনা; আপনি ক্রপিং অঞ্চলটি উপেক্ষা করার জন্য get_text ডিফল্ট অনুমান করতে পারবেন না।

গ্রহণযোগ্যতার মানদণ্ড এবং ম্যানুয়াল পর্যালোচনা সীমানা

এই সমাধানটি কেবল জ্যামিতিক অবস্থান সমস্যার সমাধান করে। নিম্নলিখিত পরিস্থিতিগুলি কোয়াড বনাম রেক্ট পছন্দের বিষয়টির আওতায় পড়ে না:

  • পিডিএফের পাঠ্য স্তরের ক্ষতি;
  • ফন্ট এম্বেডিং অসঙ্গতি;
  • লুকানো স্তরগুলির উপস্থিতি।

এই ক্ষেত্রে, search_for এর ফলাফলগুলি মোটেও নির্ভরযোগ্য নাও হতে পারে এবং ম্যানুয়ালি পর্যালোচনা করা বা পুনরায় পরীক্ষা করা উচিত। নমুনা কোডটি কেবল জ্যামিতিক বৈশিষ্ট্যগুলি যাচাই করে; এন্ড-টু-এন্ড প্রভাবগুলি এখনও নির্দিষ্ট নথির প্রকারের উপর ভিত্তি করে মূল্যায়ন করা দরকার।

নির্দিষ্ট ব্যতিক্রম হ্যান্ডলিং সিদ্ধান্ত

পর্যবেক্ষণকি করা উচিৎএবং বিচার করা উচিত নয়
তল্লাশির কোনও ফল পাওয়া যায়নিপাঠ্য স্তর এবং কীওয়ার্ডগুলি পরীক্ষা করুনকোনও খালি হাইলাইট তৈরি করা হয়নি
পাঠ্য ঘোরানকোয়াডের চার কোণ ধরে রাখুনএলাকার পার্থক্য ব্যবহার না করে নির্ভুলতা অনুমান করা
এবং অনেক জায়গায় চিহ্ন হিটপ্রতিটি আইটেম পৃষ্ঠা নম্বর সহ রাখা উচিতশুধু প্রথমটি নিয়েই কাজ করবেন না

📊 মূল তুলনা

টার্গেটতথ্য যা সংরক্ষণ করা যায়প্রযোজ্য পরিস্থিতিনোট
Quadচার কোণইটালিক এবং ঘূর্ণায়মান পাঠ্যের সুনির্দিষ্ট হাইলাইটিং প্রয়োজনসরাসরি quads=True এর ফলাফল ব্যবহার করুন
রেক্ট (বাহ্যিক আয়তক্ষেত্র)বাহ্যিক যোগাযোগের পরিসীমাঅনুভূমিক পাঠ্যের সহজ নির্বাচনইটালিক বা ঘূর্ণায়মান পাঠ্য অফ-বক্স হতে পারে এবং নির্ভুলতা পরীক্ষা করার জন্য উপযুক্ত নয়
মার্জ করা রেক্টসামগ্রিক পরিধিক্রস-লাইন অনুসন্ধানের জন্য সুপারিশ করা হয় নাএতে মাঝখানে ফাঁকা জায়গার অর্থ হারাবে

🎯 কোন পদ্ধতিটি আপনার জন্য উপযুক্ত?

আপনি যদি ...... করেন

  • পাঠ্য কোণগুলি সংরক্ষণ করা দরকার : হাইলাইট যুক্ত করতে সরাসরি quads=True এর ফলাফলগুলি ব্যবহার করুন।
  • এলাকা পার্থক্য থ্রেশহোল্ড অনুসারে হাইলাইট করা সঠিক কিনা তা বিচার করতে চাই : এটি করবেন না; ইটালিক ফন্টগুলি অগত্যা কোয়াড অঞ্চলটিকে ছোট করে তোলে না।
  • আপনি যদি অনুসন্ধান শব্দগুলি ক্রসিং লাইনের মুখোমুখি হন : সমস্ত কোয়াড বিভাগগুলি রাখুন, সেগুলি আলাদাভাবে হাইলাইট করুন এবং তাদের একক রেক্টে মার্জ করবেন না।
  • ক্রপবক্স ক্রপিং সহ পৃষ্ঠাগুলি পরিচালনা করা : ক্রপবক্স পুনরুদ্ধার করার পরে, বিষয়বস্তুটি এখনও দৃশ্যমান অঞ্চলের মধ্যে রয়েছে কিনা তা যাচাই করুন।

ডকুমেন্ট অনুবাদের জন্য এই চেকলিস্টটি ব্যবহার করুন

প্রথমে, পৃষ্ঠার ক্রম, উত্স অবস্থান এবং পাঠ্য অখণ্ডতা পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন, তারপরে একই বেনামী নমুনাটি অনুবাদ প্রক্রিয়ায় হস্তান্তর করুন। অনুবাদের পরে, শিরোনাম, মূল পাঠ্য এবং শিরোনামগুলি সঠিকভাবে মিলে যায় কিনা তা পরীক্ষা করা প্রয়োজন; পাঠ্যটি সাবলীল কিনা তা বিচার করা যথেষ্ট নয়।

OmniDoc (প্রোডাক্ট এন্ট্রি) মাল্টি-ফর্ম্যাট ডকুমেন্ট অনুবাদ পোর্টাল সরবরাহ করে এবং এর অফিসিয়াল ওয়েবসাইট OCR, পরিভাষা এবং দ্বিভাষিক রেফারেন্স বৈশিষ্ট্য প্রবর্তন করে। ফাইলগুলি থেকে সরাসরি শুরু করতে চায় এমন দলগুলির জন্য, এটি প্রকৃত নমুনাগুলির সাথে মূল্যায়ন করার মতো একটি পথ। অনুগ্রহ করে আপনি যে বেনামী ফাইলটি আপলোড করার জন্য অনুমোদিত করেছেন তা ব্যবহার করুন এবং এই নিবন্ধের চেকলিস্টের সাথে ফলাফলগুলি যাচাই করুন। এটি দাবি করে না যে ওমনিডক এই নিবন্ধে উল্লিখিত ওপেন সোর্স লাইব্রেরি বা অভ্যন্তরীণ অ্যালগরিদম ব্যবহার করে, বা উদাহরণগুলি পণ্যের পারফরম্যান্স পরীক্ষাকে প্রতিস্থাপন করে না।

তথ্যসূত্র

❓ প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (FAQ)

1. ইটালিক পাঠ্য কি অগত্যা কোয়াড অঞ্চলটিকে ছোট করে তোলে?

অগত্যা নয়। ইটালিক গ্লিফগুলি অগত্যা বাহ্যিক আয়তক্ষেত্রের চেয়ে ছোট চতুর্ভুজ ক্ষেত্র দেয় না, তাই হাইলাইট করা সঠিক কিনা তা নির্ধারণের জন্য আপনি অঞ্চল পার্থক্যের উপর নির্ভর করতে পারবেন না।

2. কোয়াডের চার-কোণার তথ্য কখন সংরক্ষণ করা উচিত?

আপনার যদি চারটি কোণের জন্য দিকনির্দেশের তথ্য রাখার প্রয়োজন হয় তবে হাইলাইটিং যুক্ত করতে আপনার সরাসরি quads=True এর ফলাফলগুলি ব্যবহার করা উচিত।

3. যদি আপনার অনুসন্ধানের শব্দটি সীমা অতিক্রম করে এবং চিহ্নটি আঘাত না করে তবে আপনার কী করা উচিত?

খালি হাইলাইট তৈরি করবেন না; প্রথমে পাঠ্য স্তর এবং কীওয়ার্ডগুলি পরীক্ষা করুন। যদি সেগমেন্টের কেবলমাত্র একটি অংশ ফেরত দেওয়া হয়, তবে সমস্ত ফিরে আসা কোয়াড সেগমেন্টগুলি আলাদাভাবে রাখা উচিত এবং হাইলাইট করা উচিত, জোর করে একক রেক্টে একীভূত হওয়ার পরিবর্তে।

4. পৃষ্ঠাটিতে ক্রপবক্স অন্তর্ভুক্ত রয়েছে। কাটার সময় আপনার কী মনোযোগ দেওয়া উচিত?

search_for দ্বারা প্রদত্ত স্থানাঙ্কগুলি এখনও মূল পৃষ্ঠার স্থানের উপর ভিত্তি করে যা ঘোরানো হয়নি। CropBox পুনরুদ্ধার করার পরে, আপনাকে বিষয়বস্তুটি এখনও ভিউলাইনের মধ্যে আছে কিনা তা যাচাই করতে হবে; আপনি ক্রপ এলাকাটি উপেক্ষা করার জন্য get_text ডিফল্ট অনুমান করতে পারবেন না।

📝 সারসংক্ষেপ

ইটালিকস হাইলাইট করা এবং ঘূর্ণায়মান পাঠ্য কোয়াডের উপর ভিত্তি করে হওয়া উচিত এবং প্রতিটি আইটেমের জন্য পৃষ্ঠা নম্বর এবং কোণার তথ্য রাখা উচিত। টেক্সট লেয়ার দুর্নীতি এবং অস্বাভাবিক ফন্ট এম্বেডিংয়ের মতো বিষয়গুলির জন্য এখনও ম্যানুয়াল পর্যালোচনা বা পুনরায় ওসিআর প্রয়োজন।

OmniDoc ডেস্কটপ সংস্করণের বিনামূল্যে ডাউনলোড: ডকুমেন্টস, টেবিল, উপস্থাপনা এবং পিডিএফ সমস্ত এক জায়গায় পরিচালনা করুন

আপডেট করা হয়েছে 2026-11-13