JBoltAI_SpringBoot 文档拆分:代码大揭秘,好玩又实用!

29 阅读4分钟

 小伙伴们,是不是经常被文档处理搞得头昏脑胀?别怕,今天就给大家带来JBoltAI_SpringBoot 文档拆分的独家秘籍,让你轻松应对文档处理难题,还能玩出新花样!

一、文档拆分的 “痛点”

文档处理,尤其是文档拆分,一直是让人头疼的问题。想象一下,一份几十页甚至上百页的文档,密密麻麻的文字,各种图表、图片,看着就让人眼花缭乱。如果需要从中提取关键信息,那简直就是 “大海捞针”。而且,不同的文档格式、编码方式,更是让人 “抓狂”。为了解决这些问题,我们 JBoltAI_SpringBoot 团队可谓是 “煞费苦心”,终于研发出了这款超级好用的文档拆分功能。

 

 二、代码大揭秘 —— 文档拆分的 “魔法”

接下来,就是见证奇迹的时刻!让我们一起来看看这段神奇的代码,它就像一把 “魔法钥匙”,能够轻松打开文档拆分的大门。

/**
 * 文档拆分
 * @param url 文档地址
 * @param chunkSize 分块大小
 * @param chunkOverlap 重叠大小
 * @return 拆分结果
 */
@Override
public Result docSplitDemo(String url, Integer chunkSize, Integer chunkOverlap) {
    // 如果分块大小或重叠大小为空或为 0,直接返回错误提示
    if (chunkSize == null || chunkOverlap == 0) {
        return Result.error("请输入分块数量");
    }
    if (chunkOverlap == null || chunkOverlap == 0) {
        return Result.error("请输入重叠数量");
    }

    // 开始文档拆分的 “魔法” 之旅
    TextSplitEvent event = JBoltText.splitUrl(url, chunkSize, chunkOverlap).onFile((e, fileInfo) -> {
        try {
            // 获取文件名
            String fileName = fileInfo.getFileName();

            // 调用七牛云上传文件
            Result<String> fileRes = qiniuUtil.uploadFile(fileInfo.getInputStream(), fileName);

            // 获取上传后的文件路径
            String path = fileRes.getData();

            // 记录日志,庆祝图片上传成功
            logger.info("文档提取,图片上传成功, 图片地址: {}", path);

            // 返回图片的 Markdown 格式字符串
            return "![" + fileName + "](" + path + ")";
        } catch (Exception error) {
            // 如果上传失败,记录错误日志
            logger.error("文档提取,图片上传失败, 图片文件名: {}, 失败原因: {}", fileInfo.getFileName(), error.getMessage());

            // 返回 null,表示上传失败
            return null;
        }
    }).publish();

    // 等待文档拆分完成
    event.await();

    // 如果拆分失败,返回错误信息
    if (event.isFail()) {
        return Result.error(event.getError().getFullMsg());
    }

    // 如果拆分成功,返回拆分后的块
    return Result.success(event.getResult().getChuncks());
}

这段代码看起来是不是有点复杂?别担心,我们来一步步解析它的 “魔法” 之处。

1. 参数校验

首先,我们对传入的参数进行校验。如果分块大小 chunkSize 或重叠大小 chunkOverlap 为空或为 0,直接返回错误提示。这就像是在告诉用户:“嘿,你得告诉我怎么拆分文档呀!”

2.文档拆分

接下来,我们使用 JBoltText.splitUrl 方法进行文档拆分。这个方法就像是一个 “超级剪刀”,能够按照我们指定的分块大小和重叠大小,把文档剪成一块块的。

 3.文件处理

在拆分过程中,如果遇到文件(比如图片),我们会调用七牛云的上传方法 qiniuUtil.uploadFile 进行上传。上传成功后,我们会记录日志,并返回图片的 Markdown 格式字符串。这就像是在告诉用户:“嘿,图片上传成功啦,你可以用这个链接查看哦!”

4. 错误处理

如果在上传过程中出现错误,我们会记录错误日志,并返回 null。这就像是在告诉用户:“哎呀,图片上传失败啦,可能是网络不好,要不你再试一次?”

5. 结果返回

最后,我们等待文档拆分完成。如果拆分失败,返回错误信息;如果拆分成功,返回拆分后的块。这就像是在告诉用户:“嘿,文档拆分成功啦,你可以查看结果啦!”

 三、文档拆分的 “奇妙之旅”

有了这段神奇的代码,我们就可以开启文档拆分的 “奇妙之旅” 了。想象一下,一份上百页的文档,经过我们的 “魔法” 处理,变成了一块块的小文档。每个小文档都包含了关键的信息,而且格式整齐、内容清晰。这就像是一份 “豪华大餐”,被我们拆分成了一个个 “美味小点心”,让人垂涎欲滴。

而且,我们的文档拆分功能还支持图片上传。这就像是在文档中插入了一张张 “美丽的风景画”,让文档变得更加生动有趣。用户可以通过我们返回的 Markdown 格式字符串,轻松查看图片内容。这就像是一场 “视觉盛宴”,让人目不暇接。

35c73570923c39c0f8ad45d6f1cbd5a.png

273325df747d80a93ec9f4de33ffa83.png

a93812a00832e3dda9cb4913828a473.png

5ee27b413c1a56175d14e4bc8eb8e75.png