JBoltAI_SpringBoot 文档提取:老程序员的 “秘密武器”

127 阅读4分钟

 作为一名 “身经百战” 的老程序员,我见过无数的代码,也写过不少 “奇奇怪怪” 的功能。今天,就给大家分享一个超级实用的功能 —— 文档提取。这个功能就像是我的 “秘密武器”,让我在处理文档时游刃有余。

一、文档提取的 “痛点”

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

​编辑

二、代码大揭秘 —— 文档提取的 “魔法”

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

@Override

public Result docParse(String url) {

    // 如果文档地址为空,直接返回错误提示

    if (StrUtil.isBlankIfStr(url)) {

        return Result.error("请输入要提取的文档地址");

    }



    try {

        // 开始文档提取的 “魔法” 之旅

        com.jboltai.event.text.TextExtractEvent textExtractEvent =

                JBoltText.extract(url).setId(RandomUtil.randomString(12)).setStream(false)

                        .onFile((event, fileInfo) -> {

                            try {

                                // 获取文件名

                                String fileName = fileInfo.getFileName();



                                // 调用七牛云上传文件

                                Result<String> result = qiniuUtil.uploadFile(fileInfo.getInputStream(), fileName);



                                // 获取上传后的文件路径

                                String path = result.getData();



                                // 记录日志,庆祝图片上传成功

                                logger.info("文档提取,图片上传成功, 图片地址: {}", path);



                                // 返回图片的 Markdown 格式字符串

                                return "![" + fileName + "](" + path + ")";

                            } catch (Exception e) {

                                // 如果上传失败,记录错误日志

                                logger.error("文档提取,图片上传失败, 图片文件名: {}, 失败原因: {}", fileInfo.getFileName(), e.getMessage());



                                // 返回 null,表示上传失败

                                return null;

                            }

                        });



        // 发布并等待文档提取完成

        textExtractEvent.publish().await();



        // 如果提取失败,记录错误日志并返回错误信息

        if (textExtractEvent.isFail()) {

            logger.error("文档提取失败,文档地址为:{},失败原因:{}", url, textExtractEvent.getError().getMsg());

            return Result.error(textExtractEvent.getError().getMsg());

        } else {

            // 如果提取成功,获取提取的内容并返回

            String content = textExtractEvent.getResult().getContent();

            logger.info("文档提取的内容{}:", content);

            return Result.success(content);

        }

    } catch (Exception e) {

        // 如果发生异常,记录错误日志并返回错误信息

        logger.error("文档提取失败,文档地址为:{},失败原因:{}", url, e.getMessage());

        return Result.error(e.getMessage());

    }

}

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

1. 参数校验

首先,我们对传入的文档地址进行校验。如果文档地址为空,直接返回错误提示。这就像是在告诉用户:“嘿,你得告诉我文档地址呀,不然我可没办法提取内容哦!”

2. 文档提取

接下来,我们使用 [JBoltText.extract](https://jboltai.com/ "JBoltText.extract") 方法进行文档提取。这个方法就像是一个 “超级吸尘器”,能够把文档里的内容全部 “吸” 出来。我们还设置了随机的 ID 和流模式,让提取过程更加灵活。

3. 文件处理

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

4. 错误处理

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

5. 结果返回

最后,我们等待文档提取完成。如果提取失败,记录错误日志并返回错误信息;如果提取成功,获取提取的内容并返回。这就像是在告诉用户:“嘿,文档提取成功啦,你可以查看内容啦!”

三、文档提取的 “奇妙之旅”

有了这段神奇的代码,我们就可以开启文档提取的 “奇妙之旅” 了。想象一下,一份上百页的文档,经过我们的 “魔法” 处理,变成了简洁明了的文本内容。这就像是一场 “文字盛宴”,让人垂涎欲滴。

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

​编辑

​编辑

 ​编辑