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。

注意事项

使用此示例时,请确保:

  1. 替换 your_app_id_here 和 your_secret_code_here 为您的实际API ID和密钥。
  2. 更新 System.load() 中的路径,指向正确的OpenCV库文件。如果有完整OpenCV环境,可以使用System.loadLibrary(Core.NATIVE_LIBRARY_NAME)。
  3. 将 /path/to/your/document.pdf 替换为要分析的PDF文件的实际路径。

这个示例展示了如何使用TextIn ParseX SDK的主要功能,包括提取Markdown内容、文本、表格、段落、图片信息等。您可以根据需要修改这个示例,以适应您的具体使用场景。

如果没有OpenCV环境或版本不匹配,操作方法详细请见Github主页。

后续我们将开放更多的sdk函数,也欢迎各位用户朋友给我们提更多的类似需求。

相关推荐
电子科技圈4 小时前
XMOS携手合作伙伴晓龙国际联合推出集成了ASRC等功能的多通道音频板
科技·嵌入式硬件·mcu·物联网·音视频·iot
OBOO鸥柏5 小时前
OBOO鸥柏28.6寸液晶广告屏:创新技术引领智能显示新时代
人工智能·科技·大屏端·广告一体机
Hotchip华芯邦科技6 小时前
MEMS硅麦克风应用电子烟雾化产业稳步爬升,耐高温、 防油、防酸、防腐蚀等性能优势和可实现自动化贴片及极高的一致性等特性使其必将成为主流
科技·单片机·金融·生活·社交电子·健康医疗·制造
lucy153027510791 天前
【青牛科技】芯麦 GC2003:白色家电与安防领域中 ULN2003 的理想替代者
人工智能·科技·单片机·物联网·机器学习·安防·白色家电
Jack153027682791 天前
【青牛科技】D7312带 ALC 双通道前置放大器电路
人工智能·科技·单片机·嵌入式硬件·智能路由器·收录机
北京搜维尔科技有限公司1 天前
搜维尔科技:Xsens随时随地捕捉,在任何环境下实时录制或捕捉
科技
AIwenIPgeolocation1 天前
埃文科技携手河南企业代表团亮相第十九届广州中博会
人工智能·科技
Qingniu011 天前
【青牛科技】 GC1288:散热风扇领域中 LA6588 / 三洋的理想替代者
人工智能·分布式·科技·单片机·嵌入式硬件·电脑·散热风扇
上海知从科技1 天前
知从科技加入SOAFEE组织,携手推动汽车软件创新
科技·汽车
青牛科技-Allen1 天前
【青牛科技】汽车收音机调频中频放大器——D1145
人工智能·科技·单片机·嵌入式硬件·汽车·充电桩·对讲机