अन्य उत्तर देने वाले मानते हैं कि आप ग्राफ की रेखापुंज छवि से निपटते हैं। लेकिन आजकल ग्राफ के रूप में ग्राफ को प्रकाशित करने का अच्छा चलन है। इस मामले में आप पुनर्प्राप्त डेटा की बहुत अधिक सटीकता प्राप्त कर सकते हैं और यहां तक कि पुनर्प्राप्ति त्रुटि का अनुमान लगा सकते हैं यदि आप सीधे वेक्टर ग्राफ के कोड के साथ काम करते हैं, बिना इसे रेखापुंज छवि में परिवर्तित किए बिना।
चूंकि कागजात पीडीएफ फाइलों के रूप में ऑनलाइन प्रकाशित होते हैं, इसलिए मैं मानता हूं कि आपके पास एक पीडीएफ फाइल है जिसमें डेटा के साथ वेक्टर प्लॉट होता है जिसे आप इससे पुनर्प्राप्त करना चाहते हैं (संख्यात्मक रूप में प्राप्त करें) और अनुमानित वसूली त्रुटि का अनुमान लगाएं।
सबसे पहले, पीडीएफ एक सदिश प्रारूप है जो मूल रूप से पाठ्य (पाठ संपादक द्वारा पढ़ा जा सकता है) है। समस्या यह है कि यह (और लगभग हमेशा) संपीड़ित डेटा स्ट्रीम हो सकते हैं जो उन्हें एक पाठ संपादक द्वारा पढ़ने के लिए असम्पीडित होने की आवश्यकता होती है। इन संपीड़ित डेटा धाराओं में आमतौर पर हमारे द्वारा आवश्यक जानकारी शामिल होती है।
पठनीय पीडीएफ कोड के साथ पीडीएफ फाइल को टेक्स्ट डॉक्यूमेंट में बदलने के लिए डेटा स्ट्रीम को अनकम्प्रेस्ड करने के कई तरीके हैं। संभवतः सबसे आसान तरीका विकल्प के साथ मुफ्त QPDF उपयोगिता का उपयोग करना --stream-data=uncompress
है :
qpdf infile.pdf --stream-data=uncompress -- outfile.pdf
कुछ अन्य तरीके यहां और यहां वर्णित हैं ।
उत्पन्न आउटफिट।पीएलडी को टेक्स्ट एडिटर द्वारा खोला जा सकता है। अब आपको पीडीएफ संदर्भ नियमावली 1.7 की जरूरत है जो आपको दिखाई दे। इस पल में घबराओ मत! आपको 226 - 227 पृष्ठों पर "टेबल 4.9 पथ निर्माण ऑपरेटरों" में वर्णित केवल कुछ ऑपरेटरों को जानना होगा। सबसे महत्वपूर्ण ऑपरेटर हैं (पहले कॉलम में एक ऑपरेटर के लिए समन्वय विनिर्देश हैं, दूसरे में ऑपरेटर शामिल हैं और तीसरा ऑपरेटर नाम है ):
x y m moveto
x y l lineto
x y width height re rectangle
h closepath
ज्यादातर मामलों में डेटा को पुनर्प्राप्त करने के लिए इन चार ऑपरेटरों को जानना पर्याप्त है।
अब आपको कुछ प्रोग्राम में टेक्स्ट के रूप में outfile.pdf फ़ाइल को आयात करने की आवश्यकता है जहां आप डेटा में हेरफेर कर सकते हैं। मैं दिखाऊंगा कि यह कैसे करना है गणितज्ञ के साथ ।
फ़ाइल आयात करना:
pdfCode = Import["outfile.pdf", "Text"];
अब मैं सबसे सरल मामले को मानता हूं: ग्राफ में एक पंक्ति होती है जिसमें कई दो-बिंदु खंड होते हैं। इस स्थिति में लाइन का प्रत्येक खंड इस तरह एन्कोडेड है:
268.79999 408.92975 m
272.39999 408.92975 l
पीडीएफ कोड से ऐसे सभी खंडों को निकालना:
lines = StringCases[pdfCode,
StartOfLine ~~ x1 : NumberString ~~ " " ~~ y1 : NumberString ~~ " m\n" ~~
x2 : NumberString ~~ " " ~~ y2 : NumberString ~~ " l\n"
:> ToExpression@{{x1, y1}, {x2, y2}}];
उन्हें कल्पना:
Graphics[{Line[lines]}]
आपको कुछ ऐसा मिलता है (मैं जिस पेपर के साथ काम कर रहा हूं उसमें चार रेखांकन हैं):
प्रत्येक दो आसन्न खंड एक बिंदु साझा करते हैं। तो इस मामले में आप आसन्न खंडों के अनुक्रमों को पथों में बदल सकते हैं:
paths = Split[lines, #1[[2]] == #2[[1]] &];
अब आप सभी रास्तों की अलग-अलग कल्पना कर सकते हैं:
Graphics[{Line /@ paths}]
इस आंकड़े से आप जिस रास्ते की तलाश कर रहे हैं (डबल क्लिक करके) ग्राफिक्स चयन की प्रतिलिपि बना सकते हैं और नए के रूप में पेस्ट कर सकते हैं Graphics
। आप तत्वों को लेने वाले बिंदुओं की सूची में इसे पीछे की ओर परिवर्तित करने के लिए {1, 1, 1}
। अब हमारे पास ग्राफ की समन्वय प्रणाली में नहीं बल्कि पीडीएफ फाइल के समन्वय प्रणाली में अंक हैं। हमें उनके बीच संबंध स्थापित करने की आवश्यकता है।
उपरोक्त प्लॉट से आप हाथ से टिक चुनें ( Shift
कई चयन के लिए पकड़े ), फिर उन्हें कॉपी करें और नए के रूप में पेस्ट करें Graphics
। यहां बताया गया है कि आप क्षैतिज टिकों के निर्देशांक कैसे निकाल सकते हैं:
अब टिक्स के बीच अंतर की जाँच करें:
Differences[reHorTicks]
इन अंतरों से आप देख सकते हैं कि पीडीएफ फाइल में टिक्स की स्थिति कितनी सटीक है। यह मूल डेटापॉइंट्स को पीडीएफ फाइल में शामिल वेक्टर ग्राफ में परिवर्तित करके पेश की गई त्रुटि का अनुमान देता है। यदि टिक्स पोजिशनिंग में सराहनीय त्रुटियां हैं, तो आप टिक्स के निर्देशांक को रैखिक मॉडल में फिट करके त्रुटि को कम कर सकते हैं। इस रैखिक फ़ंक्शन का उपयोग अब पथ के बिंदुओं के मूल निर्देशांक प्राप्त करने के लिए किया जा सकता है (जो कि प्लॉट की समन्वय प्रणाली में है)।