成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

太方便了!告別復(fù)制粘貼,Python 輕松實(shí)現(xiàn) PDF 轉(zhuǎn)文本!

開發(fā) 后端
在本文介紹的項(xiàng)目中,來自 K1 Digital 的高級(jí)機(jī)器學(xué)習(xí)工程師 Lucas Soares,嘗試使用 OCR(光學(xué)字符識(shí)別)自動(dòng)轉(zhuǎn)錄 pdf 幻燈片,轉(zhuǎn)錄效果還不錯(cuò)。

對(duì)很多人來說,將 PDF 轉(zhuǎn)換為可編輯的文本是個(gè)剛需,卻苦于沒有簡單方法。在本文介紹的項(xiàng)目中,來自 K1 Digital 的高級(jí)機(jī)器學(xué)習(xí)工程師 Lucas Soares,嘗試使用 OCR(光學(xué)字符識(shí)別)自動(dòng)轉(zhuǎn)錄 pdf 幻燈片,轉(zhuǎn)錄效果還不錯(cuò)。

傳統(tǒng)的講座通常伴隨著一組 pdf 幻燈片。一般來說,想要對(duì)此類講座做筆記,需要從 pdf 復(fù)制、粘貼很多內(nèi)容。

最近,來自 K1 Digital 的高級(jí)機(jī)器學(xué)習(xí)工程師 Lucas Soares 一直在嘗試通過使用 OCR(光學(xué)字符識(shí)別)自動(dòng)轉(zhuǎn)錄 pdf 幻燈片,以便直接在 markdown 文件中操作它們的內(nèi)容,從而避免手動(dòng)復(fù)制和粘貼 pdf 內(nèi)容,實(shí)現(xiàn)這一過程的自動(dòng)化。

左為項(xiàng)目作者 Lucas Soares。

項(xiàng)目地址:https://github.com/EnkrateiaLucca/ocr_for_transcribing_pdf_slides

為什么不使用傳統(tǒng)的 pdf 轉(zhuǎn)文本工具呢?

Lucas Soares 發(fā)現(xiàn)傳統(tǒng)工具往往會(huì)帶來更多的問題,需要花時(shí)間解決。他曾經(jīng)嘗試使用傳統(tǒng)的 Python 軟件包,但是遇到了很多問題(例如必須使用復(fù)雜的正則表達(dá)式模式解析最終輸出等),因此決定嘗試使用目標(biāo)檢測和 OCR 來解決。

基本過程可分為以下步驟:

  •  將 pdf 轉(zhuǎn)換為圖片;
  •  檢測和識(shí)別圖像中的文本;
  •  展示示例輸出。

基于深度學(xué)習(xí)的 OCR 將 pdf 轉(zhuǎn)錄為文本

將 pdf 轉(zhuǎn)換為圖像

Soares 使用的 pdf 幻燈片來自于 David Silver 的增強(qiáng)學(xué)習(xí)(參見以下 pdf 幻燈片地址)。使用「pdf2image」包將每張幻燈片轉(zhuǎn)換為 png 圖像格式。

pdf 幻燈片示例。地址:https://www.davidsilver.uk/wp-content/uploads/2020/03/intro_RL.pdf

代碼如下: 

  1. from pdf2image import convert_from_path  
  2. from pdf2image.exceptions import (  
  3.  PDFInfoNotInstalledError,  
  4.  PDFPageCountError,  
  5.  PDFSyntaxError  
  6.  
  7. pdf_path = "path/to/file/intro_RL_Lecture1.pdf"  
  8. images = convert_from_path(pdf_path)  
  9. for i, image in enumerate(images):  
  10.     fname = "image" + str(i) + ".png"  
  11.     image.save(fname, "PNG") 

經(jīng)過處理后,所有的 pdf 幻燈片都轉(zhuǎn)換成 png 格式的圖像:

檢測和識(shí)別圖像中的文本

為了檢測和識(shí)別 png 圖像中的文本,Soares 使用 ocr.pytorch 庫中的文本檢測器。按照說明下載模型并將模型保存在 checkpoints 文件夾中。

ocr.pytorch 庫地址:https://github.com/courao/ocr.pytorch

代碼如下: 

  1. # adapted from this source: https://github.com/courao/ocr.pytorch  
  2. %load_ext autoreload  
  3. %autoreload 2  
  4. import os  
  5. from ocr import ocr 
  6. import time  
  7. import shutil  
  8. import numpy as np  
  9. import pathlib  
  10. from PIL import Image  
  11. from glob import glob  
  12. import matplotlib.pyplot as plt  
  13. import seaborn as sns  
  14. sns.set()  
  15. import pytesseract  
  16. def single_pic_proc(image_file):  
  17.     image = np.array(Image.open(image_file).convert('RGB'))  
  18.     result, image_framed = ocr(image)  
  19.     return result,image_framed  
  20. image_files = glob('./input_images/*.*')  
  21. result_dir = './output_images_with_boxes/'  
  22. # If the output folder exists we will remove it and redo it.  
  23. if os.path.exists(result_dir):  
  24.     shutil.rmtree(result_dir)  
  25. os.mkdir(result_dir) 
  26. for image_file in sorted(image_files):  
  27.     result, image_framed = single_pic_proc(image_file) # detecting and recognizing the text  
  28.     filename = pathlib.Path(image_file).name 
  29.     output_file = os.path.join(result_dir, image_file.split('/')[-1])  
  30.     txt_file = os.path.join(result_dir, image_file.split('/')[-1].split('.')[0]+'.txt')  
  31.     txt_f = open(txt_file, 'w')  
  32.     Image.fromarray(image_framed).save(output_file)  
  33.     for key in result:  
  34.         txt_f.write(result[key][1]+'\n')  
  35.     txt_f.close() 

設(shè)置輸入和輸出文件夾,接著遍歷所有輸入圖像(轉(zhuǎn)換后的 pdf 幻燈片),然后通過 single_pic_proc() 函數(shù)運(yùn)行 OCR 模塊中的檢測和識(shí)別模型,最后將輸出保存到輸出文件夾。

其中檢測繼承(inherit)了 Pytorch CTPN 模型,識(shí)別繼承了 Pytorch CRNN 模型,兩者都存在于 OCR 模塊中。

示例輸出

代碼如下: 

  1. import cv2 as cv  
  2. output_dir = pathlib.Path("./output_images_with_boxes")  
  3. image = cv.imread(str(np.random.choice(list(output_dir.iterdir()),1)[0]))  
  4. image = cv.imread(f"{output_dir}/image7.png")  
  5. size_reshaped = (int(image.shape[1]),int(image.shape[0]))  
  6. image = cv.resize(image, size_reshaped) 
  7. cv.imshow("image", image)  
  8. cv.waitKey(0)  
  9. cv.destroyAllWindows() 

下圖左為原始 pdf 幻燈片,圖右為轉(zhuǎn)錄后的輸出文本,轉(zhuǎn)錄后的準(zhǔn)確率非常高。

文本識(shí)別輸出如下: 

  1. filename = f"{output_dir}/image7.txt"  
  2. with open(filename, "r") as text:  
  3.     for line in text.readlines():  
  4.         print(line.strip("\n")) 

通過上述方法,最終你可以得到一個(gè)非常強(qiáng)大的工具來轉(zhuǎn)錄各種文檔,從檢測和識(shí)別手寫筆記到檢測和識(shí)別照片中的隨機(jī)文本。擁有自己的 OCR 工具來處理一些文本內(nèi)容,這比依賴外部軟件來轉(zhuǎn)錄文檔要好的多。 

 

責(zé)任編輯:龐桂玉 來源: 菜鳥學(xué)Python
相關(guān)推薦

2021-06-02 10:21:45

深度學(xué)習(xí)編程人工智能

2020-09-14 17:10:16

微信搜索移動(dòng)應(yīng)用

2024-09-27 15:24:15

Spring數(shù)據(jù)加解密

2021-08-29 07:43:43

CopyQ操作系統(tǒng)微軟

2019-10-14 09:37:48

PC電腦PC軟件網(wǎng)頁

2022-07-15 14:26:36

開源工具IP

2023-09-26 07:39:21

2012-07-03 15:04:22

程序員

2021-09-24 15:00:26

微信PC電腦移動(dòng)應(yīng)用

2019-07-24 10:50:56

Python 開發(fā)編程語言

2018-07-03 13:17:00

2025-03-03 00:00:55

Spring文件下載開發(fā)

2011-08-31 13:43:10

windows8

2020-10-29 15:17:49

代碼開發(fā)工具

2019-07-12 14:00:55

xclipLinux命令行

2022-09-14 10:16:12

MyBatis加密解密

2024-04-15 00:00:02

OpenAI模型性能

2022-09-02 14:37:46

復(fù)制粘貼Pythonexe

2021-02-08 11:46:17

Python自動(dòng)化郵件

2020-08-27 19:30:39

Chrome瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: av黄色在线 | 日韩av第一页 | 久久久新视频 | 久久99精品久久久久蜜桃tv | av看看| 欧美 日韩 亚洲91麻豆精品 | 久久精品免费看 | 亚州成人 | 久久99精品国产麻豆婷婷 | 日本一区二区不卡 | 日韩中文字幕网 | 午夜影院视频在线观看 | 免费观看黄色一级片 | 视频一区二区中文字幕 | 天堂久久久久久久 | 中文字幕视频在线观看免费 | 黄色免费网站在线看 | 日韩美女爱爱 | 国产精品高潮呻吟久久 | 国产一二区免费视频 | 欧美日韩1区2区3区 欧美久久一区 | av片在线免费看 | 欧美精品久久久久久 | 夜夜爽99久久国产综合精品女不卡 | 日韩高清成人 | 91pao对白在线播放 | 亚洲精品粉嫩美女一区 | 欧美日韩久久 | 伊人精品在线视频 | 91精品国产综合久久久久久蜜臀 | 欧美精品一区二区三区在线播放 | 亚洲精品91 | 日韩精品一区二区三区四区视频 | 午夜免费观看体验区 | 亚洲精品久 | 91在线精品一区二区 | 久久久久久亚洲 | 91视频在线看 | 久国产| 天天躁日日躁狠狠躁白人 | 91精品久久久久久久久久小网站 |