رینڈر ٹائم پر پی ڈی ایف (PDFs) کو پارس کرنا بند کریں
زیادہ تر فرنٹ اینڈ پی ڈی ایف ایکسٹریکشن ٹولز ناکام ہو جاتے ہیں۔
ڈویلپرز بصری آؤٹ پٹ (visual output) سے دستاویز کی ساخت کا اندازہ لگانے کی کوشش کرتے ہیں۔ وہ کالم، ٹیبلز یا لسٹوں کو تلاش کرنے کے لیے رینڈر شدہ پکسلز کو دیکھتے ہیں۔ وہ یہ فیصلہ کرنے کے لیے کہ باکس کہاں سے شروع ہوتا ہے، کمپیوٹر ویژن یا پکسل کے قرب (pixel proximity) کا استعمال کرتے ہیں۔
یہ بنانے کا غلط طریقہ ہے۔
ایک پی ڈی ایف میں اس کے آپریٹر اسٹریم (operator stream) میں پہلے سے ہی واضح ساختی ڈیٹا موجود ہوتا ہے۔ ایک ٹیبل محض قریبی پکسلز کا مجموعہ نہیں ہے۔ اسے moveTo، lineTo یا rectangle جیسے مخصوص کمانڈز کے ذریعے ڈرا کیا جاتا ہے۔ وہ حدود جنہیں آپ تلاش کرنا چاہتے ہیں، وہ پہلے سے ہی سورس میں انکوڈ شدہ ہوتی ہیں۔
اگر آپ کا ایکسٹریکٹر 100% زوم کے مقابلے میں 150% زوم پر مختلف کالم دیتا ہے، تو آپ ساخت (structure) کو ایکسٹریکٹ نہیں کر رہے ہیں۔ آپ صرف بصری اثرات (visual artifacts) کے پیٹرن میچ کر رہے ہیں۔
بصری ہیورسٹکس (visual heuristics) کا استعمال بند کریں۔ آپریٹر اسٹریم کو پارس کرنا شروع کریں۔
آپریٹر اسٹریم کیوں بہتر ہے:
- یہ یقینی (deterministic) ہے۔ یہ اسکیل یا فونٹ ہنٹنگ (font hinting) سے قطع نظر ایک ہی طرح کام کرتا ہے۔
- یہ حقیقی ڈیٹا استعمال کرتا ہے۔ آپ تخلیق کار کے ذریعے متعین کردہ اصل پاتھ (paths) اور کوآرڈینیٹس (coordinates) کا استعمال کرتے ہیں۔
- یہ ریاضیاتی غلطیوں سے بچاتا ہے۔ مثال کے طور پر، زونز تلاش کرنے کے لیے ٹیکسٹ سینٹرز کے درمیان درمیانی نکات (midpoints) کا استعمال کرنے سے راؤنڈنگ بگ (rounding bugs) پیدا ہوتے ہیں۔ باؤنڈنگ باکس کے اصل اوپری کنارے کا استعمال کرنا ہی واحد درست طریقہ ہے۔
مشکل راستہ ہی درست راستہ ہے۔
آپ کو CTM اسٹیک کو سمجھنا ہوگا۔ آپ کو میٹرکس اسٹیٹس (matrix states) کو ٹریک کرنا ہوگا اور سب پاتھز (subpaths) کو درجہ بندی کرنی ہوگی۔ اس میں مہارت حاصل کرنے کے لیے آپ کو پی ڈی ایف اسپیسیفیکیشن اور سورس کوڈ پڑھنا ہوگا۔
اس میں شروع میں زیادہ محنت درکار ہوتی ہے۔ لیکن یہ صارف کے اپ لوڈ کردہ ہر پی ڈی ایف کے لیے کام کرتا ہے۔ پکسل پر مبنی ٹولز صرف آپ کے ٹیسٹ سویٹ (test suite) کی چند فائلوں کے لیے کام کرتے ہیں۔
ایک حقیقی ایکسٹریکٹر بنائیں، ڈیمو نہیں۔