Most PDF Extractors Use the Wrong API

చాలా PDF సాధనాలు తప్పు డేటా సోర్స్‌ను ఉపయోగిస్తున్నాయి.

డెవలపర్లు PDF ఎక్స్‌ట్రాక్షన్ గురించి మాట్లాడేటప్పుడు, వారు సాధారణంగా getTextContent() గురించి మాట్లాడుతుంటారు. ఈ పద్ధతి టెక్స్ట్ ఐటమ్స్ మరియు వాటి స్థానాలను అందిస్తుంది. దాదాపు ప్రతి బ్రౌజర్-సైడ్ సాధనానికి ఇది డిఫాల్ట్‌గా ఉంటుంది.

కానీ getTextContent() అనేది ప్రాసెస్ చేయబడిన వ్యూ (view). ఇది నిజానికి అందుబాటులో ఉన్న దాని యొక్క సరళీకృత వెర్షన్.

PDF.jsలో మూడు స్థాయిల డేటా ఉన్నాయి:

getStructTree(): ఇది డాక్యుమెంట్ యొక్క అర్థాన్ని మీకు తెలియజేస్తుంది. ఇందులో టేబుల్స్, హెడ్డింగ్స్ మరియు ఫార్ములాలు ఉంటాయి. • getOperatorList(): ఇది డాక్యుమెంట్ ఏమి గీసిందో మీకు తెలియజేస్తుంది. ఇందులో లైన్లు, పాత్స్ (paths) మరియు షేప్స్ ఉంటాయి. • getTextContent(): ఇది డాక్యుమెంట్ గీసిన అంశాల యొక్క ఫిల్టర్ చేయబడిన వ్యూ.

చాలా సాధనాలు మూడవ ఆప్షన్‌ను ఉపయోగిస్తాయి. ఇది సాధారణ రిపోర్టుల వంటి 80% డాక్యుమెంట్‌లకు పనిచేస్తుంది. అయితే, ఇది అకడమిక్ పేపర్లు మరియు సంక్లిష్టమైన ప్రచురణల విషయంలో విఫలమవుతుంది.

కేవలం getTextContent()ని మాత్రమే ఉపయోగించడం వల్ల నాలుగు ప్రధాన సమస్యలు తలెత్తుతాయి:

  • మీరు టేబుల్ స్ట్రక్చర్లను కోల్పోతారు. టెక్స్ట్ స్థానాల ఆధారంగా సెల్స్ ఎక్కడ ఉన్నాయో మీరు ఊహించాల్సి ఉంటుంది.
  • మీరు గణిత సమీకరణాలను విచ్ఛిన్నం చేస్తారు. LaTeX సమీకరణాలు తరచుగా ఒకే పెద్ద టెక్స్ట్ బ్లాక్‌లుగా కనిపిస్తాయి.
  • మీరు కాలమ్ లైన్లను మిస్ అవుతారు. అనేక లేఅవుట్‌లు కాలమ్స్‌ను వేరు చేయడానికి అసలైన లైన్లను ఉపయోగిస్తాయి. ఈ లైన్లు టెక్స్ట్ కంటెంట్‌లో ఉండవు.
  • మీకు తప్పు రీడింగ్ ఆర్డర్ వస్తుంది. టెక్స్ట్ తరచుగా అది గీసిన క్రమంలో కనిపిస్తుంది, మనిషి చదివే క్రమంలో కాదు.

ఒక PDF ప్రాసెసర్‌ను నిర్మించడానికి సరైన మార్గం మూడు-అంచెల (three-tier) వ్యవస్థ:

  1. మొదట getStructTree()ని తనిఖీ చేయండి. డాక్యుమెంట్‌కు లాజికల్ స్ట్రక్చర్ ఉంటే, టేబుల్స్ మరియు హెడ్డింగ్స్‌ను వెంటనే కనుగొనడానికి దానిని ఉపయోగించండి.
  2. తర్వాత getOperatorList()ని తనిఖీ చేయండి. కాలమ్ బౌండరీలను కనుగొనడానికి స్పష్టమైన లైన్లు మరియు పాత్స్‌ను ఉపయోగించండి.
  3. ఫాల్‌బ్యాక్‌గా getTextContent()ని ఉపయోగించండి. మొదటి రెండు అంచెల నుండి డేటా లభించనప్పుడు మాత్రమే జ్యామితీయ గణితాన్ని (geometric math) ఉపయోగించండి.

ఈ విధానం వల్ల పని పెరగదు. 1 మరియు 2 అంచెలు ఫాస్ట్ ఎగ్జిట్స్ (fast exits) లాగా పనిచేస్తాయి. డాక్యుమెంట్ చక్కగా స్ట్రక్చర్ చేయబడి ఉంటే, మీరు కష్టమైన గణితాన్ని దాటవేయవచ్చు. డాక్యుమెంట్ అన్‌ట్యాగ్డ్ (untagged) అయినప్పుడు మాత్రమే మీరు సంక్లిష్టమైన ఇన్ఫరెన్స్‌ను ఉపయోగిస్తారు.

ఈ ఆర్కిటెక్చర్ సాధారణ కార్పొరేట్ ఫైల్‌లు మరియు సంక్లిష్టమైన సైంటిఫిక్ పేపర్ల రెండింటినీ హ్యాండిల్ చేస్తుంది.

Source: https://dev.to/bonzai2carn/most-pdf-extractors-use-the-wrong-api-heres-what-we-built-instead-5dgh