近日,我在研究如何使用 AI 在资料中有效提取数据,留此记录。
AI 圈有一句比较形象的俏皮话——“垃圾进,垃圾出”。
当所提供的资料是杂乱不清时,AI 就像个巧妇难为无米之炊,只能变相给你拉个大的。
所以,我们要想办法提高输入信息的质量,以下介绍几种数据预处理的办法:
Doc2x
这是笔者当前接触到最简单易用的 PDF 处理工具,唯一的遗憾就是目前每天仅支持 500 页 PDF (虽然已是很慷慨了),但目前收费情况尚未明晰,将来有可能提价无法使用的情况(大多国产工具皆是如此)。
总体而言效果还是很不错的,解析后可以选择导出为 MarkDown、LaTeX、DoCX、HTML 5、预览 MarkDown。
由于需要喂入给 AI,这里导出的格式要具体分析。选择导出为 Markdown 会丢失被解析成图片的格式,当一份 PDF 太多内容被解析成图片时,内容必定是有所丢失的。
咨询了一下开发者,表示 Markdown 格式确实只能再将图片单独喂给AI
有开发者提供了封装包,方便用 API 快速解析 PDF: https://noedgeai.feishu.cn/wiki/Qb1SwLBi5iz6cDkVyICcVBYgnRd
使用 Conda 安装好 pdfdeal 库后,可以使用 python 调用,也可以直接使用 CLI 进行调用。
安装 pdfdeal
conda create -n pdfdeal python=3.11
conda activate pdfdeal
pip install --upgrade pdfdeal
命令行:
doc2x -p -y -k "your api-key" -o Output --unzip test/pdf
该命令行会解析 test/pdf
目录下的所有 pdf,并自动解压。
api-key
可以从 Docx 的个人设置-个人令牌当中获取。
Python 调用
使用此函数须提前写入 API 参数,使用 export DOC2X_APIKEY = "Your API Key"
进行导入。
from pdfdeal import Doc2X
from pdfdeal import get_files
Client = Doc2X()
file_list, rename_list = get_files(
path="test/pdf", mode="pdf", out="md"
)
success, failed, flag = Client.pdf2file(
pdf_file=file_list,
output_path="Output/newfolder",
output_names=rename_list,
output_format="md",
ocr="True",
)
print(success)
print(failed)
print(flag)
具体 out
等格式可以参考文档参数说明:
Marke
Marke 是开源替代方案,待测试后更新。
最后…
尽管几乎每个星期都能听到各路 AI 的“捷报”,但在实际场景使用中,仍有许多地方 AI 不能做到尽善尽美,往往在成品出口免不了人工复核,所以尽管很多应用场景仍层出不穷,看似一片繁华,实际应用往往难掩尴尬,只能在“矮子”当中挑将军了。