Я использую Api Python для облачного видения Google, чтобы сканировать документ, чтобы прочитать текст из него.Документ представляет собой счет-фактуру, которая содержит данные клиента и таблицы.Преобразование данных в текстовые данные работает отлично.Однако данные не отсортированы.Я не могу найти способ сортировки данных, потому что мне нужно извлечь из него несколько значений.И данные, которые я хочу извлечь, иногда находятся в другом положении, что затрудняет их извлечение.
https://cloud.google.com/vision/docs/fulltext-annotations
Вот мой код Python:
import io
import os
from google.cloud import vision
from google.cloud.vision import types
import glob
def scan_img(image_file):
with io.open(image_file, 'rb') as image_file:
content = image_file.read()
image = types.Image(content=content)
response = client.document_text_detection(image=image)
document = response.full_text_annotation
img_out_array = document.text.split("\n")
invoice_no_raw = ""
invoice_date_raw = ""
net_total_idx = ""
customer_name_index = ""
for index, line in enumerate(img_out_array):
if "Invoice No" in line:
invoice_no_raw = line
if "Customer Name" in line:
index += 6
customer_name_index = index
if "Date :" in line:
invoice_date_raw = line
if "Our Bank details" in line:
index -= 1
net_total_idx = index
net_total_sales_raw = img_out_array[net_total_idx]
customer_name_raw = img_out_array[customer_name_index]
print("Raw data:: ", invoice_no_raw, invoice_date_raw, customer_name_raw, img_out_array[net_total_idx])
invoice_no = invoice_no_raw.split(":")[1]
invoice_date = invoice_date_raw.split(":")[1]
customer_name = customer_name_raw.replace("..", "")
net_total_sales = net_total_sales_raw.split(" ")[-1]
return [invoice_no, invoice_date, customer_name, net_total_sales]
if __name__ == '__main__':
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] =
"path/to/imgtotext.json"
client = vision.ImageAnnotatorClient()
images = glob.glob("/path/Documents/invoices/*.jpg")
for image in images:
print("scanning the image:::::" + image)
invoice_no, invoice_date, customer_name, net_total_sales =
scan_img(image)
print("Formatted data:: ", invoice_no, invoice_date,
customer_name, net_total_sales)
вывод документа 1:
Customer Name
Address
**x customer**
area name
streetname
Customer LPO
вывод документа 2:
Customer LPO
**y customer**
area name
streetname
LPO Date
Payment Terms
Customer Name
Address
Delivery Location
Пожалуйста, совет, я хочу прочитать x и y клиента, и это местоположениеменяется от документа к документу, и у меня есть несколько документов.Как структурировать и читать данные.
There are other several fields which I'm able successfully read it.
Заранее спасибо.