x2md_tools 提供了一套sdk, 帮助开发者解析pdf_to_markdown的结果,获取对应的版面元素的数据结构
| 版本 | 说明 |
|---|---|
| 1.0.0(当前版本) | 支持提取json中table数据与cell数据,支持Linux C版本与Python版本 |
处理表格数据:
ITextInParserEngine* engine = ITextInParserEngine::createAndStartTextInParserEngine();
engine->parseFile(filePath.c_str()); // filePath为需要解析的json文件路径
int pageSize = 0;
engine->getPageSize(&pageSize)
for (int page_i = 0; page_i < pageSize; ++page_i) {
int tableSize = 0;
engine->getPageTablesSize(page_i, &tableSize);
std::vector<Table> tables(tableSize);
engine->findTables(page_i, tables.data(), tableSize);
for (const auto& table : tables) {
print_table_info(table); // 可以看到每一个表格的数据信息
}
}
engine->release();
delete engine;处理表格数据:
engine = textin_parser.ITextInParserEngine.createAndStartTextInParserEngine()
engine.parseFile("file.json")
result, page_size = engine.getPageSize()
if page_size > 0:
# 获取第一页的表格数量
result, table_size = engine.getPageTablesSize(0)
# 获取第一页的表格数组
result, tables = engine.findTables(0, table_size)
for i, table in enumerate(tables):
print_table(table)linux_sdk/include目录包含所需调用所用到的头文件linux_sdk/samples目录包含获取表格信息的演示用程序代码与pdf/json文件linux_sdk/src目录包含功能实现的具体源文件linux_sdk/third_party目录包含编译所需要的第三方代码文件
- 环境准备: gcc/g++ 8.1及以上
- sample编译:到
samples/cpp目录下,直接运行./build.sh即可编译出测试程序 - sample运行会遍历
resource/的json文件,sample会处理这些json文件,结果都输出在output/log.txt中 - 每轮执行都会创建新的
output/log.txt
- 项目clone下来之后,可以进入
samples/cpp目录,运行./test_program - 在
output/log.txt中即可看到samples/resource内的演示表格输出
createAndStartTextInParserEngine获取一个Parser的实列parse解析json的原始字符串parseFile根据json文件路径读取json数据解析release释放Parser内部的资源getPageSize获取PDF中的Page数量getPageTablesSize获取具体Page的表格数量findTables获取具体Page的表格getDocument获取整个PDF数据的结构体
samples/base目录包含对应的工具函数文件samples/cpp目录包含演示的main函数以及可直接运行的Makefile与build.sh编译脚本samples/file目录包含演示用的pdf文件samples/resource目录包含file文件中通过TEXTIN RESTAPI返回的json结果并保存成了json文件(为了方便演示,直接展示处理samples/resource目录里json)- output目录包含输出的结果文件log.txt
Python API是对Cpp中接口通过Pybind11做的二次封装。所以和Linux SDK提供的C++ API功能完全一样,每次需要运行build_so.sh脚本构建指定python3版本的so
- 环境准备: gcc/g++ 8/9 python3为3.6及其以上
- 进入
python_sdk/,运行build_so.sh即可在当前目录下获得与python3版本一致的so - 生成得到so后使用
python3运行python_sdk/下的parser_test.py,即可在output.log看到所展示的对当前目录下chinese-tables.json的解析结果 - 开发者可以使用
import textin_parser来访问so里提供的接口,使用时需要把so加入到开发者目录中