方法一:PDFBox

(一个BSD许可下的源码开放项目)是一个为开发人员读取和创建PDF文档而准备的纯Java类库。它提供如下特性:

提取文本,包括Unicode字符。和Jakarta Lucene等文本搜索引擎的整合过程十分简单。加密/解密PDF文档。从PDF和XFDF格式中导入或导出表单数据。向已有PDF文档中追加内容。将一个PDF文档切分为多个文档,覆盖PDF文档。

官网:http://pdfbox.apache.org/index.html    截止当前最新版本1.8.8

/*** PdfboxUtil.java* Create on 2015-1-5*/package charlie.utils.pdf;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.InputStream;import org.apache.pdfbox.pdfparser.PDFParser;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.util.PDFTextStripper;/*** @author CharlieChen* @DateTime 2015-1-5 上午9:55:38* @version 1.0*/public class PdfboxUtil {/*** @param args*/public static void main(String[] args) {String pdfPath = "D:/temp/成交单-PDF格式.pdf";String txtfilePath = "D:/temp/成交单-PDF格式-pdfbox.txt";PdfboxUtil pdfutil = new PdfboxUtil();try {String content = pdfutil.getTextFromPdf(pdfPath);pdfutil.toTextFile(content, txtfilePath);System.out.println("Finished !");      } catch (Exception e) {e.printStackTrace();}}/*** 读取PDF文件的文字内容* @param pdfPath* @throws Exception*/public String getTextFromPdf(String pdfPath) throws Exception {// 是否排序boolean sort = false;// 开始提取页数int startPage = 1;// 结束提取页数int endPage = Integer.MAX_VALUE;    String content = null;InputStream input = null;File pdfFile = new File(pdfPath);PDDocument document = null;try {input = new FileInputStream(pdfFile);// 加载 pdf 文档PDFParser parser = new PDFParser(input);parser.parse();document = parser.getPDDocument();// 获取内容信息PDFTextStripper pts = new PDFTextStripper();pts.setSortByPosition(sort);endPage = document.getNumberOfPages();System.out.println("Total Page: " + endPage);pts.setStartPage(startPage);pts.setEndPage(endPage);try {content = pts.getText(document);} catch (Exception e) {throw e;}System.out.println("Get PDF Content ...");} catch (Exception e) {throw e;} finally {if (null != input)input.close();if (null != document)document.close();}return content;}/*** 把PDF文件内容写入到txt文件中* @param pdfContent* @param filePath*/public void toTextFile(String pdfContent,String filePath) {     try {File f = new File(filePath);if (!f.exists()) {f.createNewFile();}System.out.println("Write PDF Content to txt file ...");BufferedWriter output = new BufferedWriter(new FileWriter(f));output.write(pdfContent);output.close();} catch (Exception e) {e.printStackTrace();}}}

https://blog.csdn.net/charliechen1989/article/details/42425617

另需要commons-logging和fontbox-1.8.8的jar包

pdfbox只能做到把文字分析出来,并无法很好的控制分析的顺序,格式,字体等信息。

排序sort为true后,PDF按行读取,保持了顺序,但是遇到分栏,分页就会需要额外处理

Java识别PDF文字内容的方法相关推荐

  1. 一段比较浅显易懂的java识别pdf 文字及图片

    使用pdfbox及orc进行pdf文件的文字及图片的识别 pom设置相关依赖 <!--pdf相关依赖开始--><dependency><groupId>org.ap ...

  2. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  3. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  4. python读取pdf文件_深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  5. JAVA替换PDF文字

    前言: 以下是通过网上查阅资料,东拼西凑实现的一个使用java替换pdf文字的功能.使用的是itextpdf.jar 参考: https://blog.csdn.net/sdizoea/article ...

  6. python程序30行_Python30行代码实现对pdf文字内容的提取

    网上有各种软件处理pdf,但是这些软件在处理pdf的效果上并不是尽如人意,本人利用Python的一个库 PyPDF2实现了对pdf文字内容的提取,至于图片提取日后再说,废话不多说,直接上代码: fro ...

  7. 用软件如何识别pdf文字

    用软件如何识别pdf文字 近来得到一个好东西是可以辨认图画文字的软件--捷速ocr图画辨认软件,我也是一次偶然的时机遇上该软件.公司的电脑慢的跟驴相同,所以计划来个大扫除,将一些不需求的东西悉数删掉, ...

  8. python怎么读取pdf文件_Python解析并读取PDF文件内容的方法

    本文实例讲述了Python解析并读取PDF文件内容的方法.分享给大家供大家参考,具体如下: 一.问题描述 利用python,去读取pdf文本内容. 二.效果 三.运行环境 python2.7 四.需要 ...

  9. PDF怎么识别提取文字?这个方法轻松提取

    随着信息技术的发展,很多小伙伴已经不满足于对PDF文档的简单浏览和阅读.相反,很多时候我们需要将一些PDF文档中的内容提取出来,但是由于PDF不像Word文档这样开放,不能随意编辑提取内容.那么小伙伴 ...

最新文章

  1. 技术09期:5分钟带你快速了解TypeScript
  2. ViewModelBase ObservableObject
  3. android.hardware.camera2使用指南
  4. hadoop的idea连接配置_idea远程连接hadoop(macOS)
  5. html 不透明阴影,CSS_css box-shadow阴影不透明的解决办法,如下面示例: 复制代码代码如 - phpStudy...
  6. C语言大数阶乘的求法
  7. Centos 7 mini安装
  8. Java 并发和多线程(一) Java并发性和多线程介绍[转]
  9. Java知多少(31)static关键字以及Java静态变量和静态方法
  10. Ubuntu14下安装使用SVN RabbitVCS客户端
  11. java 对象转xml 工具类_工具类 Java对象和XML之间的相互转换-搜云库
  12. 免费统计微信复制//打开/咨询/下载/表单按钮点击统计工具-好多粉
  13. CSS峰会圆桌论道丨共享产业数字化升级中的安全探索
  14. JS判断今天是礼拜几
  15. 内网入口——代理搭建端口转发
  16. 机器学习(三)——梯度下降
  17. 鹏程万里------HIM开发中遇到的问题
  18. IFE页面结构语义化
  19. 流体力学实验室设备实训设备自循环水击实验装置
  20. P1914 小书童——凯撒密码(python实现)

热门文章

  1. Hello语音交友 v4.7.14
  2. IT 学习资源大汇总
  3. 基于STM32的ESP8266获取天气数据(HAL库)
  4. 算法:求两个数的最大公约数与最小公倍数的方法
  5. kafka官网示例说明--KafkaConsumer
  6. Mysql社区版安装教程
  7. [Go学习记录]实现正反打印九九乘法表
  8. JavaScript 操作元素案例练习
  9. 投票页面制作线上投票活动制作网络投票制作关注投票制作
  10. VTN系列多通道振弦模拟信号采集仪