Most PDF Extractors غلط API استعمال کرتے ہیں
زیادہ تر PDF ٹولز غلط ڈیٹا سورس استعمال کرتے ہیں۔
جب ڈویلپرز PDF extraction کی بات کرتے ہیں، تو ان کا مطلب عام طور پر getTextContent() ہوتا ہے۔ یہ میتھڈ ٹیکسٹ آئٹمز اور ان کے مقامات فراہم کرتا ہے۔ یہ تقریباً ہر براؤزر سائیڈ ٹول کے لیے ڈیفالٹ ہے۔
لیکن getTextContent() ایک پروسیس شدہ ویو (view) ہے۔ یہ اس چیز کا ایک سادہ ورژن ہے جو اصل میں دستیاب ہے۔
PDF.js میں ڈیٹا کے تین لیولز ہیں:
• getStructTree(): یہ آپ کو بتاتا ہے کہ دستاویز کا مطلب کیا ہے۔ اس میں ٹیبلز، ہیڈنگز اور فارمولے شامل ہوتے ہیں۔
• getOperatorList(): یہ آپ کو بتاتا ہے کہ دستاویز کیا ڈرا (draw) کرتی ہے۔ اس میں لائنز، پاتھز اور اشکال شامل ہیں۔
• getTextContent(): یہ اس چیز کا ایک فلٹر شدہ ویو ہے جو دستاویز ڈرا کرتی ہے۔
زیادہ تر ٹولز تیسرا آپشن استعمال کرتے ہیں۔ یہ سادہ رپورٹس جیسی 80% دستاویزات کے لیے کام کرتا ہے۔ تاہم، یہ تعلیمی مقالوں (academic papers) اور پیچیدہ اشاعتوں پر ناکام ہو جاتا ہے۔
صرف getTextContent() استعمال کرنے سے چار بڑے مسائل پیدا ہوتے ہیں:
- آپ ٹیبل کے ڈھانچے (structures) کھو دیتے ہیں۔ آپ کو ٹیکسٹ کے مقامات کی بنیاد پر اندازہ لگانا پڑتا ہے کہ سیلز (cells) کہاں ہیں۔
- آپ ریاضیاتی مساواتیں (math equations) خراب کر دیتے ہیں۔ LaTeX مساواتیں اکثر ایک ہی بڑے ٹیکسٹ بلاک کے طور پر ظاہر ہوتی ہیں۔
- آپ کالم کی لائنیں مس کر دیتے ہیں۔ بہت سے لے آؤٹس کالموں کو الگ کرنے کے لیے اصل لائنوں کا استعمال کرتے ہیں۔ یہ لائنیں ٹیکسٹ مواد میں موجود نہیں ہوتیں۔
- آپ کو پڑھنے کا غلط ترتیب ملتی ہے۔ ٹیکسٹ اکثر اسی ترتیب میں ظاہر ہوتا ہے جس ترتیب میں اسے ڈرا کیا گیا تھا، نہ کہ اس طرح جیسے ایک انسان اسے پڑھتا ہے۔
PDF پروسیسر بنانے کا صحیح طریقہ ایک تین تہوں (three-tier) والا سسٹم ہے:
- پہلے
getStructTree()چیک کریں۔ اگر دستاویز کا منطقی ڈھانچہ موجود ہے، تو ٹیبلز اور ہیڈنگز کو فوری طور پر تلاش کرنے کے لیے اسے استعمال کریں۔ - اس کے بعد
getOperatorList()چیک کریں۔ کالم کی حدود تلاش کرنے کے لیے واضح لائنوں اور پاتھز کا استعمال کریں۔ getTextContent()کو بطور فال بیک (fallback) استعمال کریں۔ جیومیٹریکل ریاضی کا استعمال صرف تب کریں جب پہلی دو تہیں کوئی ڈیٹا فراہم نہ کریں۔
یہ طریقہ زیادہ کام نہیں ہے۔ پہلی اور دوسری تہیں "فاسٹ ایگزٹ" (fast exits) کے طور پر کام کرتی ہیں۔ اگر دستاویز کا ڈھانچہ درست ہے، تو آپ مشکل ریاضی سے بچ جاتے ہیں۔ آپ پیچیدہ استدلال (inference) کا استعمال صرف اس وقت کرتے ہیں جب دستاویز ان ٹیگ شدہ (untagged) ہو۔
یہ آرکیٹیکچر سادہ کارپوریٹ فائلوں اور پیچیدہ سائنسی مقالوں، دونوں کو سنبھال لیتا ہے۔
ماخذ: https://dev.to/bonzai2carn/most-pdf-extractors-use-the-wrong-api-heres-what-we-built-instead-5dgh
