作为一名 “身经百战” 的老程序员,我见过无数的代码,也写过不少 “奇奇怪怪” 的功能。今天,就给大家分享一个超级实用的功能 —— 文档提取。这个功能就像是我的 “秘密武器”,让我在处理文档时游刃有余。
一、文档提取的 “痛点”
文档处理,尤其是文档提取,一直是让人头疼的问题。想象一下,一份几十页甚至上百页的文档,密密麻麻的文字,各种图表、图片,看着就让人眼花缭乱。如果需要从中提取关键信息,那简直就是 “大海捞针”。而且,不同的文档格式、编码方式,更是让人 “抓狂”。为了解决这些问题,我可谓是 “煞费苦心”,终于找到了这款超级好用的 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 "";
} 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 格式字符串,轻松查看图片内容。这就像是一场 “视觉盛宴”,让人目不暇接。
编辑
编辑
编辑