如何通过程序获取pdf的文本内容?

我现在有一些pdf文件,该如何不通过手动打开,通过程序来获取在pdf中Ctrl+A全选时选中的内容呢?
尝试过使用PyPDF2、pdfminer、pdftotext来解析pdf,虽然能够读取出pdf的文本内容到txt中,但是解析出来的文本顺序是没有规律的,这样就无法对这些文本进行解析了。但是对pdf进行全选——复制——粘贴得到的文本都是有规律的,请问该如何解决呢?
谢谢

阅读 3.1k
2 个回答

你说的没有规律是没对齐的意思吧,或者换行错误的问题。从描述上感觉是没有正确解析空格和换行符造成的。

可以试用下Free Spire.PDF for Java免费控件,在后台通过运行Java代码来提取PDF文档中的文本。提取出来的文本有规律,不会出现乱码,错行之类的情况。以下是相关代码示例,也可参考官网教程

import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import java.io.*;

public class Extract_Text {

    public static void main(String[] args) {
        
        //创建PdfDocument实例
        PdfDocument doc = new PdfDocument();
        //加载PDF文件
        doc.loadFromFile("test.pdf");

        //创建StringBuilder实例                
        StringBuilder sb = new StringBuilder();   
 
        PdfPageBase page;                
        //遍历PDF页面,获取每个页面的文本并添加到StringBuilder对象
        for(int i= 0;i<doc.getPages().getCount();i++){
            page = doc.getPages().get(i);            
            sb.append(page.extractText(true));
        }
        FileWriter writer;
        try {
            //将StringBuilder对象中的文本写入到文本文件
            writer = new FileWriter("ExtractText.txt");
            writer.write(sb.toString());
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }

        doc.close();
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏