我正在使用iText 5.5.8 for Java.遵循默认的,简单的文本提取程序,即
PdfTextExtractor.getTextFromPage(reader, pageNumber)
Run Code Online (Sandbox Code Playgroud)
我惊讶地发现,在输出几次失误,特别是所有的字母d的问世为Ø秒.
那么iText中的文本提取真的如何工作呢?是某种OCR吗?
我看了看引擎盖,试图掌握它是如何TextExtractionStrategy工作的,但我想不出多少.SimpleTextExtractionStrategy例如,似乎只是确定线条和空间的存在,而这TextRenderInfo是通过调用一些提供文本解码的方法GraphicsState的font领域,这是据我可以去没有得到一个重大的偏头痛.
那么谁是我的男人?其中I类应该重写或参数我应该调整到能够告诉iText的:"嘿,你在阅读完所有d错!"
编辑:
样本PDF可以在http://www.fpozzi.com/stampastopper/download/找到,文件名是0116_LR.pdf对不起,无法共享直接链接.这是文本提取的一些基本代码
import java.io.File;
import java.io.IOException;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
public class Import
{
public static void importFromPdf(final File pdfFile) throws IOException
{
PdfReader reader = new PdfReader(pdfFile.getAbsolutePath());
try
{
for (int i = 1; i <= reader.getNumberOfPages(); i++)
{
System.out.println(PdfTextExtractor.getTextFromPage(reader, i));
System.out.println("----------------------------------");
}
}
catch (IOException e)
{
throw …Run Code Online (Sandbox Code Playgroud)