简单使用Marker
1 简单介绍
Marker是由Datalab维护的开源项目,它利用了surya的模型进行做的,能够快速准确地将文档转换为Markdown、JSON、分块数据及HTML格式。相对MinerU和Docling文件解析的效果较差,但是解析的速度是较快的,如果考虑速度和性能,可以考虑这个模型。不好的地方除了github没有官方本地部署较完整的文档。
Datalab也维护了Surya,Surya是一款文档OCR工具包,功能包括:支持90多种语言的OCR技术、任意语言的行级文本检测
版面分析(表格、图像、标题等检测)、阅读顺序检测、表格识别(检测行/列)、LaTeX OCR(数学公式)。
# Github地址(没有标准的开发文档)
https://github.com/datalab-to/marker
# Surya的Github地址
https://github.com/datalab-to/surya
2 安装环境
安装依赖环境
pip install marker-pdf[full] -i https://pypi.tuna.tsinghua.edu.cn/simple
简单例子
注意:Windows中模型的默认下载路径是“C:\Users\Admin\AppData\Local\datalab”,Admin是我的用户名,此处对应你的用户名。模型大小:4.97G。
# 注意!! 解析的过程不支持多线程和多协程
from marker.converters.pdf import PdfConverter
from marker.models import create_model_dict
from marker.output import text_from_rendered
def test():
print(create_model_dict())
converter = PdfConverter(
artifact_dict=create_model_dict()
)
# 解析图片
rendered = converter("E:/temp/test.png")
text, _, images = text_from_rendered(rendered)
print(text, _, images)
# 解析pdf
rendered = converter("E:/test/test1.pdf")
text, _, images = text_from_rendered(rendered)
print(text, _, images)
# 解析docx
rendered = converter("E:/test/test2.docx")
text, _, images = text_from_rendered(rendered)
print(text, _, images)
# 保存文件
rendered = converter("E:/test/test2.docx")
# 文件输出目录
out_dir = "E:/test/test-output"
# 不要后缀名称
file_name_base = "test2"
save_output(rendered, out_dir, file_name_base)
if __name__ == '__main__':
test()
截图

使用多进程
使用多进程可以提高效率。
if __name__ == '__main__':
# 一定要在主进程中为torch添加下面创建进程的方式,否则会报下面的错误
# RuntimeError: Cannot re-initialize CUDA in forked subprocess. To use CUDA with multiprocessing, you must use the 'spawn' start method
# 在主进程中设置创建进程的方式,有fork和spawn两种
# 默认复制当前内核父进程fork(Linux、macOS),创建空白新进程spawn(Windows)
torch.multiprocessing.set_start_method('spawn')
Process(target=test).start()
time.sleep(2)
Process(target=test).start()
1089

被折叠的 条评论
为什么被折叠?



