• 用于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!

      

      

      

  • 相关阅读:
    FPGrowth 实现
    数据库事务的4个特性ACID
    redis简介(keeper实时报表的基本部分)
    HADOOP中的CRC数据校验文件
    潜在语义分析
    AdaBoost 算法
    cocosBuilder生成cbbi文件,绑定到cocos2d-x
    C++继承模型
    Android应用经典主界面框架之中的一个:仿QQ (使用Fragment, 附源代码)
    从今天開始学习iOS开发(iOS 7版)--实现一款App之Foundation框架的使用
  • 原文地址:https://www.cnblogs.com/cnDqf/p/15119187.html
Copyright © 2020-2023  润新知