91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python實現PDF轉換文本

發布時間:2021-10-11 21:22:26 來源:億速云 閱讀:254 作者:iii 欄目:開發技術

這篇文章主要介紹“如何用Python實現PDF轉換文本”,在日常操作中,相信很多人在如何用Python實現PDF轉換文本問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何用Python實現PDF轉換文本”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目錄
  • 一、前言

    • 1.1、為什么不使用傳統的pdf 轉文本工具呢?

  • 二、實現過程

    • 2.1、基于深度學習的 OCR 將 pdf 為文本

      • 2.1.1、將 pdf 轉換為圖像

      • 2.1.2、檢測和識別圖像中的文本

      • 2.1.3、示例輸出

一、前言

對很多人來說,將PDF轉換為可編輯的文本是個剛需,卻苦于沒有簡單的方法。發現 pdf 幻燈片,效果還不錯。

傳統的講座通常伴隨有很多pdf幻燈片。一般來說,想要對自己的講座做筆記,需要從pdf復制、補充大量內容。

最近,來自 K1 Digital 的高級機器工程師 Lucas Soares 一直在嘗試通過使用 CR(光學字符識別)自動 pdf 幻燈片,以便直接在 Markdown 文件中操作它們的內容,從而避免手動復制和粘貼 pdf 內容,實現這個過程的自動化。

如何用Python實現PDF轉換文本

圖為項目作者盧卡斯·蘇亞雷斯。

1.1、為什么不使用傳統的pdf 轉文本工具呢?

Lucas Soares 發現傳統工具往往會帶來更多的問題,需要花時間解決。他曾嘗試使用傳統的 Python 軟件包,但遇到了很多問題(例如必須使用復雜的正則表達式模式解析最終輸出等),因此決定嘗試使用目標檢測和 OCR 來解決。

二、實現過程

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

  • 將 pdf 轉換為圖片;

  • 檢測和識別圖像中的文本;

  • 展示示例輸出。

2.1、基于深度學習的 OCR 將 pdf 為文本

2.1.1、將 pdf 轉換為圖像

Soares 使用的 pdf 幻燈片來自于 David Silver 的增長學習(參見以下 pdf 幻燈片地址)。使用「pdf2image」包將每張幻燈片轉換為 png 圖像格式。

如何用Python實現PDF轉換文本

pdf 幻燈片示例。

地址:https://www.davidsilver.uk/wp-content/uploads/2020/03/intro_RL.pdf

代碼如下:

from pdf2image import convert_from_path
from pdf2image.exceptions import (
 PDFInfoNotInstalledError,
 PDFPageCountError,
 PDFSyntaxError
)
pdf_path = "path/to/file/intro_RL_Lecture1.pdf"
images = convert_from_path(pdf_path)
for i, image in enumerate(images):
    fname = "image" + str(i) + ".png"
    image.save(fname, "PNG")

經過處理后,所有的pdf幻燈片都轉換成png格式的圖片:

如何用Python實現PDF轉換文本

2.1.2、檢測和識別圖像中的文本

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

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

代碼如下:

# adapted from this source: https://github.com/courao/ocr.pytorch
%load_ext autoreload
%autoreload 2
import os
from ocr import ocr
import time
import shutil
import numpy as np
import pathlib
from PIL import Image
from glob import glob
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
import pytesseract
def single_pic_proc(image_file):
    image = np.array(Image.open(image_file).convert('RGB'))
    result, image_framed = ocr(image)
    return result,image_framed
image_files = glob('./input_images/*.*')
result_dir = './output_images_with_boxes/'
# If the output folder exists we will remove it and redo it.
if os.path.exists(result_dir):
    shutil.rmtree(result_dir)
os.mkdir(result_dir)
for image_file in sorted(image_files):
    result, image_framed = single_pic_proc(image_file) # detecting and recognizing the text
    filename = pathlib.Path(image_file).name
    output_file = os.path.join(result_dir, image_file.split('/')[-1])
    txt_file = os.path.join(result_dir, image_file.split('/')[-1].split('.')[0]+'.txt')
    txt_f = open(txt_file, 'w')
    Image.fromarray(image_framed).save(output_file)
    for key in result:
        txt_f.write(result[key][1]+'\n')
    txt_f.close()

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

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

2.1.3、示例輸出

代碼如下:

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

下圖左為原始pdf 幻燈片,圖右為腦后的輸出文本,準確率非常高。

如何用Python實現PDF轉換文本

文本識別輸出如下:

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

通過上述方法,最終可以得到一個非常強大的工具來討論文檔,從檢測和識別手寫筆記到檢測和識別照片中的隨機。

擁有文本的 OCR 工具來處理一些文本內容,這比依賴外部軟件來說明文檔要好得多。

到此,關于“如何用Python實現PDF轉換文本”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

绥棱县| 贺州市| 阿克陶县| 醴陵市| 巫山县| 丰都县| 垣曲县| 博湖县| 新沂市| 黄大仙区| 盐津县| 镇赉县| 二连浩特市| 鄂伦春自治旗| 临泉县| 五大连池市| 乐都县| 托里县| 繁峙县| 乌鲁木齐市| 阜宁县| 稷山县| 自治县| 株洲县| 安庆市| 黔江区| 响水县| 红桥区| 客服| 赣榆县| 漳平市| 额尔古纳市| 五家渠市| 蓬安县| 泰兴市| 定边县| 宿松县| 泽普县| 治县。| 高清| 天台县|