TextIn ParseX文档解析SDK工具新增Java版本
TextIn ParseX通用文档解析是一款大模型友好的解析工具,支持将pdf文档、jpg、img图像等文件快速转换为markdown格式,支持各类表格、公式解析,帮助大语言模型的数据清洗和文档问答任务。此前,为了让用户获得文档解析引擎返回的丰富版面元素,我们推出了一系列的sdk函数(+link),包括目录树、公式、表格、图片、全文markdown等结果的获取函数;同时开源了前端可视化组件(+link),满足用户个性化的校对使用需求。
近日,为便于使用Java语言的开发者调用文档解析引擎,TextIn ParseX SDK工具新增Java版本。
SDK工具Java版地址:https://github.com/intsig-textin/parsex-sdk/tree/main/java
SDK功能介绍
这是一套标准的多平台支持的Java SDK,帮助开发者解析pdf_to_markdownRestful API返回结果,获取对应的版面元素的数据结构。
开发者只需下载jar包,并导入到自己的项目中即可使用。
SDK使用方法
在项目中引入jar包后即可使用。
# 以下为gradle的配置方式
implementation 'io.github.supperai:parse_sdk:1.0.1'
# 以下为maven的配置方式
<dependency>
<groupId>io.github.supperai</groupId>
<artifactId>parse_sdk</artifactId>
<version>1.0.1</version>
</dependency>
SDK使用示例
示例展示了如何使用TextInParseX SDK来解析PDF文件并提取其中的各种元素。完整示例代码请访问上方Github链接,查看
TextInParseX/src/test/TestSDK.java。
初始化
首先,导入必要的包并初始化 ParseXClient:
import com.textinparsex.ParseXClient;
import com.textinparsex.model.*;
import org.opencv.core.Mat;
import java.util.List;
public class TextInParseXExample {
public static void main(String[] args) throws Exception {
// 加载 OpenCV 库
System.load("/path/to/opencv/library.so");
// 初始化 ParseXClient
ParseXClient parseXClient = new ParseXClient("your_app_id_here", "your_secret_code_here");
// 指定要分析的 PDF 文件路径
String pdfFilePath = "/path/to/your/document.pdf";
// 指定解析的api url,请参考api文档确定参数
String apiUrl = "https://api.textin.com/ai/service/v1/pdf_to_markdown?markdown_details=1&apply_document_tree=1&page_details=1&get_image=both";
// 开始分析文档
Document result = parseXClient.beginAnalyzeDocumentFromUrl(pdfFilePath, apiUrl);
// ... 后续代码
}
}
获取 Markdown 内容
提取并打印文档的Markdown格式内容:
System.out.println("Markdown content:");
System.out.println(result.getAllMarkdown());
提取所有文本
获取并打印文档中的所有文本内容:
System.out.println("\nAll text in document:");
parseXClient.printAllElements(result.getAllText(), 0, 1000);
处理表格
获取并打印文档中的所有表格:
System.out.println("\nTotal tables in document:");
List<Table> tables = result.getAllTables();
for (int i = 0; i < tables.size(); i++) {
System.out.println("Table " + (i + 1) + ":");
parseXClient.printAllElements(tables.get(i));
}
处理段落和文本行
获取并打印文档中的所有段落和文本行:
System.out.println("\nTotal paragraphs in document:");
List<Paragraph> paragraphs = result.getAllParagraphs();
for (int pIdx = 0; pIdx < paragraphs.size(); pIdx++) {
Paragraph paragraph = paragraphs.get(pIdx);
System.out.println("\n--- Paragraph " + (pIdx + 1) + "/" + paragraphs.size() + " ---");
System.out.println("Paragraph position: " + paragraph.getPos());
List<Object> lines = paragraph.getLines();
for (int lIdx = 0; lIdx < lines.size(); lIdx++) {
Object line = lines.get(lIdx);
System.out.println(" Line " + (lIdx + 1) + "/" + lines.size());
if (line instanceof ContentTextLine) {
ContentTextLine textLine = (ContentTextLine) line;
System.out.println(" Line position: " + textLine.getPos());
System.out.println(" Line text: " + textLine.getText());
}
}
}
处理图片
获取并打印文档中的所有图片信息:
System.out.println("\nTotal images in document:");
List<ContentImage> images = result.getAllImages();
for (int i = 0; i < images.size(); i++) {
System.out.println("Image " + (i + 1) + ":");
parseXClient.printAllElements(images.get(i));
}
处理 OpenCV Mat 图片
获取并打印文档中所有图片的OpenCV Mat对象:
System.out.println("\nTotal images (as OpenCV Mat) in document:");
List<Mat> cvImages = result.getAllImagesCvMat();
for (int i = 0; i < cvImages.size(); i++) {
System.out.println("Image " + (i + 1) + " (as OpenCV Mat):");
parseXClient.printAllElements(cvImages.get(i));
}
处理和保存带注释的图像
以下示例展示了如何处理文档中的每一页,为表格、图像、段落和文本行添加边界框,并保存结果图像:
public void processAndSaveImages() {
String downloadImageUrl = "https://api.textin.com/ocr_image/download?";
for (Page page : priDocument.getPages()) {
Mat pageImg = downloadImageFromUrl(downloadImageUrl, page.getImageId());
if (pageImg == null) continue;
for (Table table : page.getTables()) {
for (TableCell cell : table.getCells()) {
Imgproc.rectangle(pageImg,
new Point(cell.getPos().get(0), cell.getPos().get(1)),
new Point(cell.getPos().get(4), cell.getPos().get(5)),
new Scalar(0, 0, 255), 1);
}
}
for (ContentImage image : page.getImages()) {
Imgproc.rectangle(pageImg,
new Point(image.getPos().get(0), image.getPos().get(1)),
new Point(image.getPos().get(4), image.getPos().get(5)),
new Scalar(0, 255, 255), 1);
}
for (Paragraph paragraph : page.getParagraphs()) {
Imgproc.rectangle(pageImg,
new Point(paragraph.getPos().get(0), paragraph.getPos().get(1)),
new Point(paragraph.getPos().get(4), paragraph.getPos().get(5)),
new Scalar(0, 255, 0), 5);
for (Object line : paragraph.getLines()) {
if (line instanceof ContentTextLine) {
ContentTextLine textLine = (ContentTextLine) line;
Imgproc.rectangle(pageImg,
new Point(textLine.getPos().get(0), textLine.getPos().get(1)),
new Point(textLine.getPos().get(4), textLine.getPos().get(5)),
new Scalar(255, 0, 0), 1);
}
}
}
Imgcodecs.imwrite("image_result_" + page.getPageId() + ".jpg", pageImg);
}
}
这个方法会为每个页面下载图像,然后在图像上绘制矩形来标注表格单元格(红色)、图像(黄色)、段落(绿色)和文本行(蓝色)。处理后的图像会以 "image_result_[页码].jpg" 的格式保存。
处理表格并保存为Excel
List<Table> tableList = result.getAllTables();
parseXClient.saveTablesAsExcel(tableList, "/your/path/to/example.xlsx");
这个方法会将表格转换为excel文件,并保存到指定路径。如果有多个表格,会生成多个sheet。
注意事项
使用此示例时,请确保:
- 替换 your_app_id_here 和 your_secret_code_here 为您的实际API ID和密钥。
- 更新 System.load() 中的路径,指向正确的OpenCV库文件。如果有完整OpenCV环境,可以使用System.loadLibrary(Core.NATIVE_LIBRARY_NAME)。
- 将 /path/to/your/document.pdf 替换为要分析的PDF文件的实际路径。
这个示例展示了如何使用TextIn ParseX SDK的主要功能,包括提取Markdown内容、文本、表格、段落、图片信息等。您可以根据需要修改这个示例,以适应您的具体使用场景。
如果没有OpenCV环境或版本不匹配,操作方法详细请见Github主页。
后续我们将开放更多的sdk函数,也欢迎各位用户朋友给我们提更多的类似需求。
TextIn ParseX文档解析SDK工具新增Java版本的更多相关文章
- 读取EXCEL文档解析工具类
package test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException ...
- JavaScript : DOM文档解析详解
JavaScript DOM 文档解析 1.节点(node):来源于网络理论,代表网络中的一个连接点.网络是由节点构成的集合 <p title=“a gentle reminder”> ...
- iOS网络编程笔记——XML文档解析
今天利用多余时间研究了一下XML文档解析,虽然现在移动端使用的数据格式基本为JSON格式,但是XML格式毕竟多年来一直在各种计算机语言之间使用,是一种老牌的经典的灵活的数据交换格式.所以我认为还是很有 ...
- ios-XML文档解析之SAX解析
首先SAX解析xml *xml文档的格式特点是节点,大体思路是把每个最小的子节点作为对象的属性,每个最小子节点的'父'节点作为对象,将节点转化为对象,输出. 每个节点都是成对存在的,有开始有结束.有始 ...
- Android XML文档解析(一)——SAX解析
---------------------------------------------------------------------------------------------------- ...
- jsoup -- xml文档解析
jsoup -- xml文档解析 修改 https://jsoup.org/cookbook/modifying-data/set-attributes https://jsoup.org/cookb ...
- springboot成神之——swagger文档自动生成工具
本文讲解如何在spring-boot中使用swagger文档自动生成工具 目录结构 说明 依赖 SwaggerConfig 开启api界面 JSR 303注释信息 Swagger核心注释 User T ...
- sphinx doc 文档生成脚手架工具
sphinx 在python 语言开发中,是一个使用的比较多文档生成脚手架工具,我们帮助我们生成 专业的帮助文档,同时也有远端的免费saas 托管服务,方便分发 安装 sphinx 的安装好多方便,m ...
- (二)发布第一个WebService服务与DSWL文档解析
1. 编写接口 package service; import javax.jws.WebService; /** * 第一个webservice服务, * @WebService注解表示这是一个we ...
- 基于 React 开发了一个 Markdown 文档站点生成工具
Create React Doc 是一个使用 React 的 markdown 文档站点生成工具.就像 create-react-app 一样,开发者可以使用 Create React Doc 来开发 ...
随机推荐
- Camera | 6.v4l2拓扑架构
一. 设备节点.模块.拓扑结构关系 拓扑结构是我们了解MIPI-CSI内部模块以及与摄像头连接关系的最直观最便捷的方法. 1. 如何表示拓扑结构? file视角 v4l2视角 来自: 参考文档< ...
- thymeleaf学习问题整理
使用配置 <properties> <java.version>1.8</java.version> <thymeleaf.version>3.0.9. ...
- 基于 Quanto 和 Diffusers 的内存高效 transformer 扩散模型
过去的几个月,我们目睹了使用基于 transformer 模型作为扩散模型的主干网络来进行高分辨率文生图 (text-to-image,T2I) 的趋势.和一开始的许多扩散模型普遍使用 UNet 架构 ...
- 怎样在局域网中给网站作ssl认证,使其能以https协议访问(转)
如果要在局域网达到效果需要满足以下几点要求: 1. 证书由可信任的CA机构颁发 2. 证书在有效期 3. 访问地址和证书的认证地址一致 说明: 1. 需要在局域网内构建CA机构 2. 证书的有效期建议 ...
- 【工具分享】红队重点资产指纹识别 -- P1finger -0.02(最新版本)
工具介绍: P1finger 红队行动下的重点资产指纹识别工具.P1finger 是一个重点资产指纹识别的工具,旨在通过HTTP请求特征来识别目标系统.其主要特点包括: 语言和实现: 语言:使用Go语 ...
- python pyqt6 QMainWindow 使用QComboBox 窗口移位
QMainWindow 可拖拽移动,但是点击QComboBox 时,窗口有时会误识别为拖拽移动,导致窗口自动移动位置 在QMainWindow中,新增事件筛选器 # 避免点击QComboBox时,窗 ...
- python将资源打包进exe
前言 之前py打包的exe一直是不涉及图片等资源的,直到我引入图片后打包,再双击exe发现直接提示未找到资源. 分析 我py代码中的图片引入使用的是项目相对路径,打包时pyinstaller只会引入p ...
- 爬虫案例2-爬取视频的三种方式之一:requests篇(1)
@ 目录 前言 爬虫步骤 确定网址,发送请求 获取响应数据 对响应数据进行解析 保存数据 完整源码 共勉 博客 前言 本文写了一个爬取视频的案例,使用requests库爬取了好看视频的视频,并进行保存 ...
- mongo 副本集rs 理解和使用小结
转载请注明出处: 在MongoDB中,rs(通常指的是"replica set"的缩写)是复制集(Replica Set)的标识符或在使用时的一种常见前缀,尤其是在命令行工具和脚本 ...
- JAVAEE——tomcat安装
一.下载 1.网址:Tomcat官网 选择版本:点击左边Download下的which version,根据Supported Java Versions来选择合适的Tomcat版本 下载软件:点击左 ...