CN112950346A - 一种企业财务报表自动分析系统及方法 - Google Patents
一种企业财务报表自动分析系统及方法 Download PDFInfo
- Publication number
- CN112950346A CN112950346A CN202110321638.5A CN202110321638A CN112950346A CN 112950346 A CN112950346 A CN 112950346A CN 202110321638 A CN202110321638 A CN 202110321638A CN 112950346 A CN112950346 A CN 112950346A
- Authority
- CN
- China
- Prior art keywords
- enterprise
- financial
- analysis
- annual
- statement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/12—Accounting
- G06Q40/125—Finance or payroll
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/174—Form filling; Merging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种企业财务报表自动分析系统,包括条件分析设置模块和工作状态及分析结果输出模块以及分别与条件分析设置模块、工作状态及分析结果输出模块业务关联的企业名单获取模块、年度报告获取模块、年度报告数据解析模块、财务表单获取模块和企业健康状况评估模块。还公开了一种企业财务报表自动分析方法。本发明实现了自动获取企业名单、企业年度报告、财务表单自动提取和整理,企业重点财务科目值自动获取、自动生成企业全面健康状况评估报告,提升了投资者分析企业年度报告的效率,降低投资者分析企业年度报告的难度。
Description
技术领域
本发明涉及财务报表处理技术领域,具体的说,是一种企业财务报表自动分析系统及方法。
背景技术
对投资者而言投资股权、股票、企业债、某些基金等,其实质投资的是企业,投资者通过企业年度报告了解一家企业无疑是最快捷、有效的方法。分析企业年度报告中的企业财务报表可判断出这家企业的健康状况。
对于具备财务技能的投资者,从待投资企业的财务报表中可以评估出企业的健康状况,如企业的现金流、债务风险、行业地位、利润质量、债务风险、企业的轻重、主业的专注程度、稳定性、经营成果及含金量、现金流量净额的组合类型、产品竞争力、扩张能力、盈利能力、成长能力、运营能力、偿债能力、成本管控能力、造血能力、资本获利能力、企业品质等,但是评估过程耗时长;对于一般的投资者,不具备专业的财务技能,可从投资工具中获取到待投资企业的现金流、盈利能力、成长能力、运营能力、偿债能力等少量的、评估结果粗糙的健康状况,这些并不能满足投资者的需要。
发明内容
本发明的目的在于提供一种企业财务报表自动分析系统,用于解决现有技术中具备财务技能的个人投资者分析企业健康状态耗时较长以及现有投资工具的评估内容不全面、评估结果粗糙的问题。
本发明通过下述技术方案解决上述问题:
一种企业财务报表自动分析系统,包括条件分析设置模块、企业名单获取模块、年度报告获取模块、年度报告数据解析模块、财务表单获取模块、企业健康状况评估模块和工作状态及分析结果输出模块,其中:
条件分析设置模块,用于设置分析条件,分析条件包括待投资类别、待投资类别对应的精选投资产品条件、最大年报分析年限、年报提取网址、企业健康状况评估标准,并分别发送至企业名单获取模块、年度报告获取模块和企业健康状况评估模块;
企业名单获取模块,用于根据待投资类别、待投资类别对应的精选投资产品条件,采用网络爬虫技术从网站获取待投资产品的企业名单;
年度报告获取模块,根据最大年报分析年限和获取的企业名单,从年报提取网址下载企业年度报告并保存;
年度报告数据解析模块,采用PDF解析技术对下载的企业年度报告进行数据解析,得到年度报告数据;
财务表单获取模块,根据解析得到的年度报告数据,获取企业年度报告的审计意见,提取财务表单并整理合并,财务表单包括资产负债表、合并利润表、合并现金流量表、现金流量表补充表和归母净利润数据,标注财务表单中各财务科目年变化率异常的财务科目名称,并输出至工作状态即分析结果输出模块;
企业健康状况评估模块,根据最大年报分析年限、企业健康状态评估标准和财务表单中的各财务科目,获取企业各年度的重点财务科目,重点财务科目包括资产总计、负债合计、货币资金、短期借款和应付利息;计算评估企业健康状况所需的重点过程数据,重点过程数据包括货币资金与有息负债的差值、资产总计增长率、负债合计增长率,评估企业的现金流、债务风险和行业地位并完成健康状况报告输出至工作状态及分析结果输出模块;
企业名单获取模块、年度报告获取模块、年度报告数据解析模块、财务表单获取模块和企业健康状况评估模块的工作状态实时输出至工作状态及分析结果输出模块,工作状态及分析结果输出模块进行实时输出显示并存储。
本发明自动获取待投资产品的企业名单、自动下载企业年度报告、自动解析企业年度报告数据,对企业年度报告数据中的企业合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表等财务表单自动提取整理,自动获取企业重点财务科目值并自动计算出用于评估企业健康状况所需的重点过程数据,自动生成企业全面健康状况报告,并将企业健康状况评估结果呈现在同一区域,极大的提升了投资者分析企业年度报告的效率,克服了评估结果呈现区域分散的问题;降低投资者分析企业年度报告的难度,达到无需投资者掌握专业的财务技能也能快速准确的评估出待投资企业的健康状况,且财务表单信息全面,在此基础上得到的企业健康状况评估结果更加准确。
一种企业财务报表自动分析方法,包括:
步骤S100:设置待分析企业财务报表的分析条件,包括待投资类别、待投资类别对应的精选投资产品条件、最大年报分析年限、年报提取网址和企业健康状况评估模板;
步骤S200:根据设置的分析条件,通过网络爬虫技术获取待投资产品的企业名单;
步骤S300:根据获取的待投资产品的企业名单,分别下载企业年度报告;
步骤S400:采用PDF解析技术解析企业年度报告,得到企业年度数据;
步骤S500:从企业年度数据中提取财务表单,并进行合并整理,财务表单包括资产负债表、合并利润表、合并现金流量表、现金流量表补充表和归母净利润数据;计算标注财务表单中各财务科目年变化率异常的财务科目名称;
步骤S600:获取财务表单的重点财务科目值并计算评估企业健康状况所需的重点过程数据,最后自动生成企业全面的健康状况评估报告。
所述步骤S200具体包括:
步骤S210:调用预置的Chrome或Firefox浏览器驱动webdriver及web自动化访问工具selenium驱动浏览器工作,访问待投资产品的企业名单自动获取网址;
步骤S220:采用webdriver的xpath定位待投资类别,再根据设置的精选投资产品条件筛选符合要求的投资产品,获取该投资产品对应的企业名单。
所述步骤S300中下载企业年度报告的方法具体为:
步骤S310:调用Selenium程序模块驱动浏览器工作,以访问企业年度报告提取网址;
步骤S320:采用webdriver的xpath定位待检索对象,输入企业名称检索待分析企业的年报数据;
步骤S330:获取检索到的年报数据总条数;
步骤S340:按设置的最大年报分析年限下载企业年度报告。
所述步骤S400具体包括:
步骤S410:导入解析库pdfplumber及excel操作模块xlwings,将企业名单、年度报告和PDF作为搜索关键字,获取企业年度报告保存目录下所有的年度报告文件名,整理出以企业名称为键、年度报告名称组成的列表为值的嵌套字典;以企业名称为单元自动生成对应的以excel文件;
步骤S420:以企业名称为键,遍历嵌套字典,获取待分析企业年度报告文件名并在excel文件中新增对应的表单;
步骤S430:逐一解析待分析的企业年度报告,包括:
步骤S431:通过调用pdfplumber库中的extract_text()方法,提取各年度企业报告中会计事务所审计意见;通过调用pdfplumber库中的extract_tables()方法,提取各年度企业报告中所有表单;
步骤S432:将获取到的各年度会计事务所审计意见及所有表单内容保存至Excel文件对应的表单中。
所述步骤S500具体包括:
步骤S510:采用Python语言,导入xlwings模块,打开excel文件;
步骤S520:遍历excel文档中的表单名称,提取有企业年度报告原始数据的表单名称并存入年度报告文件名称列表;
步骤S530:遍历并打开年度报告文件名称列表中的表单,采用xlwings获取表单包含数据的单元格所在的行号和所在列号;
步骤S540:采用xlwings读取sheet表单,获取审计意见;获取财务表单中合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表和归母净利润数据的起始行号及结束行号,分别计算出保存合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表以及归母净利润数据需要占用的excel行数;
步骤S550:根据需要占用的excel行数,重组只包含会计师事务所对待分析企业年度报告的审计意见、合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表以及归母净利润数据的表单,得到合并处理后的Excel文件;
步骤S560:计算标注财务表单中各财务科目年变化率超过预设值的异常科目名称,将异常科目名称存入异常账目字典中。
所述步骤S600具体包括:
步骤S610:从合并处理后的Excel表格获取待分析企业各年度的重点财务科目值;
步骤S620:根据待分析企业各年度的重点财务科目值,计算出评估企业健康状况所需的重点过程数据,标记重点过程数据中的异常过程数据;
步骤S630:根据最大年报分析年限、企业健康状态评估标准和异常过程数据,生成企业健康状况评估报告。
本发明与现有技术相比,具有以下优点及有益效果:
本发明实现了待投资产品的企业名单自动获取、企业年度报告自动下载、企业年度报告数据PDF自动解析、企业合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表等财务表单自动提取和整理,企业重点财务科目值自动获取并自动计算出评估企业健康状况所需的重点过程数据,企业全面健康状况评估报告自动生成的全套解决方案,提升了投资者分析企业年度报告的效率;降低投资者分析企业年度报告的难度,投资者无需掌握专业的财务技能也能快速准确的评估出待投资企业的健康状况;评估结果全面且呈现区域统一。
附图说明
图1为本发明的系统框图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1所示,一种企业财务报表自动分析系统,包括条件分析设置模块、企业名单获取模块、年度报告获取模块、年度报告数据解析模块、财务表单获取模块、企业健康状况评估模块和工作状态及分析结果输出模块,其中:
条件分析设置模块,用于设置分析条件,分析条件包括待投资类别(如A股股票、港股股票、美股股票、股权、企业债、指数基金等)、待投资类别对应的精选投资产品条件、最大年报分析年限、年报提取网址、企业健康状况评估标准,并将待投资类别、待投资类别对应的精选投资产品条件发送至企业名单获取模块,将最大年报分析年限、年报提取网址发送至年度报告获取模块,将企业健康状况评估标准发送至企业健康状况评估模块;
企业名单获取模块,用于根据待投资类别、待投资类别对应的精选投资产品条件,自动从企业名单获取网站服务器中精选出有投资分析价值的优质企业名称清单,获取后的企业名称清单信息将传递至年度报告获取模块。待投资产品的企业名单获取模块的工作状态实时传递至工作状态及分析结果输出模块;
年度报告获取模块,根据最大年报分析年限和获取的企业名单,从年报提取网址下载企业年度报告并保存至移动通信终端或PC的指定路径Path;同时将下载后的企业年报信息传递至年度报告数据解析模块。年度报告获取模块的工作状态实时传递至工作状态及分析结果输出模块;
年度报告数据解析模块,采用PDF解析技术对下载的企业年度报告进行数据解析,得到年度报告数据,解析后的年度报告数据传递至财务表单获取模块,年度报告数据解析模块的工作状态实时传递至工作状态及分析结果输出模块;
财务表单获取模块,根据解析得到的年度报告数据,获取企业年度报告的审计意见,提取财务表单并整理合并,财务表单包括资产负债表、合并利润表、合并现金流量表、现金流量表补充表和归母净利润数据,标注财务表单中各财务科目年变化率异常的财务科目名称,财务表单获取模块的工作状态及年变化率异常的财务科目信息实时传递至工作状态及分析结果输出模块;
企业健康状况评估模块,根据最大年报分析年限、企业健康状态评估标准和财务表单中的各财务科目,获取企业各年度的重点财务科目,重点财务科目包括资产总计、负债合计、货币资金、短期借款和应付利息;计算评估企业健康状况所需的重点过程数据,重点过程数据包括货币资金与有息负债的差值、资产总计增长率、负债合计增长率,评估企业的现金流、债务风险和行业地位并完成健康状况报告输出至工作状态及分析结果输出模块,企业健康状况评估模块的工作状态及评估出的健康状况实时传递至工作状态及分析结果输出模块;
工作状态及分析结果输出模块用于对分析条件的设置结果,获取后的企业名称清单信息,年变化率异常科目信息,评估出的企业健康状况,待投资产品的企业名单获取模块、年度报告获取模块、年度报告数据解析模块、财务表单获取模块、企业健康状况评估等模块的工作状态进行实时输出显示,同时导出企业健康状况报告至移动通信终端或PC中的指定路径。
本发明自动获取待投资产品的企业名单、自动下载企业年度报告、自动解析企业年度报告数据,对企业年度报告数据中的企业合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表等财务表单自动提取整理,自动获取企业重点财务科目值并自动计算出用于评估企业健康状况所需的重点过程数据,自动生成企业全面健康状况报告,并将企业健康状况评估结果呈现在同一区域,极大的提升了投资者分析企业年度报告的效率,克服了评估结果呈现区域分散的问题;降低投资者分析企业年度报告的难度,达到无需投资者掌握专业的财务技能也能快速准确的评估出待投资企业的健康状况,且财务表单信息全面,在此基础上得到的企业健康状况评估结果更加准确。
实施例2:
一种企业财务报表自动分析方法,包括:
步骤S100:设置待分析企业财务报表的分析条件,包括待投资类别(A股股票、港股股票、美股股票、股权、企业债、指数基金等)、待投资类别对应的精选投资产品条件、最大年报分析年限、年报提取网址和企业健康状况评估模板;
例如投资类别为A股股票;
年报提取网址为http://www.cninfo.com.cn/new/index,
企业名单获取网址为http://www.aiwencai.net;
精选投资产品条件预置了低、中、高标准:
低标准为动态市盈率小于等于50、上市大于等于3年、连续3年的毛利率大于等于35%、连续3年的净利润现金含量占比大于等于80%、连续3年的ROE大于等于15%、连续3年的资产负债率小于等于60%;
中标准为动态市盈率小于等于40、上市大于等于4年、连续3年的毛利率大于等于40%、连续3年的净利润现金含量占比大于等于85%、连续3年的ROE大于等于15%、连续3年的资产负债率小于等于55%;
高标准为动态市盈率小于等于30、上市大于等于5年、连续3年的毛利率大于等于45%、连续3年的净利润现金含量占比大于等于100%、连续3年的ROE大于等于15%、连续3年的资产负债率小于等于45%;
最大年报分析年限为6年。
步骤S200:根据设置的分析条件,通过网络爬虫技术获取如A股股票、港股股票、美股股票、股权、企业债、指数基金等投资类别的待投资产品的的企业名单;
待投资产品的企业名单自动获取方法如下:
S200-1:预置Chrome或Firefox浏览器驱动webdriver及web自动化访问工具selenium;
S200-2:采用Python语言,调用selenium程序模块,驱动浏览器工作,以访问待投资产品的企业名单自动获取网址;
S200-3:待投资产品的企业名单自动获取网址访问成功后,采用webdriver的xpath定位【股票检索】对象“//*[@id="stockpick_bar"]/a/span”,【股票检索】对象定位成功后,采用webdriver中的click( )方法点击该对象;
S200-4:【股票检索】对象click成功后,采用webdriver的xpath定位【问一下财条件输入框】对象“//*[@id="auto"]”,在【问一下财条件输入框】中输入精选投资产品条件;
以A股中标准投资产品条件为例子,【问一下财条件输入框】中将被自动输入“动态市盈率小于等于40、上市大于等于4年、连续3年的毛利率大于等于40%、连续3年的净利润现金含量占比大于等于85%、连续3年的ROE大于等于15%、连续3年的资产负债率小于等于55%”。
S200-5:投资产品条件输入【问一下财条件输入框】成功后,采用webdriver的xpath定位【问一下财按钮】对象“//*[@id="qs-enter"]”,【问一下财按钮】对象定位成功后,采用webdriver中的click( )方法点击该对象。
以筛选日期2021.3.3日为例,在【问一下财按钮】点击成功后,浏览器将从4205只A股中精选出8家满足筛选要求的股票,该8家股票对应的企业名称对象将显示在xpath为:
“//*[@id="tableWrap"]/div[2]/div/div[2]/div/table/tbody/tr[Numble]/td[4]/div/a”中,其中Numble为筛选出的第几各企业,通过driver_selen.find_element_by_xpath( ).text方法自动获取检索出来的待投资产品的企业名单。
步骤S300:根据获取的待投资产品的企业名单,分别下载企业年度报告,包括:
S300-1:初始化待分析企业数量List_order=1,待分析企业所在年Year_analysis为当前年减1;
S300-2:年度报告获取模块采用Python语言,导入selenium.webdriver.common.keys import Keys类,调用Selenium程序模块驱动浏览器工作,以访问企业年度报告提取网址;
S300-3:企业年度报告提取网址访问成功后,采用webdriver的xpath定位【代码/简称/拼音/关键字/高管检索】对象
“/html/body/header/div/div[5]/div/div[1]/input”
【代码/简称/拼音/关键字/高管检索】对象定位成功后,输入待分析企业清单中的第List_order个企业名称,采用webdriver中的send_keys()方法输入待下载年报企业的名称后,再采用send_keys(Keys.ENTER)开始检索待分析企业数据。
S300-4:待分析企业数据检索成功后,采用webdriver中的click()方法点击【分类】对象
“//*[@id="main"]/div[2]/div/div[2]/div/div/div[2]/div[1]/div[1]/form/div[2]/div/span/button”
再采用webdriver中的click()方法选择【年报】对象
“//*[@id="el-popover-647"]/div[1]/label[1]/span[2]/span”
最后采用webdriver中的click()方法点击【查询】对象
“//*[@id="main"]/div[2]/div/div[2]/div/div/div[2]/div[1]/div[1]/form/div[4]/div/button/span”
开始检索待分析企业的年报数据;
S300-4:待分析企业的年报数据检索成功后,通过【检索结果条数】对象“//*[@id="main"]/div[2]/div/div[2]/div/div/div[2]/div[1]/div[4]/div/span”获取检索到的年报数据总条数Total_number;
S300-5:访问检索结果链接对象
//*[@id="main"]/div[2]/div/div[2]/div/div/div[2]/div[1]/div[3]/div/div/div[3]/table/tbody/tr[Numble2]/td[1]/div/a/span[1]
其中,tr[Numble2]中的Numble2变量是检索结果中的第Numble2条链接xpath,并通过webdriver中的find_element_by_xpath().text方法提取第Numble2条链接的名称;
S300-6:判断第Numble2条链接的名称年份是否包含Year_analysis;
若第Numble2条链接的名称年份包含Year_analysis,则下载第Numble2条链接所对应的年报,同时Numble2=Numble2+1、Year_analysis=Year_analysis-1,进入第S300-7步;
若第Numble2条链接的名称年份不包含Year_analysis,则Numble2=Numble2+1,同时返回第S300-5步。
S300-7:判断Year_analysis是否≥当前年-(待分析企业最大的年报分析年限Years+1);
若Year_analysis≥当前年-(待分析企业最大的年报分析年限Years+1),则返回第S300-5步;
若Year_analysis<当前年-(待分析企业最大的年报分析年限Years+1),则当前带分析企业的年报数据下载完毕,开始下载下一个待分析企业年度报告,List_order=List_order+1,重复S300-3至S300-7步骤,直至待分析企业清单中的企业年度报告全部下载完成。若出现下载异常,则保存故障日常;若待分析企业清单中的企业年度报告全部完成下载,则进入第S400步,年度报告数据解析模块将对待分析企业年度报告进行PDF解析。
步骤S400:采用PDF解析技术解析企业年度报告,得到企业年度数据,包括:
S400-1:年度报告数据解析模块采用Python语言,导入解析库pdfplumber及excel操作模块xlwings,其中pdfplumber是一款基于pdfminer,完全由python开发的pdf文档解析库,不仅可以获取每个字符、矩形框、线等对象的具体信息,而且还可以抽取文本和表格;其中xlwings是用于读写excel数据及修改单元格格式的第三方库;
S400-2:依据待分析企业清单中的各企业名称、“年度报告”、“.PDF”等检索关键字,年度报告数据解析模块将获取待分析企业年度报告保存目录下所有的年度报告文件名,最终将整理出以待分析企业清单中的各企业名称为键,以待分析年报名称组成的列表为值的嵌套字典files_in。
以待分析企业所在年Year_analysis=2019,待分析企业最大的年报分析年限Years=3,待分析企业清单包括“伊利股份”、“老板电器”2家企业为例,则年度报告数据解析模块生成的嵌套字典files_in={‘伊利股份’:[‘伊利股份:2019年年度报告.PDF’,‘伊利股份:2018年年度报告.PDF’,‘伊利股份:2017年年度报告.PDF’],‘老板电器’:[‘老板电器:2019年年度报告.PDF’,‘老板电器:2018年年度报告(更新后).PDF’,‘老板电器:2017年年度报告.PDF’]};
S400-3:遍历待分析企业清单中的各企业名称,再以待分析企业名称为单元自动生成对应的excel文件,如“伊利股份2019年财务分析报告_2021.2.23.xlsx”、“老板电器2019年财务分析报告_2021.2.23.xlsx”。
S400-4:以待分析企业为健,遍历S400-2中的files_in字典,获取待分析企业年度报告文件名并在excel文件中新增对应的表单sheet。
以待分析企业为“伊利股份”为例,遍历字典files_in[伊利股份],获取到的伊利股份公司的待分析企业年度报告文件名为“伊利股份:2019年年度报告.PDF”、“伊利股份:2018年年度报告.PDF”、“伊利股份:2017年年度报告.PDF”后,年度报告数据解析模块将在“伊利股份2019年财务分析报告_2021.2.23.xlsx”文件中新增名为“2019年财务数据”、“2018年财务数据”、“2017年财务数据”的sheet表单。
S400-5:S400-4步中的sheet表单新增成功后,年度报告数据解析模块将逐一解析待分析的企业年度报告。解析过程中通过调用pdfplumber库中的extract_text()方法,提取各年度企业报告中会计事务所审计意见;通过调用pdfplumber库中的extract_tables()方法,提取各年度企业报告中所有表单。将获取到的各年度会计事务所审计意见及所有表单内容保存至S400-4步新增对应的sheet表单中,其中会计事务所审计意见保存在sheet表的A1单元格,其它表单内容从A2单元格开始逐一保存。
因各上市企业的年度报告必须要经过会计师事务所的审计,报告格式、财务科目命名均遵循一定规则,经实践验证,采用pdfplumber库解析出来的合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单中的财务科目名称均保存在sheet表的A列中。
S400-6:重复S400-4至S400-5步骤,直至待分析企业清单中所有企业的年度报告数据全部解析完成。
步骤S500:从企业年度数据中提取财务表单,并进行合并整理,财务表单包括资产负债表、合并利润表、合并现金流量表、现金流量表补充表和归母净利润数据;计算标注财务表单中各财务科目年变化率异常的财务科目名称;
S500-1:财务表单获取模块采用Python语言,导入xlwings模块,打开保存有经S400-6步解析后的企业年度报告数据的excel表。
如“伊利股份2019年财务分析报告_2021.2.23.xlsx”。
S500-2:遍历excel文档中的sheet表单名称,提取有属于待分析企业年度报告原始数据的sheet名称并存入Annualreport_filename列表。
如提取S400-5“伊利股份2019年财务分析报告_2021.2.23.xlsx”中年度报告原始数据sheet名称后,Annualreport_filename=[“2019年财务数据”、“2018年财务数据”、“2017年财务数据”]。
S500-3:遍历并打开Annualreport_filename列表中的sheet表单,采用xlwings获取sheet表单包含数据的单元格所在的行号rows_numb、所在列号columns_numb。
S500-4:采用xlwings读取sheet表单A1单元格内容,获取会计师事务所的审计意见。若会计师事务所的审计意见包含“标准无保留意见”内容,则进行第S500-5步;若会计师事务所的审计意见未包含“标准无保留意见”内容,则没有再分析本年度财务报表的意义,返回S500-3步,开始提取其它年度的合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单。
S500-5:从sheet表A列第2行开始、rows_numb行结尾,遍历单元格。分别采用Python的replace('','')、replace('\n','').replace('\r','')、replace(':',':')方法,去除或更换A列单元格中的空格、换行、中文“:”等特殊符合,增加后面对财务科目检索的成功率,提升本发明系统对所有企业年度报告数据分析的兼容性。
S500-6:从sheet表A列第2行开始、rows_numb行结尾,遍历单元格,分别获取合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单在sheet表单中的所处行号。
各上市企业的年度报告必须要经过会计师事务所的审计,报告格式、财务科目命名均遵循一定规则。经实践验证,各企业年度报表中的合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单对应的财务科目名称98%以上是相同的,针对各企业年度报告中财务科目名称不一致的问题,本发明通过合理运用“or”逻辑运算符、“==”比较运算符、“in”成员运算符等对检索关键字进行逻辑判断解决,如以定位合并资产负债表保存在sheet表单中的起始行号start_hbzcfzb、结束行号end_hbzcfzb为例,一种python解决代码为:
#------获取合并资产负债表的开始及结束行-----#
For i in range(1,int(rows_numb)):
A_value=sht.range("A"+str(i)).value
if A_value==None:
continue
elif A_value == '流动资产:':
start_hbzcfzb = i
elif ('负债和股东权益总计' in str(A_value)) or ('负债和所有者权益' in str(A_value) ):
end_hbzcfzb = i
Break
同理,通过“一、营业收入”或“一、营业总收入”、“每股收益:”关键字定位合并利润表在sheet表单中的所处起始行号start_hblrb、结束行号end_hblrb;通过“经营活动产生的现金流量:”、“年末现金及现金等价物余额”或“期末现金及现金等价物余额”关键字定位合并现金流量表在sheet表单中的所处起始行号start_hbxjllb、结束行号end_hbxjllb;通过“将净利润调节为经营活动”、“现金及现金等价物净变动情况:”关键字定位金流量表补充表在sheet表单中的所处起始行号start_xjllbbc、结束行号end_xjllbbc;通过“加权平均净资产收益率”关键字定位归母净利润在sheet表单中的所处行号start_gmjlr。
S500-7:根据S500-6步已获取到的合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单在sheet表单中的所处起始行号及结束行号,获取对应财务报表的表单内容并分别赋值给Balance_sheet_Date、Income_statement_Date、Cash_flow_Date、Cash_suppflow_Date、Net_profit_Date等列表变量。如一种python实现代码:
Balance_sheet_Date=sht.range("A"+str(start_hbzcfzb)+":AB"+str(end_hbzcfzb)).value #合并资产负债表数据
Income_statement_Date=sht.range("A"+str(start_hblrb)+":AB"+str(end_hblrb)).value #合并利润表数据
Cash_flow_Date=sht.range("A"+str(start_hbxjllb)+":AB"+str(end_hbxjllb)).value #合并现金流量表数据
Cash_suppflow_Date=sht.range("A"+str(start_xjllbbc)+":AB"+str(end_xjllbbc)).value #现金流量补充表数据
Net_profit_Date=sht.range("A"+str(start_gmjlr)+":AB"+str(start_gmjlr)).value#归母净利润数据
S500-8:清空除A1单元格以外的sheet表内容,同时根据合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单在sheet表单中的所处的起始及结束行号,分别计算出保存合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单所需占用的excel行数Balance_sheet_len、Income_statement_len、Cash_flow_len、Cash_suppflow_len、Net_profit_len。如一种python实现方法:
Balance_sheet_len=end_hbzcfzb-start_hbzcfzb+5#合并资产负债表行数
Income_statement_len=end_hblrb-start_hblrb+5#合并利润表行数
Cash_flow_len=end_hbxjllb-start_hbxjllb+5#合并现金流量表行数
Cash_suppflow_len=end_xjllbbc-start_xjllbbc+5 #现金流量补充表行数
Net_profit_len=4 #归母净利润数据行数
S500-9:根据保存合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单所需占用的excel行数,重组只包含会计师事务所对待分析企业年度报告的审计意见、合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单内容的sheet表单。如一种python实现方法:
sht.range('A2:A10000').api.EntireRow.Delete() #删除’A2:A10000‘单元格所在的行。
sht.range("A2").value='以下是合并资产负债表'
sht.range("A3").value=Balance_sheet_Date#从A2单元格开始保存合并资产负债表数据
sht.range('A'+str(Balance_sheet_len-1)).value='以下是合并利润表'
sht.range('A'+str(Balance_sheet_len)).value=Income_statement_Date
sht.range('A'+str(Balance_sheet_len+Income_statement_len-1)).value='以下是合并现金流量表'
sht.range('A'+str(Balance_sheet_len+Income_statement_len)).value=Cash_flow_Date
sht.range('A'+str(Balance_sheet_len+Income_statement_len+Cash_flow_len-1)).value='以下是现金流量补充表'
sht.range('A'+str(Balance_sheet_len+Income_statement_len+Cash_flow_len)).value=Cash_suppflow_Date
sht.range('A'+str(Balance_sheet_len+Income_statement_len+Cash_flow_len+Cash_suppflow_len-1)).value='以下是归母净利润数据'
sht.range('A'+str(Balance_sheet_len+Income_statement_len+Cash_flow_len+Cash_suppflow_len)).value=Net_profit_Date
S500-10:计算标注财务表单中各财务科目年变化率超过±30%的异的科目名称,将异常科目名称存入Abnormal_account字典中。
S500-11:重复S500-3至S500-10步骤,直至提取并整理完Annualreport_filename列表中对应年份的合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表、归母净利润数据等财务表单。
步骤S600:获取财务表单的重点财务科目值并计算评估企业健康状况所需的重点过程数据,最后自动生成企业全面的健康状况评估报告。
S600-1:企业健康状况评估模块采用Python语言,从S500步提取并整理后的excel文档中自动获取待分析企业各年度的重点财务科目值。
本发明需获取的重点财务科目值包括但不限于:“资产总计”、负债合计”、货币资金”、短期借款”、应付利息”、“一年内到期的非流动负债”、“长期借款”、“应付债券”、长期应付款”、应付票据”、应付账款”、预收款项”、应收票据”、应收账款”、预付款项”、“固定资产”、“在建工程”、“工程物资”、“以公允价值计量且其变动计入当期损益的金融资产”、“可供出售金融资产”、“持有至到期投资”、“投资性房地产”、“销售商品、提供劳务收到的现金”、“本年营业收入”、“上年的营业收入”、“营业收入”或“营业总收入”、“营业成本”或“营业总成本”、“税金及附加”、“销售费用”、“管理费用”、“财务费用”、“利润总额”、“经营活动产生的现金流量净额”、“净利润”、“加权平均净资产收益率(ROE)”、“固定资产折旧”、“无形资产摊销”、“偿还债务支付的现金”、“分配给普通股股东及限制性股票持有者股利支付的现金”或“分配股利、利润或偿付利息支付的现金”、“购建固定资产、无形资产和其他长期资产支付的现金”、“处置固定资产、无形资产和其他长期资产收回的现金净额”、“经营活动产生的现金流量净额”、“筹资活动产生的现金流量净额”、“现金及现金等价物净增加额”、“年末现金及现金等价物余额”或“期末现金及现金等价物余额”等科目值。
进一步地,本发明公开一种获取待分析企业各年度的重点财务科目值的方法:
S600-1-1:定位本年度及上年度财务科目值所在excel sheet表的所在列号column;
经实践验证,大部分企业经S600步财务表单获取模块处理后的各财务科目值保存在excel的B列,少部分企业的各财务科目值保持在excel的其它列。经验证,年度科目值表头包含本年年号(如“2019”)或“期末”或“本期”关键字,与年度科目值表头同行的单元格包含“项目”关键字,对此本发明提供一种定位本年度及上年度财务科目值所在excel sheet表的所在列号column的方法:遍历sheet表A列单元格,定位到单元格内容等于“项目”时所在行号row,开始从第row行第2列(即B列)开始判断单元格内容是否包含本年年号(如“2019”)或“期末”或“本期”关键字,若包含即可定位本年度及上年度财务科目值所在excelsheet表的所在列号column。一种Python实现代码如下:
cell_new=sht.used_range.last_cell#sheet页面最右下角的单元格,获取最大行数,和列数
rows_numb_new=cell_new.row#行数
columns_numb_new=cell_new.column#列数
column_ID=0
for row in range(1,int(rows_numb_new)):
A_value = sht.range("A"+ str(row)).value
if A_value == None:
continue
elif '项目' == A_value:
for column in range(2,columns_numb_new +1):
Cell_value = sht.range(colun_name[str(column)]+ str(row)).value
if type(Cell_value ) == datetime.datetime:#2020-09-25 00:00:00
my_date_handler = lambda year, month, day, **kwargs: "%04i-%02i-%02i" % (year, month, day)
Cell_value=str(sht.range(colun_name[str(column)]+ str(row)).options(dates=my_date_handler).value)#日期,2020-09-25
if Cell_value == None:
continue
if (Analyzed_year_current in Cell_value) or ('期末' in Cell_value) or ('本期' in Cell_value):
Currentyear_ID = column
column_ID =1
break
if column_ID == 1:
break
S600-2:根据财务科目名称,在excel sheet表中检索对应的科目值;
在企业健康状况评估模块设计一种财务科目值检索函数Data_Search(Current_value,lis=[]),其中行参Current_value为需检索的财务科目名称,行参lis内可嵌套多个列表,如行参lis[0][0]存放用于检索的财务科目关键字,行参lis[0][1]用于存放需检索的财务科目关键字与excel sheet表中A列单元格内容比对方式。当行参lis[0][1]=1时,采用比较运算符“==”将检索的财务科目关键字与excel sheet表中A列单元格内容比对;当行参lis[0][1]=2时,采用成员运算符“in”将检索的财务科目关键字与excel sheet表中A列单元格内容比对。以检索“资产总计”及“年末现金及现金等价物余额”科目值为例,一种检索代码如下:
zczj_date=Data_Search('资产总计',lis=[['资产总计',1]])#资产总计
nmxjjxjdjwye_date=Data_Search('年末现金及现金等价物余额',lis=[['年末现金及现金等价物余额',2],['期末现金及现金等价物余额',2]])#年末现金及现金等价物余额
进一步地,经实践验证,经S600步财务表单获取模块处理后的大部分企业的财务报表的各财务科目值与对应的财务科目所处excel同行,但有极少部分企业科目名称在年度报告(PDF)文档中存在换行现象,导致经S600步财务表单获取模块处理后的各财务科目值与对应的财务科目所处excel不在同行,且科目名称将占用A列3行的异常情况。针对该异常现象,本发明在定位财务科目名称时,先将待检索财务科目名称与excel sheet表中A列单一单元格比对,若检索失败则会尝试将excel sheet表中A列近3行单元格以字符串类型整合后再与待检索财务科目名称对比。
S600-3:企业健康状况评估模块根据已获得的待分析企业各年度的重点财务科目值,自动计算出评估企业健康状况所需的重点过程数据。
本发明需计算出的重点过程数据包括但不限于:“货币资金”与“有息负债”差值,“货币资金”与“总资产”的比值,“应收应付”与“预付预收”差值,“应收账款”与“资产总计”比值,“固定资产+在建工程+工程物资”与“总资产”的比值,“以公允价值计量且其变动计入当期损益的金融资产+可供出售金融资产+持有至到期投资+投资性房地产”与“资产总计”比值,“销售商品、提供劳务收到的现金”与“营业收入”比值,“费用率”与“毛利率”比值,“主营利润”与“利润总额”比值,“经营活动产生的净现金流量净额”与“主营利润”比值,“经营活动产生的现金流量净额”与“固定资产折旧+无形资产摊销+借款利息+现金股利”差值,“购建固定资产、无形资产和其他长期资产支付的现金”与“经营活动产生的现金流量净额”比值,“处置固定资产、无形资产和其他长期资产收回的现金净额”与“购建固定资产、无形资产和其他长期资产支付的现金”比值,分红率(“分配给普通股股东及限制性股票持有者股利支付的现金”与“净利润”比值)、资产总计增长率、负债合计增长率、负债率、货币资金增长率、“销售商品、提供劳务收到的现金”增长率、营业收入增长率、营业收入增长率、营业成本增长率、毛利率、税金及附加增长率、销售费用增长率、管理费用增长率、利润总额增长率、主营利润增长率、主营利润率、经营活动产生的现金流量净额增长率、净利润增长率、净利润现金比率(“经营活动产生的现金流量净额”与“净利润”比值)等评估企业健康状况所需的重点过程数据。
S600-4:企业健康状况评估模块获取条件分析设置模块输入的待分析企业最大的年报分析年限、企业健康状况评估标准等信息,同时标记出S600-2步中计算的增长率超出±30%的异常过程数据,将增长率异常的过程数据信息传递至S600-5步。
进一步地,本发明预制了的其中一种评估标准(以下标准均为最近1年及分析的年限中平均值)为:货币资金大于有息负债;货币资金与总资产的比值≥0.2;“应收应付”(应付票据+应付账款+预收款项)-“预付预收”(应收票据+应收账款+付款项)≥0;应收账款/资产总计≤0.1;(固定资产+在建工程+工程物资)/总资产的比率≤0.45;(以公允价值计量且其变动计入当期损益的金融资产+可供出售金融资产+持有至到期投资+投资性房地产)/资产总计≤0.1;“销售商品、提供劳务收到的现金”/“营业收入”≥0.6;营业收入增长率((本年营业收入-上年的营业收入)/上年的营业收入)≥0.1;费用率/毛利率<0.5;主营利润率(主营利润/营业成本)>0.1;“主营利润”/“利润总额”≥0.8;净利润≥0;“经营活动产生的净现金流量净额”/“主营利润”≥1;经营活动产生的现金流量净额-(固定资产折旧+无形资产摊销+借款利息+现金股利)>0;10%≤(购建固定资产、无形资产和其他长期资产支付的现金)/经营活动产生的现金流量净额≤0.7;“处置固定资产、无形资产和其他长期资产收回的现金净额”/“购建固定资产、无形资产和其他长期资产支付的现金”≤0.05;“经营活动产生的现金流量净额”≥0;“筹资活动产生的现金流量净额”≤0;“现金及现金等价物净增加额”≥0;“年末现金及现金等价物余额”或“期末现金及现金等价物余额”≥0。
S600-5:依据企业健康状况评估标准、评估企业健康状况所需的重点过程数据及S600-4步输出的异常过程数据,自动生成企业全面的健康状况评估报告。
企业健康状况评估模块根据S600-3步计算出的评估企业健康状况所需的重点过程数据、S600-4步获取到的企业健康状况评估标准及600-4步输出的异常过程数据,自动评估出待分析企业的如现金流、债务风险、行业地位、利润质量、债务风险、企业的轻重、主业的专注程度、稳定性、经营成果及含金量、现金流量净额的组合类型、产品竞争力、扩张能力、盈利能力、成长能力、运营能力、偿债能力、成本管控能力、造血能力、资本获利能力、企业品质等众多的、全面的健康状况报告。
进一步地,本发明S600-4步中预制的评估标准与S600-5中生成的健康报告关系为:通过“资产总计”科目及资产总计增长率评估待公司实力及扩张能力;通过“负债率(负债合计/资产总计)≤60%”评估企业的债务风险;通过“货币资金大于有息负债”及“货币资金/总资产的比值≥20%”评估企业的偿债风险;通过“应收应付(应付票据+应付账款+预收款项)-预付预收(应收票据+应收账款+付款项)≥0”及“应收账款/资产总计≤0.1”评估企业的行业地位;通过“(固定资产+在建工程+工程物资)/总资产的比率≤0.45”评估企业的轻重;通过“(以公允价值计量且其变动计入当期损益的金融资产+可供出售金融资产+持有至到期投资+投资性房地产)/资产总计≤0.1”评估企业的专注程度;通过“销售商品、提供劳务收到的现金/营业收入≥0.6”及“营业收入增长率((本年营业收入-上年的营业收入)/上年的营业收入)≥0.1”评估企业的行业地位及成长能力;通过“毛利率>0.4”评估企业的竞争力;通过“费用率/毛利率<0.5”评估公司成本管控能力;通过“主营利润(营业收入-营业成本-税金及附加-销售费用-管理费用-财务费用)>0”、“主营利润率(主营利润/营业成本)>0.1”及“主营利润/利润总额≥0.8”评估企业的盈利能力及利润质量;通过“净利润≥0”、“经营活动产生的净现金流量净额/主营利润≥1”及“经营活动产生的现金流量净额-(固定资产折旧+无形资产摊销+借款利息+现金股利)>0”评估企业的经营成果及含金量;通过“加权平均净资产收益率(ROE)>0.15”评估企业的自有资本的获利能力;通过“经营活动产生的现金流量净额-(固定资产折旧+无形资产摊销+借款利息+现金股利)>0”评估企业的造血能力;通过“10%≤(购建固定资产、无形资产和其他长期资产支付的现金)/经营活动产生的现金流量净额≤0.7”及“处置固定资产、无形资产和其他长期资产收回的现金净额”/“购建固定资产、无形资产和其他长期资产支付的现金≤0.05”评估公司未来的成长能力;通过“分红率=(‘分配给普通股股东及限制性股票持有者股利支付的现金’或‘现金分红金额’)/净利润>0.3”评估企业的品质;通过“经营活动产生的现金流量净额≥0”及“筹资活动产生的现金流量净额≤0”评估企业类型;通过“现金及现金等价物净增加额≥0”及“‘年末现金及现金等价物余额’或‘期末现金及现金等价物余额’≥0”评估企业的稳定性。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (7)
1.一种企业财务报表自动分析系统,其特征在于,包括条件分析设置模块、企业名单获取模块、年度报告获取模块、年度报告数据解析模块、财务表单获取模块、企业健康状况评估模块和工作状态及分析结果输出模块,其中:
条件分析设置模块,用于设置分析条件,分析条件包括待投资类别、待投资类别对应的精选投资产品条件、最大年报分析年限、年报提取网址、企业健康状况评估标准,并分别发送至企业名单获取模块、年度报告获取模块和企业健康状况评估模块;
企业名单获取模块,用于根据待投资类别、待投资类别对应的精选投资产品条件,采用网络爬虫技术从网站获取待投资产品的企业名单;
年度报告获取模块,根据最大年报分析年限和获取的企业名单,从年报提取网址下载企业年度报告并保存;
年度报告数据解析模块,采用PDF解析技术对下载的企业年度报告进行数据解析,得到年度报告数据;
财务表单获取模块,根据解析得到的年度报告数据,获取企业年度报告的审计意见,提取财务表单并整理合并,财务表单包括资产负债表、合并利润表、合并现金流量表、现金流量表补充表和归母净利润数据,标注财务表单中各财务科目年变化率异常的财务科目名称,并输出至工作状态即分析结果输出模块;
企业健康状况评估模块,根据最大年报分析年限、企业健康状态评估标准和财务表单中的各财务科目,获取企业各年度的重点财务科目,重点财务科目包括资产总计、负债合计、货币资金、短期借款和应付利息;计算评估企业健康状况所需的重点过程数据,重点过程数据包括货币资金与有息负债的差值、资产总计增长率、负债合计增长率,评估企业的现金流、债务风险和行业地位并完成健康状况报告输出至工作状态及分析结果输出模块;
企业名单获取模块、年度报告获取模块、年度报告数据解析模块、财务表单获取模块和企业健康状况评估模块的工作状态实时输出至工作状态及分析结果输出模块,工作状态及分析结果输出模块进行实时输出显示并存储。
2.一种企业财务报表自动分析方法,其特征在于,包括:
步骤S100:设置待分析企业财务报表的分析条件,包括待投资类别、待投资类别对应的精选投资产品条件、最大年报分析年限、年报提取网址和企业健康状况评估模板;
步骤S200:根据设置的分析条件,通过网络爬虫技术获取待投资产品的企业名单;
步骤S300:根据获取的待投资产品的企业名单,分别下载企业年度报告;
步骤S400:采用PDF解析技术解析企业年度报告,得到企业年度数据;
步骤S500:从企业年度数据中提取财务表单,并进行合并整理,财务表单包括资产负债表、合并利润表、合并现金流量表、现金流量表补充表和归母净利润数据;计算标注财务表单中各财务科目年变化率异常的财务科目名称;
步骤S600:获取财务表单的重点财务科目值并计算评估企业健康状况所需的重点过程数据,最后自动生成企业全面的健康状况评估报告。
3.根据权利要求2所述的一种企业财务报表自动分析方法,其特征在于,所述步骤S200具体包括:
步骤S210:调用预置的Chrome或Firefox浏览器驱动webdriver及web自动化访问工具selenium驱动浏览器工作,访问待投资产品的企业名单自动获取网址;
步骤S220:采用webdriver的xpath定位待投资类别,再根据设置的精选投资产品条件筛选符合要求的投资产品,获取该投资产品对应的企业名单。
4.根据权利要求2所述的一种企业财务报表自动分析方法,其特征在于,所述步骤S300中下载企业年度报告的方法具体为:
步骤S310:调用Selenium程序模块驱动浏览器工作,以访问企业年度报告提取网址;
步骤S320:采用webdriver的xpath定位待检索对象,输入企业名称检索待分析企业的年报数据;
步骤S330:获取检索到的年报数据总条数;
步骤S340:按设置的最大年报分析年限下载企业年度报告。
5.根据权利要求2所述的一种企业财务报表自动分析方法,其特征在于,所述步骤S400具体包括:
步骤S410:导入解析库pdfplumber及excel操作模块xlwings,将企业名单、年度报告和PDF作为搜索关键字,获取企业年度报告保存目录下所有的年度报告文件名,整理出以企业名称为键、年度报告名称组成的列表为值的嵌套字典;以企业名称为单元自动生成对应的以excel文件;
步骤S420:以企业名称为键,遍历嵌套字典,获取待分析企业年度报告文件名并在excel文件中新增对应的表单;
步骤S430:逐一解析待分析的企业年度报告,包括:
步骤S431:通过调用pdfplumber库中的extract_text()方法,提取各年度企业报告中会计事务所审计意见;通过调用pdfplumber库中的extract_tables()方法,提取各年度企业报告中所有表单;
步骤S432:将获取到的各年度会计事务所审计意见及所有表单内容保存至Excel文件对应的表单中。
6.根据权利要求5所述的一种企业财务报表自动分析方法,其特征在于,所述步骤S500具体包括:
步骤S510:采用Python语言,导入xlwings模块,打开excel文件;
步骤S520:遍历excel文档中的表单名称,提取有企业年度报告原始数据的表单名称并存入年度报告文件名称列表;
步骤S530:遍历并打开年度报告文件名称列表中的表单,采用xlwings获取表单包含数据的单元格所在的行号和所在列号;
步骤S540:采用xlwings读取sheet表单,获取审计意见;获取财务表单中合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表和归母净利润数据的起始行号及结束行号,分别计算出保存合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表以及归母净利润数据需要占用的excel行数;
步骤S550:根据需要占用的excel行数,重组只包含会计师事务所对待分析企业年度报告的审计意见、合并资产负债表、合并利润表、合并现金流量表、现金流量表补充表以及归母净利润数据的表单,得到合并处理后的Excel文件;
步骤S560:计算标注财务表单中各财务科目年变化率超过预设值的异常科目名称,将异常科目名称存入异常账目字典中。
7.根据权利要求6所述的一种企业财务报表自动分析方法,其特征在于,所述步骤S600具体包括:
步骤S610:从合并处理后的Excel表格获取待分析企业各年度的重点财务科目值;
步骤S620:根据待分析企业各年度的重点财务科目值,计算出评估企业健康状况所需的重点过程数据,标记重点过程数据中的异常过程数据;
步骤S630:根据最大年报分析年限、企业健康状态评估标准和异常过程数据,生成企业健康状况评估报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110321638.5A CN112950346A (zh) | 2021-03-26 | 2021-03-26 | 一种企业财务报表自动分析系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110321638.5A CN112950346A (zh) | 2021-03-26 | 2021-03-26 | 一种企业财务报表自动分析系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112950346A true CN112950346A (zh) | 2021-06-11 |
Family
ID=76228268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110321638.5A Pending CN112950346A (zh) | 2021-03-26 | 2021-03-26 | 一种企业财务报表自动分析系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112950346A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116823508A (zh) * | 2023-06-28 | 2023-09-29 | 深圳市元明科技股份有限公司 | 基于大数据分析的尽职调查与资信评估系统 |
CN117114911A (zh) * | 2023-10-25 | 2023-11-24 | 北京中企导航科技有限公司 | 一种财务报表自动统计结算方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090248489A1 (en) * | 2008-03-26 | 2009-10-01 | Moncreiff Craig T | System and method of market research business analysis |
CN108376319A (zh) * | 2018-03-14 | 2018-08-07 | 重庆金融资产交易所有限责任公司 | 企业综合实力评估方法、服务器及存储介质 |
CN108764625A (zh) * | 2018-04-18 | 2018-11-06 | 深圳微企宝计算机系统有限公司 | 财务分析装置及方法 |
CN109146238A (zh) * | 2018-07-10 | 2019-01-04 | 合肥深度财务管理咨询有限公司 | 基于大数据的企业财务共享评估方法及系统 |
CN109544050A (zh) * | 2019-01-24 | 2019-03-29 | 黄志敏 | 一种数据可视化呈现财务数据的方法及系统 |
CN109657887A (zh) * | 2017-10-10 | 2019-04-19 | 爱信诺征信有限公司 | 一种企业运营健康状况评估方法及系统 |
CN109800253A (zh) * | 2018-12-04 | 2019-05-24 | 广东广业开元科技有限公司 | 一种企业绩效排名处理系统 |
CN111177511A (zh) * | 2019-12-24 | 2020-05-19 | 平安资产管理有限责任公司 | 利用爬虫获取并解析公告信息方法及装置 |
-
2021
- 2021-03-26 CN CN202110321638.5A patent/CN112950346A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090248489A1 (en) * | 2008-03-26 | 2009-10-01 | Moncreiff Craig T | System and method of market research business analysis |
CN109657887A (zh) * | 2017-10-10 | 2019-04-19 | 爱信诺征信有限公司 | 一种企业运营健康状况评估方法及系统 |
CN108376319A (zh) * | 2018-03-14 | 2018-08-07 | 重庆金融资产交易所有限责任公司 | 企业综合实力评估方法、服务器及存储介质 |
CN108764625A (zh) * | 2018-04-18 | 2018-11-06 | 深圳微企宝计算机系统有限公司 | 财务分析装置及方法 |
CN109146238A (zh) * | 2018-07-10 | 2019-01-04 | 合肥深度财务管理咨询有限公司 | 基于大数据的企业财务共享评估方法及系统 |
CN109800253A (zh) * | 2018-12-04 | 2019-05-24 | 广东广业开元科技有限公司 | 一种企业绩效排名处理系统 |
CN109544050A (zh) * | 2019-01-24 | 2019-03-29 | 黄志敏 | 一种数据可视化呈现财务数据的方法及系统 |
CN111177511A (zh) * | 2019-12-24 | 2020-05-19 | 平安资产管理有限责任公司 | 利用爬虫获取并解析公告信息方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116823508A (zh) * | 2023-06-28 | 2023-09-29 | 深圳市元明科技股份有限公司 | 基于大数据分析的尽职调查与资信评估系统 |
CN116823508B (zh) * | 2023-06-28 | 2024-02-20 | 深圳市元明科技股份有限公司 | 基于大数据分析的尽职调查与资信评估系统 |
CN117114911A (zh) * | 2023-10-25 | 2023-11-24 | 北京中企导航科技有限公司 | 一种财务报表自动统计结算方法及系统 |
CN117114911B (zh) * | 2023-10-25 | 2024-01-30 | 北京中企导航技术服务有限公司 | 一种财务报表自动统计结算方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Robinson | International financial statement analysis | |
US20070033127A1 (en) | Enterprise evaluation device and enterprise evaluation program | |
CN108090823A (zh) | 基于SaaS的账务数据管理系统 | |
JP4617050B2 (ja) | 取引データの登録および処理方法 | |
CA2369296A1 (en) | Portfolio investment guideline compliance and financial fund administration system | |
Amenc et al. | Intangible capital and the value factor: Has your value definition just expired? | |
CN112950346A (zh) | 一种企业财务报表自动分析系统及方法 | |
Spengel et al. | Common Corporate Tax Base in the EU: impact on the size of tax bases and effective tax burdens | |
US20140188763A1 (en) | Systems and methods for adjusting cost basis and calculating market values and investment perfomance in an investment portfolio | |
US8229822B2 (en) | Computer-implemented method for financial analysis | |
US20020019796A1 (en) | Information trading system and method | |
US20030120580A1 (en) | Processing system for market efficiency value added | |
Gombola et al. | Considering dividend stability in the relation between dividend yields and stock returns | |
Abu-Musa | The determinates of selecting accounting software: A proposed model | |
JP2003233703A (ja) | 経営指標処理システム | |
US20050149423A1 (en) | Option value indicator | |
CN116308599A (zh) | 基于产品标签与客户标签的理财产品智能推荐方法和装置 | |
Boonlert-U-Thai et al. | Value relevance of book values, earnings, and future earnings: evidence by time, life cycle stage, and market uncertainty | |
CN113139740A (zh) | 适用于小规模经营者的综合性信息管理服务系统 | |
Istanti | The Role of the Consistency Principle in Recognition of Income Method on the Income Statement at PT. Indo Zinc Diecasting in Gresik | |
Cooper | Performance measurement for equity analysis and valuation | |
JPWO2004061714A1 (ja) | 技術評価装置、技術評価プログラム、技術評価方法 | |
Gowri et al. | NATIVE SPARROW SOFTWARE SOLUTIONS LLP, MADURAI: AFINANCIAL ANALYSIS AND RECOMMENDATIONS | |
Fitriyani et al. | Analysis of Financial Statements to Measure Performance at PT. Kino Indonesia, Tbk 2015-2019 | |
Patel | Discover SAP ERP Financials |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |