joest8 / pdfinterpreter
此类设计用于将多个PDF文件(无论是基于图像还是基于文本)转换为数据数组。该类使用包含正则表达式的用户定义模板来控制数据提取过程,从而允许定制和灵活的输出。
Requires
- php: ^8.2
- symfony/process: ^6.3
README
简介
此类设计用于将多个PDF文件(无论是基于图像还是基于文本)转换为数据数组。该类使用包含正则表达式的用户定义模板来控制数据提取过程,从而允许定制和灵活的输出。
目录
本README分为几个部分
安装
composer require joest8/pdfinterpreter
控制台应用程序
要使用此类,您需要安装以下应用程序
- Poppler(必需,用于将PDF转换为文本并获取文件中的页数信息)
- Tesseract(必需,用于读取和解释png文件)
- ImageMagick(必需,用于将pdf转换为png)
请确保您的系统上已安装包管理器。
自动安装
从源文件夹运行以下代码来自动安装所有依赖项和tesseract语言文件
php install/install_dependencies.php
使用Homebrew手动安装
如果已安装homebrew,请运行以下命令安装Homebrew包
brew install poppler tesseract imagemagick
Tesseract语言文件的手动安装
您还需要安装所需的Tesseract语言文件。您可以在以下位置查看可用语言:https://github.com/tesseract-ocr/tessdata_best/
下载必要的语言文件并将它们放置在适当的目录中。要查找目录,请使用
tesseract --list-langs
用法
创建对象
<?php require_once '../vendor/autoload.php'; use PdfInterpreter\PdfInterpreter; //get path from terminal: 'echo $PATH' $path_env = "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin:/opt/homebrew/bin"; $pdf = new PdfInterpreter($path_env);
获取示例输出
使用get_sample_output
方法,您将能够获取一个文本输出的示例,而无需对模式进行任何解释。
<?php require_once '../vendor/autoload.php'; use PdfInterpreter\PdfInterpreter; //get path from terminal: 'echo $PATH' $path_env = "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin:/opt/homebrew/bin"; $pdf = new PdfInterpreter($path_env); print_r($pdf->get_sample_output());
设置新模板
使用add_new_template
方法将帮助您创建新模板。有关所需参数的更多信息,请参阅该方法的DocBloc。
<?php require_once '../vendor/autoload.php'; use PdfInterpreter\PdfInterpreter; //get path from terminal: 'echo $PATH' $path_env = "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin:/opt/homebrew/bin"; $pdf = new PdfInterpreter($path_env); $pdf->add_new_template("sample","Sample","/[Cc]ompany[\W]?[Aa][Bb][Cc]/","1","eng");
向模板添加模式
使用add_pattern_to_template
方法将帮助您向现有模板添加新模式。有关所需参数的更多信息,请参阅该方法的DocBloc。
$pdf->add_pattern_to_template("sample","invoice_no","/INVOICE # *([\d]*)/","1"); $pdf->add_pattern_to_template("sample","date","/INVOICE DATE *([\d]{2}.[\d]{2}.[\d]{4})/","1"); $pdf->add_pattern_to_template("sample","positions","/([\d]{1,4}) *(.*?) *([\d]{1,8},[\d]{2}) *([\d]{1,8},[\d]{2})/m","a",true,['pieces','item','price','amount']);
获取模板
使用get_template
方法将返回整个模板。有关所需参数的更多信息,请参阅该方法的DocBloc。
print_r($pdf->get_template("sample"));
删除模板
使用delete_template
方法将删除整个模板。有关所需参数的更多信息,请参阅该方法的DocBloc。
print_r($pdf->delete_template("sample"));
从文件夹转换文件
使用convert_folder
方法将转换文件夹中的所有文件为数组数据。有关所需参数的更多信息,请参阅该方法的DocBloc。
print_r(print_r($pdf->convert_folder("/../docs/",true,false,ocr_lang: "eng")));
转换文件
使用convert_file
方法将单个文件转换为数据数组。有关所需参数的更多信息,请参阅该方法的DocBloc。
print_r($pdf->convert_file("/../docs/sample-bill.pdf",true,false));