利用 Python、SROIE 数据集和机器学习创建数据解析工具

Florian Zyprian

如果您是一名 Python 开发人员,并希望创建一个数据解析工具,那么本教程就是为您准备的。我们将向您展示如何使用 Python 和 SROIE 数据集创建高效的文档解析工具,并向您介绍 Konfuzio SDK 的各种可能性。让我们开始吧

有关 Python 字符串解析的简短介绍,请点击此处。

步骤 1:设置环境

开始之前,请确保已安装 Python 和所有必需的库。为此,请在命令行或终端中运行以下命令:

# 安装 Python 软件包
pip install opencv-python tensorflow numpy scikit-learn

步骤 2:加载 SROIE 数据集

SROIE 数据集由以下图像组成 收据 和相关注释文件。您可以通过这种方式加载它们:

导入 os
导入 cv2
# 用于保存 SROIE 图像和注释的目录
image_folder = "path/to/SROIE/image/folder" 图像文件夹
annotation_folder = "path/to/SROIE/annotation/folder" (注释文件夹)
def load_sroie_dataset(image_folder, annotation_folder):
    ""从 SROIE 数据集中加载图像和相应文本。""
    images, extracted_texts = [], []
    for filename in os.listdir(annotation_folder):
        with open(os.path.join(annotation_folder, filename), "r") as file:
            extracted_text = file.readlines()[1].strip()
            image_path = os.path.join(image_folder, filename.replace(".txt", ".jpg"))
            image = cv2.imread(image_path)
            images.append(image)
            extracted_texts.append(extracted_text)
    返回图像、提取的文本
图像、提取的文本 = load_sroie_dataset(image_folder, annotation_folder)

步骤 3:准备数据集

现在,我们要对来自 SROIE 数据集的图像进行预处理,以便进一步训练:

output_folder = "path/to/output/folder"
def preprocess_images(image_folder, annotation_folder, output_folder):
    ""预处理图像并将其保存到输出目录。"""
    for filename in os.listdir(annotation_folder):
        with open(os.path.join(annotation_folder, filename), "r") as file:
            extracted_text = file.readlines()[1].strip()
            image_path = os.path.join(image_folder, filename.replace(".txt", ".jpg"))
            image = cv2.imread(image_path)
            # 可在此处添加图像预处理步骤
            output_path = os.path.join(output_folder, filename.replace(".txt", ".jpg"))
            cv2.imwrite(output_path, image)
preprocess_images(image_folder, annotation_folder, output_folder)

另一个令人兴奋的数据集由 FUNSD+。立即阅读更多内容。

步骤 4:利用甜甜圈模型进行微调和评估

准确 文件解析 我们将有一个 预训练甜甜圈模型 对预处理数据进行微调:

导入 tensorflow 为 tf
从 tensorflow.keras 导入层、模型
从 sklearn.model_selection 导入 train_test_split
# 将数据拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(images, extracted_texts, test_size=0.2, random_state=42)
def create_donut_model(input_shape, num_classes):
    ""创建用于文本识别的甜甜圈 CNN 模型。"""
    model = models.Sequential([
        layers.Conv2D(32, (3, 3), activation='relu', input_shape=input_shape)、
        layers.MaxPooling2D((2, 2))、
        layers.Conv2D(64, (3, 3), activation='relu')、
        layers.MaxPooling2D((2, 2))、
        layers.Flatten()、
        layers.Dense(128, activation='relu')、
        layers.Dense(num_classes, activation='softmax')
    ])
    返回模型
model = create_donut_model((height, width, channels), num_classes)
model.compile(optimiser='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.1)
test_loss, test_accuracy = model.evaluate(X_test, y_test)

摘要

只要方法得当,使用 Python 和 SROIE 数据集创建数据分析工具就能实现无缝连接。如需高级特性和更先进的功能,请将 Konfuzio SDK 集成到您的项目中。请查看 Konfuzio 文档,了解更多详情。

祝你编程愉快

更多链接

    您的公司正在寻找新的人工智能人才吗?

    为您的公司提供一流的人工智能人才

    专业调解,事半功倍: 我们的合作伙伴 Opushero 可帮助您找到最优秀的人才。这是一个由专业咨询机构组成的网络,为有抱负的年轻人和经验丰富的人工智能开发人员提供支持。接收预审合格的候选人建议,他们希望与您一起开始工作。

    关于我

    更多精彩文章

    甜甜圈文件的理解

    甜甜圈深潜--文件理解

    Donut是Kim等人(2021年)在他们的论文 "无OCR文档理解转换器(Donut)"中提出的一种独特的文档...

    阅读故事

    蜂群智能--工作原理和实际应用领域

    近年来,人工智能发展迅速。尽管机器学习和神经网络等子领域已经取得了长足的进步,但人工智能仍面临着许多挑战。

    阅读故事

    变革管理--方法、工具和实例

    为了应对不断变化的客户要求和市场动向,企业必须不断重塑自我,或至少有效地...

    阅读故事
    箭头向上