• 用于pdf翻译的PdfTranlate(续2)


      项目地址:https://gitee.com/Shanyalin/pdf-tranlate。

      关于机器学习部分的代码没有提交,也不会提交,会在此罗列相关的资料 ,避免我的经验影响了读者的理解。

      接上一篇简要介绍了机器学习来识别表格的方案。注意此方案的可行性是有条件限制的,细心的读者会留意到上一篇中有模糊的提到pymupdf中宽度的单位,但始终没有说明确究竟是什么。因为在单一的坐标参考系中,讨论这些意义并不大,反正都是在同一个坐标系中提取或者写入。point的坐标单位有px像素,in英寸, 厘米cm, 毫米mm,磅pt,派卡(约4号铅字)pc;其中1in=2.54cm=25.4mm=72pt=6pc,唯独没有与px的转换标准。这意味着机器翻译给出的point的unit和pymupdf给出的point的unit不一致时,坐标间就可能无法转换。

      经实验后发现,pymupdf默认是以px为单位的,以pdf页面的左上角为原点,向右下角递增。机器学习识别表格的模型给出的结果显示,以px为单位,以图片(注意pdf转图片有可能大小不一样)的左上角为原点,向右下角递增。经进一步确认当图片的大小与pdf页面的大小一致时,两边的坐标完全一致,不需要转变坐标系。

      机器学习的项目时微软亚洲研究院的项目,地址:TableBank 。 使用的模型是X101。tablebank目前不能再win上安装(应该是没有预编译包,可以尝试自行编译),model zoo说明了相关模型是在Detectron2上被训练的,Detectron2的相关文档上有环境安装的说明文档 。linux或者macos,py3.6以上,pytorch1.7以上,opencv是可选的,所以不限制版本。这个环境说复杂,还是有些复杂的,对于机器学习有一定经验的人来说还是比较简单的。

      第一步安装cuda,这个参考nVidia的官方教程。第二步,根据cuda版本安装合适版本的pytorch。第三步,根据pytorch的版本选择安装detectron2。服务器的cuda是10.2的,pytorch和detectron2的安装如下,仅供参考:

    pip install torch==1.9.0+cu102 torchvision==0.10.0+cu102 -f https://download.pytorch.org/whl/torch_stable.html
    pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu102/torch1.9/index.html
    pip install opencv-python

      环境安装完毕之后,可以观摩demo.py 和 api的文档,来学习如何调用预训练的模型,以下代码仅供测试学习,初步了解之后可以根据需要进行改造。

    from detectron2.engine import DefaultPredictor
    from detectron2.config import get_cfg
    import cv2
    
    tablebank = '/Detection/All_X101' # 模型地址
    cfg = get_cfg()
    cfg.merge_from_file(f'{tablebank}/All_X101.yaml')
    cfg.MODEL.WEIGHTS = f'{tablebank}/model_final.pth'
    pred = DefaultPredictor(cfg)
    inputs = cv2.imread("input.jpg")
    outputs = pred(inputs)
    boxes = outputs['instances'].pred_boxes.tensor.cpu().numpy()
    scores = outputs['instances'].scores.cpu().numpy()
    bbox = []
    for i, b in enumerate(boxes):
        if scores[i] > 0.5:
            bbox.append([float(x) for x in b])
    print(bbox)

      当前阶段,将detectron2相关环境部署在服务器,以api的形式提供服务,通过post图片,返回图片上表格的检测结果,用于开发和测试。后期或将表格检测功能集成到表格提取部分,或独立出去以服务的形式存在。以上将现阶段遇到的主要问题都记录下来,或有问题没有提到,以后有新的发展将会继续更新。

      over!

      

      

      

  • 相关阅读:
    Maven中使用描述文件切换环境配置
    整合MyBatis到Spring中实现Dao层自动装配
    使用MyBatis搭建项目时报 java.io.IOException: Could not find resource
    数据库CPU占用高排查
    JS 根据时区获取时间
    国外服务器 winserver2012 安装IIS后,安装urlrewrite模块总是自动停止应用程序池
    sql中char(9) char(10) char(13)
    通过 Microsoft.Ace.OLEDB 接口导入 EXCEL 到SQLSERVER
    SDL 当前连接查询脚本
    C# System.Drawing.Graphics 画图后,如何保存一个低质量的图片,一个占用空间较小的图片
  • 原文地址:https://www.cnblogs.com/cnDqf/p/15119187.html
Copyright © 2020-2023  润新知