通過TensorFlow 2&Pytorch提供的任何人都可以無縫且可訪問光學角色識別
您可以從這個存儲庫中期望的是:

端到端的OCR是在Doctr中使用兩階段方法實現的:文本檢測(本地化單詞),然後使用文本識別(識別單詞中的所有字符)。因此,您可以從可用實現列表中選擇用於文本檢測的體系結構,也可以選擇用於文本識別的架構。
from doctr . models import ocr_predictor
model = ocr_predictor ( det_arch = 'db_resnet50' , reco_arch = 'crnn_vgg16_bn' , pretrained = True )可以從PDF或圖像解釋文檔:
from doctr . io import DocumentFile
# PDF
pdf_doc = DocumentFile . from_pdf ( "path/to/your/doc.pdf" )
# Image
single_img_doc = DocumentFile . from_images ( "path/to/your/img.jpg" )
# Webpage (requires `weasyprint` to be installed)
webpage_doc = DocumentFile . from_url ( "https://www.yoursite.com" )
# Multiple page images
multi_img_doc = DocumentFile . from_images ([ "path/to/page1.jpg" , "path/to/page2.jpg" ])讓我們使用默認預定的模型進行示例:
from doctr . io import DocumentFile
from doctr . models import ocr_predictor
model = ocr_predictor ( pretrained = True )
# PDF
doc = DocumentFile . from_pdf ( "path/to/your/doc.pdf" )
# Analyze
result = model ( doc )如果您在包含旋轉頁面或具有多個盒子方向的頁面的文檔上使用Doctr,則有多種選擇來處理:
如果您僅使用帶直詞的直檔頁面(水平,相同的讀取方向),請考慮將assume_straight_boxes=True傳遞給ocr_predictor。它將直接適合您的頁面上的直箱,然後返回直箱,這使其成為最快的選項。
如果您希望預測器輸出直框(無論您的頁面的方向如何,最終的本地化都將轉換為直框),則需要在預測器中傳遞export_as_straight_boxes=True 。否則,如果assume_straight_pages=False ,它將返迴旋轉的邊界框(可能為0°角)。
如果兩個選項都設置為false,則預測器將始終適合併返迴旋轉的框。
為了解釋模型的預測,您可以按以下方式進行交互可視化它們:
# Display the result (requires matplotlib & mplcursors to be installed)
result . show ()
甚至從其預測中重建原始文檔:
import matplotlib . pyplot as plt
synthetic_pages = result . synthesize ()
plt . imshow ( synthetic_pages [ 0 ]); plt . axis ( 'off' ); plt . show ()
ocr_predictor返回帶有嵌套結構的Document對象(帶有Page , Block , Line , Word , Artefact )。要更好地了解我們的文檔模型,請檢查我們的文檔:
您還可以將它們導出為嵌套的dict,更適合JSON格式:
json_output = result . export ()與OCR相比,KIE預測變量是一個更靈活的預測指標,因為您的檢測模型可以檢測文檔中的多個類。例如,您可以擁有一個檢測模型來檢測文檔中的日期和地址。
KIE預測指標使使用識別模型多個類的檢測器可以使用探測器,並可以為您設置整個管道。
from doctr . io import DocumentFile
from doctr . models import kie_predictor
# Model
model = kie_predictor ( det_arch = 'db_resnet50' , reco_arch = 'crnn_vgg16_bn' , pretrained = True )
# PDF
doc = DocumentFile . from_pdf ( "path/to/your/doc.pdf" )
# Analyze
result = model ( doc )
predictions = result . pages [ 0 ]. predictions
for class_name in predictions . keys ():
list_predictions = predictions [ class_name ]
for prediction in list_predictions :
print ( f"Prediction for { class_name } : { prediction } " )每個頁面的Kie預測結果以字典格式為單詞格式,每個鍵代表一個類名稱,其值是該類的預測。

需要安裝Python 3.10(或更高)和PIP。
然後,您可以使用PYPI安裝包裝的最新版本,如下所示:
pip install python-doctr
配x 請注意,基本安裝不是獨立的,因為它沒有提供深度學習框架,這是包裝運行所必需的。
我們試圖將特定於框架的依賴項保持在最低限度。您可以按以下方式安裝特定於框架的構建:
# for TensorFlow
pip install " python-doctr[tf] "
# for PyTorch
pip install " python-doctr[torch] "
# optional dependencies for visualization, html, and contrib modules can be installed as follows:
pip install " python-doctr[torch,viz,html,contib] "對於帶有M1芯片的MacBook,您將需要一些其他軟件包或特定版本:
另外,您可以從源安裝它,這將需要您安裝git。首先克隆項目存儲庫:
git clone https://github.com/mindee/doctr.git
pip install -e doctr/.同樣,如果您希望避免丟失依賴關係的風險,則可以安裝TensorFlow或Pytorch構建:
# for TensorFlow
pip install -e doctr/.[tf]
# for PyTorch
pip install -e doctr/.[torch]學分應得的:該存儲庫正在實施發表的研究論文中的架構。
完整的軟件包文檔可在此處提供詳細規格。
為您提供最小的演示應用程序,以便您使用我們的端到端OCR模型!

禮貌?擁抱臉?一探究竟
如果您希望在本地使用它,則需要額外的依賴性(簡化)。
pip install -r demo/tf-requirements.txt然後在默認瀏覽器中運行您的應用程序:
USE_TF=1 streamlit run demo/app.pypip install -r demo/pt-requirements.txt然後在默認瀏覽器中運行您的應用程序:
USE_TORCH=1 streamlit run demo/app.py您不想讓您的演示實際運行Python,而是希望在Web瀏覽器中運行所有內容嗎?查看我們的TensorFlow.js演示以開始!

我們提供Docker容器支持,以易於測試和部署。這是可用的碼頭標籤。
Doctr docker圖像已經準備就緒,並且基於CUDA 12.2 。確保您的主機至少為12.2 ,否則火炬或Tensorflow將無法初始化GPU。請確保將Docker配置為使用GPU。
要驗證和配置Docker的GPU支持,請遵循NVIDIA容器工具包安裝指南中提供的說明。
一旦將Docker配置為使用GPU,您就可以以GPU支持運行Doctr Docker容器:
docker run -it --gpus all ghcr.io/mindee/doctr:torch-py3.9.18-2024-10 bashDoctr的Docker映像遵循特定的標籤命名: <deps>-py<python_version>-<doctr_version|YYYY-MM> 。這是標籤結構的分解:
<deps> : tf , torch , tf-viz-html-contrib或torch-viz-html-contrib 。<python_version> : 3.9.18或3.11.8 3.10.13<doctr_version> :標籤> = v0.11.0<YYYY-MM> :例如2014-10以下是不同圖像標籤的示例:
| 標籤 | 描述 |
|---|---|
tf-py3.10.13-v0.11.0 | TensorFlow版本3.10.13帶有Doctr v0.11.0 。 |
torch-viz-html-contrib-py3.11.8-2024-10 | 具有額外依賴性的火炬版本3.11.8來自2024-10 main上的最新提交。 |
torch-py3.11.8-2024-10 | Pytorch版本3.11.8來自2024-10 main的最新提交。 |
您還可以在計算機上本地構建Doctr Docker圖像。
docker build -t doctr .您可以使用構建參數指定自定義Python版本和Doctr版本。例如,要構建使用TensorFlow,Python版本3.9.10和Doctr版本v0.7.0構建Doctr映像,請運行以下命令:
docker build -t doctr --build-arg FRAMEWORK=tf --build-arg PYTHON_VERSION=3.9.10 --build-arg DOCTR_VERSION=v0.7.0 .提供了一個示例腳本,用於簡單的文檔分析PDF或圖像文件:
python scripts/analyze.py path/to/your/doc.pdf所有腳本參數均可使用python scripts/analyze.py --help
希望將學說集成到您的API中?這是一個模板,可讓您使用出色的FastAPI框架開始使用完全工作的API。
運行API模板需要特定依賴項,您可以按以下方式安裝:
cd api/
pip install poetry
make lock
pip install -r requirements.txt您現在可以在本地運行API:
uvicorn --reload --workers 1 --host 0.0.0.0 --port=8002 --app-dir api/ app.main:app另外,如果您願意使用:
PORT=8002 docker-compose up -d --build您的API現在應該在端口8002上本地運行。訪問您的自動構建文檔,請訪問http:// localhost:8002/redoc,並享受您的三個功能路線(“/dintection”,“/nesutition”,“/nesutition”,“/ofcr”,“/ocr”,“,”,“/kie”)。這是Python的一個示例,可以將請求發送到OCR路線:
import requests
params = { "det_arch" : "db_resnet50" , "reco_arch" : "crnn_vgg16_bn" }
with open ( '/path/to/your/doc.jpg' , 'rb' ) as f :
files = [ # application/pdf, image/jpeg, image/png supported
( "files" , ( "doc.jpg" , f . read (), "image/jpeg" )),
]
print ( requests . post ( "http://localhost:8080/ocr" , params = params , files = files ). json ())在尋找更多關於Doctr功能的插圖嗎?您可能需要查看旨在為您提供更廣泛概述的Jupyter筆記本電腦。
如果您想引用此項目,請隨時使用此Bibtex參考:
@misc { doctr2021 ,
title = { docTR: Document Text Recognition } ,
author = { Mindee } ,
year = { 2021 } ,
publisher = { GitHub } ,
howpublished = { url{https://github.com/mindee/doctr} }
}如果您向下滾動到本節,您很可能會感謝開源。您是否想擴展我們支持角色的範圍?還是提交論文實施?還是以其他任何方式做出貢獻?
您很幸運,我們編寫了一個簡短的指南(參見CONTRIBUTING )供您輕鬆完成!
根據Apache 2.0許可分發。有關更多信息,請參見LICENSE 。