在Python/ target=_blank class=infotextkey>Python中,可以使用多種庫和工具來識別圖片中的文本。其中,比較常用的是Tesseract OCR和Pytesseract庫。下面將介紹如何使用Python和Pytesseract庫來識別圖片中的文本,并將其整理成word、txt和markdown格式的文件。
1. 安裝和配置Pytesseract庫
Pytesseract是Python的一個OCR庫,它是Tesseract OCR引擎的Python封裝。在使用Pytesseract之前,需要先安裝Tesseract OCR引擎和Pytesseract庫。可以使用以下命令在linux系統中安裝Tesseract OCR和Pytesseract庫:
sudo apt-get install tesseract-ocr
sudo apt-get install libtesseract-dev
pip install pytesseract
在windows系統中,可以從Tesseract OCR的官方網站(
https://Github.com/UB-Mannheim/tesseract/wiki)下載安裝包,然后使用以下命令安裝Pytesseract庫:
pip install pytesseract
2. 識別圖片中的文本
使用Pytesseract庫識別圖片中的文本非常簡單。首先,需要導入pytesseract模塊和PIL模塊(用于打開和處理圖片)。然后,可以使用
pytesseract.image_to_string()函數來識別圖片中的文本。以下是一個簡單的示例:
import pytesseract
from PIL import Image
# 打開圖片
img = Image.open('example.png')
# 識別圖片中的文本
text = pytesseract.image_to_string(img, lang='eng')
# 打印識別的文本
print(text)
在上面的示例中,
pytesseract.image_to_string()函數接受兩個參數:要識別的圖片和語言選項。默認情況下,Pytesseract使用英語語言模型進行識別。如果需要識別其他語言,可以將lang參數設置為對應的語言代碼。
3. 整理識別的文本
在將識別的文本整理成word、txt和markdown格式的文件之前,需要先對識別的文本進行處理和清洗,以確保輸出的文件格式正確。以下是一些常用的文本處理和清洗操作:
- 去除多余的空格和換行符
- 將文本按照段落進行分割
- 將文本按照句子進行分割
- 刪除無用的字符和標點符號
- 將文本轉換為小寫字母(可選)
- ...
下面是一個示例代碼,將識別的文本整理成txt格式的文件:
import pytesseract
from PIL import Image
# 打開圖片
img = Image.open('example.png')
# 識別圖片中的文本
text = pytesseract.image_to_string(img, lang='eng')
# 去除多余的空格和換行符
text = ' '.join(text.split())
text = text.replace('n', ' ')
# 將文本按照段落進行分割
paragraphs = text.split('nn')
# 創建txt文件并寫入文本
with open('example.txt', 'w') as f:
for p in paragraphs:
f.write(p + 'nn')
將識別的文本整理成word、markdown格式的文件也類似,只需要將輸出格式從txt改為對應的格式,然后使用相應的庫或工具來生成文件即可。
4. 完整代碼
下面是一個完整的示例代碼,將識別的文本整理成word、txt格式的文件:
import pytesseract
from PIL import Image
import docx
import os
# 打開圖片
img = Image.open('example.png')
# 識別圖片中的文本
text = pytesseract.image_to_string(img, lang='eng')
# 去除多余的空格和換行符
text = ' '.join(text.split())
text = text.replace('n', ' ')
# 將文本按照段落進行分割
paragraphs = text.split('nn')
# 將文本整理成word格式的文件
doc = docx.Document()
for p in paragraphs:
doc.add_paragraph(p)
doc.save('example.docx')
# 將文本整理成txt格式的文件
with open('example.txt', 'w') as f:
for p in paragraphs:
f.write(p + 'nn')
# 打開生成的文件
os.system('start example.docx')
os.system('start example.txt')
在上面的代碼中,使用了Python的docx庫來生成word格式的文件。在生成文件之后,使用os模塊打開文件。在Windows系統中,可以使用os.system()函數來打開文件。在其他操作系統中,可能需要使用其他方式來打開文件。