- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
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 。
。
这是一套标准的多平台支持的Java SDK,帮助开发者解析pdf_to_markdownRestful API返回结果,获取对应的版面元素的数据结构.
开发者只需下载jar包,并导入到自己的项目中即可使用.
在项目中引入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>
示例展示了如何使用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.
注意事项 。
使用此示例时,请确保:
这个示例展示了如何使用TextIn ParseX SDK的主要功能,包括提取Markdown内容、文本、表格、段落、图片信息等。您可以根据需要修改这个示例,以适应您的具体使用场景.
如果没有OpenCV环境或版本不匹配,操作方法详细请见Github主页.
。
后续我们将开放更多的sdk函数,也欢迎各位用户朋友给我们提更多的类似需求.
最后此篇关于TextInParseX文档解析SDK工具新增Java版本的文章就讲到这里了,如果你想了解更多关于TextInParseX文档解析SDK工具新增Java版本的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
1. 新增用户 复制代码代码如下: mysql>insert into mysql.user(Host,User,Password) values(&quo
本文实例讲述了PHP操作redis实现的分页列表,新增,删除功能封装类与用法。分享给大家供大家参考,具体如下: <?php/* * redis 分页数据类库 */class redisP
在我的场景中,我必须使用类来添加 div ,这可以使用 onClick 函数轻松解决,但我需要它来完成我的任务,.click(function() 不适用于新元素,javascript/jquery
本文主要介绍了vue+elementui通用弹窗的实现(新增+编辑),分享给大家,具体如下: 组件模板 ?
例如: 修改(列名前 要有column关键字) ALTER TABLE [USER] ALTER column [
复制代码 代码如下: //连接localhost:27017 $conn = new Mongo(); //连接远程主机默认端口 $conn = new Mong
我正在关注这个guideline对于 Maven 插件,我添加了以下内容: org.apache.maven.plugins maven-release-plugin 2.5.3 ma
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
在新的 Lucene 4.4.0 版本中,近实时管理器 (org.apache.lucene.search.NRTManage) 已被 ControlledRealTimeReopenThread 取
抱歉,我现在正在编程中,但是我正在学习中,请帮助我。我被困在这个问题上。这是我的第一个应用程序,在likke帮助下需要完成所有工作。 我收到此错误:类型'_InternalLinkedHashMap'
从下图中我们可以看出,使用 XCode 11 构建的 iOS 13 的新呈现样式使导航栏的高度(56 高)与“全屏”呈现的导航栏(44 高)不同。 这里的问题是我的应用程序使用的是自定义的书面导航栏,
在 EGit 2.3 中,他们根据他们的发布文档添加了非快进 merge 功能 "Support git merge --no-ff as an EGit preference." http://wi
IntelliJ IDEA 2020.3.3的新错误修复程序已发布!您可以使用工具箱应用程序从IDE内部更新到新版本,也可以点击下方链接下载。 idea激活码 下载IntelliJ IDEA 2
据小米手环官微消息,小米手环 5 固件版本更新至 1.0.2.46 版本,另外小米运动 APP 也更新至了 4.8.0 版本。 此次更新使得小米手环 5 实现了 24 小时睡眠监测,对于上夜班
我在最新的 IntelliJ Idea 中得到以下提示: Not registered via @EnableConfigurationProperties or marked as Spring c
我有一个 UserModel,用于生产。我想添加一个 bool 属性(isRegistered)。对于已经在我的平台上的人们,我希望这个新属性是真实的。对于新用户,我希望它默认为 false。 如何将
CSS 1、CSS 2、CSS 2.1 和 CSS 3:每个版本的哪些 CSS 属性和选择器不同?我在谷歌上搜索了很多,但没有找到任何列表? 我需要每个版本所支持的属性和选择器的列表,但有差异。 最佳
为什么? Web 应用程序(.NET Framework)和核心 Web 应用程序(.NET Core)都面向 AnyCPU 平台。 这是一个错误还是这样做有什么值(value)? 我在 Window
我是一名优秀的程序员,十分优秀!