റെൻഡർ സമയത്ത് പിഡിഎഫുകൾ പാഴ്സ് ചെയ്യുന്നത് നിർത്തുക
മിക്ക ഫ്രണ്ട്എൻഡ് പിഡിഎഫ് എക്സ്ട്രാക്ഷൻ ടൂളുകളും പരാജയപ്പെടുന്നു.
വിഷ്വൽ ഔട്ട്പുട്ടിൽ നിന്ന് ഡോക്യുമെന്റ് ഘടന ഊഹിക്കാൻ ഡെവലപ്പർമാർ ശ്രമിക്കുന്നു. കോളങ്ങൾ, ടേബിളുകൾ അല്ലെങ്കിൽ ലിസ്റ്റുകൾ എന്നിവ കണ്ടെത്താൻ അവർ റെൻഡർ ചെയ്ത പിക്സലുകൾ പരിശോധിക്കുന്നു. ഒരു ബോക്സ് എവിടെ തുടങ്ങുന്നു എന്ന് തീരുമാനിക്കാൻ അവർ കമ്പ്യൂട്ടർ വിഷൻ അല്ലെങ്കിൽ പിക്സൽ പ്രോക്സിമിറ്റി ഉപയോഗിക്കുന്നു.
ഇത് നിർമ്മാണത്തിനുള്ള തെറ്റായ രീതിയാണ്.
ഒരു പിഡിഎഫിൽ അതിന്റെ ഓപ്പറേറ്റർ സ്ട്രീമിൽ (operator stream) വ്യക്തമായ ഘടനാപരമായ ഡാറ്റ ഇതിനകം അടങ്ങിയിട്ടുണ്ട്. ഒരു ടേബിൾ എന്നത് അടുത്തടുത്തുള്ള പിക്സലുകളുടെ ഒരു കൂട്ടം മാത്രമല്ല. അത് moveTo, lineTo, അല്ലെങ്കിൽ rectangle പോലുള്ള പ്രത്യേക കമാൻഡുകൾ ഉപയോഗിച്ചാണ് വരയ്ക്കുന്നത്. നിങ്ങൾ കണ്ടെത്താൻ ആഗ്രഹിക്കുന്ന അതിരുകൾ സോഴ്സിൽ ഇതിനകം എൻകോഡ് ചെയ്തിട്ടുണ്ട്.
നിങ്ങളുടെ എക്സ്ട്രാക്ടർ 100% സൂമിലും 150% സൂമിലും വ്യത്യസ്ത കോളങ്ങൾ നൽകുന്നുണ്ടെങ്കിൽ, നിങ്ങൾ ഘടനയല്ല വേർതിരിച്ചെടുക്കുന്നത്. പകരം നിങ്ങൾ വിഷ്വൽ ആർട്ടീഫാക്റ്റുകളെ പാറ്റേൺ മാച്ചിംഗ് ചെയ്യുകയാണ്.
വിഷ്വൽ ഹ്യൂറിസ്റ്റിക്സ് ഉപയോഗിക്കുന്നത് നിർത്തുക. ഓപ്പറേറ്റർ സ്ട്രീം പാഴ്സ് ചെയ്യാൻ തുടങ്ങുക.
എന്തുകൊണ്ടാണ് ഓപ്പറേറ്റർ സ്ട്രീം മികച്ചതാകുന്നത്:
- ഇത് ഡിറ്റർമിനിസ്റ്റിക് (deterministic) ആണ്. സ്കെയിൽ അല്ലെങ്കിൽ ഫോണ്ട് ഹിന്റിംഗ് എന്നിവ പരിഗണിക്കാതെ തന്നെ ഇത് ഒരേപോലെ പ്രവർത്തിക്കുന്നു.
- ഇത് യഥാർത്ഥ ഡാറ്റ ഉപയോഗിക്കുന്നു. ക്രിയേറ്റർ നിർവചിച്ച യഥാർത്ഥ പാത്തുകളും കോർഡിനേറ്റുകളും നിങ്ങൾ ഉപയോഗിക്കുന്നു.
- ഇത് ഗണിതപരമായ പിശകുകൾ ഒഴിവാക്കുന്നു. ഉദാഹരണത്തിന്, സോണുകൾ കണ്ടെത്താൻ ടെക്സ്റ്റ് സെന്ററുകൾക്കിടയിലുള്ള മിഡ്പോയിന്റുകൾ ഉപയോഗിക്കുന്നത് റൗണ്ടിംഗ് ബഗുകൾക്ക് (rounding bugs) കാരണമാകും. ഒരു ബൗണ്ടിംഗ് ബോക്സിന്റെ യഥാർത്ഥ മുകൾഭാഗം ഉപയോഗിക്കുക എന്നത് മാത്രമാണ് ശരിയായ രീതി.
പ്രയാസകരമായ പാതയാണ് ശരിയായ പാത.
നിങ്ങൾ CTM സ്റ്റാക്ക് മനസ്സിലാക്കണം. നിങ്ങൾ മാട്രിക്സ് സ്റ്റേറ്റുകൾ ട്രാക്ക് ചെയ്യുകയും സബ്പാത്തുകൾ (subpaths) തരംതിരിക്കുകയും വേണം. ഇത് പഠിച്ചെടുക്കാൻ നിങ്ങൾ പിഡിഎഫ് സ്പെസിഫിക്കേഷനും സോഴ്സ് കോഡും വായിക്കേണ്ടതുണ്ട്.
ഇതിന് തുടക്കത്തിൽ കൂടുതൽ പരിശ്രമം ആവശ്യമാണ്. എന്നാൽ ഉപയോക്താവ് അപ്ലോഡ് ചെയ്യുന്ന എല്ലാ പിഡിഎഫുകളിലും ഇത് പ്രവർത്തിക്കും. പിക്സൽ അടിസ്ഥാനമാക്കിയുള്ള ടൂളുകൾ നിങ്ങളുടെ ടെസ്റ്റ് സ്യൂട്ടിലെ കുറച്ച് ഫയലുകളിൽ മാത്രമേ പ്രവർത്തിക്കൂ.
ഒരു ഡെമോ അല്ല, മറിച്ച് യഥാർത്ഥമായ ഒരു എക്സ്ട്രാക്ടർ നിർമ്മിക്കുക.