我正在使用 itextsharp 使用以下代码从 pdf 文档中提取文本:
public static bool does_document_text_have_keyword(string keyword,
string pdf_src, Report report_object) // TEST
{
try
{
PdfReader pdfReader = new PdfReader(pdf_src);
string currentText;
int count = pdfReader.NumberOfPages;
for (int page = 1; page <= count; page++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
currentText = PdfTextExtractor.GetTextFromPage
(pdfReader, page, strategy);
currentText = Encoding.UTF8.GetString
(ASCIIEncoding.Convert
(Encoding.Default,
Encoding.UTF8,
Encoding.Default.GetBytes(currentText)));
report_object.log(currentText); // TEST
if (currentText.IndexOf
(keyword, StringComparison.OrdinalIgnoreCase) != -1) return true;
}
pdfReader.Close();
return false;
}
catch
{
return false;
}
}
但问题是,当我提取文本时,文本没有空格,就好像空格已被空字符串替换。然而在pdf文档中,其中有空格。有谁知道这里发生了什么事?
我相信您的问题是 SimpleTextExtractionStrategy。来自 API 文档:http://api.itextpdf.com/itext/com/itextpdf/text/pdf/parser/SimpleTextExtractionStrategy.html http://api.itextpdf.com/itext/com/itextpdf/text/pdf/parser/SimpleTextExtractionStrategy.html
如果 PDF 以非从上到下的方式呈现文本,这将导致文本无法真实表示其在 PDF 中的显示方式。该渲染器还使用基于字体规格的简单策略来确定是否应将空格插入到输出中。
尝试使用 LocationTextExtractionStrategy。它的文档指出:
跟踪页面上文本相对位置的文本提取渲染器生成的文本将与大多数 PDF 文件在屏幕上的物理布局相对一致。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)