|
from codecs import encode, decode |
|
import requests |
|
import gradio as gr |
|
|
|
|
|
def infer(im): |
|
im.save("converted.png") |
|
url = "https://ajax.thehive.ai/api/demo/classify?endpoint=text_recognition" |
|
files = { |
|
"image": ("converted.png", open("converted.png", "rb"), "image/png"), |
|
"model_type": (None, "detection"), |
|
"media_type": (None, "photo"), |
|
} |
|
headers = {"referer": "https://thehive.ai/"} |
|
|
|
res = requests.post(url, headers=headers, files=files) |
|
|
|
text = "" |
|
blocks = [] |
|
for output in res.json()["response"]["output"]: |
|
text += output["block_text"] |
|
for poly in output["bounding_poly"]: |
|
blocks.append( |
|
{ |
|
"text": "".join([c["class"] for c in poly["classes"]]), |
|
"rect": poly["dimensions"], |
|
} |
|
) |
|
|
|
text = decode(encode(text, "latin-1", "backslashreplace"), "unicode-escape") |
|
|
|
return text, blocks |
|
|
|
|
|
iface = gr.Interface( |
|
fn=infer, |
|
title="OCR_Hive", |
|
description="Demo for OCR_Hive. Transcribe and analyze media depicting typed, written, or graphic text", |
|
inputs=[gr.Image(type="pil")], |
|
outputs=["text", "json"], |
|
examples=["202306.jpg"], |
|
article='<a href="https://thehive.ai/hive-ocr-solutions">Sample OCR</a>', |
|
).launch() |