Spaces:
Sleeping
Sleeping
File size: 2,817 Bytes
ae57e90 853d071 429de26 ae57e90 22ed668 dcc2b56 ae57e90 429de26 0320019 ae57e90 0320019 ae57e90 0320019 ae57e90 0320019 ae57e90 0320019 ae57e90 0320019 ae57e90 0320019 ae57e90 0320019 ae57e90 0320019 ae57e90 0320019 ae57e90 00d92ac ae57e90 00d92ac ae57e90 00d92ac |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
import gradio as gr
import tensorflow as tf
import requests
import os
import numpy as np
import pandas as pd
import huggingface_hub
from huggingface_hub import Repository
from datetime import datetime
import scipy.ndimage.interpolation as inter
import datasets
from datasets import load_dataset, Image
from PIL import Image
from paddleocr import PaddleOCR
from doctr.io import DocumentFile
os.environ["CUDA_VISIBLE_DEVICES"] = "0" # Use GPU 0, adjust if needed
os.environ["TF_FORCE_GPU_ALLOW_GROWTH"] = "true"
from doctr.models import ocr_predictor
model = ocr_predictor(det_arch='db_resnet50', reco_arch='crnn_vgg16_bn', pretrained=True)
"""
Perform OCR with doctr
"""
def ocr_with_doctr(file):
text_output = ''
# Load the document
doc = DocumentFile.from_pdf(file)
# Perform OCR
result = ocr_model(doc)
# Extract text from OCR result
for page in result.pages:
for block in page.blocks:
for line in block.lines:
text_output += " ".join([word.value for word in line.words]) + "\n"
return text_output
"""
Paddle OCR
"""
def ocr_with_paddle(img):
finaltext = ''
ocr = PaddleOCR(lang='en', use_angle_cls=True, use_gpu=True)
# img_path = 'exp.jpeg'
result = ocr.ocr(img)
for i in range(len(result[0])):
text = result[0][i][1][0]
finaltext += ' '+ text
return finaltext
def generate_ocr(Method, file):
text_output = ''
if isinstance(file, bytes): # Handle file uploaded as bytes
file = io.BytesIO(file)
if file.name.endswith('.pdf'):
# Perform OCR on the PDF using doctr
text_output = ocr_with_doctr(file)
else:
# Handle image file
img_np = np.array(Image.open(file))
text_output = generate_text_from_image(Method, img_np)
return text_output
def generate_text_from_image(Method, img):
text_output = ''
if Method == 'PaddleOCR':
text_output = ocr_with_paddle(img)
return text_output
import gradio as gr
image_or_pdf = gr.File(label="Upload an image or PDF")
method = gr.Radio(["PaddleOCR"], value="PaddleOCR")
output = gr.Textbox(label="Output")
demo = gr.Interface(
generate_ocr,
[method, image_or_pdf],
output,
title="Optical Character Recognition",
css=".gradio-container {background-color: lightgray} #radio_div {background-color: #FFD8B4; font-size: 40px;}",
article="""<p style='text-align: center;'>Feel free to give us your thoughts on this demo and please contact us at
<a href="mailto:[email protected]" target="_blank">[email protected]</a>
<p style='text-align: center;'>Developed by: <a href="https://www.pragnakalp.com" target="_blank">Pragnakalp Techlabs</a></p>"""
)
demo.launch(share=True)
|