研究中,來自北航和微軟亞研的研究者聯(lián)合創(chuàng)建了一個基于圖像的表格檢測和識別新型數(shù)據(jù)集 TableBank,該數(shù)據(jù)集是通過對網(wǎng)上的 Word 和 Latex 文檔進(jìn)行弱監(jiān)督而建立的。該數(shù)據(jù)集包含 417K 個高質(zhì)量標(biāo)注表格,通過此數(shù)據(jù)集作者利用深度神經(jīng)網(wǎng)絡(luò) SOTA 模型建立了數(shù)個強(qiáng)大的基線,從而助力更多研究將深度學(xué)習(xí)方法應(yīng)用到表格檢測與識別任務(wù)中。目前 TableBank 已開源。
TableBank 開源地址:https://github.com/doc-analysis/TableBank
表格通常以結(jié)構(gòu)化的方式展示基本信息,因而表格檢測和識別是諸多文件分析應(yīng)用中的一項(xiàng)重要任務(wù)。如圖 1 所示,由于表格的布局和格式不同,其檢測和識別是個難題。常規(guī)表格分析技術(shù)通常以文件的布局分析為基礎(chǔ)。但這些技術(shù)中的大多數(shù)都無法泛化,究其原因,它們依賴于手工構(gòu)建的特征,而后者對布局變化不具備穩(wěn)健性。最近,計(jì)算機(jī)視覺領(lǐng)域深度學(xué)習(xí)的快速發(fā)展極大地推動了數(shù)據(jù)驅(qū)動且基于圖像的表格分析方法。基于圖像的表格分析的優(yōu)勢體現(xiàn)在其對文件類型的穩(wěn)健性,并對文件是頁面掃描圖像還是原始數(shù)字文件格式不做任何假設(shè)。因此,大型端到端深度學(xué)習(xí)模型能夠取得更好的效果。
圖 1:不同布局和格式的表格電子文件。
現(xiàn)有的基于深度學(xué)習(xí)的表格分析模型通常對使用數(shù)千個人工標(biāo)注訓(xùn)練實(shí)例獲得的預(yù)訓(xùn)練目標(biāo)檢測模型進(jìn)行微調(diào),但它依然難以在現(xiàn)實(shí)世界應(yīng)用程序中擴(kuò)展。例如,我們發(fā)現(xiàn),在類似圖 1a、1b 和 1c 中的數(shù)據(jù)上訓(xùn)練出的模型在圖 1d 中表現(xiàn)不佳,其原因在于表格布局和顏色大不相同。因此,擴(kuò)大訓(xùn)練數(shù)據(jù)是使用深度學(xué)習(xí)構(gòu)建開放域表格分析模型的唯一途徑。深度學(xué)習(xí)模型比傳統(tǒng)模型復(fù)雜得多,現(xiàn)在的很多標(biāo)準(zhǔn)深度學(xué)習(xí)模型擁有數(shù)億自由參數(shù),且需要更多標(biāo)注訓(xùn)練數(shù)據(jù)。在實(shí)踐中,人工標(biāo)注大型訓(xùn)練數(shù)據(jù)成本高昂且缺乏靈活性,這是實(shí)際部署深度學(xué)習(xí)模型的關(guān)鍵瓶頸。眾所周知,ImageNet 和 COCO 是兩個流行的圖像分類和目標(biāo)檢測數(shù)據(jù)集,兩者均以眾包的方式構(gòu)建,但花費(fèi)高昂且耗日持久,需要數(shù)月甚至數(shù)年時間來構(gòu)建大型基準(zhǔn)數(shù)據(jù)集。幸運(yùn)的是,網(wǎng)絡(luò)上存在大量數(shù)字文件,如 Word 和 Latex 源文件。對這些在線文件進(jìn)行一些表格標(biāo)注方面的弱監(jiān)督則是有益的。
為解決對標(biāo)準(zhǔn)開放域表格基準(zhǔn)數(shù)據(jù)集的需求,該研究提出一種新穎的弱監(jiān)督方法,可自動創(chuàng)建 TableBank 數(shù)據(jù)集,TableBank 要比現(xiàn)有的表格分析人工標(biāo)注數(shù)據(jù)集大幾個量級。與傳統(tǒng)弱監(jiān)督訓(xùn)練集不同,該研究提出的弱監(jiān)督方法可以同時獲得大規(guī)模和高質(zhì)量的訓(xùn)練數(shù)據(jù)。現(xiàn)在,網(wǎng)絡(luò)上有大量電子文檔,如 Word(.docx)和 Latex(.tex)文件。這些在線文檔的源代碼中包含表格的 mark-up tag。直觀地講,借助每個文檔中的標(biāo)記語言,研究者可以通過添加邊框來操控這些源代碼。就 Word 文檔而言,內(nèi)部 Office XML 代碼可以在標(biāo)注每一表格邊界的地方進(jìn)行修改。就 Latex 文檔而言,tex 代碼同樣可以在標(biāo)注表格邊界的地方進(jìn)行修改。這種方式可以為多個不同域創(chuàng)建高質(zhì)量的標(biāo)注數(shù)據(jù),如商業(yè)文件、官方名錄和科研論文等,這些數(shù)據(jù)對大規(guī)模表格分析任務(wù)大有裨益。
TableBank 數(shù)據(jù)集共包含 417,234 個高質(zhì)量標(biāo)注表格以及各域中對應(yīng)的的原始文檔。為驗(yàn)證 TableBank 的效果,研究者使用當(dāng)前最優(yōu)的端到端深度神經(jīng)網(wǎng)絡(luò)模型構(gòu)建了多個強(qiáng)大的基線。表格檢測模型基于不同設(shè)置下的 Faster R-CNN 架構(gòu)(Ren 等人,2015 年),表結(jié)構(gòu)識別模型基于圖像-文本(image-to-text)的編碼器-解碼器框架。實(shí)驗(yàn)結(jié)果表明,布局和格式變化對表格分析任務(wù)的準(zhǔn)確率影響很大。此外,在某一特定域訓(xùn)練的模型在另一域中表現(xiàn)不佳。這表明,在 TableBank 數(shù)據(jù)集上建模和學(xué)習(xí)還有很大的進(jìn)步空間。
大致上,研究者構(gòu)建 TableBank 數(shù)據(jù)集時使用了兩種不同的文件類型:Word 文檔和 Latex 文檔。這兩種文件類型的源代碼中都包含 mark-up tag。這部分分三步詳細(xì)介紹了數(shù)據(jù)收集過程:文檔獲取、創(chuàng)建表格檢測數(shù)據(jù)集、創(chuàng)建表結(jié)構(gòu)識別數(shù)據(jù)集。
研究者從網(wǎng)上抓取 Word 文檔。這些文檔都是 .docx 格式,因此研究者可以通過編輯內(nèi)部 Office XML 代碼來添加邊框。研究者并未過濾文檔語言,因此這些文檔包含英語、中文、日語、阿拉伯語和其他語言。這使得該數(shù)據(jù)集在實(shí)際應(yīng)用中更多樣化、更穩(wěn)健。
Latex 文檔與 Word 文檔不同,因?yàn)榍罢咝枰渌Y源來編譯成 PDF 文檔。因此,研究者不能從網(wǎng)上抓取 tex 文檔,而是利用最大預(yù)印本數(shù)據(jù)庫 arXiv.org 中的文檔以及相應(yīng)的源代碼。借助 arXiv bulk data access,研究者下載了 2014 年至 2018 年論文的 Latex 源代碼。
直觀地講,借助每個文檔中的標(biāo)記語言,研究者可以通過添加邊框來操控源代碼。處理流程如圖 2 所示。就 Word 文檔而言,研究者通過編輯每個文檔中的內(nèi)部 Office XML 代碼來添加表格邊框。每個 .docx 格式文件有一個壓縮包,解壓后的文件夾中有一個 document.xml 文件。在 XML 文件中,該代碼片段介于標(biāo)記 <w:tbl> 和 </w:tbl> 之間,通常表示 Word 文件中的表格,如圖 3 所示。研究者修改 XML 文件中的代碼片段,使表格邊框可更改為與文檔其他部分不同的顏色。如圖 3 所示,研究者在 PDF 文檔中添加了一個綠色邊框,該表格得到完美識別。最后,研究者從 Word 文檔中獲得了 PDF 頁面。
圖 2:數(shù)據(jù)處理流程。
圖 3:通過 Office XML 代碼中的 <w:tbl> 和 </w:tbl> 標(biāo)記來識別和標(biāo)注表格。
表結(jié)構(gòu)識別旨在確定表格的行列布局結(jié)構(gòu),尤其適用于掃描圖像等非數(shù)字化文檔格式的表格。現(xiàn)有表結(jié)構(gòu)識別模型通常用于識別布局信息和單元格的文本內(nèi)容,而文本內(nèi)容識別并非這一工作的重心。所以,研究者將任務(wù)定義為:給定一個圖像格式的表格,生成表示表格行列布局和單元格類型的 HTML 標(biāo)簽序列。通過這種方式,研究者可以從 Word 和 Latex 文檔的源代碼中自動構(gòu)建表表結(jié)構(gòu)識別數(shù)據(jù)集。就 Word 文檔而言,研究者只需將原始 XML 信息從文檔格式轉(zhuǎn)換成 HTML 標(biāo)簽序列即可。而對于 Latex 文檔,研究者首先使用 LaTeXML toolkit 從 Latex 中生成 XML,然后將其轉(zhuǎn)換為 HTML 格式。如圖 4 中的簡單示例,研究者使用 <cell_y> 表示含有文本的單元格,<cell_n> 表示沒有文本的單元格。在過濾噪聲后,研究者基于 Word 和 Latex 文檔創(chuàng)建了 145,463 個訓(xùn)練實(shí)例。
圖 4:表格轉(zhuǎn) HTML 示例,其中 <cell_y> 表示含有文本的單元格,<cell_n> 表示沒有文本的單元格。
表格檢測
該研究使用 Faster R-CNN 作為表格檢測基線模型,其架構(gòu)如下圖所示:
圖 5:用于表格檢測的 Faster R-CNN 模型。
該研究使用圖像-文本模型作為表結(jié)構(gòu)識別的基線模型,其整體架構(gòu)如下圖所示:
圖 6:用于表結(jié)構(gòu)識別的圖像-文本模型。
表 1:TableBank 數(shù)據(jù)集的統(tǒng)計(jì)數(shù)據(jù)。
表 2:使用 ResNeXt-{101,152} 作為骨干網(wǎng)絡(luò)對 Word 和 Latex 數(shù)據(jù)集的評估結(jié)果。
表 3:圖像-文本模型在 Word 和 Latex 數(shù)據(jù)集上的評估結(jié)果(BLEU)。
表 4:生成 HTML 標(biāo)注序列和真值序列之間的精確匹配(exact match)數(shù)量。
圖 7:使用 a)partial-detection、b)un-detection 和 c)mis-detection 進(jìn)行表格檢測的示例。
論文:TableBank: Table Benchmark for Image-based Table Detection and Recognition
論文鏈接:https://arxiv.org/pdf/1903.01949.pdf
TML編輯器粘貼word圖片,web編輯器粘貼word圖片,web富文本編輯器粘貼word,前端編輯器粘貼word內(nèi)容,前端web編輯器粘貼word,支持快捷鍵操作(Ctrl+V),
粘貼后word圖片自動上傳到服務(wù)器中,然后自動將圖片和文字HTML添加到編輯器中。
用戶這邊日常的編輯工作基本上都是在word中完成的,用戶把內(nèi)容編輯好后希望能夠直接一鍵(通過快捷鍵)粘貼到網(wǎng)站后臺新聞發(fā)布頁面的編輯器中,這樣能夠節(jié)省不少時間。提高工作效率,信息發(fā)布效率。
用戶發(fā)布新聞的時候是從word里面復(fù)制圖片和文字,然后將word圖文內(nèi)容粘貼到web富文本編輯器中,希望能夠?qū)ord的圖片自動上傳到服務(wù)器中,服務(wù)器地址能夠自定義,后端的話需要支持任意開發(fā)語言,比如ASP,ASP.NET,JSP,PHP,PYTHON等。只要是基于標(biāo)準(zhǔn)HTTP協(xié)議的都要支持。如果能夠不裝控件最好,
實(shí)際上裝不裝都無所謂,只要好用。
1.下載示例:
http://www.ncmem.com/webapp/wordpaster/versions.aspx
2.復(fù)制WordPaster插件目錄
3.引入插件文件
注意:不要重復(fù)引入jquery,如果您的項(xiàng)目已經(jīng)引入了jq,則不用再引入jq-1.4
4.在工具欄中增加插件按鈕
6.初始化控件
注意:
1.如果接口字段名稱不是file,請配置FileFieldName。ueditor接口中使用的upfile字段
參考:http://www.ncmem.com/doc/view.aspx?id=c3ad06c2ae31454cb418ceb2b8da7c45
2.如果接口返回JSON,請配置ImageMatch
參考:http://www.ncmem.com/doc/view.aspx?id=07e3f323d22d4571ad213441ab8530d1
3.如果接口返回的圖片地址沒有域名,請配置ImageUrl
參考:http://www.ncmem.com/doc/view.aspx?id=704cd302ebd346b486adf39cf4553936
4.如果接口有權(quán)限驗(yàn)證(登陸驗(yàn)證,SESSION驗(yàn)證),請配置COOKIE。或取消權(quán)限驗(yàn)證。
參考:http://www.ncmem.com/doc/view.aspx?id=8602DDBF62374D189725BF17367125F3
效果
現(xiàn)文檔在線預(yù)覽的方式除了上篇文章《文檔在線預(yù)覽(一)通過將txt、word、pdf轉(zhuǎn)成圖片實(shí)現(xiàn)在線預(yù)覽功能》說的將文檔轉(zhuǎn)成圖片的實(shí)現(xiàn)方式外,還有轉(zhuǎn)成pdf,前端通過pdf.js、pdfobject.js等插件來實(shí)現(xiàn)在線預(yù)覽,以及本文將要說到的將文檔轉(zhuǎn)成html的方式來實(shí)現(xiàn)在線預(yù)覽。代碼基于 aspose-words(用于word轉(zhuǎn)html),pdfbox(用于pdf轉(zhuǎn)html),所以事先需要在項(xiàng)目里下面兩個依賴:
<dependency>
<groupId>com.luhuiguo</groupId>
<artifactId>aspose-words</artifactId>
<version>23.1</version></dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.4</version>
</dependency>
public static String wordToHtmlStr(String wordPath) {
try {
Document doc=new Document(wordPath); // Address是將要被轉(zhuǎn)化的word文檔
String htmlStr=doc.toString();
return htmlStr;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
驗(yàn)證結(jié)果:
public static String pdfToHtmlStr(String pdfPath) throws IOException, ParserConfigurationException {
PDDocument document=PDDocument.load(new File(pdfPath));
Writer writer=new StringWriter();
new PDFDomTree().writeText(document, writer);
writer.close();
document.close();
return writer.toString();
}
驗(yàn)證結(jié)果:
有時我們是需要的不僅僅返回html字符串,而是需要生成一個html文件這時應(yīng)該怎么做呢?一個改動量小的做法就是使用org.apache.commons.io包下的FileUtils工具類寫入目標(biāo)地址:
首先需要引入pom:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
</dependency>
相關(guān)代碼:
String htmlStr=FileConvertUtil.pdfToHtmlStr("D:\\書籍\\電子書\\小說\\歷史小說\\最后的可汗.doc");
FileUtils.write(new File("D:\\test\\doc.html"), htmlStr, "utf-8");
除此之外,還可以對上面的代碼進(jìn)行一些調(diào)整,已實(shí)現(xiàn)生成html文件,代碼調(diào)整如下:
public static void wordToHtml(String wordPath, String htmlPath) {
try {
File sourceFile=new File(wordPath);
String path=htmlPath + File.separator + sourceFile.getName().substring(0, sourceFile.getName().lastIndexOf(".")) + ".html";
File file=new File(path); // 新建一個空白pdf文檔
FileOutputStream os=new FileOutputStream(file);
Document doc=new Document(wordPath); // Address是將要被轉(zhuǎn)化的word文檔
HtmlSaveOptions options=new HtmlSaveOptions();
options.setExportImagesAsBase64(true);
options.setExportRelativeFontSize(true);
doc.save(os, options);
} catch (Exception e) {
e.printStackTrace();
}
}
驗(yàn)證結(jié)果:
public static void pdfToHtml(String pdfPath, String htmlPath) throws IOException, ParserConfigurationException {
File file=new File(pdfPath);
String path=htmlPath + File.separator + file.getName().substring(0, file.getName().lastIndexOf(".")) + ".html";
PDDocument document=PDDocument.load(new File(pdfPath));
Writer writer=new PrintWriter(path, "UTF-8");
new PDFDomTree().writeText(document, writer);
writer.close();
document.close();
}
圖片版PDF文件驗(yàn)證結(jié)果:
文字版PDF文件驗(yàn)證結(jié)果:
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。