Most PDF Extractors Use the Wrong API
చాలా PDF సాధనాలు తప్పు డేటా సోర్స్ను ఉపయోగిస్తున్నాయి.
డెవలపర్లు PDF ఎక్స్ట్రాక్షన్ గురించి మాట్లాడేటప్పుడు, వారు సాధారణంగా getTextContent() గురించి మాట్లాడుతుంటారు. ఈ పద్ధతి టెక్స్ట్ ఐటమ్స్ మరియు వాటి స్థానాలను అందిస్తుంది. దాదాపు ప్రతి బ్రౌజర్-సైడ్ సాధనానికి ఇది డిఫాల్ట్గా ఉంటుంది.
కానీ getTextContent() అనేది ప్రాసెస్ చేయబడిన వ్యూ (view). ఇది నిజానికి అందుబాటులో ఉన్న దాని యొక్క సరళీకృత వెర్షన్.
PDF.jsలో మూడు స్థాయిల డేటా ఉన్నాయి:
• getStructTree(): ఇది డాక్యుమెంట్ యొక్క అర్థాన్ని మీకు తెలియజేస్తుంది. ఇందులో టేబుల్స్, హెడ్డింగ్స్ మరియు ఫార్ములాలు ఉంటాయి.
• getOperatorList(): ఇది డాక్యుమెంట్ ఏమి గీసిందో మీకు తెలియజేస్తుంది. ఇందులో లైన్లు, పాత్స్ (paths) మరియు షేప్స్ ఉంటాయి.
• getTextContent(): ఇది డాక్యుమెంట్ గీసిన అంశాల యొక్క ఫిల్టర్ చేయబడిన వ్యూ.
చాలా సాధనాలు మూడవ ఆప్షన్ను ఉపయోగిస్తాయి. ఇది సాధారణ రిపోర్టుల వంటి 80% డాక్యుమెంట్లకు పనిచేస్తుంది. అయితే, ఇది అకడమిక్ పేపర్లు మరియు సంక్లిష్టమైన ప్రచురణల విషయంలో విఫలమవుతుంది.
కేవలం getTextContent()ని మాత్రమే ఉపయోగించడం వల్ల నాలుగు ప్రధాన సమస్యలు తలెత్తుతాయి:
- మీరు టేబుల్ స్ట్రక్చర్లను కోల్పోతారు. టెక్స్ట్ స్థానాల ఆధారంగా సెల్స్ ఎక్కడ ఉన్నాయో మీరు ఊహించాల్సి ఉంటుంది.
- మీరు గణిత సమీకరణాలను విచ్ఛిన్నం చేస్తారు. LaTeX సమీకరణాలు తరచుగా ఒకే పెద్ద టెక్స్ట్ బ్లాక్లుగా కనిపిస్తాయి.
- మీరు కాలమ్ లైన్లను మిస్ అవుతారు. అనేక లేఅవుట్లు కాలమ్స్ను వేరు చేయడానికి అసలైన లైన్లను ఉపయోగిస్తాయి. ఈ లైన్లు టెక్స్ట్ కంటెంట్లో ఉండవు.
- మీకు తప్పు రీడింగ్ ఆర్డర్ వస్తుంది. టెక్స్ట్ తరచుగా అది గీసిన క్రమంలో కనిపిస్తుంది, మనిషి చదివే క్రమంలో కాదు.
ఒక PDF ప్రాసెసర్ను నిర్మించడానికి సరైన మార్గం మూడు-అంచెల (three-tier) వ్యవస్థ:
- మొదట
getStructTree()ని తనిఖీ చేయండి. డాక్యుమెంట్కు లాజికల్ స్ట్రక్చర్ ఉంటే, టేబుల్స్ మరియు హెడ్డింగ్స్ను వెంటనే కనుగొనడానికి దానిని ఉపయోగించండి. - తర్వాత
getOperatorList()ని తనిఖీ చేయండి. కాలమ్ బౌండరీలను కనుగొనడానికి స్పష్టమైన లైన్లు మరియు పాత్స్ను ఉపయోగించండి. - ఫాల్బ్యాక్గా
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
