- 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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在细读 http://www.khronos.org/网站,只找到了 OpenCL 的头文件(不是我不关心的 OpenGL)。如何获取 OpenCL SDK? 最佳答案 AMD 的 ATI Str
Android 项目中最低(最低 sdk)和最高(目标 sdk)级别是否有任何影响。这些东西是否会影响项目的可靠性和效率。 最佳答案 没有影响,如果您以 SDK 级别 8 为目标,那么您的应用将以 9
“min sdk version/target sdk version”和“compile sdk version”有什么区别?我知道 min 和 target sdk 是什么意思,但是 compil
我正在尝试运行 Dji Mobile-Sdk-Android:https://github.com/dji-sdk/Mobile-SDK-Android使用 dji 网站上的说明:https://de
我目前正在向我的 iPhone 应用程序添加新的 Facebook iOS sdk 3.1.1。我看到 sdk 有重大变化。例如。我的旧 sdk 创建一个 Facebook 对象并从 FBReques
我最近刚刚下载了 Xcode 4.6 with mac 10.8.4 with iOS 6.0 SDK package,我立即注意到我无法使用我的 iPhone 3Gs with iOS 4.6 进行
我尝试下载 OpenCL SDK。但是没办法。我有一个 AMD GPU,所以我在谷歌上搜索了 AMD SDK,但是来自谷歌的所有链接和一些教程都被破坏了,不可能通过 AMD 开发者网站找到 sdk。
安装 Google Cloud SDK 后,当我运行时 gcloud 授权登录 我收到一条错误消息: Your browser has been opened to visit: https://a
我一直在 nvidia 网站上搜索 GPU 计算 SDK,因为我正在尝试构建具有 cuda 支持的点云库 (PCL)。但是,在 nvidia 网站上,我只能找到工具包的链接,而不是 SDK 的单个下载
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。 2
当我打开 Android SDK 管理器时,会出现一个屏幕“选择要安装的包”。它列出了一堆带有绿色复选标记(已经安装)的软件包,还有一些带有 x's 的软件包,它们没有安装。如果我选择“全部接受”,它
在开发过程中,我发布了 SDK 21 Lollipop,但我无法在我的 KitKat 设备上使用它。应用程序非常简单,我只将 SDK 用于动画和 Material 设计,但是当我尝试对 Play 商店
enter image description here friend 们好 在使用 Linux、jenkins 和 docker 探索 dotnet 核心时,我遇到了构建问题,该问题在标题“/usr
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我创建了一个flutter项目,运行flutter packages get,输出如下:【二】flutter包搞定等待另一个 flutter 命令释放启动锁...第二次运行“flutter packa
这个问题在这里已经有了答案: What are the Android SDK build-tools, platform-tools and tools? And which version sh
我使用 Corona SDK 已经快一年了,并且开发了几个简单的游戏。我现在正在寻找的是在 Corona SDK 中创建 3D 幻觉的某种方法。如果有人有 Corona 3D 方面的经验,我将不胜感激
我有一个CLDC 1.1 / MIDP 2.0项目,可以使用Java ME SDK 3.2很好地进行编译。 最近,我已将Java SE升级到8,结果Java ME SDK开始在Windows启动时显示
有没有办法以编程方式控制连接到华擎主板的 RGB 照明?我知道华硕有一个 Aura SDK,但华擎是否也有一个用于他们的硬件? 如果是,我在哪里可以找到它? 最佳答案 没有用于华擎多彩的 sdk。但是
如何使用 crm 2011 sdk 和 XrmServiceContext 创建事务? 在下一个示例中,'new_brand' 是一些自定义实体。我想创建三个品牌。第三个拥有错误的 OwnerID g
我是一名优秀的程序员,十分优秀!