ರೆಂಡರ್ ಸಮಯದಲ್ಲಿ PDF ಪಾರ್ಸಿಂಗ್ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸಿ

ಹೆಚ್ಚಿನ ಫ್ರಂಟ್‌ಎಂಡ್ PDF ಎಕ್ಸ್‌ಟ್ರಾಕ್ಷನ್ (extraction) ಪರಿಕರಗಳು ವಿಫಲವಾಗುತ್ತವೆ.

ಡೆವಲಪರ್‌ಗಳು ದೃಶ್ಯ ಔಟ್‌ಪುಟ್‌ನಿಂದ (visual output) ದಾಖಲೆಯ ರಚನೆಯನ್ನು ಊಹಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಾರೆ. ಕಾಲಮ್‌ಗಳು, ಟೇಬಲ್‌ಗಳು ಅಥವಾ ಪಟ್ಟಿಗಳನ್ನು ಹುಡುಕಲು ಅವರು ರೆಂಡರ್ ಆದ ಪಿಕ್ಸೆಲ್‌ಗಳನ್ನು ನೋಡುತ್ತಾರೆ. ಒಂದು ಬಾಕ್ಸ್ ಎಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಎಂದು ನಿರ್ಧರಿಸಲು ಅವರು ಕಂಪ್ಯೂಟರ್ ವಿಷನ್ ಅಥವಾ ಪಿಕ್ಸೆಲ್ ಸಮೀಪತೆಯನ್ನು ಬಳಸುತ್ತಾರೆ.

ಇದು ನಿರ್ಮಿಸುವ ತಪ್ಪು ವಿಧಾನವಾಗಿದೆ.

ಒಂದು PDF ತನ್ನ ಆಪರೇಟರ್ ಸ್ಟ್ರೀಮ್‌ನಲ್ಲಿ (operator stream) ಈಗಾಗಲೇ ಸ್ಪಷ್ಟವಾದ ರಚನಾತ್ಮಕ ಡೇಟಾವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಒಂದು ಟೇಬಲ್ ಎಂಬುದು ಕೇವಲ ಹತ್ತಿರದ ಪಿಕ್ಸೆಲ್‌ಗಳ ಗುಂಪಲ್ಲ. ಇದನ್ನು moveTo, lineTo, ಅಥವಾ rectangle ನಂತಹ ನಿರ್ದಿಷ್ಟ ಕಮಾಂಡ್‌ಗಳೊಂದಿಗೆ ಬಿಡಿಸಲಾಗುತ್ತದೆ. ನೀವು ಹುಡುಕಲು ಬಯಸುವ ಗಡಿಗಳು (boundaries) ಈಗಾಗಲೇ ಮೂಲದಲ್ಲಿ (source) ಎನ್‌ಕೋಡ್ ಆಗಿವೆ.

ನಿಮ್ಮ ಎಕ್ಸ್‌ಟ್ರಾಕ್ಟರ್ 100% ಜೂಮ್ ಮತ್ತು 150% ಜೂಮ್‌ನಲ್ಲಿ ವಿಭಿನ್ನ ಕಾಲಮ್‌ಗಳನ್ನು ನೀಡುತ್ತಿದ್ದರೆ, ನೀವು ರಚನೆಯನ್ನು ಹೊರತೆಗೆಯುತ್ತಿಲ್ಲ ಎಂದರ್ಥ. ನೀವು ಕೇವಲ ದೃಶ್ಯ ಕಲಾಕೃತಿಗಳ (visual artifacts) ಪ್ಯಾಟರ್ನ್-ಮ್ಯಾಚಿಂಗ್ ಮಾಡುತ್ತಿದ್ದೀರಿ.

ದೃಶ್ಯ ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್ (visual heuristics) ಬಳಸುವುದು ನಿಲ್ಲಿಸಿ. ಆಪರೇಟರ್ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿ.

ಆಪರೇಟರ್ ಸ್ಟ್ರೀಮ್ ಏಕೆ ಉತ್ತಮವಾಗಿದೆ:

ಕಠಿಣ ಹಾದಿಯೇ ಸರಿಯಾದ ಹಾದಿ.

ನೀವು CTM ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು. ನೀವು ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಸ್ಟೇಟ್‌ಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಕು ಮತ್ತು ಸಬ್‌ಪಾತ್‌ಗಳನ್ನು (subpaths) ವರ್ಗೀಕರಿಸಬೇಕು. ಇದನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳಲು ನೀವು PDF ಸ್ಪೆಸಿಫಿಕೇಶನ್ ಮತ್ತು ಸೋರ್ಸ್ ಕೋಡ್ ಅನ್ನು ಓದಬೇಕಾಗುತ್ತದೆ.

ಇದಕ್ಕೆ ಆರಂಭದಲ್ಲಿ ಹೆಚ್ಚಿನ ಶ್ರಮ ಬೇಕಾಗುತ್ತದೆ. ಆದರೆ ಬಳಕೆದಾರರು ಅಪ್‌ಲೋಡ್ ಮಾಡುವ ಪ್ರತಿಯೊಂದು PDF ಗೂ ಇದು ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಪಿಕ್ಸೆಲ್ ಆಧಾರಿತ ಪರಿಕರಗಳು ನಿಮ್ಮ ಟೆಸ್ಟ್ ಸೂಟ್‌ನಲ್ಲಿರುವ ಕೆಲವು ಫೈಲ್‌ಗಳಿಗೆ ಮಾತ್ರ ಕೆಲಸ ಮಾಡುತ್ತವೆ.

ನಿಜವಾದ ಎಕ್ಸ್‌ಟ್ರಾಕ್ಟರ್ ಅನ್ನು ನಿರ್ಮಿಸಿ, ಕೇವಲ ಡೆಮೋ ಅಲ್ಲ.

ಮೂಲ: https://dev.to/bonzai2carn/stop-parsing-pdfs-at-render-time-a-better-architecture-for-structured-extraction-5fb8