日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OFD文件解析流程

發(fā)布時(shí)間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OFD文件解析流程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

OFD解析數(shù)據(jù)流程分享

最近接到公司任務(wù),應(yīng)客戶要求要做ofd格式文件的電票識(shí)別。剛接到任務(wù)的時(shí)候我對(duì)于ofd格式文件知道的少之甚少。之前只是聽到同事提起過這樣的一種格式。在我當(dāng)時(shí)的認(rèn)知里就單純的知道他是"中國版的PDF"。對(duì)于他的底層實(shí)現(xiàn)和用途一無所知。所以我接到任務(wù)的時(shí)候就著手規(guī)劃解決流程。

  • 先了解ofd底層實(shí)現(xiàn),解析構(gòu)造文件
  • 熟悉構(gòu)造文件的實(shí)現(xiàn)原理,根據(jù)文件特性提取數(shù)據(jù)
  • 結(jié)構(gòu)化數(shù)據(jù),并根據(jù)數(shù)據(jù)特點(diǎn)重構(gòu)造。
  • 1. ofd文件特性

    簡(jiǎn)短的說一下ofd文件吧,想詳細(xì)了解的建議去看一下電子文件存儲(chǔ)與交換 板式文檔。需要的可以私信我。
    OFD格式是我國自主可控的電子文件版式文檔格式。我有時(shí)候會(huì)跟別人解釋國產(chǎn)PDF。

    在OFD格式產(chǎn)生之前,電子文件存檔格式并沒有統(tǒng)一的國家或行業(yè)標(biāo)準(zhǔn),檔案工作中普遍采用DOC、WPS、PPTX等流式文件格式。內(nèi)容易更改、轉(zhuǎn)移過程存在安全隱患,并不符合電子文件長(zhǎng)期保存要求。

    一些格式依賴非自主可控技術(shù),使用和服務(wù)都受限于外部廠商和技術(shù),存在安全隱患。格式標(biāo)準(zhǔn)不公開,私有版式文檔的格式解析、標(biāo)準(zhǔn)解釋掌握在國外企業(yè)手中,文檔信息資源的保密性存在隱患。

    OFD格式優(yōu)勢(shì)

    1 產(chǎn)權(quán)屬于自主產(chǎn)權(quán)

    2 具有便攜性:文件小,可壓縮比率大。測(cè)試顯示生成的文件體量比PDF還要小。

    3 具有開放性:易于入門,對(duì)于使用者來說更具開放性。

    4 具有擴(kuò)展性:預(yù)留了可擴(kuò)展入口和自定義標(biāo)引,設(shè)置了非接觸式引用機(jī)制,為特性化提供支持。

    5 呈現(xiàn)效果與設(shè)備無關(guān),在各種設(shè)備上閱讀、打印或印刷時(shí),版面固定、不跑版

    6 應(yīng)用廣泛:無論是電子商務(wù)、電子公務(wù),還是信息發(fā)布、文件交換,檔案管理等都需要版式文檔的技術(shù)支持。

    據(jù)我了解,現(xiàn)在國內(nèi)很多檔案館已經(jīng)開始用OFD版式文檔存檔了,畢竟響應(yīng)國家號(hào)召
    OFD采用的是"容器+文檔"的方式描述和存儲(chǔ)數(shù)據(jù),容器是一個(gè)虛擬存儲(chǔ)系統(tǒng),將各類數(shù)據(jù)描述文件聚合起來,并提供相應(yīng)的訪問接口和數(shù)據(jù)壓縮方法。
    現(xiàn)在我們要知道OFD文件層次組織結(jié)構(gòu)

    在我看來ofd文件最為重要的一點(diǎn)是底層通過xml來進(jìn)行構(gòu)造。使得板式固定和文件的穩(wěn)定。既然是xml來實(shí)現(xiàn)那我們就可以通過xml入手。
    新手的可以把ofd文件后綴改為zip(ofd本身就是壓縮文件,文件名不是文件的一部分,是文件系統(tǒng)的一部分。文件名只是文件在文件系統(tǒng)中的映射標(biāo)記,文件本身并不包含文件名)在進(jìn)行解壓就可以看到文件結(jié)構(gòu)了
    OFD文件層次組織結(jié)構(gòu)

    OFD.XML | 文件主入口文件,一個(gè)包內(nèi)存在且只存在一個(gè)OFD.xml文件,此文件名不應(yīng)修改
    DOC_N | 第N個(gè)文檔的文件夾
    Document.xml | 文檔的根節(jié)點(diǎn)
    Page_N | 第N頁文件夾
    Content.cml | 第N頁的內(nèi)容描述
    PageRes.xml | 第N頁的資源描述
    Res | 資源文件夾
    PublicRes.xml | 文檔公共資源索引
    DocumentRes.xml | 文檔自身資源索引
    Image_M.png/Font_M.ttf | 資源文件
    Signs | 數(shù)字簽名存儲(chǔ)目錄
    Singatures.xml | 簽名列表文件
    Sign_N | 第N個(gè)簽名/簽章
    Signature.xml | 簽名/簽章描述文件
    Seal.esl | 電子印章文件
    SignedValue.dat | 簽名值文件

    我們看到OFD.XML 為主入口文件,OFD.xml文件的結(jié)構(gòu)
    我們可以在主入口文件里面找到根文件(Document.xml)的相對(duì)位置,根文件里面會(huì)有我們所需的數(shù)據(jù)文件的索引。
    一般來看我們簡(jiǎn)單提取文件中的數(shù)據(jù)我們只需要找到數(shù)據(jù)文件包括(文本數(shù)據(jù)及bbox的坐標(biāo),線條的坐標(biāo))在重構(gòu)造了。我那示例圖來說一下我們所需要的的數(shù)據(jù)。

    我們?cè)趫D上可以看到有"重慶增值稅電子普通發(fā)票 發(fā)票代碼: "這樣的紅色文本,還有"050001700111"這樣的黑色文本,還有紅色的線條。這是我們所需要的 當(dāng)然還會(huì)有二維碼和印章,提取方式都是一樣的。我們按照前三類去提取講解。

    數(shù)據(jù)提取思路
    我們根據(jù)主入口文件找到根文件在根據(jù)找到數(shù)據(jù)文件,在根據(jù)數(shù)據(jù)文件去解析數(shù)據(jù)就OK。
    1.先找到主入口文件,這個(gè)當(dāng)然容易因?yàn)樗驮谧钔鈱硬⑶颐粫?huì)改變。我們現(xiàn)在就來看一下他的內(nèi)容。
    我們能看到圖中紅框的就是根文件的相對(duì)目錄。我們可以把xml文件轉(zhuǎn)成json處理,這個(gè)操作不會(huì)的同學(xué)們自行百度,或者私信我。我們?cè)賮砜匆幌逻@個(gè)根文件內(nèi)容。

    我們能看到紅框1中的相對(duì)路徑中的文件是上面提到的紅色字體和線條的數(shù)據(jù)存放文件,紅框2中的相對(duì)路徑的文件是黑色字體的數(shù)據(jù)存放文件。我們解析出數(shù)據(jù)存放的文件路徑那我們就可以去解析數(shù)據(jù)了。我們分別來看一下這兩類數(shù)據(jù)文件內(nèi)容。

    我們雖然找到了這個(gè)數(shù)據(jù)文件,但是數(shù)據(jù)結(jié)構(gòu)還是比較復(fù)雜的,我是通過遞歸去找到需要的數(shù)據(jù)。當(dāng)然同學(xué)們也可以評(píng)論自己更好的方法。Boundary四位數(shù)分別代表的是 x y w h。(ofd是左上角的x,y。pdf是左下角的x,y)這樣我們就可以根據(jù)計(jì)算提供了x_mix,y_mix,x_max,y_max了這樣我們就可以畫出bbox了。線條和紅色字體也是同一道理.這樣我們可以根據(jù)自己的需求去重結(jié)構(gòu)化了。當(dāng)然這是高度個(gè)性化的開發(fā),所以我這邊就不做陳述了。

    這樣我們就可以把ofd數(shù)據(jù)解析出來了,本人學(xué)識(shí)淺陋,對(duì)博大精深之ofd文件操作理論僅略知皮毛,在本文章中錯(cuò)謬之處在所難免,若蒙讀者諸君不吝指出,將不勝感激.
    2020年8月于北京

    總結(jié)

    以上是生活随笔為你收集整理的OFD文件解析流程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。