Trí thông minh dữ liệu tạo

Cách trích xuất dữ liệu từ hóa đơn bằng Python: Hướng dẫn từng bước

Ngày:

Trong môi trường kinh doanh phát triển nhanh ngày nay, việc xử lý hóa đơn và thanh toán là một nhiệm vụ quan trọng đối với các công ty thuộc mọi quy mô.

Hóa đơn chứa thông tin quan trọng như chi tiết về khách hàng và nhà cung cấp, thông tin đặt hàng, giá cả, thuế và điều khoản thanh toán.

Việc quản lý trích xuất dữ liệu hóa đơn theo cách thủ công có thể phức tạp và tốn thời gian, đặc biệt đối với khối lượng hóa đơn lớn.

Chẳng hạn, doanh nghiệp có thể nhận hóa đơn ở nhiều định dạng khác nhau như giấy, email, PDF hoặc trao đổi dữ liệu điện tử (EDI). Ngoài ra, hóa đơn có thể chứa dữ liệu có cấu trúc, chẳng hạn như bảng, cũng như dữ liệu phi cấu trúc, chẳng hạn như mô tả văn bản tự do, biểu trưng và hình ảnh.

Việc trích xuất và xử lý thông tin này theo cách thủ công có thể dễ xảy ra lỗi, dẫn đến chậm trễ, không chính xác và bỏ lỡ cơ hội.

May mắn thay, Python cung cấp một bộ công cụ mạnh mẽ và linh hoạt để tự động trích xuất và xử lý dữ liệu hóa đơn.

Trong hướng dẫn từng bước này, chúng ta sẽ khám phá cách tận dụng Python để trích xuất dữ liệu có cấu trúc và phi cấu trúc từ hóa đơn, xử lý tệp PDF và tích hợp với các mô hình máy học.

Khi kết thúc hướng dẫn này, bạn sẽ hiểu rõ về cách sử dụng Python để trích xuất thông tin chi tiết có giá trị từ dữ liệu hóa đơn, có thể giúp bạn hợp lý hóa quy trình kinh doanh, tối ưu hóa dòng tiền và đạt được lợi thế cạnh tranh trong ngành của mình. Hãy đi sâu vào.

Trước bất cứ điều gì khác, hãy hiểu hóa đơn là gì!

Hóa đơn là một tài liệu phác thảo các chi tiết của giao dịch giữa người mua và người bán, bao gồm ngày giao dịch, tên và địa chỉ của người mua và người bán, mô tả hàng hóa hoặc dịch vụ được cung cấp, số lượng mặt hàng, giá mỗi đơn vị, và tổng số tiền đến hạn.

Bất chấp sự đơn giản rõ ràng của hóa đơn, việc trích xuất dữ liệu từ chúng có thể là một quá trình phức tạp và đầy thách thức. Điều này là do hóa đơn có thể chứa cả dữ liệu có cấu trúc và dữ liệu không có cấu trúc.

Dữ liệu có cấu trúc đề cập đến dữ liệu được tổ chức theo một định dạng cụ thể, chẳng hạn như bảng hoặc danh sách. Hóa đơn thường bao gồm dữ liệu có cấu trúc ở dạng bảng phác thảo các mục hàng và số lượng hàng hóa hoặc dịch vụ được cung cấp.

Mặt khác, dữ liệu phi cấu trúc đề cập đến dữ liệu không được sắp xếp theo một định dạng cụ thể và có thể khó nhận dạng và trích xuất hơn. Hóa đơn có thể chứa dữ liệu phi cấu trúc ở dạng mô tả văn bản tự do, biểu trưng hoặc hình ảnh.

Việc trích xuất dữ liệu từ hóa đơn có thể tốn kém và có thể dẫn đến sự chậm trễ trong quá trình xử lý thanh toán, đặc biệt là khi xử lý số lượng hóa đơn lớn. Đây là nơi trích xuất dữ liệu hóa đơn.

Khai thác dữ liệu hóa đơn đề cập đến quá trình trích xuất dữ liệu có cấu trúc và phi cấu trúc từ hóa đơn. Quá trình này có thể khó khăn do có nhiều loại dữ liệu hóa đơn, nhưng có thể được tự động hóa bằng các công cụ như Python.

Như đã thảo luận, không phải mọi hóa đơn đều dễ dàng trích xuất vì chúng có các dạng và mẫu khác nhau. Dưới đây là một số thách thức mà các doanh nghiệp gặp phải khi trích xuất dữ liệu từ hóa đơn:

  • Mẫu hóa đơn đa dạng: Hóa đơn có thể có các định dạng khác nhau, bao gồm giấy, email, PDF hoặc trao đổi dữ liệu điện tử (EDI), điều này có thể gây khó khăn cho việc trích xuất và xử lý dữ liệu một cách nhất quán.
  • Chất lượng và độ chính xác của dữ liệu: Việc xử lý hóa đơn theo cách thủ công có thể dễ xảy ra lỗi, dẫn đến sự chậm trễ và thiếu chính xác trong quá trình xử lý thanh toán.
  • Khối lượng lớn dữ liệu: Nhiều doanh nghiệp phải xử lý số lượng hóa đơn lớn, nếu xử lý thủ công sẽ khó khăn và tốn thời gian.
  • Các ngôn ngữ và cỡ chữ khác nhau: Hóa đơn từ các nhà cung cấp quốc tế có thể ở các ngôn ngữ khác nhau, điều này có thể khó xử lý bằng các công cụ tự động. Tương tự, hóa đơn có thể chứa các kích thước và kiểu phông chữ khác nhau, điều này có thể ảnh hưởng đến độ chính xác của việc trích xuất dữ liệu.
  • Tích hợp với các hệ thống khác: Dữ liệu trích xuất từ ​​hóa đơn thường cần được tích hợp với các hệ thống khác, chẳng hạn như phần mềm kế toán hoặc hoạch định nguồn lực doanh nghiệp (ERP), có thể làm tăng thêm lớp phức tạp cho quy trình.

Python là ngôn ngữ lập trình phổ biến được sử dụng cho nhiều tác vụ xử lý và trích xuất dữ liệu, bao gồm trích xuất dữ liệu từ hóa đơn. Tính linh hoạt của nó làm cho nó trở thành một công cụ mạnh mẽ trong thế giới công nghệ – từ việc xây dựng các mô hình máy học và API đến tự động hóa các quy trình trích xuất hóa đơn.

Hãy xem xét ngắn gọn các thư viện Python có thể được sử dụng để trích xuất hóa đơn với các ví dụ:

Pytesseract

Pytesseract là một trình bao bọc Python dành cho công cụ OCR Tesseract của Google, đây là một trong những công cụ OCR phổ biến nhất hiện có. Pytesseract được thiết kế để trích xuất văn bản từ hình ảnh được quét, bao gồm hóa đơn và có thể được sử dụng để trích xuất các cặp khóa-giá trị cũng như thông tin văn bản khác từ phần đầu trang và chân trang của hóa đơn.

Textract là một thư viện Python có thể trích xuất văn bản và dữ liệu từ nhiều định dạng tệp, bao gồm PDF, hình ảnh và tài liệu được quét. Textract sử dụng OCR và các kỹ thuật khác để trích xuất văn bản và dữ liệu từ các tệp này và có thể được sử dụng để trích xuất văn bản và dữ liệu từ tất cả các phần của hóa đơn.

Gấu trúc

Pandas là một thư viện thao tác dữ liệu mạnh mẽ dành cho Python, cung cấp các cấu trúc dữ liệu để lưu trữ và thao tác hiệu quả các bộ dữ liệu lớn. Pandas có thể được sử dụng để trích xuất và thao tác dữ liệu dạng bảng từ phần mục hàng của hóa đơn, bao gồm mô tả sản phẩm, số lượng và giá cả.

Tabula

Tabula là một thư viện Python được thiết kế đặc biệt để trích xuất dữ liệu dạng bảng từ tệp PDF và các tài liệu khác. Tabula có thể được sử dụng để trích xuất dữ liệu từ phần mục hàng của hóa đơn, bao gồm mô tả sản phẩm, số lượng và giá cả, đồng thời có thể là giải pháp thay thế hữu ích cho các phương pháp dựa trên OCR để trích xuất dữ liệu này.

Camelot

Camelot là một thư viện Python khác có thể được sử dụng để trích xuất dữ liệu dạng bảng từ tệp PDF và các tài liệu khác, đồng thời được thiết kế đặc biệt để xử lý các cấu trúc bảng phức tạp. Camelot có thể được sử dụng để trích xuất dữ liệu từ phần mục hàng của hóa đơn và có thể là phương pháp thay thế hữu ích cho các phương pháp dựa trên OCR để trích xuất dữ liệu này.

OpenCV

OpenCV là một thư viện thị giác máy tính phổ biến dành cho Python cung cấp các công cụ và kỹ thuật để phân tích và thao tác với hình ảnh. OpenCV có thể được sử dụng để trích xuất thông tin từ hình ảnh và logo trong phần đầu trang và chân trang của hóa đơn và có thể được sử dụng cùng với các phương pháp dựa trên OCR để cải thiện độ chính xác và độ tin cậy.

Cái gối

Gối là một thư viện Python cung cấp các công cụ và kỹ thuật để làm việc với hình ảnh, bao gồm đọc, viết và thao tác với các tệp hình ảnh. Gối có thể được sử dụng để trích xuất thông tin từ hình ảnh và logo trong phần đầu trang và chân trang của hóa đơn, đồng thời có thể được sử dụng cùng với các phương pháp dựa trên OCR để cải thiện độ chính xác và độ tin cậy.

Điều quan trọng cần lưu ý là mặc dù các thư viện được đề cập ở trên là một số thư viện được sử dụng phổ biến nhất để trích xuất dữ liệu từ hóa đơn, nhưng quá trình trích xuất dữ liệu từ hóa đơn có thể phức tạp và có thể yêu cầu nhiều kỹ thuật và công cụ.

Tùy thuộc vào mức độ phức tạp của hóa đơn và thông tin cụ thể mà bạn cần trích xuất, bạn có thể cần sử dụng các thư viện và kỹ thuật bổ sung ngoài những thư viện và kỹ thuật được đề cập ở đây.

Bây giờ, trước khi đi sâu vào một ví dụ thực tế về trích xuất hóa đơn, trước tiên chúng ta hãy thảo luận về quy trình chuẩn bị dữ liệu hóa đơn để trích xuất.

Chuẩn bị dữ liệu trước khi trích xuất là một bước quan trọng trong quy trình xử lý hóa đơn vì nó có thể giúp đảm bảo rằng dữ liệu chính xác và đáng tin cậy. Điều này đặc biệt quan trọng khi xử lý khối lượng dữ liệu lớn hoặc khi làm việc với dữ liệu phi cấu trúc có thể chứa lỗi, không nhất quán hoặc các vấn đề khác có thể ảnh hưởng đến độ chính xác của quy trình trích xuất.

Một kỹ thuật quan trọng để chuẩn bị dữ liệu hóa đơn để trích xuất là làm sạch và xử lý trước dữ liệu.

Làm sạch và tiền xử lý dữ liệu liên quan đến việc xác định và sửa lỗi, sự không nhất quán và các vấn đề khác trong dữ liệu trước khi quá trình trích xuất bắt đầu. Điều này có thể liên quan đến một loạt các kỹ thuật, bao gồm:

  • Chuẩn hóa dữ liệu: Chuyển đổi dữ liệu thành một định dạng chung để có thể dễ dàng xử lý và phân tích hơn. Điều này có thể liên quan đến việc chuẩn hóa định dạng ngày, giờ và các thành phần dữ liệu khác, cũng như chuyển đổi dữ liệu thành một loại dữ liệu nhất quán, chẳng hạn như dữ liệu số hoặc phân loại.
  • làm sạch văn bản: Liên quan đến việc xóa thông tin không liên quan hoặc không liên quan khỏi dữ liệu, chẳng hạn như từ dừng, dấu chấm câu và các ký tự phi văn bản khác. Điều này có thể giúp cải thiện độ chính xác và độ tin cậy của các kỹ thuật trích xuất dựa trên văn bản, chẳng hạn như OCR và NLP.
  • Xác nhận dữ liệu: Liên quan đến việc kiểm tra dữ liệu để tìm lỗi, sự không nhất quán và các vấn đề khác có thể ảnh hưởng đến độ chính xác của quy trình trích xuất. Điều này có thể liên quan đến việc so sánh dữ liệu với các nguồn bên ngoài, chẳng hạn như cơ sở dữ liệu khách hàng hoặc danh mục sản phẩm, để đảm bảo rằng dữ liệu chính xác và cập nhật.
  • Tăng dữ liệu: Bổ sung hoặc sửa đổi dữ liệu để cải thiện độ chính xác và độ tin cậy của quá trình trích xuất. Điều này có thể liên quan đến việc thêm các nguồn dữ liệu bổ sung, chẳng hạn như mạng xã hội hoặc dữ liệu web, để bổ sung dữ liệu hóa đơn hoặc sử dụng các kỹ thuật máy học để tạo dữ liệu tổng hợp nhằm cải thiện độ chính xác của quy trình trích xuất.

Trích xuất dữ liệu từ hóa đơn là một nhiệm vụ phức tạp đòi hỏi sự kết hợp của các kỹ thuật và công cụ. Việc sử dụng một kỹ thuật hoặc thư viện đơn lẻ thường là không đủ vì mỗi hóa đơn đều khác nhau và bố cục cũng như định dạng của chúng có thể rất khác nhau. Tuy nhiên, nếu bạn có quyền truy cập vào một bộ hóa đơn được tạo bằng điện tử, bạn có thể sử dụng các kỹ thuật khác nhau như đối sánh biểu thức chính quy và trích xuất bảng để trích xuất dữ liệu từ chúng.

Ví dụ: để trích xuất bảng từ hóa đơn PDF, bạn có thể sử dụng thư viện tabula-py để trích xuất dữ liệu từ bảng trong tệp PDF. Bằng cách cung cấp khu vực của trang PDF nơi đặt bảng, bạn có thể trích xuất bảng và thao tác với nó bằng thư viện gấu trúc.

Mặt khác, hóa đơn không được tạo bằng điện tử, chẳng hạn như hóa đơn được quét hoặc dựa trên hình ảnh, yêu cầu các kỹ thuật tiên tiến hơn, bao gồm thị giác máy tính và học máy. Những kỹ thuật này cho phép nhận dạng thông minh các vùng của hóa đơn và trích xuất dữ liệu.

Một trong những lợi thế của việc sử dụng máy học để trích xuất hóa đơn là các thuật toán có thể học từ dữ liệu đào tạo. Khi thuật toán đã được đào tạo, nó có thể nhận dạng hóa đơn mới một cách thông minh mà không cần phải đào tạo lại thuật toán. Điều này có nghĩa là thuật toán có thể trích xuất dữ liệu từ hóa đơn mới một cách nhanh chóng và chính xác dựa trên dữ liệu đầu vào trước đó.

Trong phần này, hãy sử dụng biểu thức chính quy để trích xuất một số trường từ hóa đơn.

Bước 1: Nhập thư viện

Để trích xuất thông tin từ văn bản hóa đơn, chúng tôi sử dụng biểu thức chính quy và thư viện pdftotext để đọc dữ liệu từ hóa đơn PDF.

import pdftotext
import re

Bước 2: Đọc PDF

Trước tiên, chúng tôi đọc hóa đơn PDF bằng Python tích hợp sẵn open() chức năng. Đối số 'rb' mở tệp ở chế độ nhị phân, cần thiết để đọc các tệp nhị phân như PDF. Sau đó, chúng tôi sử dụng thư viện pdftotext để trích xuất nội dung văn bản từ tệp PDF.

with open('invoice.pdf', 'rb') as f:
pdf = pdftotext.PDF(f)
text = 'nn'.join(pdf)

Bước 3: Sử dụng biểu thức chính quy để khớp văn bản trên hóa đơn

Chúng tôi sử dụng các biểu thức chính quy để trích xuất số hóa đơn, tổng số tiền đến hạn, ngày lập hóa đơn và ngày đến hạn từ văn bản hóa đơn. Chúng tôi biên dịch các biểu thức chính quy bằng cách sử dụng re.compile() chức năng và sử dụng search() để tìm sự xuất hiện đầu tiên của mẫu trong văn bản. chúng tôi sử dụng group() để trích xuất văn bản phù hợp từ mẫu và strip() có chức năng xóa bất kỳ khoảng trắng đầu hoặc cuối nào khỏi văn bản phù hợp. Nếu không tìm thấy kết quả phù hợp, chúng tôi đặt giá trị tương ứng thành Không có.

invoice_number = re.search(r'Invoice Numbers*ns*n(.+?)s*n', text).group(1).strip()
total_amount_due = re.search(r'Total Dues*ns*n(.+?)s*n', text).group(1).strip() # Extract the invoice date
invoice_date_pattern = re.compile(r'Invoice Dates*ns*n(.+?)s*n')
invoice_date_match = invoice_date_pattern.search(text)
if invoice_date_match: invoice_date = invoice_date_match.group(1).strip()
else: invoice_date = None # Extract the due date
due_date_pattern = re.compile(r'Due Dates*ns*n(.+?)s*n')
due_date_match = due_date_pattern.search(text)
if due_date_match: due_date = due_date_match.group(1).strip()
else: due_date = None

Bước 4: In dữ liệu

Cuối cùng, chúng tôi in tất cả dữ liệu được trích xuất từ ​​hóa đơn.

print('Invoice Number:', invoice_number)
print('Date:', date)
print('Total Amount Due:', total_amount_due)
print('Invoice Date:', invoice_date)
print('Due Date:', due_date)

Đầu vào

sample-bill.pdf

Đầu ra

Invoice Date: January 25, 2016
Due Date: January 31, 2016
Invoice Number: INV-3337
Date: January 25, 2016
Total Amount Due: $93.50

Lưu ý rằng phương pháp được mô tả ở đây dành riêng cho cấu trúc và định dạng của hóa đơn mẫu. Trên thực tế, văn bản được trích xuất từ ​​các hóa đơn khác nhau có thể có các dạng và cấu trúc khác nhau, gây khó khăn cho việc áp dụng giải pháp một kích cỡ phù hợp cho tất cả. Để xử lý các biến thể như vậy, các kỹ thuật nâng cao như nhận dạng thực thể được đặt tên (NER) hoặc trích xuất cặp khóa-giá trị có thể được yêu cầu, tùy thuộc vào trường hợp sử dụng cụ thể.

Việc trích xuất các bảng từ hóa đơn PDF được tạo bằng điện tử có thể là một nhiệm vụ đơn giản nhờ các thư viện như Tabula và Camelot. Đoạn mã sau trình bày cách sử dụng các thư viện này để trích xuất bảng từ hóa đơn PDF.

from tabula import read_pdf
from tabulate import tabulate
file = "sample-invoice.pdf"
df = read_pdf(file ,pages="all")
print(tabulate(df[0]))
print(tabulate(df[1]))

Đầu vào

Mẫu-hóa đơn.pdf

Đầu ra

- ------------ ----------------
0 Order Number 12345
1 Invoice Date January 25, 2016
2 Due Date January 31, 2016
3 Total Due $93.50
- ------------ ---------------- - - ------------------------------- ------ ----- ------
0 1 Web Design $85.00 0.00% $85.00 This is a sample description...
- - ------------------------------- ------ ----- ------

Nếu bạn cần trích xuất các cột cụ thể từ hóa đơn (hóa đơn không có cấu trúc) và nếu hóa đơn chứa nhiều bảng với các định dạng khác nhau, bạn có thể cần thực hiện một số xử lý hậu kỳ để đạt được đầu ra mong muốn. Tuy nhiên, để giải quyết những thách thức như vậy, có thể sử dụng các kỹ thuật tiên tiến như thị giác máy tính và nhận dạng ký tự quang học (OCR) để trích xuất dữ liệu từ hóa đơn bất kể bố cục của chúng.

Xác định bố cục Hóa đơn để áp dụng OCR

Trong ví dụ này, chúng tôi sẽ sử dụng Tesseract, một công cụ OCR phổ biến cho Python, để phân tích cú pháp thông qua hình ảnh hóa đơn.

Bước 1: Nhập các thư viện cần thiết

Trước tiên, chúng tôi nhập các thư viện cần thiết: OpenCV (cv2) để xử lý hình ảnh và pytesseract cho OCR. Chúng tôi cũng nhập lớp Đầu ra từ pytesseract để chỉ định định dạng đầu ra của kết quả OCR.

import cv2
import pytesseract
from pytesseract import Output

Bước 2: Đọc hình ảnh hóa đơn mẫu

Sau đó, chúng tôi đọc hình ảnh hóa đơn mẫu sample-invoice.jpg bằng cách sử dụng cv2.imread() và lưu trữ nó trong biến img.

img = cv2.imread('sample-invoice.jpg')

Bước 3: Thực hiện OCR trên ảnh và nhận kết quả ở định dạng từ điển

Tiếp theo, chúng tôi sử dụng pytesseract.image_to_data() để thực hiện OCR trên hình ảnh và lấy từ điển thông tin về văn bản được phát hiện. Các output_type=Output.DICT đối số chỉ định rằng chúng tôi muốn kết quả ở định dạng từ điển.

Sau đó, chúng tôi in các khóa của từ điển kết quả bằng hàm keys() để xem thông tin có sẵn mà chúng tôi có thể trích xuất từ ​​kết quả OCR.

d = pytesseract.image_to_data(img, output_type=Output.DICT)
# Print the keys of the resulting dictionary to see the available information
print(d.keys())

Bước 4: Trực quan hóa văn bản được phát hiện bằng cách vẽ các hộp giới hạn

Để trực quan hóa văn bản được phát hiện, chúng ta có thể vẽ các hộp giới hạn của từng từ được phát hiện bằng cách sử dụng thông tin trong từ điển. Trước tiên, chúng tôi có được số lượng khối văn bản được phát hiện bằng cách sử dụng len() chức năng, sau đó lặp qua từng khối. Đối với mỗi khối, chúng tôi kiểm tra xem điểm tin cậy của văn bản được phát hiện có lớn hơn 60 hay không (nghĩa là văn bản được phát hiện có nhiều khả năng chính xác hơn) và nếu đúng như vậy, chúng tôi sẽ truy xuất thông tin hộp giới hạn và vẽ một hình chữ nhật xung quanh văn bản bằng cách sử dụng cv2.rectangle(). Sau đó, chúng tôi hiển thị hình ảnh kết quả bằng cách sử dụng cv2.imshow() và đợi người dùng nhấn một phím trước khi đóng cửa sổ.

n_boxes = len(d['text'])
for i in range(n_boxes): if float(d['conf'][i]) > 60: # Check if confidence score is greater than 60 (x, y, w, h) = (d['left'][i], d['top'][i], d['width'][i], d['height'][i]) img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.imshow('img', img)
cv2.waitKey(0)

Đầu ra

Nhận dạng thực thể được đặt tên (NER) là một kỹ thuật xử lý ngôn ngữ tự nhiên có thể được sử dụng để trích xuất thông tin có cấu trúc từ văn bản phi cấu trúc. Trong bối cảnh trích xuất hóa đơn, NER có thể được sử dụng để xác định các thực thể chính như số hóa đơn, ngày tháng và số tiền.

Mô hình NER để trích xuất thông tin trên hóa đơn

Một thư viện NLP phổ biến bao gồm chức năng NER là spaCy. spaCy cung cấp các mô hình được đào tạo trước cho NER bằng một số ngôn ngữ, bao gồm cả tiếng Anh. Dưới đây là ví dụ về cách sử dụng spaCy để trích xuất thông tin từ hóa đơn:

Bước 1: Nhập Spacy và tải mô hình được đào tạo trước

Trong ví dụ này, trước tiên chúng tôi tải mô hình tiếng Anh được đào tạo trước bằng NER bằng cách sử dụng spacy.load() chức năng.

import spacy
# Load the English pre-trained model with NER
nlp = spacy.load('en_core_web_sm')

Bước 2: Đọc hóa đơn PDF dưới dạng chuỗi và áp dụng mô hình NER cho văn bản hóa đơn

Sau đó, chúng tôi đọc tệp PDF hóa đơn dưới dạng chuỗi và áp dụng mô hình NER cho văn bản bằng cách sử dụng nlp() chức năng.

with open('invoice.pdf', 'r') as f: text = f.read() # Apply the NER model to the invoice text
doc = nlp(text)

Bước 3: Trích xuất số hóa đơn, ngày và tổng số tiền đến hạn

Sau đó, chúng tôi lặp lại các thực thể được phát hiện trong văn bản hóa đơn bằng cách sử dụng vòng lặp for. chúng tôi sử dụng label_ attribute của từng thực thể để kiểm tra xem nó có tương ứng với số hóa đơn, ngày hoặc tổng số tiền đến hạn hay không. Chúng tôi sử dụng khớp chuỗi và chữ thường để xác định các thực thể này dựa trên manh mối theo ngữ cảnh của chúng.

invoice_number = None
invoice_date = None
total_amount_due = None for ent in doc.ents: if ent.label_ == 'INVOICE_NUMBER': invoice_number = ent.text.strip() elif ent.label_ == 'DATE': if ent.text.strip().lower().startswith('invoice'): invoice_date = ent.text.strip() elif ent.label_ == 'MONEY': if 'total' in ent.text.strip().lower(): total_amount_due = ent.text.strip()

Bước 4: In thông tin trích xuất
Cuối cùng, chúng tôi in thông tin được trích xuất ra bàn điều khiển để xác minh. Lưu ý rằng hiệu suất của mô hình NER có thể khác nhau tùy thuộc vào chất lượng và tính biến thiên của dữ liệu đầu vào, do đó có thể cần một số điều chỉnh thủ công để cải thiện độ chính xác của thông tin được trích xuất.

print('Invoice Number:', invoice_number)
print('Invoice Date:', invoice_date)
print('Total Amount Due:', total_amount_due)

Trong phần tiếp theo, chúng ta hãy thảo luận về một số thách thức phổ biến và giải pháp cho việc trích xuất hóa đơn tự động.

Những thách thức và giải pháp chung

Mặc dù có nhiều lợi ích khi sử dụng Python để trích xuất dữ liệu hóa đơn, các doanh nghiệp vẫn có thể gặp phải những thách thức trong quá trình này. Dưới đây là một số thách thức phổ biến phát sinh trong quá trình trích xuất dữ liệu hóa đơn và các giải pháp khả thi để khắc phục chúng:

Định dạng không nhất quán

Hóa đơn có thể có nhiều định dạng khác nhau, bao gồm giấy, PDF và email, điều này có thể gây khó khăn cho việc trích xuất và xử lý dữ liệu một cách nhất quán. Ngoài ra, cấu trúc của hóa đơn có thể không phải lúc nào cũng giống nhau, điều này có thể gây ra sự cố khi trích xuất dữ liệu

Bản quét kém chất lượng

Bản quét chất lượng thấp hoặc bản quét có góc nghiêng có thể dẫn đến sai sót trong quá trình trích xuất dữ liệu. Để cải thiện độ chính xác của việc trích xuất dữ liệu, doanh nghiệp có thể sử dụng các kỹ thuật tiền xử lý hình ảnh như làm mờ, nhị phân hóa và giảm nhiễu để cải thiện chất lượng quét.

Các ngôn ngữ và cỡ chữ khác nhau

Hóa đơn từ các nhà cung cấp quốc tế có thể bằng các ngôn ngữ khác nhau, điều này có thể khó xử lý bằng các công cụ tự động. Tương tự, hóa đơn có thể chứa các kích thước và kiểu phông chữ khác nhau, điều này có thể ảnh hưởng đến độ chính xác của việc trích xuất dữ liệu. Để vượt qua thách thức này, các doanh nghiệp có thể sử dụng các thuật toán và kỹ thuật máy học như nhận dạng ký tự quang học (OCR) để trích xuất dữ liệu một cách chính xác bất kể ngôn ngữ hoặc kích thước phông chữ.

Cấu trúc hóa đơn phức tạp

Hóa đơn có thể chứa các cấu trúc phức tạp, chẳng hạn như các bảng lồng nhau hoặc các loại dữ liệu hỗn hợp, có thể khó trích xuất và xử lý. Để vượt qua thách thức này, doanh nghiệp có thể sử dụng các thư viện như Pandas để xử lý các cấu trúc phức tạp và trích xuất dữ liệu một cách chính xác.

Tích hợp với các hệ thống khác (ERP)

Dữ liệu trích xuất từ ​​hóa đơn thường cần được tích hợp với các hệ thống khác, chẳng hạn như phần mềm kế toán hoặc hoạch định nguồn lực doanh nghiệp (ERP), có thể làm tăng thêm lớp phức tạp cho quy trình. Để vượt qua thách thức này, doanh nghiệp có thể sử dụng API hoặc trình kết nối cơ sở dữ liệu để tích hợp dữ liệu được trích xuất với các hệ thống khác.

Bằng cách hiểu và vượt qua những thách thức phổ biến này, doanh nghiệp có thể trích xuất dữ liệu từ hóa đơn hiệu quả và chính xác hơn, đồng thời thu được thông tin chi tiết có giá trị có thể giúp tối ưu hóa quy trình kinh doanh của họ.

Với Nanonets, bạn có thể dễ dàng tạo và đào tạo các mô hình máy học để trích xuất dữ liệu hóa đơn bằng GUI dựa trên web trực quan. Bạn có thể truy cập các mô hình được lưu trữ trên đám mây sử dụng thuật toán tiên tiến nhất để cung cấp cho bạn kết quả chính xác mà không phải lo lắng về việc nhận phiên bản GCP hoặc GPU để đào tạo.

Với Nanonet, bạn có được

GUI dựa trên web dễ sử dụng
Nanonets cung cấp một GUI dựa trên web trực quan giao tiếp với API của chúng tôi, cho phép bạn tạo các mô hình, đào tạo chúng trên dữ liệu của bạn, lấy các chỉ số cần thiết như độ chính xác và độ chính xác cũng như chạy suy luận trên hình ảnh của bạn mà không cần viết bất kỳ mã nào.

Các mô hình được lưu trữ trên đám mây: Với Nanonets, bạn có thể truy cập trực tiếp vào một số mô hình có thể được sử dụng ngay lập tức để nhận giải pháp. Ngoài ra, bạn có thể xây dựng các mô hình của mình được lưu trữ trên đám mây và có thể được truy cập bằng yêu cầu API cho mục đích suy luận. Không cần lo lắng về việc lấy phiên bản GCP hoặc GPU để đào tạo.

Các thuật toán hiện đại: Các mô hình của Nanonets sử dụng các thuật toán tiên tiến nhất để cung cấp cho bạn kết quả tốt nhất có thể. Các mô hình này liên tục phát triển để trở nên hiệu quả hơn với dữ liệu ngày càng tốt hơn, công nghệ tốt hơn, thiết kế kiến ​​trúc tốt hơn và cài đặt siêu tham số mạnh mẽ hơn.

Khai thác trường thực hiện dễ dàng: Thách thức lớn nhất trong việc xây dựng một sản phẩm số hóa hóa đơn là cung cấp cấu trúc cho văn bản được trích xuất. API OCR của Nanonets tự động trích xuất tất cả các trường cần thiết có giá trị và đặt chúng ở định dạng bảng hoặc JSON để bạn dễ dàng truy cập và xây dựng.

Tự động hóa thúc đẩy: Tại Nanonets, chúng tôi tin vào sức mạnh của tự động hóa. Chúng tôi cố gắng làm cho máy học trở nên phổ biến và mục tiêu của chúng tôi là giải quyết bất kỳ vấn đề kinh doanh nào mà bạn đã giải quyết theo cách yêu cầu ngân sách và sự giám sát của con người ở mức tối thiểu trong tương lai. Tự động hóa các quy trình như số hóa hóa đơn có thể tạo ra tác động lớn đến tổ chức của bạn về lợi ích tiền tệ, sự hài lòng của khách hàng và sự hài lòng của nhân viên.

Bắt đầu số hóa hóa đơn với Nanonets – Số hóa 1 cú nhấp chuột:

Tổng kết

Trích xuất dữ liệu hóa đơn là một quy trình quan trọng đối với các doanh nghiệp xử lý số lượng lớn hóa đơn. Việc trích xuất chính xác dữ liệu từ hóa đơn có thể giảm đáng kể sai sót, đơn giản hóa quá trình xử lý thanh toán và cuối cùng là cải thiện lợi nhuận của bạn.

Python là một công cụ mạnh mẽ có thể đơn giản hóa và tự động hóa quy trình trích xuất dữ liệu hóa đơn. Tính linh hoạt và nhiều thư viện khiến nó trở thành lựa chọn lý tưởng cho các doanh nghiệp đang tìm cách cải thiện khả năng trích xuất dữ liệu hóa đơn của mình.

Hơn nữa, với Nanonets, bạn có thể hợp lý hóa quy trình trích xuất dữ liệu hóa đơn của mình hơn nữa. Nền tảng dễ sử dụng của chúng tôi cung cấp nhiều tính năng, bao gồm GUI dựa trên web trực quan, mô hình được lưu trữ trên đám mây, thuật toán hiện đại và trích xuất trường dễ dàng.

Vì vậy, nếu bạn đang tìm kiếm một giải pháp hiệu quả và tiết kiệm chi phí để trích xuất dữ liệu hóa đơn, thì không đâu khác ngoài Nanonet. Đăng ký dịch vụ của chúng tôi ngay hôm nay và bắt đầu tối ưu hóa quy trình kinh doanh của bạn!

tại chỗ_img

Tin tức mới nhất

tại chỗ_img