PHP识别复杂pdf文档 利用阿里云的pdf文档识别 阿里云视觉智能平台开通文字识别-PDF识别 [code]/** * 利用AK&SK初始化账号Client * @param string $accessKeyId * @param string $accessKeySecret * @return Ocrapi Client */ public function createClient($accessKeyId, $accessKeySecret){ $config = new Config([ // 必填,您的 AccessKey ID "accessKeyId" => 'AccessKey ID', // 必填,您的 AccessKey Secret "accessKeySecret" => 'AccessKey Secret' ]); // Endpoint 请参考 https://api.aliyun.com/product/ocr $config->endpoint = "ocr.cn-shanghai.aliyuncs.com"; $model = new Ocr($config); return $model; } /** * @param string[] $args * @return void * 阿里云一次智能识别5页pdf,以是须要对原文件举行拆分,分别取哀求 */ public function getContent($param){ set_time_limit(0); $inputPdf = $param['url']; // 盘算须要拆分成多少个PDF文件 $totalPages = intval(shell_exec("pdftk $inputPdf dump_data | grep NumberOfPages | awk '{print $2}'")); $numFiles = intval(ceil($totalPages / 5)); $domain = request()->domain(); $param['is_delete'] = $param['is_delete'] ?? 0; // 请确保代码运行情况设置了情况变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。 // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例利用情况变量获取 AccessKey 的方式举行调用,仅供参考,建议利用更安全的 STS 方式,更多鉴权访问方式请拜见:https://help.aliyun.com/document_detail/311677.html $client = self::createClient(getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET')); $runtime = new RuntimeOptions([]); try { // 利用循环拆分PDF并生存为单独的文件 $str = ''; for ($i=0; $i<$numFiles; $i++) { $startPage = ($i * 5) + 1; $endPage = min(($startPage + 4), intval($totalPages)); //实行拆分 exec("pdftk A=$inputPdf cat A$startPage-$endPage output {$param['path']}_{$i}.pdf",$output, $returnVar); $del_url = $param['path'].'_'.$i.'.pdf'; //实行pdf识别 $recognizePdfRequest = new RecognizePdfRequest([ "fileURL" => $domain.'/'.$del_url ]); // 复制代码运行请自行打印 API 的返回值 $result = $client->recognizePdfWithOptions($recognizePdfRequest, $runtime); $content = $result->body->data->wordsInfo; //拼接识别内容 foreach ($content as &$vv){ $word = get_object_vars($vv); if(substr($word['word'],0,1) == '>' || substr($word['word'],0,1) == '<'){ $word['word'] = substr($word['word'],1); } $str .= $word['word']."\n "; } } $data['code'] = 200; $data['content'] = $str; } catch (Exception $error) { if (!($error instanceof TeaError)) { $error = new TeaError([], $error->getMessage(), $error->getCode(), $error); } $data['code'] = 400; $data['content'] = $error->message; //unset($del_url); // 错误 message // var_dump($error->message); // // 诊断地址 // var_dump($error->data["Recommend"]); // Utils::assertAsString($error->message); } //识别成功删除原文件 if($param['is_delete']){ unlink($param['url']); } //删除生成的文件 for ($i=0; $i<$numFiles; $i++) { $del_url = $param['path'].'_'.$i.'.pdf'; if (file_exists($del_url)) { unlink($del_url); } } return $data; } [/code]方法增补 除了上文的方法,小编还为各人整理了PHP识别普通PDF文件的相干方法,渴望对各人有所帮助 1. 安装依赖库 在利用PHP处理PDF文件之前,我们须要先安装一些依赖库。对于本教程,我们将利用两个主要的库:smalot/pdfparser和setasign/Fpdi。 首先,通过Composer安装这两个库: [code]composer require setasign/fpdicomposer require smalot/pdfparser[/code]2. 读取PDF文件 接下来,我们将展示如何利用smalot/pdfparser库来读取PDF文件的内容。 [code]<?php require 'vendor/autoload.php'; use Smalot\PdfParser\Parser; $parser = new Parser(); $pdf = $parser->parseFile('path_to_your_pdf_file.pdf'); foreach ($pdf->getPages() as $page) { echo $page['text']."\n"; } ?> [/code]在上述代码中,我们首先创建了一个Parser对象,然后利用parseFile方法读取了PDF文件。最后,我们遍历了PDF文件的每一页,并打印出了每一页的文本内容。 3. 编辑PDF文件 除了读取PDF文件的内容,我们还可以利用setasign/Fpdi库来编辑PDF文件。以下是一个简朴的示例,展示了如何添加一个新的页面到PDF文件中: [code]<?php require 'vendor/autoload.php'; use Setasign\Fpdi\Fpdi; $fpdi = new Fpdi(); $fpdi->AddPage(); $fpdi->SetFont('Arial', '', 12); $fpdi->Cell(40, 10, 'Hello World!', 1, 0, 'C'); $fpdi->Output('path_to_output_pdf_file.pdf', 'I'); ?> [/code]在上述代码中,我们首先创建了一个Fpdi对象,然后添加了一个新的页面。接着,我们设置了字体和字号,并添加了一些文本内容。最后,我们利用Output方法将PDF文件输出到了指定的路径。 4. 转换PDF文件 除了编辑PDF文件,我们还可以利用setasign/Fpdi库来转换PDF文件。以下是一个简朴的示例,展示了如何将PDF文件转换为图片: [code]<?php require 'vendor/autoload.php'; use Setasign\Fpdi\Fpdi; $fpdi = new Fpdi(); $fpdi->AddPage(); $fpdi->SetSourceFile('path_to_input_pdf_file.pdf'); $fpdi->SetTargetFile('path_to_output_image_file.png'); $fpdi->ExportImage(); ?> [/code]在上述代码中,我们首先创建了一个Fpdi对象,然后添加了一个新的页面。接着,我们设置了输入和输出的文件路径,并利用ExportImage方法将PDF文件转换为图片。 到此这篇关于PHP实现识别复杂pdf文档的示例代码的文章就先容到这了,更多相干PHP识别pdf内容请搜刮脚本之家从前的文章或继续欣赏下面的相干文章渴望各人以后多多支持脚本之家! 来源:https://www.jb51.net/program/314384me4.htm 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )|网站地图
GMT+8, 2025-7-1 22:35 , Processed in 0.031732 second(s), 19 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.