को पार्स करते समय अजीब सफेद जगहें मुझे पीडीएफ दस्तावेज़ का विश्लेषण करने की आवश्यकता है। मैंने पहले से ही पार्सर लागू किया है और लाइब्रेरी iText का उपयोग किया है और अब तक यह किसी भी समस्या के बिना काम करता है।पीडीएफ
लेकिन कोई मुझे एक और दस्तावेज है जो शब्दों के बीच में बहुत ही अजीब व्हाइटस्पेस हो जाता है पार्स करने के लिए की जरूरत है। उदाहरण के रूप में मैं:
वो rber eitung auf मर Motorr adsaison। Viele Motorr एडीएफ Ahr एर
सभी बोल्ड शब्द जोड़ा जाना चाहिए, लेकिन किसी भी तरह पीडीएफ पार्सर शब्दों में व्हाइटस्पेस जोड़ रहा है। लेकिन जब मैं पीडीएफ से सामग्री को एक टेक्स्टफाइल में कॉपी और पेस्ट करता हूं तो मुझे इन रिक्त स्थान नहीं मिलते हैं।
सबसे पहले मैंने सोचा कि यह मेरे द्वारा उपयोग पीडीएफ पार्सिंग पुस्तकालय की वजह से है, लेकिन यह भी एक और पुस्तकालय के साथ मैं ठीक उसी मुद्दा मिलता है।
मैंने पार्स किए गए शब्दों से singleSpaceWidth
पर एक नज़र डाली और मैंने देखा कि यह एक सफेद जगह जोड़ते समय हमेशा भिन्न होता है। मैंने उन्हें मैन्युअल रूप से एक साथ रखने की कोशिश की। लेकिन चूंकि शब्दों को पुन: संयोजित करने के लिए वास्तव में कोई पैटर्न नहीं है, यह लगभग असंभव है।
किसी और ने वही समस्या या कि समस्या के लिए भी एक समाधान किया है?
- iText संस्करण 5.2.1
- http://prine.ch/whitespacesProblem.pdf (पीडीएफ के लिए लिंक)
SemTextExtractionStrategy साथ पार्स:
PdfReader reader = new PdfReader("data/SpecialTests/SuedostSchweiz/" + src);
SemTextExtractionStrategy semTextExtractionStrategy = new SemTextExtractionStrategy();
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
// Set the page number on the strategy. Is used in the Parsing strategies.
semTextExtractionStrategy.pageNumber = i;
// Parse text from page
PdfTextExtractor.getTextFromPage(reader, i, semTextExtractionStrategy);
}
के रूप में अनुरोध किया है, यहाँ कुछ और जानकारी है
यहां से SemTextExtractionStrategy विधि जो वास्तव में टी को पार करती है ext। वहाँ मैं मैन्युअल रूप से पता लगाने में हर पार्स शब्द एक खाली स्थान के बाद जोड़ने के लिए, लेकिन किसी भी तरह इसे विभाजित करता है शब्द:
@Override
public void parseText(TextRenderInfo renderInfo, int pageNumber) {
this.pageNumber = pageNumber;
String text = renderInfo.getText();
currTextBlock.getText().append(text + " ");
....
}
यहाँ पूरे SemTextExtraction क्लास है, लेकिन में यह केवल ऊपर (parseText) से विधि कॉल करता है:
public class SemTextExtractionStrategy implements TextExtractionStrategy {
// Text Extraction Strategies
public ColumnDetecter columnDetecter = new ColumnDetecter();
// Image Extraction Strategies
public ImageRetriever imageRetriever = new ImageRetriever();
public int pageNumber = -1;
public ArrayList<TextParsingStrategy> textParsingStrategies = new ArrayList<TextParsingStrategy>();
public ArrayList<ImageParsingStrategy> imageParsingStrategies = new ArrayList<ImageParsingStrategy>();
public SemTextExtractionStrategy() {
// Add all text parsing strategies which are later on applied on the extracted text
// textParsingStrategies.add(fontSizeMatcher);
textParsingStrategies.add(columnDetecter);
// Add all image parsing strategies which are later on applied on the extracted text
imageParsingStrategies.add(imageRetriever);
}
@Override
public void beginTextBlock() {
}
@Override
public void renderText(TextRenderInfo renderInfo) {
// TEXT PARSING
for(TextParsingStrategy strategy : textParsingStrategies) {
strategy.parseText(renderInfo, pageNumber);
}
}
@Override
public void endTextBlock() {
}
@Override
public void renderImage(ImageRenderInfo renderInfo) {
for(ImageParsingStrategy strategy : imageParsingStrategies) {
strategy.parseImage(renderInfo);
}
}
}
कृपया उपयोग किए जाने वाले आईटेक्स्ट के संस्करण को बताएं और किसी भी तरह आपको पीडीएफ भी प्रदान करना होगा, और जिस कोड को आप पार्सिंग करते हैं। – Eugene
उपरोक्त पद में सभी जानकारी जोड़ा गया। – Prine
आपके द्वारा उपयोग किए जाने वाले TextExtractionStrategy क्लास के बारे में क्या है? – Eugene