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