当前位置: 首页 > news >正文

仿爱奇艺网站源码营销网站与企业网站的区别

仿爱奇艺网站源码,营销网站与企业网站的区别,wordpress做的网站,淄博市建设局网站我们在做PDF文档解析时有时需要解析PDF文档中的表格、形状等数据。跟解析文本类似的常见的解决方案也是两种。文档解析跟ocr技术处理。下面我们来看看使用文档解析的方案来做PDF文档中的表格、图形解析(使用pdfium库)。 表格解析: 在pdfium库…

我们在做PDF文档解析时有时需要解析PDF文档中的表格、形状等数据。跟解析文本类似的常见的解决方案也是两种。文档解析跟ocr技术处理。下面我们来看看使用文档解析的方案来做PDF文档中的表格、图形解析(使用pdfium库)。
表格解析:
在pdfium库中在解析表格时是将表格的线解析成单独的对象。所以我们在解析时只需要遍历页面中的所有线条,拿到线条之后再进行表格结构的重新组装即可。
以下为读取页面中线的相关代码:

std::string strPdfPath = "pdf.pdf";
//初始化库
FPDF_InitLibrary();
//加载文档
FPDF_DOCUMENT document = FPDF_LoadDocument(strPdfPath.c_str(), nullptr);
if (!document)
{//load error
}
//获取页数
int page_count = FPDF_GetPageCount(document);
//此处我们只演示处理第一页
FPDF_PAGE page = FPDF_LoadPage(document, 0); // 加载第一页 (索引 0)
if (page)
{int objCount = FPDFPage_CountObjects(page); //获取当前页的对象数for (int i = 0; i < objCount; ++i){FPDF_PAGEOBJECT obj = FPDFPage_GetObject(page, i);int nObjType = FPDFPageObj_GetType(obj);//对象类型switch (nObjType){case FPDF_PAGEOBJ_UNKNOWN:break;case FPDF_PAGEOBJ_PATH: {int nSegments = FPDFPath_CountSegments(obj); //std::vector<CPoint> vecPts;for (int j = 0; j < nSegments; j++){FPDF_PATHSEGMENT segment = FPDFPath_GetPathSegment(obj, j);int nSegType = FPDFPathSegment_GetType(segment);//线段类型switch (nSegType){case FPDF_SEGMENT_UNKNOWN:break;case FPDF_SEGMENT_LINETO:{float x, y;FPDFPathSegment_GetPoint(segment, &x, &y);CPoint pt(x, y);vecPts.push_back(pt);                                                   }break;case FPDF_SEGMENT_BEZIERTO:{//                        }break;case FPDF_SEGMENT_MOVETO:{float x, y;FPDFPathSegment_GetPoint(segment, &x, &y);    CPoint pt(x, y);vecPts.push_back(pt);                        }break;default:break;                   }                }            }     break;   default:break;                               }    }
}
FPDF_ClosePage(page);

通过上述代码我们获取Path对象中的数据即可拿到表格的线条,需要的注意的时如果只拿表格的线的话需要对线的数量做判断,如果对象只有两个点则为表格的线。这里拿到的线是整体的线。
在这里插入图片描述
比如上边的表格拿到的线数量为8条线段。
如果需要将线组成一个表格结构那我们需要自己做处理。大致的处理思路是将长线段打断为短线段然后再将短的线段组合成一个个的小多边形,根据多边形的上下左右共边关系生成一个表格结构。至于这里为什么要生成一个多边形,是为了后续做文本跟表格关联做准备。
根据之前文本解析文章中我们可以看到在获取文本信息时也能拿到文本的位置、大小等信息。所以我们在进行文本表格关联时只需要判断文本位置的那个点是否在表格的多边形内即可,如果在多边形内则说明PDF中该文本为表格中该单元格的数据。这样我们就可以生成一个虚拟的表格数据了。对于图片也是这样处理,拿到图片的中心点如果该点在多边形内则该图片为该表格中的数据。

形状解析:
读取代码跟读取线的代码一样,只是在读取形状时线的数量大于2。如果是圆、半圆之类的则其中一些点为贝塞尔曲线。我在测试时即使形状是线在解析时拿到的线的数量也是4个(一个闭合的多边形)。其他的形状经过测试也是一个闭合的多边形。
在这里插入图片描述
比如Word中的这些线条在解析出来后每个对象都是一些线段跟贝塞尔曲线组合成的一个闭合区域。

http://www.yayakq.cn/news/623590/

相关文章:

  • 怎么优化网站关键词的方法童程童美官方网
  • 视频网站制作上海部道网站 建设
  • 澄海网站建设wordpress页面顶部登录
  • 地方新闻门户网站源码广西传导网络科技有限公司
  • 把自己的网站卖给别人后对方做违法衡水做网站的公司
  • 网站内部seo优化包括墙绘网站建设
  • 2014山东春季高考网站建设wordpress网盘搜索源码
  • 做司法考试题目的网站wordpress图文排版
  • 天津中小企业建设网站离莞来莞最新政策
  • 信誉好的龙岗网站制作怎么配置网站服务器
  • dede 网站改宽屏代码引擎搜索是什么意思
  • wordpress 萌主题下载百度 移动网站优化
  • 申请域名后怎么建设网站做彩票网站空间去哪买
  • php 网站模板怎样去推广自己的网店
  • 大连外经贸网站wordpress 响应 完整 模板
  • 长沙模板建站哪家好现在淘客做网站还行吗
  • 贵州建设考试网站欧力虎网站建设
  • 网站建设功能选择表汕头服饰网站建设
  • 湖州住房和城乡建设厅网站个人网站备案通过做淘客
  • 进行网站建设视频教程wordpress商城主体
  • 网站开发检测用户微信号自己建一个电商网站吗
  • 西安网站建设全包提供大良营销网站建设
  • 哪些网站是503错误代码建立数据库连接时出错 wordpress
  • 紫金优化网站制作wordpress网站演示
  • 定制网站建设与运营案例承揽合同和建设工程合同的区别
  • 手机能建网站吗公司要想做个网站这么弄
  • 网站开发电脑内存要多少钱网站建设前的分析
  • 网站做兼容处理怎么网站开发款计入什么科目
  • 网站注册信息站长之家音效素材
  • 做的比较好的车载嗨曲网站开发公司终止函内容